dsh-super-code 0.3.8 → 0.3.10

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 (118) hide show
  1. package/README.en.md +169 -0
  2. package/README.md +105 -175
  3. package/client/index.js +594 -260
  4. package/cordis.patch.yml +3 -7
  5. package/docs/Acknowledgements.md +38 -67
  6. package/docs/Changelog.md +176 -88
  7. package/docs/Compatibility.md +133 -278
  8. package/docs/EvaluationResults.md +176 -150
  9. package/docs/UsageGuide.md +218 -223
  10. package/docs/en/Acknowledgements.md +76 -0
  11. package/docs/en/Changelog.md +176 -0
  12. package/docs/en/Compatibility.md +181 -0
  13. package/docs/en/EvaluationResults.md +240 -0
  14. package/docs/en/UsageGuide.md +321 -0
  15. package/docs/images/agent-tree-preview.png +0 -0
  16. package/docs/images/agent-tree.png +0 -0
  17. package/docs/images/install-tgz-preview.png +0 -0
  18. package/docs/images/install-tgz.png +0 -0
  19. package/docs/images/preset-settings-preview.png +0 -0
  20. package/docs/images/preset-settings.png +0 -0
  21. package/docs/images/task-status-preview.png +0 -0
  22. package/docs/images/task-status.png +0 -0
  23. package/lib/connection/approvals.d.ts +21 -0
  24. package/lib/connection/approvals.d.ts.map +1 -0
  25. package/lib/connection/approvals.js +83 -0
  26. package/lib/connection/approvals.js.map +1 -0
  27. package/lib/connection/client.d.ts +8 -0
  28. package/lib/connection/client.d.ts.map +1 -0
  29. package/lib/connection/client.js +34 -0
  30. package/lib/connection/client.js.map +1 -0
  31. package/lib/connection/guidance.d.ts +10 -0
  32. package/lib/connection/guidance.d.ts.map +1 -0
  33. package/lib/connection/guidance.js +27 -0
  34. package/lib/connection/guidance.js.map +1 -0
  35. package/lib/connection/http.d.ts.map +1 -1
  36. package/lib/connection/http.js +83 -16
  37. package/lib/connection/http.js.map +1 -1
  38. package/lib/connection/service.d.ts +3 -1
  39. package/lib/connection/service.d.ts.map +1 -1
  40. package/lib/connection/service.js +8 -0
  41. package/lib/connection/service.js.map +1 -1
  42. package/lib/connection/store.d.ts.map +1 -1
  43. package/lib/connection/store.js +2 -0
  44. package/lib/connection/store.js.map +1 -1
  45. package/lib/connection/tasks.d.ts +41 -1
  46. package/lib/connection/tasks.d.ts.map +1 -1
  47. package/lib/connection/tasks.js +154 -31
  48. package/lib/connection/tasks.js.map +1 -1
  49. package/lib/connection/types.d.ts +71 -2
  50. package/lib/connection/types.d.ts.map +1 -1
  51. package/lib/connection/types.js +5 -3
  52. package/lib/connection/types.js.map +1 -1
  53. package/lib/connection-cli.d.ts +3 -0
  54. package/lib/connection-cli.d.ts.map +1 -0
  55. package/lib/connection-cli.js +40 -0
  56. package/lib/connection-cli.js.map +1 -0
  57. package/lib/core/deletion-command.d.ts.map +1 -1
  58. package/lib/core/deletion-command.js +2 -1
  59. package/lib/core/deletion-command.js.map +1 -1
  60. package/lib/core/windows-runtime.d.ts +16 -0
  61. package/lib/core/windows-runtime.d.ts.map +1 -0
  62. package/lib/core/windows-runtime.js +123 -0
  63. package/lib/core/windows-runtime.js.map +1 -0
  64. package/lib/dsh/budget-settings.d.ts +2 -0
  65. package/lib/dsh/budget-settings.d.ts.map +1 -1
  66. package/lib/dsh/budget-settings.js +9 -3
  67. package/lib/dsh/budget-settings.js.map +1 -1
  68. package/lib/dsh/budgets.d.ts +2 -0
  69. package/lib/dsh/budgets.d.ts.map +1 -1
  70. package/lib/dsh/budgets.js +6 -0
  71. package/lib/dsh/budgets.js.map +1 -1
  72. package/lib/dsh/connection-approval.d.ts +5 -0
  73. package/lib/dsh/connection-approval.d.ts.map +1 -0
  74. package/lib/dsh/connection-approval.js +72 -0
  75. package/lib/dsh/connection-approval.js.map +1 -0
  76. package/lib/dsh/connection-history.d.ts +6 -0
  77. package/lib/dsh/connection-history.d.ts.map +1 -0
  78. package/lib/dsh/connection-history.js +52 -0
  79. package/lib/dsh/connection-history.js.map +1 -0
  80. package/lib/dsh/connection-host.d.ts +36 -3
  81. package/lib/dsh/connection-host.d.ts.map +1 -1
  82. package/lib/dsh/connection-host.js +97 -19
  83. package/lib/dsh/connection-host.js.map +1 -1
  84. package/lib/dsh/connection.d.ts.map +1 -1
  85. package/lib/dsh/connection.js +4 -1
  86. package/lib/dsh/connection.js.map +1 -1
  87. package/lib/dsh/index.d.ts.map +1 -1
  88. package/lib/dsh/index.js +4 -0
  89. package/lib/dsh/index.js.map +1 -1
  90. package/lib/dsh/official-windows-shell.d.ts +4 -0
  91. package/lib/dsh/official-windows-shell.d.ts.map +1 -0
  92. package/lib/dsh/official-windows-shell.js +128 -0
  93. package/lib/dsh/official-windows-shell.js.map +1 -0
  94. package/lib/dsh/windows-shell.d.ts +53 -0
  95. package/lib/dsh/windows-shell.d.ts.map +1 -0
  96. package/lib/dsh/windows-shell.js +182 -0
  97. package/lib/dsh/windows-shell.js.map +1 -0
  98. package/package.json +28 -16
  99. package/presets/super-code/agent.cordis.yml +3 -7
  100. package/runtime/windows/README.md +45 -0
  101. package/runtime/windows/arm64-busybox.exe.gz +0 -0
  102. package/runtime/windows/bash.exe.gz +0 -0
  103. package/runtime/windows/grep.exe.gz +0 -0
  104. package/runtime/windows/licenses/BusyBox-LICENSE.txt +348 -0
  105. package/runtime/windows/licenses/GPL-3.0.txt +674 -0
  106. package/runtime/windows/licenses/LGPL-3.0.txt +165 -0
  107. package/runtime/windows/licenses/MSYS-COPYING.LIB +165 -0
  108. package/runtime/windows/licenses/MSYS-COPYING.RUNTIME +674 -0
  109. package/runtime/windows/licenses/PCRE-LICENCE.txt +93 -0
  110. package/runtime/windows/licenses/ncurses-COPYING.txt +29 -0
  111. package/runtime/windows/manifest.json +236 -0
  112. package/runtime/windows/msys-2.0.dll.gz +0 -0
  113. package/runtime/windows/msys-iconv-2.dll.gz +0 -0
  114. package/runtime/windows/msys-intl-8.dll.gz +0 -0
  115. package/runtime/windows/msys-pcre-1.dll.gz +0 -0
  116. package/runtime/windows/sources/busybox-w32-FRP-6354-g5f09fb446.tgz +0 -0
  117. package/runtime/windows/sources.json +45 -0
  118. package/runtime/windows/x64-busybox.exe.gz +0 -0
@@ -0,0 +1,240 @@
1
+ # Evaluation Results
2
+
3
+ [中文](../EvaluationResults.md) · English
4
+
5
+ ## Pro100: continuous-environment comparison
6
+
7
+ All runs use Harness `0.2.1-rc.2`, `deepseek-v4.1-flash-1017`, high reasoning effort, and legacy budgets. Each group reuses its environment continuously across tasks. These are full 100-task results, sorted by tasks passed.
8
+
9
+ | Configuration | Passed/valid | Mean total tokens (M) | Mean time (min) | Mean model calls | Mean tool calls | Cache rate |
10
+ |---|---:|---:|---:|---:|---:|---:|
11
+ | Super Code 0.3.5 | **51/100** | 6.435 | 24.751 | 76.660 | 75.840 | 98.927% |
12
+ | Official Standard | 50/100 | 8.030 | 17.198 | 91.990 | 113.880 | 99.167% |
13
+ | Unmodified dsh-ops 0.4.4 · Standard | 49/100 | 7.099 | 23.132 | 82.500 | 102.360 | 99.062% |
14
+ | Official Standard + billion-context 0.1.209 | 45/100 | 6.359 | 18.471 | 108.950 | 131.140 | 97.654% |
15
+ | Unmodified dsh-ops 0.4.4 · PTC | 44/100 | 7.322 | 23.695 | 81.490 | 80.960 | 99.056% |
16
+
17
+ M means one million tokens, including reasoning tokens. Time includes some in-run service waits. Super Code `0.3.5` is the continuous legacy-budget baseline for this batch.
18
+
19
+ This batch uses different environment-reuse and time-accounting conventions from the historical budget experiments below. They remain separate; pass counts, times, and efficiency percentages are not mixed. The historical `49/100` and `46/100` results are from earlier runs, rather than the `51/100` and `50/100` in this table. Existing per-task files still describe their original runs.
20
+
21
+ ## Evaluation design
22
+
23
+ ### Task set
24
+
25
+ SWE-bench Pro hard-100 (frozen ID `swebench-pro-hard-100-ddd22492f1c38839`), graded with the official grader.
26
+
27
+ - "hard-100" is this project's selection of 100 tasks by an existing difficulty method, not an official hardest-100 list.
28
+ - Tuning uses only 33 valid hard tasks selected from the SWE-bench dev split. hard-100 is used only to evaluate frozen candidates and investigate issues, **never for tuning**, to avoid overfitting to the evaluation tasks.
29
+ - The historical scores below include later reviews (see [Grading corrections](#grading-corrections)); every run has 100 valid scores.
30
+
31
+ ### Baseline
32
+
33
+ Baselines include the official Standard preset and third-party plugin configurations. The historical official-preset comparison uses Standard rather than Minimal: on the old host, Standard + high passed 51 tasks and Minimal + high passed 46, with Standard using 23.5% fewer tokens per task.
34
+
35
+ ### Controlled variables
36
+
37
+ Comparisons on the same host keep model, reasoning effort, and budgets fixed while comparing preset and plugin combinations. Host or model changes are identified separately. The continuous-environment table above includes some in-run service waits; historical budget experiments use net time, excluding failed requests and retry waits.
38
+
39
+ ### Historical process
40
+
41
+ 1. **Old-host baseline**: official presets and plugin versions were evaluated on DSH `0.1.5-rc.2` with `deepseek-v4.1-flash`. The Super Code `0.3.0` candidate passed 56 tasks, above the best official result (Standard + high, 51).
42
+ 2. **Regression after the host upgrade**: on DSH `0.2.1-rc.2` with `deepseek-v4.1-flash-1017`, under default budgets Standard fell to 46 and Super Code `0.3.4` to 41, below Standard.
43
+ 3. **Root-cause analysis**: a host probe showed that the new host tightened context budgets (see [Contents of the legacy budgets](#contents-of-the-legacy-budgets)), identifying budgets as one cause of the regression.
44
+ 4. **Retest with legacy budgets**: both sides switched to legacy budgets. Standard stayed at 46; Super Code `0.3.5` rose to 49. Based on this, the plugin uses legacy budgets by default from `0.3.6`.
45
+ 5. **Cross-model check**: compared with native ZCode on `glm-5.3-flash` to test whether the approach depends on a specific model.
46
+
47
+ ## Historical summary
48
+
49
+ | Comparison | Result |
50
+ |---|---|
51
+ | New host, both on legacy budgets: Super Code `0.3.5` vs Standard + high | 49 vs 46; net time -21.3%, tokens -34.6%, model calls -25.5% |
52
+ | New host, default → legacy budgets | Super Code 41 → 49; Standard 46 → 46 |
53
+ | Old host: Super Code `0.3.0` candidate vs best official (Standard + high) | 56 vs 51 |
54
+ | Old host: Super Code `0.3.0` candidate vs Minimal + high | 56 vs 46; time -47.6%, tokens -44.9% |
55
+ | GLM-5.3-flash: Super Code `0.3.4` vs native ZCode | 45 vs 29; time -37.1%, tokens +52.4% |
56
+
57
+ ## New DSH and budgets
58
+
59
+ DSH `0.2.1-rc.2` · model `deepseek-v4.1-flash-1017` (API ID `deepseek/deepseek-flash`) · high.
60
+
61
+ | Metric (per-task mean) | Standard · default | Super Code 0.3.4 · default | Standard · legacy | Super Code 0.3.5 · legacy |
62
+ |---|---:|---:|---:|---:|
63
+ | Passed | 46/100 | 41/100 | 46/100 | **49/100** |
64
+ | Net minutes | 17.875 | 20.364 | 20.870 | 16.416 |
65
+ | Model calls | 85.050 | 68.810 | 91.980 | 68.540 |
66
+ | Total tokens | 6,832,805.820 | 5,088,673.550 | 7,806,295.960 | 5,108,386.410 |
67
+ | Cached input tokens | 6,710,566.400 | 4,972,166.400 | 7,679,298.560 | 4,993,935.320 |
68
+ | Uncached input tokens | 59,268.620 | 55,138.870 | 59,291.340 | 52,906.560 |
69
+ | Output tokens | 62,970.800 | 61,368.280 | 67,706.060 | 61,544.530 |
70
+ | Requests without usage | 0 | 0 | 0 | 1 |
71
+
72
+ - **Standard**: legacy budgets left the pass count unchanged and used 14.2% more tokens. Per task: 7 gains, 7 regressions.
73
+ - **Super Code**: legacy budgets passed 8 more tasks with only 0.4% more tokens and 19.4% less net time. Per task: 12 gains, 4 regressions.
74
+ - The two plugin runs used different versions (0.3.4 → 0.3.5), so not all of the gain can be attributed to budgets.
75
+ - The legacy-budget plugin run is `0.3.5` with explicit overrides. These budgets are the default from `0.3.6`, but there is **no** separate 100-task run of 0.3.6–0.3.8.
76
+ - The Standard legacy-budget run only overrides host budgets; Super Code is not loaded.
77
+
78
+ ### Contents of the legacy budgets
79
+
80
+ They restore the `0.1.5-rc.2` context policy: measure against the full window, compress at 80%, keep the latest 16% verbatim, cap summaries at 8,192 tokens, one extra compression attempt and one overflow retry. On newer hosts, the default and maximum PTC deadlines are 600 seconds. Several settings were restored together; this is not a single-parameter experiment. [How to configure](UsageGuide.md#runtime-budgets)
81
+
82
+ A [host probe](../../eval/results/swebench-pro-final-100/HostBudgetDiagnostics.json) with a fixed 1,000,000-token window and 384,000 reserved output tokens measured:
83
+
84
+ | | Old | New |
85
+ |---|---:|---:|
86
+ | Compression threshold | 800,000 | 550,464 |
87
+ | Verbatim retention | 160,000 | 98,560 |
88
+ | Summary request cap | 8,192 | 65,536 |
89
+
90
+ Summary instructions are identical in both. The probe used deterministic summaries, so it does not measure summary quality or show that every task triggered these changes.
91
+
92
+ ### Regression of the newer combination
93
+
94
+ Compared with the old host and model, Standard fell from 51 to 46 and Super Code from 56 (0.3.0 candidate) to 41 (0.3.4). Host, model, and plugin changed together. Budgets are one identified cause, but this does not prove they explain the whole regression.
95
+
96
+ The same task has passed in one run and failed in another. Because configurations also changed between runs, these data cannot estimate random variation under a fixed setup.
97
+
98
+ [Per-task data for all four runs](../../eval/results/swebench-pro-final-100/HarnessRc2Results.json)
99
+
100
+ ## Official presets
101
+
102
+ DSH `0.1.5-rc.2` · `deepseek-v4.1-flash`.
103
+
104
+ | Metric (per-task mean) | Minimal + high | Minimal + max | Standard + high | Standard + max | PTC + high | Create + high |
105
+ |---|---:|---:|---:|---:|---:|---:|
106
+ | Passed | 46/100 | 50/100 | **51/100** | 50/100 | 47/100 | 49/100 |
107
+ | Raw minutes | 25.685 | 32.529 | 20.683 | 20.389 | 17.302 | 19.856 |
108
+ | Net minutes | 25.122 | 32.009 | 18.826 | 19.507 | 15.122 | 18.714 |
109
+ | Median net minutes | 25.598 | 32.167 | 16.639 | 16.878 | 13.455 | 16.452 |
110
+ | P90 net minutes | 41.658 | 45.179 | 36.681 | 33.834 | 25.031 | 30.104 |
111
+ | Model calls | 124.660 | 138.920 | 92.370 | 101.260 | 71.160 | 93.600 |
112
+ | Top-level tool calls | 127.360 | 150.070 | 110.480 | 124.940 | 70.990 | 113.780 |
113
+ | Total input tokens | 11,477,169.950 | 14,849,497.540 | 8,771,693.040 | 11,434,388.180 | 6,160,934.650 | 9,205,287.290 |
114
+ | Total tokens | 11,578,046.900 | 14,966,097.260 | 8,854,513.910 | 11,543,772.990 | 6,238,434.510 | 9,292,949.400 |
115
+ | Cached input tokens | 11,404,101.120 | 14,770,140.160 | 8,713,578.230 | 11,366,136.320 | 6,099,266.510 | 9,145,025.240 |
116
+ | Uncached input tokens | 73,068.830 | 79,357.380 | 58,114.810 | 68,251.860 | 61,668.140 | 60,262.050 |
117
+ | Output tokens | 100,876.950 | 116,599.720 | 82,820.870 | 109,384.810 | 77,499.860 | 87,662.110 |
118
+ | Input cache hit rate | 99.363% | 99.466% | 99.337% | 99.403% | 98.999% | 99.345% |
119
+ | Retry minutes excluded (total) | 56.323 | 51.936 | 185.717 | 88.220 | 217.996 | 114.226 |
120
+ | Requests without usage | 3 | 11 | 4 | 0 | 5 | 2 |
121
+
122
+ - Create keeps the official tools, but evaluation isolation blocks `cordis_run` from running dynamic code on the host; read-only inspection still works.
123
+ - Minimal + high reuses a historical baseline on a different Harness revision, so differences cannot be attributed entirely to reasoning effort.
124
+
125
+ [Per-task data](../../eval/results/swebench-pro-final-100/OfficialPresetResults.json)
126
+
127
+ ## Historical versions
128
+
129
+ DSH `0.1.5-rc.2` · `deepseek-v4.1-flash` · high. Times use the historical raw convention (see [Methodology](#methodology)); don't compare them with the net times above.
130
+
131
+ | Metric (per-task mean) | Minimal + high | 0.0.9 | 0.1.2 | 0.2.0 layered memory | 0.3.0 Batch.3 |
132
+ |---|---:|---:|---:|---:|---:|
133
+ | Passed | 46 | 50 | 53 | 54 | **56** |
134
+ | Raw minutes | 25.685 | 16.458 | 16.011 | 15.148 | 13.461 |
135
+ | Median minutes | 26.138 | 14.398 | 13.736 | 13.510 | 12.197 |
136
+ | P90 minutes | 43.696 | 28.816 | 29.360 | 24.145 | 21.381 |
137
+ | Model calls | 124.660 | 92.780 | 99.780 | 93.830 | 69.290 |
138
+ | Top-level tool calls | 127.360 | 116.550 | 123.340 | 119.160 | 69.730 |
139
+ | Total input tokens | 11,477,169.950 | 9,525,315.530 | 9,840,382.730 | 9,202,574.270 | 6,290,407.000 |
140
+ | Cached input tokens | 11,404,101.120 | 9,461,981.440 | 9,775,799.040 | 9,142,005.760 | 6,231,823.360 |
141
+ | Uncached input tokens | 73,068.830 | 63,334.090 | 64,583.690 | 60,568.510 | 58,583.640 |
142
+ | Output tokens | 100,876.950 | 97,900.990 | 97,793.480 | 96,519.570 | 91,561.850 |
143
+ | Total tokens | 11,578,046.900 | 9,623,216.520 | 9,938,176.210 | 9,299,093.840 | 6,381,968.850 |
144
+ | Input cache hit rate | 99.363% | 99.335% | 99.344% | 99.342% | 99.069% |
145
+ | Requests without usage | 3 | 8 | 1 | 1 | 0 |
146
+
147
+ Relative to Minimal:
148
+
149
+ | Version | Pass rate | Mean time | Total tokens | Gains | Regressions |
150
+ |---|---:|---:|---:|---:|---:|
151
+ | 0.0.9 | +4 pp | -35.9% | -16.9% | 7 | 3 |
152
+ | 0.1.2 | +7 pp | -37.7% | -14.2% | 10 | 3 |
153
+ | 0.2.0 | +8 pp | -41.0% | -19.7% | 11 | 3 (37, 396, 503) |
154
+ | 0.3.0 Batch.3 | +10 pp | -47.6% | -44.9% | 13 | 3 |
155
+
156
+ - 0.3.0 vs 0.2.0: time -11.1%, tokens -31.4%, model calls -26.2%, passes 54 → 56 (8 gains, 6 regressions). One run; a net gain of two is not a stable improvement.
157
+ - 0.2.0 vs 0.1.2: time -5.4%, tokens -6.4%, passes 53 → 54 (7 gains, 6 regressions). Better overall does not mean every earlier pass held.
158
+ - One PTC call can run several operations, so top-level tool calls don't measure how many files were read or commands run.
159
+
160
+ Candidate identity:
161
+
162
+ - **0.2.0** is the frozen layered-memory candidate. Its package still carried version 0.1.3, SHA-256 `164cc1b505c05288f01b6f12c0756af049dbde8f1a49bdb11f9a320a19c925f5`.
163
+ - **0.3.0** is the installed candidate with internal version `0.3.0-batch.3`. The release package was checked file by file against the frozen runtime modules and passed unit tests and real-host regression; the 100 tasks were not rerun.
164
+ - Both share Harness commit `649bfcddf0e3532510a38380b9620570d8b13818`, but prompt changes and tool presentation still can't be separated. Memory tools were triggered only occasionally, so differences can't be attributed to memory alone.
165
+
166
+ [Four-version per-task data](../../eval/results/swebench-pro-final-100/CorrectedFourVersions.json) · [Batch.3 per-task data](../../eval/results/swebench-pro-final-100/Batch3Results.json)
167
+
168
+ ## Cross-model
169
+
170
+ `glm-5.3-flash` · max. Super Code `0.3.4` on DSH `0.1.5-rc.2`, versus the complete native ZCode Desktop `3.14.4` / CLI `0.16.9` (not an extracted Agent).
171
+
172
+ | Metric (per-task mean) | DSH + Super Code 0.3.4 | Native ZCode |
173
+ |---|---:|---:|
174
+ | Passed | **45/100** | 29/100 |
175
+ | Net minutes | 32.896 | 52.320 |
176
+ | Model calls | 66.890 | 64.310 |
177
+ | Total tokens | 5,499,154.470 | 3,609,511.930 |
178
+ | Cached input tokens | 5,302,796.160 | 3,356,862.720 |
179
+ | Uncached input tokens | 126,050.640 | 144,405.020 |
180
+ | Output tokens | 70,307.670 | 108,244.190 |
181
+ | Requests without usage | 29 | 120 |
182
+
183
+ This shows the approach also works on GLM. It compares two complete systems, so it doesn't isolate the plugin's contribution or generalize to all models.
184
+
185
+ [Per-task data](../../eval/results/swebench-pro-final-100/GLMComparison.json) · [Execution scripts](../../eval/glm/README.md)
186
+
187
+ ## Grading corrections
188
+
189
+ Every correction regrades an **original answer** or restores an omitted export row. No model was asked to answer again. Original verdicts, patch hashes, usage, and timing are kept.
190
+
191
+ ### 2026-10-21 to 23
192
+
193
+ | Run | Before | After | Date |
194
+ |---|---:|---:|---|
195
+ | Super Code 0.3.4 · default | 40/99 | 41/100 | 10-21 |
196
+ | Super Code 0.3.5 · legacy | 48/99 | 49/100 | 10-21 |
197
+ | Standard high · default | 45/100 | 46/100 | 10-22 |
198
+ | Standard high · legacy | 46/100 | 46/100 | 10-22 |
199
+ | GLM Super Code 0.3.4 | 44/100 | 45/100 | 10-22 |
200
+ | GLM native ZCode | 28/100 | 29/100 | 10-22 |
201
+ | Standard max · DSH 0.1.5-rc.2 | 49/99 | 50/100 | 10-23 |
202
+
203
+ - The first six are the same NodeBB task. After fixing offline dependency setup (base fails, reference passes), each run's original patch was graded twice; only complete, matching results count. Only four exact quote/space test-name differences are accepted; assertions, timeouts, and statuses are unchanged, and grading runs offline. Standard with legacy budgets still has a real failure, so it's unchanged.
204
+ - Standard max restores Teleport task 610: its original grade was a pass but was missing from the export.
205
+
206
+ [Correction evidence and original hashes](../../eval/results/swebench-pro-final-100/GradingReconciliation.json)
207
+
208
+ ### Earlier reviews
209
+
210
+ | Version | Original passes | Corrected | Environment regrades |
211
+ |---|---:|---:|---:|
212
+ | Minimal | 41 | 46 | 4 |
213
+ | 0.0.9 | 46 | 50 | 3 |
214
+ | 0.1.2 | 49 | 53 | 4 |
215
+ | 0.2.0 | 48 | 54 | 5 |
216
+
217
+ - **Environment failures**: 16 records hit issues such as a ConfigFileTest 500 ms timeout or a SIGKILLed Jest worker. Each was regraded with its original patch and needed two matching, clean results — **not** retried until it passed. 12 recovered, 4 still failed.
218
+ - **Dependency downloads**: 12 Node build-dependency download failures in the official-preset runs, same rule: 11 recovered, 1 still failed.
219
+ - **Test-name mismatches**: 31 records differed only in test names (16 dynamic-year cases in OpenLibrary, 15 trailing quote/space cases in NodeBB). All raw tests passed and every missing required name mapped exactly. Only these two mappings are accepted; no fuzzy matching, no borrowing results from other versions.
220
+ - **Older experiments**: 7 newly found environment failures were regraded: 3 recovered, 4 still failed. Three other old records (early Minimal task 4, old Graph task 623, and old Graph task 99, which had copied task 378's metadata) were found and reviewed. None are in the published scores, which are unchanged.
221
+
222
+ ### Review coverage
223
+
224
+ - All 3,296 Pro / Dev primary records had their raw logs reparsed (this counts retained duplicates, not unique tasks). All 1,212 Dev verdicts agree. All 400 published four-version records bind exactly to their original summaries and grading logs.
225
+ - For 3,224 records, request ledgers match summaries (calls, tokens, missing usage) with no duplicate request IDs; 72 have no saved ledger.
226
+ - This is not a full audit of every raw session or provider bill.
227
+
228
+ [Per-record review](../../eval/results/swebench-pro-final-100/GradingReviewResults.json)
229
+
230
+ ## Methodology
231
+
232
+ - **Net time**: excludes failed requests and retry waits in the final valid answer; excludes grading.
233
+ - **Raw time** (historical table): Web RPC time of the final valid answer, excluding grading, image downloads, and regrading, but without subtracting internal failed requests or retries. The median averages the 50th and 51st values; P90 is the 90th. An older 0.0.9 document said 16.27 minutes; the unified convention gives 16.458.
234
+ - **Call counts**: exclude logged failed requests.
235
+ - **Tokens**: total = cached input + uncached input + output (including reasoning). Cache hit rate = all cached input / all input, not a per-task average. Summed per task, then averaged over valid tasks.
236
+ - **Missing usage is not estimated**, so tokens are not a full bill and exclude earlier abandoned attempts.
237
+ - **Execution**: DSH via native Web RPC; ZCode via its complete native CLI.
238
+ - **Privacy**: public data keeps only fields needed for auditing — no private provider addresses, credentials, environment configuration, local paths, or verbatim user messages. Per-task result files stay in the repository, not the npm package.
239
+
240
+ [All result tables](../../eval/results/swebench-pro-final-100/ResultsTables.md) · [Result files](../../eval/results/swebench-pro-final-100/README.md)
@@ -0,0 +1,321 @@
1
+ # Usage Guide
2
+
3
+ [中文](../UsageGuide.md) · English
4
+
5
+ New here? Read the Install and Use sections of the [README](../../README.en.md) first. This page covers the details.
6
+
7
+ - [Model](#model)
8
+ - [Can't find the preset](#cant-find-the-preset)
9
+ - [Settings](#settings)
10
+ - [Preset version and reinstall](#preset-version-and-reinstall)
11
+ - [Sidebar](#sidebar)
12
+ - [Batched tool calls](#batched-tool-calls)
13
+ - [Runtime budgets](#runtime-budgets)
14
+ - [Windows command environment](#windows-command-environment)
15
+ - [Deletion protection](#deletion-protection)
16
+ - [MCP connection](#mcp-connection)
17
+ - [Frontend Skill](#frontend-skill)
18
+
19
+ ## Model
20
+
21
+ The plugin has no model settings of its own. If you already have a working model, just use it. Otherwise add a provider under Harness **Settings → Models**, then pick a model and reasoning effort below the message input.
22
+
23
+ Child Agents use the parent's model by default. Harness manages permissions and tools.
24
+
25
+ ## Can't find the preset
26
+
27
+ First make sure the plugin is enabled, then check your host version against [Compatibility](Compatibility.md). Then:
28
+
29
+ **Harness 0.1.7 and later (declarative presets)**: the plugin declares the preset and the host loads it. Go to **Settings → Super Code** and click **Install preset**. If the host doesn't expose management APIs, the page says so.
30
+
31
+ **Harness 0.1.5 / 0.1.6 (directory presets)**: the plugin installs a user copy on first load. If it's missing, install it manually from **Settings → Super Code**.
32
+
33
+ - If the default identifier `super-code` is taken, pick another one. Existing presets are never overwritten.
34
+ - If you delete this copy yourself, a restart won't bring it back. Install it again manually.
35
+
36
+ Before plugin 0.2.0, the settings page lives under **Plugins → Plugin configuration**.
37
+
38
+ ## Settings
39
+
40
+ **Settings → Super Code** has five tabs:
41
+
42
+ | Tab | Contents |
43
+ |---|---|
44
+ | Home | Preset status and versions, deletion-protection level, MCP switch, connected/past conversation counts |
45
+ | Preset configuration | Install, reinstall, rename, Windows command environment |
46
+ | Context settings | [Runtime budgets](#runtime-budgets) |
47
+ | Deletion protection | [Deletion protection](#deletion-protection) |
48
+ | Connection | [MCP connection](#mcp-connection) |
49
+
50
+ Switching tabs keeps unsaved input.
51
+
52
+ ### Names and language
53
+
54
+ - The identifier selects the preset; the display name can be changed separately. Chinese characters and spaces are fine, up to 120 characters.
55
+ - Default names and descriptions follow Harness's Chinese/English setting. Fields you've edited are left alone.
56
+ - Changing the language only updates display fields, not preset content or version.
57
+ - Older Harness versions cache the preset list, so the page reloads once when the wording changes.
58
+ - Preset files on one host share one language; different clients can't show different languages at the same time.
59
+ - A read-only install directory or YAML the plugin can't safely parse may block syncing. Refresh and retry from Settings.
60
+
61
+ ## Preset version and reinstall
62
+
63
+ Settings shows the **plugin version** and the **preset version** separately.
64
+
65
+ - Same version: the preset matches the installed plugin. It doesn't mean there's no newer release on npm.
66
+ - Old preset without a version: shows "Version not recorded" and isn't treated as current.
67
+ - Updating the plugin doesn't update an installed preset. To get the new preset, reinstall.
68
+
69
+ **Reinstall**: click **Reinstall preset** → the dialog lists the presets to be replaced plus the new name and identifier → check and confirm.
70
+
71
+ - You can remove entries, but not confirm an empty list. Cancel or Esc changes nothing.
72
+ - Reinstalling overwrites the old preset. Save your customizations first.
73
+ - Existing sessions keep the old preset; new sessions use the new one.
74
+
75
+ **Safety**:
76
+
77
+ - Only presets verifiably installed by this plugin are replaced (directory: install record, UUID, path, directory identity; declarative: source marker or install record). Unmarked old copies and same-name declarations are left alone.
78
+ - The old content is backed up in `.super-code-backup-*`: under the user preset root for directory hosts, under the current profile for declarative hosts (ownership records in `.super-code-presets.json`).
79
+ - A failed install restores automatically. After an unexpected crash, restore manually from the backup.
80
+
81
+ ## Sidebar
82
+
83
+ In the right sidebar choose **Super Code**. Three sections, at most one open at a time, Tasks by default. Click the open heading to collapse all sections. Switching keeps reading position, filters, and drafts. The UI follows Harness's Chinese/English setting.
84
+
85
+ ### Tasks
86
+
87
+ Read-only. Shows what's already recorded in the session:
88
+
89
+ - **Goal**: the recorded task goal, or the user's original message if there is none.
90
+ - **Steps**: todos the model wrote down, shown as done/total. No steps means no invented plan or progress.
91
+ - **Tool calls**: success, failure, and running counts grouped by tool.
92
+ - **Files**: successful file changes that can be confirmed from tool arguments or diffs, including nested PTC calls.
93
+
94
+ Notes:
95
+
96
+ - A stopped run doesn't mean the task is done.
97
+ - The file list isn't a full Git diff: indirect changes from the terminal or external scripts may be missing, and a past change doesn't mean the file still differs. Failed, pending, read-only, and inherited child-Agent operations don't count.
98
+ - Everything is expanded in a virtual list, so long histories stay smooth. There is a display limit; you'll see a notice when it's hit, and full content is in the details.
99
+ - It doesn't change prompts, model requests, or tool definitions, and writes nothing into model context.
100
+
101
+ ### Agent execution
102
+
103
+ The Agent tree, with status, usage, and cache rate for each Agent.
104
+
105
+ - Drag empty space to pan; zoom with the wheel or buttons.
106
+ - Click a node to open its details in a new sidebar tab. The main conversation stays put.
107
+ - Details are shown as a chat: user task, Agent replies, expandable tool calls and results. The header shows status, tokens, and cache; open **Details** for more usage, task records, and memory activity.
108
+ - Running animations respect the system's reduced-motion setting.
109
+
110
+ The [task](../images/task-status.png) and [tree screenshots](../images/agent-tree.png) render the current plugin with official frontend components and sample data. They illustrate the UI, not model quality.
111
+
112
+ ### Memory library
113
+
114
+ Pick **This project** or **Global preferences**, then browse by topic or search (topic, summary, identifier). Click an entry for details and source. You can add, edit, and delete (with confirmation). Manually edited entries are marked as manual, with current content only and no version history.
115
+
116
+ Memory has three layers:
117
+
118
+ | Layer | What it keeps | Scope |
119
+ |---|---|---|
120
+ | Task state | Current goal, constraints, progress, checks | Current conversation |
121
+ | Project memory | Sourced project facts, lessons, agreements | Same workspace path, by topic |
122
+ | Global preferences | Preferences you explicitly want across projects | Same Harness storage root |
123
+
124
+ - To keep an agreement long-term, just tell the Agent. It's saved when the tool reports success and it shows up in the library.
125
+ - Project memory saved by an Agent must link to a real tool result; global preferences need your own words and a clear cross-project intent.
126
+ - Projects at different paths, including Git worktrees, don't share project memory.
127
+ - Memory lives in local host storage, not in project files, and the whole library is never sent to the model. At most 4 summaries from the current topic (≤2 KiB) and 4 from global preferences (≤1 KiB) are included automatically; details require an explicit read.
128
+ - Memory can't override the current request, grant permissions, or prove code is unchanged since it was recorded.
129
+ - You can browse memory from past sessions without resuming an Agent or calling the model.
130
+
131
+ ### Which memory each Agent used
132
+
133
+ Click a node in the tree → open **Details** → expand **Memory activity**. It distinguishes context inclusion, summary reads, detail reads, saves, and deletions. Click a record to jump to that entry in the library.
134
+
135
+ - These are actions recorded by the host, not proof that the model understood or followed them.
136
+ - History a child Agent inherits from its parent doesn't count as its own read; failed calls don't count as reads.
137
+ - Up to the latest 100 are shown; the full record is in the session log.
138
+ - If an entry is later edited or deleted, the record stays, but the library only shows current content.
139
+
140
+ ## Batched tool calls
141
+
142
+ Super Code uses Harness-native PTC: one model call can combine several tool operations, such as reading a few unrelated files at once, then decide what to do next. No separate mode needed.
143
+
144
+ - Independent reads run in parallel; writes, tests, state changes, and dependent steps run in order.
145
+ - On partial failure, successful results are kept and only failed or stale reads are retried.
146
+ - The plugin declares which of its task and memory actions can run in parallel; unknown actions run alone. Other tools follow their own Harness declarations.
147
+ - The host handles permissions, cancellation, and result storage.
148
+
149
+ Batching cuts round trips between the model and tools. It doesn't make every operation faster.
150
+
151
+ ## Runtime budgets
152
+
153
+ Under the **Context settings** tab. The plugin already uses the better-performing legacy budgets, so you usually don't need to touch this. Values in parentheses are the host's own defaults, for comparison.
154
+
155
+ | Type | Includes | Applies to |
156
+ |---|---|---|
157
+ | Common budgets | Compression ratios, summary cap, PTC deadlines, retries | Super Code by default; also Standard, PTC, Minimal, and Create when "Also apply to official presets" is on |
158
+ | Super Code only | Active task record limit, task-memory capacity | Super Code only |
159
+
160
+ - "Also apply to official presets" is off by default. It only changes budgets, not official tools or prompts, and never touches custom presets.
161
+ - Saved changes apply to new Agents. Running Agents keep their settings and aren't restarted.
162
+ - Leave a field blank to use the plugin default; **Reset to defaults** clears UI overrides.
163
+ - A failed save keeps your input. If it says budgets were changed elsewhere, reload first.
164
+ - On older hosts without `ptcRuntime`, PTC deadline fields are disabled; other budgets still work.
165
+
166
+ Plugin defaults (no need to add them to your config; only write the fields you want to change):
167
+
168
+ ```yaml
169
+ budgets:
170
+ pressureBasis: window # use the full context window; "host" follows the host policy
171
+ thresholdRatio: 0.8 # start compressing at 80%
172
+ retainRatio: 0.16 # keep the latest 16% verbatim; must be below thresholdRatio
173
+ summaryMaxTokens: 8192 # summary cap
174
+ compactionRetries: 1 # extra compression attempts
175
+ maxOverflowRetries: 1 # overflow retries
176
+ ptcTimeoutMs: 600000 # default PTC deadline (ms, including tool waits)
177
+ ptcMaxTimeoutMs: 600000 # PTC deadline cap, never above the host cap
178
+ applyToOfficialPresets: false
179
+ maxTasks: 32 # Super Code: active task records
180
+ maxContextBytes: 32768 # Super Code: task-memory context bytes
181
+ ```
182
+
183
+ - A shorter deadline set explicitly on a call still applies.
184
+ - Older hosts time PTC by busy CPU time; newer hosts by elapsed time. The two aren't comparable.
185
+ - Raising `maxTasks` or `maxContextBytes` uses more context. The defaults are usually fine.
186
+
187
+ ## Windows command environment
188
+
189
+ See [Compatibility](Compatibility.md) for the tested scope.
190
+
191
+ On Windows, Super Code defaults to bundled GNU Bash, BusyBox and GNU grep. Common Bash commands work without installing Git for its shell. Developer tools such as Git, Node and Python still need separate installation. macOS and Linux keep the host's existing environment.
192
+
193
+ Turn off **Preset configuration → Command environment → Use bundled Bash (Windows)** to use the host's PowerShell for new conversations. Changes save automatically; running Agents retain their environment, and child Agents inherit their conversation's shell and tool restrictions. Reinstall an older installed preset to pick up the new shell entry. Selection follows the DSH server's platform, independently of the browser's operating system. These switches are editable only on Windows hosts; other platforms show gray, disabled switches with an **Only available on Windows** hover tooltip.
194
+
195
+ Enable **Also apply to official presets** in the same section to use bundled Bash in Standard, PTC and Create; it is off by default. This choice is independent of the budget and deletion-protection scopes. Turning off the main Bash switch also restores the original shell for new official Agents while retaining the saved scope choice. Minimal keeps its persistent terminal; custom presets are not changed automatically. Official presets can use this setting without an installed Super Code preset copy.
196
+
197
+ The plugin carries its runtime and prepares it offline under `%LOCALAPPDATA%\dsh-super-code\shell` on first use. It does not change the system PATH. Settings shows readiness and preparation errors; turn the switch off to use the host environment after an error. Failed commands are never replayed through a different shell. DSH continues to own approvals, deletion protection and process management.
198
+
199
+ The official Windows sandbox blocks the internal named pipes MSYS requires. Bash calls under `read-only` or `workspace-write` therefore fail explicitly before the command runs. If still needed, the Agent can request DSH approval for the **exact same command** with `sandbox_permissions="danger-full-access"` and a justification. Approval permits only that invocation; rejection, cancellation, or disabled approvals leave it unexecuted. The plugin never changes session permissions or switches shells automatically. If the outer PTC `run_code` program also needs wider access, it requires its own host approval; approving Bash does not authorize that outer program.
200
+
201
+ Programs still run on Windows. BusyBox does not implement every GNU option; `.cmd` quoting and native `/` arguments differ from Linux. MSYS converts some paths automatically. Use `MSYS2_ARG_CONV_EXCL` for an individual invocation that needs literal arguments rather than disabling conversion globally. The bundle does not include `trash`, and permanent deletion is never presented as a recycle-bin operation. On ARM64 Windows, Bash, grep and the MSYS DLLs run through x64 emulation. See [Compatibility](Compatibility.md) for tested scope and the [runtime notes](../../runtime/windows/README.md) for sources and licenses.
202
+
203
+ ## Deletion protection
204
+
205
+ Under the **Deletion protection** tab. Default is **Relaxed**.
206
+
207
+ | Mode | Behavior |
208
+ |---|---|
209
+ | Off | No instructions, no blocking |
210
+ | Relaxed (default) | Tells Agents to delete with recoverable `trash`, in scripts too. If you explicitly ask for `rm`, it's used without extra plugin confirmation |
211
+ | Strict | No direct `rm`, even in scripts. Recognized permanent deletions need your approval each time, and only temp-file or build-artifact cleanup is allowed |
212
+
213
+ The exact Relaxed instruction: **Delete files or directories with `trash <path>` (recoverable) by default; use `rm` only for temp files or build artifacts after I've confirmed.**
214
+
215
+ - Only Super Code is protected by default. "Also apply to official presets" is off by default (independent of the budget switch with the same name).
216
+ - Saved changes apply to later commands.
217
+ - Legacy `true` means Strict, `false` means Off.
218
+
219
+ Strict mode checks terminal commands before they run for `rm`, common wrappers, inline shell scripts, and PowerShell deletion commands such as `Remove-Item`, including terminal calls inside PTC.
220
+
221
+ - Only a one-time host approval that you accept lets it through; rejection, cancellation, and errors all block. Each approval covers that one call.
222
+ - If `trash` isn't available, the Agent should use another recoverable method or stop.
223
+ - It isn't an OS sandbox: it doesn't inspect external script files, obfuscated programs, or every language's delete API. Use the host sandbox for process-level isolation.
224
+
225
+ Relaxed mode relies on instructions only and blocks nothing. Host permission checks still apply.
226
+
227
+ ## MCP connection
228
+
229
+ Lets external MCP clients (such as other AI coding tools) hand tasks to DSH. Off by default, listens on `127.0.0.1` only, uses Streamable HTTP with token auth.
230
+
231
+ ### Turn it on
232
+
233
+ Under the **Connection** tab:
234
+
235
+ 1. Check the working directories to allow (subdirectories included).
236
+ 2. Adjust the port and maximum connections if needed.
237
+ 3. Turn the switch on. Changes save automatically.
238
+
239
+ **Allow MCP to create conversations** is on by default. Turning it off requires explicit reuse. New conversations join the existing workspace; an unregistered directory gets a workspace with the same name and no suffix. New titles start with `[MCP]`.
240
+
241
+ **Allow caller approval** is off by default. When enabled, an exact one-time tool approval for a delegated task can be sent to the caller through an interactive form or `dsh_approve`. Host policy remains authoritative, and directory consent always stays in DSH.
242
+
243
+ Directories:
244
+
245
+ - The DSH workspace list is reread every time you open the tab. On first setup, existing workspaces are preselected; workspaces added later are **not** granted access automatically.
246
+ - Add directories with the directory picker. Uncheck to revoke; unchecking the last one also turns MCP off.
247
+
248
+ Connections:
249
+
250
+ - Maximum connections defaults to 3, up to 32, and is also the task concurrency limit.
251
+ - Disconnect clients from the Connection tab; idle connections drop after 10 minutes. Disconnecting doesn't cancel accepted tasks.
252
+ - "Connected conversations" on Home means the linked MCP connection is still online, regardless of whether the task finished. After disconnect they count as past conversations.
253
+
254
+ Port conflicts are reported directly. Use the URL shown on the page.
255
+
256
+ ### Configure the client
257
+
258
+ 1. Copy **Connection Prompt** from the Connection tab and give it to a client that supports Streamable HTTP MCP. It includes the URL, auth method, and tool notes, but **not** the real token.
259
+ 2. Copy the token separately and configure it in the client as `Authorization: Bearer <token>`. Don't put the token in a repository or a shared prompt.
260
+ 3. Keep DSH running. Rotating the token invalidates the old one immediately; update the client.
261
+
262
+ Whether a client can set up MCP from the prompt by itself depends on the client. You can also enter the URL and auth manually. The token is shown by default on the Connection tab and hidden when you leave.
263
+
264
+ ### Tools
265
+
266
+ | Tool | Purpose |
267
+ |---|---|
268
+ | `dsh_status` | Inspect directories, policies, capacity, blocking tasks, and recovery guidance |
269
+ | `dsh_models` | List exact model/effort IDs for `dsh_run` and `dsh_send`; omission retains the current/default selection |
270
+ | `dsh_read` | Page through owned conversations and managed children, including public messages, tool results, and failure details; excludes reasoning and private configuration |
271
+ | `dsh_approve` | Approve or reject one exact pending operation only when caller approval is enabled |
272
+ | `dsh_sessions` | Call first after connecting: lists recent conversations per directory with status, whether they can be reused, connection capacity, and task concurrency |
273
+ | `dsh_run` | Start a task. Pass `taskId` to reuse a specific conversation, or `newConversation: true` for a new one (passing neither also creates new). It **never** picks the latest conversation on its own. Same `requestId` + same input won't dispatch twice; different input is a conflict |
274
+ | `dsh_wait` | Read task status, output, workspace changes, and new events, waiting up to 30 seconds. Without a task ID, lists all tasks page by page |
275
+ | `dsh_send` | Add a follow-up or continue in the same conversation, with a new `requestId`. Never approves permissions for you |
276
+ | `dsh_request_directory` | Ask for a new working directory; you approve it in DSH |
277
+ | `dsh_cancel` | Request cancellation of the conversation and its child tasks. Keep checking status to confirm it actually stopped |
278
+
279
+ ### Requesting a new directory
280
+
281
+ The client calls `dsh_request_directory` with a `requestId`, an existing absolute `path`, and a `reason`. DSH shows a global dialog (Settings doesn't need to be open) with the client name, directory, and reason.
282
+
283
+ - Access is granted only when you click **Allow access**. A model's auto-approval can't do it for you.
284
+ - Repeat the same call to check status: `pending` / `approved` / `rejected` / `expired`.
285
+ - Tasks can't run in that directory until it's approved.
286
+ - At most 8 pending requests, expiring after 5 minutes. Rejection, stopping the service, or restarting never grants access.
287
+ - Client name and reason are filled in by the client; treat them as hints only.
288
+
289
+ ### Task status and recovery
290
+
291
+ - Tasks use the conversation's current or explicitly selected model, the Super Code preset, and your permissions. Model/effort choices persist in that conversation. Permissions are never auto-approved.
292
+ - The client's sandbox doesn't carry over to DSH. Allowed directories only control where tasks can start; they aren't a file sandbox.
293
+ - Tasks in the same workspace don't run in parallel. For parallel work, prepare separate worktrees yourself; the plugin doesn't create, delete, or merge worktrees.
294
+ - `waiting_confirmation`: the caller can decide only when caller approval is enabled and an exact pending request exists; otherwise the user handles it in DSH.
295
+ - `finished`: execution ended, but `acceptance` is always `not-verified`. The caller must check the result.
296
+ - Returned file info is an observation of the Git workspace, including changes that existed before the task, so it doesn't prove the task made them. Non-Git directories or exceeded limits are marked unavailable.
297
+ - Wait timeouts and client disconnects don't cancel tasks. Turning off the connection just stops new requests.
298
+ - After a restart, prompts are never resent automatically. Find the ID via `dsh_sessions` or the task list, check the state, then continue explicitly. If the state can't be confirmed, it shows `interrupted` or `unavailable`; tasks not confirmed as stopped keep their concurrency slot.
299
+
300
+ On capacity refusal, retain the same `requestId` and input and wait through `dsh_status` and `dsh_wait`. Do not cancel other clients' tasks or reconfigure the serving app. Release SDK sessions with `transport.terminateSession()` before `client.close()`; closing alone does not release server capacity. The packaged `super-code-mcp` CLI accepts JSON on stdin and reads its token from the private `DSH_MCP_TOKEN` environment variable.
301
+
302
+ ### Storage and limits
303
+
304
+ - Task records, settings, and the token are stored in the profile's `super-code-connection` directory (directory 0700, files 0600). One service instance per profile.
305
+ - Limits: 200 task records, 128 follow-ups per task, the latest 200 events, the last 12,000 output characters. Directory-request history keeps up to 100 entries, in memory only.
306
+ - When task records are full, new tasks are rejected explicitly; old records are never dropped silently.
307
+
308
+ ## Frontend Skill
309
+
310
+ The plugin ships `super-code-frontend`, used for pages, components, visual tweaks, responsive layout, interaction states, and browser checks. It focuses on:
311
+
312
+ - whether elements line up on the same edges
313
+ - whether what you see matches what you can click
314
+ - whether controls stay put, are easy to reach, and need little input
315
+
316
+ It keeps the project's own visual style, needs no particular framework, and adds no tools. Normally only its name and short description go to the model; the body and relevant references load when a task matches. You can also ask for it directly: "use super-code-frontend".
317
+
318
+ - Only presets installed or reinstalled from 0.3.3 onward include it. For existing presets, back up your customizations, then reinstall.
319
+ - A project or user skill with the same name overrides the bundled one, following host precedence.
320
+ - The browser-check part is guidance only: no enforced loop detection, no automatic long-term memory writes.
321
+ - Whether it improves frontend quality needs a separate real-task evaluation; install tests and SWE scores can't show that.
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,21 @@
1
+ import type { CallerApproval, CallerApprovalDecision } from './types.js';
2
+ export type ApprovalOutcome = 'allowed-once' | 'rejected' | 'cancelled' | 'unavailable';
3
+ export type ApprovalAnswer = ApprovalOutcome | 'host';
4
+ export declare class CallerApprovals {
5
+ private readonly now;
6
+ private readonly requests;
7
+ private readonly settled;
8
+ private readonly presenting;
9
+ constructor(now?: () => number);
10
+ request(input: Omit<CallerApproval, 'id' | 'createdAt' | 'expiresAt'>, signal?: AbortSignal): Promise<ApprovalAnswer>;
11
+ private expire;
12
+ pending(taskId: string): CallerApproval[];
13
+ present(taskId: string, id: string): boolean;
14
+ defer(taskId: string, id: string): void;
15
+ decide(taskId: string, id: string, decision: CallerApprovalDecision): {
16
+ outcome: ApprovalOutcome;
17
+ repeated: boolean;
18
+ };
19
+ withdraw(taskId?: string, answer?: ApprovalAnswer): void;
20
+ }
21
+ //# sourceMappingURL=approvals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../src/connection/approvals.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAExE,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,CAAC;AACxF,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG,MAAM,CAAC;AAEtD,qBAAa,eAAe;IAId,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHhC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0E;IAClG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;gBAClB,GAAG,GAAE,MAAM,MAAiB;IACnD,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IAkB3H,OAAO,CAAC,MAAM;IAGd,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE;IAIzC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAM5C,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAIvC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,GAAG;QAAE,OAAO,EAAE,eAAe,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE;IAgBrH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,GAAE,cAAuB,GAAG,IAAI;CAGjE"}