hypercore-cli 1.1.2 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/LICENSE +92 -21
  2. package/README.md +8 -1
  3. package/dist/App-YMX7FSXR.js +1 -0
  4. package/dist/api-ELP6F4NC.js +1 -0
  5. package/dist/auth-SICBMA3P.js +1 -0
  6. package/dist/auth-X6CUT3DW.js +1 -0
  7. package/dist/background-ACODXSUG.js +1 -0
  8. package/dist/backlog-JD2IM336.js +1 -0
  9. package/dist/chunk-2QI2IU2V.js +1 -0
  10. package/dist/chunk-3KFRDIPQ.js +1 -0
  11. package/dist/chunk-42C5J7PN.js +1 -0
  12. package/dist/chunk-4D7XVJ7Q.js +1 -0
  13. package/dist/chunk-5KUSGQP2.js +1 -0
  14. package/dist/chunk-5OEFAGD5.js +1 -0
  15. package/dist/chunk-AUQ64BK2.js +1 -0
  16. package/dist/chunk-AV244H5C.js +1 -0
  17. package/dist/chunk-BQVBEFS4.js +1 -0
  18. package/dist/chunk-BYWQLFP2.js +1 -0
  19. package/dist/chunk-C6YL7UHE.js +1 -0
  20. package/dist/chunk-COITWWZJ.js +1 -0
  21. package/dist/chunk-CR7UUJVX.js +1 -0
  22. package/dist/chunk-E3MULLBX.js +1 -0
  23. package/dist/chunk-EZHYVJGQ.js +1 -0
  24. package/dist/chunk-FAMURNNH.js +1 -0
  25. package/dist/chunk-FGP56E4W.js +1 -0
  26. package/dist/chunk-FHGATV5B.js +1 -0
  27. package/dist/chunk-I2G27Y5P.js +1 -0
  28. package/dist/chunk-IKF43TX2.js +1 -0
  29. package/dist/chunk-INSPHCBN.js +1 -0
  30. package/dist/chunk-JHMV366T.js +1 -0
  31. package/dist/chunk-L52HX5SX.js +1 -0
  32. package/dist/chunk-LQMDUKIE.js +1 -0
  33. package/dist/chunk-M3MTKGA5.js +1 -0
  34. package/dist/chunk-MPO54FU3.js +1 -0
  35. package/dist/chunk-PVKCZI6A.js +1 -0
  36. package/dist/chunk-Q7KEPCYL.js +1 -0
  37. package/dist/chunk-ROBZ6PAL.js +1 -0
  38. package/dist/chunk-RXB5BS2N.js +1 -0
  39. package/dist/chunk-RZ3HNYMT.js +1 -0
  40. package/dist/chunk-UCGLRMTG.js +1 -0
  41. package/dist/chunk-UEHJVRKB.js +1 -0
  42. package/dist/chunk-UZYX5GGF.js +1 -0
  43. package/dist/chunk-XQJBB725.js +1 -0
  44. package/dist/chunk-YXCRL6K3.js +1 -0
  45. package/dist/claude-US2QPRBA.js +1 -0
  46. package/dist/commands-EKPWCB3T.js +1 -0
  47. package/dist/commands-GYNKP5WV.js +1 -0
  48. package/dist/commands-QHJLREPM.js +1 -0
  49. package/dist/config-2OUL5FLS.js +1 -0
  50. package/dist/config-loader-N7IBWN2P.js +1 -0
  51. package/dist/diagnose-NLHN4SAJ.js +1 -0
  52. package/dist/display-RYAW2GFB.js +1 -0
  53. package/dist/extractor-3KTM2IUL.js +1 -0
  54. package/dist/feature-flag-VVIF5FJG.js +1 -0
  55. package/dist/history-3R2UHRDQ.js +1 -0
  56. package/dist/index.js +1 -402
  57. package/dist/instance-registry-I5AIVJE2.js +1 -0
  58. package/dist/keybindings-RN3A7CRW.js +1 -0
  59. package/dist/loader-3IKPXP4R.js +1 -0
  60. package/dist/network-K5HRJE44.js +1 -0
  61. package/dist/notify-O6FNVHC4.js +1 -0
  62. package/dist/openai-compat-IPCMINVF.js +1 -0
  63. package/dist/panels-2R5YEFXH.js +1 -0
  64. package/dist/permissions-5O7KVAXU.js +1 -0
  65. package/dist/prompt-VWFPFM4N.js +1 -0
  66. package/dist/quality-GPQD25UL.js +1 -0
  67. package/dist/repl-CL4SYHU4.js +1 -0
  68. package/dist/roadmap-QRZODSNJ.js +1 -0
  69. package/dist/server-PKOHK5M2.js +1 -0
  70. package/dist/session-5HDDQQP6.js +1 -0
  71. package/dist/skills-DXWSVJSU.js +1 -0
  72. package/dist/store-WXXTKTTL.js +1 -0
  73. package/dist/team-N2GF4YYS.js +1 -0
  74. package/dist/telemetry-NT4UZLBS.js +1 -0
  75. package/dist/test-runner-F6B6RH3S.js +1 -0
  76. package/dist/theme-JJJ6ABR2.js +1 -0
  77. package/dist/upgrade-RUG3R7R5.js +1 -0
  78. package/dist/verify-6OGRY2PR.js +1 -0
  79. package/dist/version-4RHTDUNQ.js +1 -0
  80. package/dist/web/static/app.js +1 -562
  81. package/dist/web/static/index.html +114 -126
  82. package/dist/web/static/mirror.css +1 -1001
  83. package/dist/web/static/mirror.html +155 -178
  84. package/dist/web/static/mirror.js +1 -1125
  85. package/dist/web/static/onboard.css +1 -302
  86. package/dist/web/static/onboard.html +121 -145
  87. package/dist/web/static/onboard.js +1 -300
  88. package/dist/web/static/style.css +1 -602
  89. package/dist/web/static/utils.js +1 -0
  90. package/dist/web/static/workspace.css +1 -1568
  91. package/dist/web/static/workspace.html +369 -402
  92. package/dist/web/static/workspace.js +1 -1683
  93. package/dist/web-CIC7ZKBM.js +1 -0
  94. package/package.json +26 -4
  95. package/dist/api-JHHOZTL6.js +0 -162
  96. package/dist/auth-5QFJLW7J.js +0 -21
  97. package/dist/background-2EGCAAQH.js +0 -14
  98. package/dist/backlog-Q2NZCLNY.js +0 -24
  99. package/dist/chunk-2CMSCWQW.js +0 -162
  100. package/dist/chunk-4DVYJAJL.js +0 -57
  101. package/dist/chunk-5GDYH676.js +0 -271
  102. package/dist/chunk-5NLVGLD7.js +0 -66
  103. package/dist/chunk-6XTEAFZQ.js +0 -575
  104. package/dist/chunk-AQBSMYLT.js +0 -2025
  105. package/dist/chunk-BE46C7JW.js +0 -46
  106. package/dist/chunk-CLKIMCXZ.js +0 -139
  107. package/dist/chunk-DN4ASQ26.js +0 -167
  108. package/dist/chunk-DUWREZXK.js +0 -173
  109. package/dist/chunk-FCW3K6F2.js +0 -263
  110. package/dist/chunk-GFORWAMW.js +0 -251
  111. package/dist/chunk-GH7E2OJE.js +0 -223
  112. package/dist/chunk-GU2FZQ6A.js +0 -69
  113. package/dist/chunk-I7WI3BMB.js +0 -161
  114. package/dist/chunk-IOPKN5GD.js +0 -190
  115. package/dist/chunk-LBVHDGZE.js +0 -133
  116. package/dist/chunk-MGLJ53QN.js +0 -219
  117. package/dist/chunk-NETIY5UB.js +0 -134
  118. package/dist/chunk-NP47L7LG.js +0 -288
  119. package/dist/chunk-O6MG7TOH.js +0 -58
  120. package/dist/chunk-OPZYEVYR.js +0 -150
  121. package/dist/chunk-R3GPQC7I.js +0 -393
  122. package/dist/chunk-R5T3A2NQ.js +0 -166
  123. package/dist/chunk-RKB2JOV2.js +0 -43
  124. package/dist/chunk-RNG3K465.js +0 -80
  125. package/dist/chunk-TGTYKBGC.js +0 -86
  126. package/dist/chunk-UCX4VZCT.js +0 -681
  127. package/dist/chunk-WHLVZCQY.js +0 -245
  128. package/dist/chunk-Y6HMJZDJ.js +0 -1505
  129. package/dist/chunk-ZSBHUGWR.js +0 -262
  130. package/dist/claude-4BX3MJSK.js +0 -12
  131. package/dist/commands-2X4OB5RF.js +0 -128
  132. package/dist/commands-GLBCEVQK.js +0 -1044
  133. package/dist/commands-IINRNBYX.js +0 -232
  134. package/dist/config-RSNQJQPS.js +0 -8
  135. package/dist/config-loader-SXO674TF.js +0 -24
  136. package/dist/diagnose-7UPLS7I4.js +0 -12
  137. package/dist/display-IIUBEYWN.js +0 -58
  138. package/dist/extractor-D3XWOAXI.js +0 -129
  139. package/dist/history-6I6FADAU.js +0 -180
  140. package/dist/index.d.ts +0 -1
  141. package/dist/instance-registry-J7UJ7U4Z.js +0 -15
  142. package/dist/keybindings-PDXIOV3O.js +0 -15
  143. package/dist/loader-GKEYT6Y7.js +0 -58
  144. package/dist/network-JYGHQXAR.js +0 -279
  145. package/dist/notify-HPTALZDC.js +0 -14
  146. package/dist/openai-compat-R7EKWG6Z.js +0 -12
  147. package/dist/permissions-JUKXMNDH.js +0 -10
  148. package/dist/prompt-UWHSZU4P.js +0 -166
  149. package/dist/quality-ST7PPNFR.js +0 -16
  150. package/dist/repl-QHIZ2JGF.js +0 -3374
  151. package/dist/roadmap-5OBEKROY.js +0 -17
  152. package/dist/server-HCNIP7ZQ.js +0 -57
  153. package/dist/session-5EBECDUP.js +0 -21
  154. package/dist/skills-HBQQTYO4.js +0 -175
  155. package/dist/store-FKUTR7GW.js +0 -25
  156. package/dist/team-7BBBP5YQ.js +0 -385
  157. package/dist/telemetry-6R4EIE6O.js +0 -30
  158. package/dist/test-runner-AUAGIBNM.js +0 -619
  159. package/dist/theme-3SYJ3UQA.js +0 -14
  160. package/dist/upgrade-MZFH7OCN.js +0 -83
  161. package/dist/verify-JUDKTPKZ.js +0 -14
  162. package/dist/web-KS3FUGJA.js +0 -39
@@ -1,302 +1 @@
1
- /* Onboarding 暗色主题,复用 workspace CSS 变量 */
2
-
3
- :root {
4
- --ob-bg: #0d1117;
5
- --ob-surface: #161b22;
6
- --ob-surface-hover: #1c2129;
7
- --ob-border: #30363d;
8
- --ob-text: #e6edf3;
9
- --ob-text-dim: #8b949e;
10
- --ob-accent: #58a6ff;
11
- --ob-accent-dim: rgba(88, 166, 255, 0.15);
12
- --ob-success: #3fb950;
13
- --ob-error: #f85149;
14
- --ob-radius: 8px;
15
- --ob-radius-lg: 12px;
16
- }
17
-
18
- * { margin: 0; padding: 0; box-sizing: border-box; }
19
-
20
- body {
21
- background: var(--ob-bg);
22
- color: var(--ob-text);
23
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
24
- min-height: 100vh;
25
- display: flex;
26
- align-items: center;
27
- justify-content: center;
28
- }
29
-
30
- /* Container */
31
- .ob-container {
32
- width: 100%;
33
- max-width: 640px;
34
- padding: 40px 24px;
35
- }
36
-
37
- /* Logo */
38
- .ob-logo {
39
- text-align: center;
40
- font-size: 24px;
41
- font-weight: 700;
42
- margin-bottom: 32px;
43
- letter-spacing: -0.5px;
44
- }
45
-
46
- /* Progress */
47
- .ob-progress {
48
- height: 3px;
49
- background: var(--ob-border);
50
- border-radius: 2px;
51
- margin-bottom: 8px;
52
- overflow: hidden;
53
- }
54
-
55
- .ob-progress-bar {
56
- height: 100%;
57
- background: var(--ob-accent);
58
- border-radius: 2px;
59
- transition: width 0.4s ease;
60
- width: 14.28%;
61
- }
62
-
63
- .ob-step-label {
64
- text-align: center;
65
- font-size: 12px;
66
- color: var(--ob-text-dim);
67
- margin-bottom: 24px;
68
- }
69
-
70
- /* Card */
71
- .ob-card {
72
- background: var(--ob-surface);
73
- border: 1px solid var(--ob-border);
74
- border-radius: var(--ob-radius-lg);
75
- padding: 32px 28px;
76
- min-height: 380px;
77
- position: relative;
78
- overflow: hidden;
79
- }
80
-
81
- /* Steps */
82
- .ob-step {
83
- display: none;
84
- animation: fadeIn 0.3s ease;
85
- }
86
-
87
- .ob-step.active {
88
- display: block;
89
- }
90
-
91
- @keyframes fadeIn {
92
- from { opacity: 0; transform: translateY(8px); }
93
- to { opacity: 1; transform: translateY(0); }
94
- }
95
-
96
- .ob-step h2 {
97
- font-size: 20px;
98
- font-weight: 600;
99
- margin-bottom: 8px;
100
- }
101
-
102
- .ob-desc {
103
- color: var(--ob-text-dim);
104
- font-size: 14px;
105
- margin-bottom: 24px;
106
- }
107
-
108
- /* Options Grid */
109
- .ob-options {
110
- display: grid;
111
- grid-template-columns: repeat(2, 1fr);
112
- gap: 10px;
113
- }
114
-
115
- .ob-option {
116
- background: var(--ob-bg);
117
- border: 1px solid var(--ob-border);
118
- border-radius: var(--ob-radius);
119
- padding: 12px 16px;
120
- color: var(--ob-text);
121
- font-size: 14px;
122
- cursor: pointer;
123
- text-align: left;
124
- transition: all 0.2s;
125
- display: flex;
126
- align-items: center;
127
- gap: 8px;
128
- position: relative;
129
- }
130
-
131
- .ob-option:hover {
132
- background: var(--ob-surface-hover);
133
- border-color: var(--ob-accent);
134
- transform: scale(1.01);
135
- }
136
-
137
- .ob-option.selected {
138
- background: var(--ob-accent-dim);
139
- border-color: var(--ob-accent);
140
- color: var(--ob-accent);
141
- }
142
-
143
- .ob-tag {
144
- display: inline-block;
145
- font-size: 10px;
146
- color: var(--ob-success);
147
- background: rgba(63, 185, 80, 0.1);
148
- padding: 2px 6px;
149
- border-radius: 4px;
150
- margin-left: auto;
151
- white-space: nowrap;
152
- }
153
-
154
- /* Input Groups */
155
- .ob-input-group {
156
- margin-top: 16px;
157
- position: relative;
158
- }
159
-
160
- .ob-input-group label {
161
- display: block;
162
- font-size: 13px;
163
- color: var(--ob-text-dim);
164
- margin-bottom: 6px;
165
- }
166
-
167
- .ob-optional {
168
- font-size: 11px;
169
- color: var(--ob-text-dim);
170
- opacity: 0.6;
171
- }
172
-
173
- .ob-input {
174
- width: 100%;
175
- background: var(--ob-bg);
176
- border: 1px solid var(--ob-border);
177
- border-radius: var(--ob-radius);
178
- padding: 10px 14px;
179
- color: var(--ob-text);
180
- font-size: 14px;
181
- outline: none;
182
- transition: border-color 0.2s;
183
- }
184
-
185
- .ob-input:focus {
186
- border-color: var(--ob-accent);
187
- }
188
-
189
- .ob-toggle-pw {
190
- position: absolute;
191
- right: 10px;
192
- top: 30px;
193
- background: none;
194
- border: none;
195
- cursor: pointer;
196
- font-size: 14px;
197
- opacity: 0.5;
198
- }
199
-
200
- .ob-toggle-pw:hover { opacity: 1; }
201
-
202
- /* Textarea */
203
- .ob-textarea {
204
- width: 100%;
205
- background: var(--ob-bg);
206
- border: 1px solid var(--ob-border);
207
- border-radius: var(--ob-radius);
208
- padding: 12px 14px;
209
- color: var(--ob-text);
210
- font-size: 14px;
211
- outline: none;
212
- resize: vertical;
213
- min-height: 120px;
214
- font-family: inherit;
215
- transition: border-color 0.2s;
216
- }
217
-
218
- .ob-textarea:focus {
219
- border-color: var(--ob-accent);
220
- }
221
-
222
- /* Navigation */
223
- .ob-nav {
224
- display: flex;
225
- justify-content: space-between;
226
- margin-top: 20px;
227
- gap: 12px;
228
- }
229
-
230
- .ob-btn {
231
- padding: 10px 24px;
232
- border-radius: var(--ob-radius);
233
- font-size: 14px;
234
- font-weight: 500;
235
- cursor: pointer;
236
- border: none;
237
- transition: all 0.2s;
238
- }
239
-
240
- .ob-btn-back {
241
- background: transparent;
242
- color: var(--ob-text-dim);
243
- border: 1px solid var(--ob-border);
244
- }
245
-
246
- .ob-btn-back:hover {
247
- color: var(--ob-text);
248
- border-color: var(--ob-text-dim);
249
- }
250
-
251
- .ob-btn-next {
252
- background: var(--ob-accent);
253
- color: #fff;
254
- margin-left: auto;
255
- }
256
-
257
- .ob-btn-next:hover {
258
- filter: brightness(1.1);
259
- }
260
-
261
- .ob-btn-next:disabled {
262
- opacity: 0.4;
263
- cursor: not-allowed;
264
- }
265
-
266
- .ob-btn-next.loading {
267
- pointer-events: none;
268
- }
269
-
270
- /* Error */
271
- .ob-error {
272
- text-align: center;
273
- color: var(--ob-error);
274
- font-size: 13px;
275
- margin-top: 12px;
276
- min-height: 20px;
277
- }
278
-
279
- /* Responsive */
280
- @media (max-width: 520px) {
281
- .ob-container { padding: 20px 16px; }
282
- .ob-card { padding: 24px 20px; }
283
- .ob-options { grid-template-columns: 1fr; }
284
- .ob-step h2 { font-size: 18px; }
285
- }
286
-
287
- /* Loading spinner for submit */
288
- .ob-spinner {
289
- display: inline-block;
290
- width: 16px;
291
- height: 16px;
292
- border: 2px solid rgba(255,255,255,0.3);
293
- border-top-color: #fff;
294
- border-radius: 50%;
295
- animation: obSpin 0.6s linear infinite;
296
- vertical-align: middle;
297
- margin-right: 6px;
298
- }
299
-
300
- @keyframes obSpin {
301
- to { transform: rotate(360deg); }
302
- }
1
+ :root{--ob-bg: #0d1117;--ob-surface: #161b22;--ob-surface-hover: #1c2129;--ob-border: #30363d;--ob-text: #e6edf3;--ob-text-dim: #8b949e;--ob-accent: #58a6ff;--ob-accent-dim: rgba(88, 166, 255, .15);--ob-success: #3fb950;--ob-error: #f85149;--ob-radius: 8px;--ob-radius-lg: 12px}*{margin:0;padding:0;box-sizing:border-box}body{background:var(--ob-bg);color:var(--ob-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;min-height:100vh;display:flex;align-items:center;justify-content:center}.ob-container{width:100%;max-width:640px;padding:40px 24px}.ob-logo{text-align:center;font-size:24px;font-weight:700;margin-bottom:32px;letter-spacing:-.5px}.ob-progress{height:3px;background:var(--ob-border);border-radius:2px;margin-bottom:8px;overflow:hidden}.ob-progress-bar{height:100%;background:var(--ob-accent);border-radius:2px;transition:width .4s ease;width:14.28%}.ob-step-label{text-align:center;font-size:12px;color:var(--ob-text-dim);margin-bottom:24px}.ob-card{background:var(--ob-surface);border:1px solid var(--ob-border);border-radius:var(--ob-radius-lg);padding:32px 28px;min-height:380px;position:relative;overflow:hidden}.ob-step{display:none;animation:fadeIn .3s ease}.ob-step.active{display:block}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.ob-step h2{font-size:20px;font-weight:600;margin-bottom:8px}.ob-desc{color:var(--ob-text-dim);font-size:14px;margin-bottom:24px}.ob-options{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.ob-option{background:var(--ob-bg);border:1px solid var(--ob-border);border-radius:var(--ob-radius);padding:12px 16px;color:var(--ob-text);font-size:14px;cursor:pointer;text-align:left;transition:all .2s;display:flex;align-items:center;gap:8px;position:relative}.ob-option:hover{background:var(--ob-surface-hover);border-color:var(--ob-accent);transform:scale(1.01)}.ob-option.selected{background:var(--ob-accent-dim);border-color:var(--ob-accent);color:var(--ob-accent)}.ob-tag{display:inline-block;font-size:10px;color:var(--ob-success);background:#3fb9501a;padding:2px 6px;border-radius:4px;margin-left:auto;white-space:nowrap}.ob-input-group{margin-top:16px;position:relative}.ob-input-group label{display:block;font-size:13px;color:var(--ob-text-dim);margin-bottom:6px}.ob-optional{font-size:11px;color:var(--ob-text-dim);opacity:.6}.ob-input{width:100%;background:var(--ob-bg);border:1px solid var(--ob-border);border-radius:var(--ob-radius);padding:10px 14px;color:var(--ob-text);font-size:14px;outline:none;transition:border-color .2s}.ob-input:focus{border-color:var(--ob-accent)}.ob-toggle-pw{position:absolute;right:10px;top:30px;background:none;border:none;cursor:pointer;font-size:14px;opacity:.5}.ob-toggle-pw:hover{opacity:1}.ob-textarea{width:100%;background:var(--ob-bg);border:1px solid var(--ob-border);border-radius:var(--ob-radius);padding:12px 14px;color:var(--ob-text);font-size:14px;outline:none;resize:vertical;min-height:120px;font-family:inherit;transition:border-color .2s}.ob-textarea:focus{border-color:var(--ob-accent)}.ob-nav{display:flex;justify-content:space-between;margin-top:20px;gap:12px}.ob-btn{padding:10px 24px;border-radius:var(--ob-radius);font-size:14px;font-weight:500;cursor:pointer;border:none;transition:all .2s}.ob-btn-back{background:transparent;color:var(--ob-text-dim);border:1px solid var(--ob-border)}.ob-btn-back:hover{color:var(--ob-text);border-color:var(--ob-text-dim)}.ob-btn-next{background:var(--ob-accent);color:#fff;margin-left:auto}.ob-btn-next:hover{filter:brightness(1.1)}.ob-btn-next:disabled{opacity:.4;cursor:not-allowed}.ob-btn-next.loading{pointer-events:none}.ob-error{text-align:center;color:var(--ob-error);font-size:13px;margin-top:12px;min-height:20px}@media(max-width:520px){.ob-container{padding:20px 16px}.ob-card{padding:24px 20px}.ob-options{grid-template-columns:1fr}.ob-step h2{font-size:18px}}.ob-spinner{display:inline-block;width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:obSpin .6s linear infinite;vertical-align:middle;margin-right:6px}@keyframes obSpin{to{transform:rotate(360deg)}}
@@ -1,151 +1,127 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="zh-CN">
3
3
  <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Hypercore — 开始使用</title>
7
- <link rel="stylesheet" href="onboard.css">
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Hypercore — 开始使用</title>
7
+ <link rel="stylesheet" href="onboard.css">
8
8
  </head>
9
9
  <body>
10
- <div class="ob-container">
11
- <!-- Logo -->
12
- <div class="ob-logo">⚡ Hypercore</div>
13
-
14
- <!-- Progress Bar -->
15
- <div class="ob-progress">
16
- <div class="ob-progress-bar" id="progressBar"></div>
17
- </div>
18
- <div class="ob-step-label" id="stepLabel">第 1 步,共 7 步</div>
19
-
20
- <!-- Wizard Card -->
21
- <div class="ob-card" id="wizardCard">
22
-
23
- <!-- Step 1: Industry -->
24
- <div class="ob-step active" data-step="1">
25
- <h2>你所在的行业?</h2>
26
- <p class="ob-desc">我们会根据行业推荐最合适的工具和模板</p>
27
- <div class="ob-options" data-field="industry">
28
- <button class="ob-option" data-value="marketing">📢 营销/广告</button>
29
- <button class="ob-option" data-value="ecommerce">🛒 电商/零售</button>
30
- <button class="ob-option" data-value="education">📚 教育/培训</button>
31
- <button class="ob-option" data-value="tech">💻 科技/互联网</button>
32
- <button class="ob-option" data-value="finance">💰 金融/财务</button>
33
- <button class="ob-option" data-value="media">🎬 媒体/内容</button>
34
- <button class="ob-option" data-value="consulting">🏢 咨询/服务</button>
35
- <button class="ob-option" data-value="other">🎯 其他</button>
36
- </div>
37
- </div>
38
-
39
- <!-- Step 2: Role -->
40
- <div class="ob-step" data-step="2">
41
- <h2>你的角色是?</h2>
42
- <p class="ob-desc">不同角色有不同的工作重心</p>
43
- <div class="ob-options" data-field="role">
44
- <button class="ob-option" data-value="founder">🚀 创始人/CEO</button>
45
- <button class="ob-option" data-value="marketer">📣 市场/营销</button>
46
- <button class="ob-option" data-value="content-creator">✍️ 内容创作者</button>
47
- <button class="ob-option" data-value="product-manager">📋 产品经理</button>
48
- <button class="ob-option" data-value="researcher">🔬 研究/分析</button>
49
- <button class="ob-option" data-value="operations">⚙️ 运营/管理</button>
50
- <button class="ob-option" data-value="freelancer">🎯 自由职业者</button>
51
- </div>
52
- </div>
53
-
54
- <!-- Step 3: Automation Needs (Multi-select) -->
55
- <div class="ob-step" data-step="3">
56
- <h2>最想自动化哪些工作?</h2>
57
- <p class="ob-desc">可多选,我们会为你预装对应的生产线</p>
58
- <div class="ob-options ob-multi" data-field="automationNeeds">
59
- <button class="ob-option" data-value="content-writing">✍️ 内容写作</button>
60
- <button class="ob-option" data-value="research">🔍 调研分析</button>
61
- <button class="ob-option" data-value="reports">📊 报告/周报</button>
62
- <button class="ob-option" data-value="social-media">📱 社交媒体</button>
63
- <button class="ob-option" data-value="competitor-analysis">🏷️ 竞品分析</button>
64
- <button class="ob-option" data-value="meeting-notes">📝 会议纪要</button>
65
- <button class="ob-option" data-value="data-analysis">📈 数据分析</button>
66
- <button class="ob-option" data-value="customer-outreach">🤝 客户触达</button>
67
- </div>
68
- </div>
69
-
70
- <!-- Step 4: Team Size -->
71
- <div class="ob-step" data-step="4">
72
- <h2>团队规模?</h2>
73
- <p class="ob-desc">这决定了是否开启协作功能</p>
74
- <div class="ob-options" data-field="teamSize">
75
- <button class="ob-option" data-value="solo">🧑 独立工作</button>
76
- <button class="ob-option" data-value="2-5">👥 2-5 人</button>
77
- <button class="ob-option" data-value="6-20">🏢 6-20 人</button>
78
- <button class="ob-option" data-value="20+">🏛️ 20+ 人</button>
79
- </div>
80
- </div>
81
-
82
- <!-- Step 5: Platforms (Multi-select) -->
83
- <div class="ob-step" data-step="5">
84
- <h2>主要发布平台?</h2>
85
- <p class="ob-desc">可多选,帮你适配内容格式</p>
86
- <div class="ob-options ob-multi" data-field="platforms">
87
- <button class="ob-option" data-value="wechat">💬 微信公众号</button>
88
- <button class="ob-option" data-value="xiaohongshu">📕 小红书</button>
89
- <button class="ob-option" data-value="douyin">🎵 抖音</button>
90
- <button class="ob-option" data-value="website">🌐 网站/博客</button>
91
- <button class="ob-option" data-value="email">📧 邮件</button>
92
- <button class="ob-option" data-value="linkedin">💼 LinkedIn</button>
93
- <button class="ob-option" data-value="twitter">🐦 Twitter/X</button>
94
- <button class="ob-option" data-value="none">➖ 暂无</button>
95
- </div>
96
- </div>
97
-
98
- <!-- Step 6: AI Provider + Key -->
99
- <div class="ob-step" data-step="6">
100
- <h2>选择 AI 模型</h2>
101
- <p class="ob-desc">API Key 仅存储在本地,不会上传</p>
102
- <div class="ob-options" data-field="provider">
103
- <button class="ob-option" data-value="gemini">✨ Google Gemini 2.5 Flash<span class="ob-tag">推荐·免费额度</span></button>
104
- <button class="ob-option" data-value="minimax">🤖 MiniMax M2.5<span class="ob-tag">性价比高</span></button>
105
- <button class="ob-option" data-value="deepseek">🧊 DeepSeek<span class="ob-tag">国产首选</span></button>
106
- <button class="ob-option" data-value="anthropic">🧠 Anthropic Claude<span class="ob-tag">最强推理</span></button>
107
- <button class="ob-option" data-value="openai-compatible">🔗 OpenAI 兼容<span class="ob-tag">自定义网关</span></button>
108
- </div>
109
- <div class="ob-input-group">
110
- <label for="apiKeyInput">API Key</label>
111
- <input type="password" id="apiKeyInput" class="ob-input" placeholder="粘贴你的 API Key…">
112
- <button class="ob-toggle-pw" id="togglePw" title="显示/隐藏" aria-label="切换密码可见性" type="button">👁️</button>
113
- </div>
114
- <div id="compatFields" style="display:none;">
115
- <div class="ob-input-group">
116
- <label for="customBaseUrlInput">API Base URL</label>
117
- <input type="text" id="customBaseUrlInput" class="ob-input" placeholder="例如 https://api.openai.com/v1">
118
- </div>
119
- <div class="ob-input-group">
120
- <label for="customModelNameInput">模型名</label>
121
- <input type="text" id="customModelNameInput" class="ob-input" placeholder="例如 gpt-4o / deepseek-chat">
122
- </div>
123
- </div>
124
- <div class="ob-input-group">
125
- <label for="tavilyKeyInput">Tavily API Key <span class="ob-optional">可选</span></label>
126
- <input type="password" id="tavilyKeyInput" class="ob-input" placeholder="用于网络搜索(可跳过)">
127
- </div>
128
- </div>
129
-
130
- <!-- Step 7: Free Description (Optional) -->
131
- <div class="ob-step" data-step="7">
132
- <h2>还有什么要补充的吗?</h2>
133
- <p class="ob-desc">描述你的具体工作场景,帮助我们更好地定制(可跳过)</p>
134
- <textarea id="freeDescription" class="ob-textarea" rows="5"
135
- placeholder="例如:我是一个跨境电商卖家,主要在亚马逊和独立站销售家居产品,需要定期做竞品调研和写产品描述…"></textarea>
136
- </div>
137
- </div>
138
-
139
- <!-- Navigation -->
140
- <div class="ob-nav">
141
- <button class="ob-btn ob-btn-back" id="btnBack" style="visibility:hidden">← 上一步</button>
142
- <button class="ob-btn ob-btn-next" id="btnNext">下一步 →</button>
143
- </div>
144
-
145
- <!-- Error message -->
146
- <div class="ob-error" id="errorMsg" role="alert" aria-live="polite"></div>
147
- </div>
148
-
149
- <script src="onboard.js"></script>
10
+ <div class="ob-container">
11
+ <div class="ob-logo">⚡ Hypercore</div>
12
+ <div class="ob-progress">
13
+ <div class="ob-progress-bar" id="progressBar"></div>
14
+ </div>
15
+ <div class="ob-step-label" id="stepLabel">第 1 步,共 7 步</div>
16
+ <div class="ob-card" id="wizardCard">
17
+ <div class="ob-step active" data-step="1">
18
+ <h2>你所在的行业?</h2>
19
+ <p class="ob-desc">我们会根据行业推荐最合适的工具和模板</p>
20
+ <div class="ob-options" data-field="industry">
21
+ <button class="ob-option" data-value="marketing">📢 营销/广告</button>
22
+ <button class="ob-option" data-value="ecommerce">🛒 电商/零售</button>
23
+ <button class="ob-option" data-value="education">📚 教育/培训</button>
24
+ <button class="ob-option" data-value="tech">💻 科技/互联网</button>
25
+ <button class="ob-option" data-value="finance">💰 金融/财务</button>
26
+ <button class="ob-option" data-value="media">🎬 媒体/内容</button>
27
+ <button class="ob-option" data-value="consulting">🏢 咨询/服务</button>
28
+ <button class="ob-option" data-value="other">🎯 其他</button>
29
+ </div>
30
+ </div>
31
+ <div class="ob-step" data-step="2">
32
+ <h2>你的角色是?</h2>
33
+ <p class="ob-desc">不同角色有不同的工作重心</p>
34
+ <div class="ob-options" data-field="role">
35
+ <button class="ob-option" data-value="founder">🚀 创始人/CEO</button>
36
+ <button class="ob-option" data-value="marketer">📣 市场/营销</button>
37
+ <button class="ob-option" data-value="content-creator">✍️ 内容创作者</button>
38
+ <button class="ob-option" data-value="product-manager">📋 产品经理</button>
39
+ <button class="ob-option" data-value="researcher">🔬 研究/分析</button>
40
+ <button class="ob-option" data-value="operations">⚙️ 运营/管理</button>
41
+ <button class="ob-option" data-value="freelancer">🎯 自由职业者</button>
42
+ </div>
43
+ </div>
44
+ <div class="ob-step" data-step="3">
45
+ <h2>最想自动化哪些工作?</h2>
46
+ <p class="ob-desc">可多选,我们会为你预装对应的生产线</p>
47
+ <div class="ob-options ob-multi" data-field="automationNeeds">
48
+ <button class="ob-option" data-value="content-writing">✍️ 内容写作</button>
49
+ <button class="ob-option" data-value="research">🔍 调研分析</button>
50
+ <button class="ob-option" data-value="reports">📊 报告/周报</button>
51
+ <button class="ob-option" data-value="social-media">📱 社交媒体</button>
52
+ <button class="ob-option" data-value="competitor-analysis">🏷️ 竞品分析</button>
53
+ <button class="ob-option" data-value="meeting-notes">📝 会议纪要</button>
54
+ <button class="ob-option" data-value="data-analysis">📈 数据分析</button>
55
+ <button class="ob-option" data-value="customer-outreach">🤝 客户触达</button>
56
+ </div>
57
+ </div>
58
+ <div class="ob-step" data-step="4">
59
+ <h2>团队规模?</h2>
60
+ <p class="ob-desc">这决定了是否开启协作功能</p>
61
+ <div class="ob-options" data-field="teamSize">
62
+ <button class="ob-option" data-value="solo">🧑 独立工作</button>
63
+ <button class="ob-option" data-value="2-5">👥 2-5 人</button>
64
+ <button class="ob-option" data-value="6-20">🏢 6-20 人</button>
65
+ <button class="ob-option" data-value="20+">🏛️ 20+ 人</button>
66
+ </div>
67
+ </div>
68
+ <div class="ob-step" data-step="5">
69
+ <h2>主要发布平台?</h2>
70
+ <p class="ob-desc">可多选,帮你适配内容格式</p>
71
+ <div class="ob-options ob-multi" data-field="platforms">
72
+ <button class="ob-option" data-value="wechat">💬 微信公众号</button>
73
+ <button class="ob-option" data-value="xiaohongshu">📕 小红书</button>
74
+ <button class="ob-option" data-value="douyin">🎵 抖音</button>
75
+ <button class="ob-option" data-value="website">🌐 网站/博客</button>
76
+ <button class="ob-option" data-value="email">📧 邮件</button>
77
+ <button class="ob-option" data-value="linkedin">💼 LinkedIn</button>
78
+ <button class="ob-option" data-value="twitter">🐦 Twitter/X</button>
79
+ <button class="ob-option" data-value="none">➖ 暂无</button>
80
+ </div>
81
+ </div>
82
+ <div class="ob-step" data-step="6">
83
+ <h2>选择 AI 模型</h2>
84
+ <p class="ob-desc">API Key 仅存储在本地,不会上传</p>
85
+ <div class="ob-options" data-field="provider">
86
+ <button class="ob-option" data-value="gemini">✨ Google Gemini 2.5 Flash<span class="ob-tag">推荐·免费额度</span></button>
87
+ <button class="ob-option" data-value="minimax">🤖 MiniMax M2.5<span class="ob-tag">性价比高</span></button>
88
+ <button class="ob-option" data-value="deepseek">🧊 DeepSeek<span class="ob-tag">国产首选</span></button>
89
+ <button class="ob-option" data-value="anthropic">🧠 Anthropic Claude<span class="ob-tag">最强推理</span></button>
90
+ <button class="ob-option" data-value="openai-compatible">🔗 OpenAI 兼容<span class="ob-tag">自定义网关</span></button>
91
+ </div>
92
+ <div class="ob-input-group">
93
+ <label for="apiKeyInput">API Key</label>
94
+ <input type="password" id="apiKeyInput" class="ob-input" placeholder="粘贴你的 API Key…">
95
+ <button class="ob-toggle-pw" id="togglePw" title="显示/隐藏" aria-label="切换密码可见性" type="button">👁️</button>
96
+ </div>
97
+ <div id="compatFields" style="display:none;">
98
+ <div class="ob-input-group">
99
+ <label for="customBaseUrlInput">API Base URL</label>
100
+ <input type="text" id="customBaseUrlInput" class="ob-input" placeholder="例如 https://api.openai.com/v1">
101
+ </div>
102
+ <div class="ob-input-group">
103
+ <label for="customModelNameInput">模型名</label>
104
+ <input type="text" id="customModelNameInput" class="ob-input" placeholder="例如 gpt-4o / deepseek-chat">
105
+ </div>
106
+ </div>
107
+ <div class="ob-input-group">
108
+ <label for="tavilyKeyInput">Tavily API Key <span class="ob-optional">可选</span></label>
109
+ <input type="password" id="tavilyKeyInput" class="ob-input" placeholder="用于网络搜索(可跳过)">
110
+ </div>
111
+ </div>
112
+ <div class="ob-step" data-step="7">
113
+ <h2>还有什么要补充的吗?</h2>
114
+ <p class="ob-desc">描述你的具体工作场景,帮助我们更好地定制(可跳过)</p>
115
+ <textarea id="freeDescription" class="ob-textarea" rows="5"
116
+ placeholder="例如:我是一个跨境电商卖家,主要在亚马逊和独立站销售家居产品,需要定期做竞品调研和写产品描述…"></textarea>
117
+ </div>
118
+ </div>
119
+ <div class="ob-nav">
120
+ <button class="ob-btn ob-btn-back" id="btnBack" style="visibility:hidden">← 上一步</button>
121
+ <button class="ob-btn ob-btn-next" id="btnNext">下一步 →</button>
122
+ </div>
123
+ <div class="ob-error" id="errorMsg" role="alert" aria-live="polite"></div>
124
+ </div>
125
+ <script src="onboard.js"></script>
150
126
  </body>
151
- </html>
127
+ </html>