dsh-web-search-pro 0.2.0 → 0.2.3

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 (266) hide show
  1. package/CHANGELOG.md +179 -0
  2. package/README.md +197 -32
  3. package/assets/skills/dsh-web-search-pro/SKILL.md +14 -13
  4. package/assets/skills/dsh-web-search-pro/references/config.md +36 -0
  5. package/assets/skills/dsh-web-search-pro/references/sources.md +19 -4
  6. package/assets/skills/dsh-web-search-pro/references/troubleshooting.md +3 -1
  7. package/catalog/sources.v1.json +22 -12
  8. package/lib/actions/approval.js +50 -1
  9. package/lib/actions/approval.js.map +1 -1
  10. package/lib/actions/config.js +274 -0
  11. package/lib/actions/config.js.map +1 -0
  12. package/lib/actions/errors.js +8 -1
  13. package/lib/actions/errors.js.map +1 -1
  14. package/lib/actions/format.js +10 -0
  15. package/lib/actions/format.js.map +1 -1
  16. package/lib/actions/index-view.js +2 -2
  17. package/lib/actions/index-view.js.map +1 -1
  18. package/lib/actions/read.js +7 -3
  19. package/lib/actions/read.js.map +1 -1
  20. package/lib/actions/registry.js +3 -1
  21. package/lib/actions/registry.js.map +1 -1
  22. package/lib/actions/run.js +2 -2
  23. package/lib/actions/run.js.map +1 -1
  24. package/lib/actions/schema.js +18 -0
  25. package/lib/actions/schema.js.map +1 -1
  26. package/lib/actions/search.js +12 -6
  27. package/lib/actions/search.js.map +1 -1
  28. package/lib/actions/sources.js +116 -41
  29. package/lib/actions/sources.js.map +1 -1
  30. package/lib/actions/types.js +19 -1
  31. package/lib/actions/types.js.map +1 -1
  32. package/lib/browser-access.js +25 -0
  33. package/lib/browser-access.js.map +1 -1
  34. package/lib/catalog/recommend.js +11 -3
  35. package/lib/catalog/recommend.js.map +1 -1
  36. package/lib/catalog/schema.js +3 -1
  37. package/lib/catalog/schema.js.map +1 -1
  38. package/lib/cli/builtin-specs.js +341 -0
  39. package/lib/cli/builtin-specs.js.map +1 -0
  40. package/lib/cli/chain.js +193 -0
  41. package/lib/cli/chain.js.map +1 -0
  42. package/lib/cli/chains-spec.js +118 -0
  43. package/lib/cli/chains-spec.js.map +1 -0
  44. package/lib/cli/engine.js +99 -0
  45. package/lib/cli/engine.js.map +1 -0
  46. package/lib/cli/opencli-sites.js +83 -0
  47. package/lib/cli/opencli-sites.js.map +1 -0
  48. package/lib/cli/opencli.js +153 -0
  49. package/lib/cli/opencli.js.map +1 -0
  50. package/lib/cli/probe.js +128 -0
  51. package/lib/cli/probe.js.map +1 -0
  52. package/lib/cli/runner.js +564 -0
  53. package/lib/cli/runner.js.map +1 -0
  54. package/lib/cli/spec.js +496 -0
  55. package/lib/cli/spec.js.map +1 -0
  56. package/lib/cli/time-text.js +79 -0
  57. package/lib/cli/time-text.js.map +1 -0
  58. package/lib/cli/trial.js +57 -0
  59. package/lib/cli/trial.js.map +1 -0
  60. package/lib/client/SettingsCard.js +14 -32
  61. package/lib/client/SettingsCard.js.map +1 -1
  62. package/lib/client/agent-mark.js +27 -0
  63. package/lib/client/agent-mark.js.map +1 -0
  64. package/lib/client/card-frame.js +118 -0
  65. package/lib/client/card-frame.js.map +1 -0
  66. package/lib/client/cli-form.js +257 -0
  67. package/lib/client/cli-form.js.map +1 -0
  68. package/lib/client/field-docs.js +130 -0
  69. package/lib/client/field-docs.js.map +1 -0
  70. package/lib/client/field-keys.js +81 -0
  71. package/lib/client/field-keys.js.map +1 -0
  72. package/lib/client/field-rows.js +71 -0
  73. package/lib/client/field-rows.js.map +1 -0
  74. package/lib/client/fill.js +3 -0
  75. package/lib/client/fill.js.map +1 -0
  76. package/lib/client/form-specs.js +15 -1
  77. package/lib/client/form-specs.js.map +1 -1
  78. package/lib/client/form.js +296 -27
  79. package/lib/client/form.js.map +1 -1
  80. package/lib/client/group-advanced.js +23 -0
  81. package/lib/client/group-advanced.js.map +1 -0
  82. package/lib/client/group-agent.js +28 -0
  83. package/lib/client/group-agent.js.map +1 -0
  84. package/lib/client/group-cli.js +136 -0
  85. package/lib/client/group-cli.js.map +1 -0
  86. package/lib/client/group-common.js +29 -0
  87. package/lib/client/group-common.js.map +1 -0
  88. package/lib/client/group-judge.js +67 -0
  89. package/lib/client/group-judge.js.map +1 -0
  90. package/lib/client/group-order.js +201 -0
  91. package/lib/client/group-order.js.map +1 -0
  92. package/lib/client/group-runtime.js +33 -0
  93. package/lib/client/group-runtime.js.map +1 -0
  94. package/lib/client/group-sources.js +83 -0
  95. package/lib/client/group-sources.js.map +1 -0
  96. package/lib/client/groups-basic.js +36 -0
  97. package/lib/client/groups-basic.js.map +1 -0
  98. package/lib/client/index.js.map +1 -1
  99. package/lib/client/json-list.js +50 -0
  100. package/lib/client/json-list.js.map +1 -0
  101. package/lib/client/locales.js +666 -215
  102. package/lib/client/locales.js.map +1 -1
  103. package/lib/client/order.js +192 -0
  104. package/lib/client/order.js.map +1 -0
  105. package/lib/client/overlay-ops.js +46 -0
  106. package/lib/client/overlay-ops.js.map +1 -0
  107. package/lib/client/sources-table.js +1 -0
  108. package/lib/client/sources-table.js.map +1 -1
  109. package/lib/client/styles.js +74 -47
  110. package/lib/client/styles.js.map +1 -1
  111. package/lib/client/text-view.js +98 -0
  112. package/lib/client/text-view.js.map +1 -0
  113. package/lib/client/ui-kit.js +120 -0
  114. package/lib/client/ui-kit.js.map +1 -0
  115. package/lib/client/validators.js +22 -0
  116. package/lib/client/validators.js.map +1 -1
  117. package/lib/client.js +9151 -1987
  118. package/lib/client.js.map +1 -1
  119. package/lib/config-fillers.js +53 -0
  120. package/lib/config-fillers.js.map +1 -0
  121. package/lib/config-groups.js +49 -0
  122. package/lib/config-groups.js.map +1 -0
  123. package/lib/config.js +87 -107
  124. package/lib/config.js.map +1 -1
  125. package/lib/default-chain.js +66 -0
  126. package/lib/default-chain.js.map +1 -0
  127. package/lib/deps.js +109 -102
  128. package/lib/deps.js.map +1 -1
  129. package/lib/engine-error.js +19 -0
  130. package/lib/engine-error.js.map +1 -0
  131. package/lib/engines.js +32 -115
  132. package/lib/engines.js.map +1 -1
  133. package/lib/fetch.js +23 -4
  134. package/lib/fetch.js.map +1 -1
  135. package/lib/index.js +30 -5
  136. package/lib/index.js.map +1 -1
  137. package/lib/overlay-types.js +88 -0
  138. package/lib/overlay-types.js.map +1 -0
  139. package/lib/overlay.js +683 -0
  140. package/lib/overlay.js.map +1 -0
  141. package/lib/pipeline/candidates.js +27 -1
  142. package/lib/pipeline/candidates.js.map +1 -1
  143. package/lib/pipeline/compile.js +63 -0
  144. package/lib/pipeline/compile.js.map +1 -1
  145. package/lib/pipeline/confidence.js +64 -0
  146. package/lib/pipeline/confidence.js.map +1 -0
  147. package/lib/pipeline/fusion.js +50 -3
  148. package/lib/pipeline/fusion.js.map +1 -1
  149. package/lib/pipeline/plan.js +2 -2
  150. package/lib/pipeline/plan.js.map +1 -1
  151. package/lib/pipeline/render.js +20 -2
  152. package/lib/pipeline/render.js.map +1 -1
  153. package/lib/pipeline/run.js +21 -7
  154. package/lib/pipeline/run.js.map +1 -1
  155. package/lib/pipeline/sources-spec.js +19 -3
  156. package/lib/pipeline/sources-spec.js.map +1 -1
  157. package/lib/providers/builtin.js +13 -14
  158. package/lib/providers/builtin.js.map +1 -1
  159. package/lib/providers/deepseek.js +348 -0
  160. package/lib/providers/deepseek.js.map +1 -0
  161. package/lib/providers/http.js.map +1 -1
  162. package/lib/providers/keyed-meta.js +7 -0
  163. package/lib/providers/keyed-meta.js.map +1 -1
  164. package/lib/providers/platforms.js +118 -58
  165. package/lib/providers/platforms.js.map +1 -1
  166. package/lib/providers/registry.js.map +1 -1
  167. package/lib/restart.js +47 -0
  168. package/lib/restart.js.map +1 -0
  169. package/lib/router.js +203 -27
  170. package/lib/router.js.map +1 -1
  171. package/lib/rpc-types.js +15 -0
  172. package/lib/rpc-types.js.map +1 -0
  173. package/lib/rpc.js +85 -0
  174. package/lib/rpc.js.map +1 -0
  175. package/lib/tools.js +10 -4
  176. package/lib/tools.js.map +1 -1
  177. package/lib/types/actions/approval.d.ts +11 -0
  178. package/lib/types/actions/config.d.ts +54 -0
  179. package/lib/types/actions/format.d.ts +9 -2
  180. package/lib/types/actions/run.d.ts +1 -0
  181. package/lib/types/actions/schema.d.ts +7 -1
  182. package/lib/types/actions/sources.d.ts +29 -3
  183. package/lib/types/actions/types.d.ts +28 -2
  184. package/lib/types/browser-access.d.ts +17 -0
  185. package/lib/types/catalog/recommend.d.ts +4 -0
  186. package/lib/types/catalog/schema.d.ts +2 -0
  187. package/lib/types/cli/builtin-specs.d.ts +38 -0
  188. package/lib/types/cli/chain.d.ts +83 -0
  189. package/lib/types/cli/chains-spec.d.ts +48 -0
  190. package/lib/types/cli/engine.d.ts +50 -0
  191. package/lib/types/cli/opencli-sites.d.ts +24 -0
  192. package/lib/types/cli/opencli.d.ts +77 -0
  193. package/lib/types/cli/probe.d.ts +53 -0
  194. package/lib/types/cli/runner.d.ts +126 -0
  195. package/lib/types/cli/spec.d.ts +269 -0
  196. package/lib/types/cli/time-text.d.ts +12 -0
  197. package/lib/types/cli/trial.d.ts +19 -0
  198. package/lib/types/client/SettingsCard.d.ts +17 -1
  199. package/lib/types/client/agent-mark.d.ts +22 -0
  200. package/lib/types/client/card-frame.d.ts +35 -0
  201. package/lib/types/client/cli-form.d.ts +97 -0
  202. package/lib/types/client/field-docs.d.ts +15 -0
  203. package/lib/types/client/field-keys.d.ts +41 -0
  204. package/lib/types/client/field-rows.d.ts +70 -0
  205. package/lib/types/client/fill.d.ts +2 -0
  206. package/lib/types/client/form-specs.d.ts +12 -3
  207. package/lib/types/client/form.d.ts +79 -1
  208. package/lib/types/client/group-advanced.d.ts +9 -0
  209. package/lib/types/client/group-agent.d.ts +20 -0
  210. package/lib/types/client/group-cli.d.ts +52 -0
  211. package/lib/types/client/group-common.d.ts +12 -0
  212. package/lib/types/client/group-judge.d.ts +17 -0
  213. package/lib/types/client/group-order.d.ts +26 -0
  214. package/lib/types/client/group-runtime.d.ts +15 -0
  215. package/lib/types/client/group-sources.d.ts +46 -0
  216. package/lib/types/client/groups-basic.d.ts +18 -0
  217. package/lib/types/client/index.d.ts +8 -0
  218. package/lib/types/client/json-list.d.ts +21 -0
  219. package/lib/types/client/locales.d.ts +1079 -196
  220. package/lib/types/client/order.d.ts +102 -0
  221. package/lib/types/client/overlay-ops.d.ts +37 -0
  222. package/lib/types/client/styles.d.ts +56 -41
  223. package/lib/types/client/text-view.d.ts +22 -0
  224. package/lib/types/client/ui-kit.d.ts +200 -0
  225. package/lib/types/client/validators.d.ts +6 -0
  226. package/lib/types/config-fillers.d.ts +9 -0
  227. package/lib/types/config-groups.d.ts +23 -0
  228. package/lib/types/config.d.ts +265 -216
  229. package/lib/types/default-chain.d.ts +63 -0
  230. package/lib/types/deps.d.ts +25 -23
  231. package/lib/types/engine-error.d.ts +12 -0
  232. package/lib/types/engines.d.ts +45 -10
  233. package/lib/types/fetch.d.ts +12 -3
  234. package/lib/types/index.d.ts +164 -146
  235. package/lib/types/overlay-types.d.ts +98 -0
  236. package/lib/types/overlay.d.ts +141 -0
  237. package/lib/types/pipeline/candidates.d.ts +19 -0
  238. package/lib/types/pipeline/compile.d.ts +11 -0
  239. package/lib/types/pipeline/confidence.d.ts +35 -0
  240. package/lib/types/pipeline/fusion.d.ts +23 -1
  241. package/lib/types/pipeline/render.d.ts +16 -0
  242. package/lib/types/pipeline/run.d.ts +3 -1
  243. package/lib/types/pipeline/sources-spec.d.ts +5 -2
  244. package/lib/types/pipeline/types.d.ts +37 -0
  245. package/lib/types/providers/deepseek.d.ts +130 -0
  246. package/lib/types/providers/http.d.ts +2 -1
  247. package/lib/types/providers/keyed-meta.d.ts +5 -0
  248. package/lib/types/providers/platforms.d.ts +15 -3
  249. package/lib/types/providers/registry.d.ts +10 -0
  250. package/lib/types/restart.d.ts +52 -0
  251. package/lib/types/router.d.ts +69 -9
  252. package/lib/types/rpc-types.d.ts +79 -0
  253. package/lib/types/rpc.d.ts +41 -0
  254. package/lib/types/tools.d.ts +6 -0
  255. package/lib/types/util.d.ts +16 -1
  256. package/lib/util.js +17 -4
  257. package/lib/util.js.map +1 -1
  258. package/package.json +51 -43
  259. package/scripts/check-client-bundle.mjs +1 -1
  260. package/scripts/cli-login-check.mjs +214 -0
  261. package/lib/client/RubricEditor.js +0 -47
  262. package/lib/client/RubricEditor.js.map +0 -1
  263. package/lib/client/fields.js +0 -31
  264. package/lib/client/fields.js.map +0 -1
  265. package/lib/types/client/RubricEditor.d.ts +0 -6
  266. package/lib/types/client/fields.d.ts +0 -65
@@ -0,0 +1,201 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * "Search order": the order a plain search tries its engines, and the order each platform tries its backends, as lists one
4
+ * moves, adds to and removes from (not as a comma text). Below the engine list sits the order a search would really use, with a
5
+ * sentence on why it differs from the list; the platforms are rows with a dialog. Everything stages into the same draft the sticky
6
+ * save bar writes: `engines` and `platformBackends` as they are, `sources.confidence.<id>` for the confidence box of a row.
7
+ * @module web-search-pro/client/group-order
8
+ */
9
+ import { useState } from 'react';
10
+ import { explainChain } from "../default-chain.js";
11
+ import { adaptersOf } from "./cli-form.js";
12
+ import { agentChainOf, chainInputOf } from "./card-frame.js";
13
+ import { fill, rowLabels, useField, useOverriddenCount } from "./field-rows.js";
14
+ import { hasHelp, labelKey } from "./field-keys.js";
15
+ import { confidenceField, CONFIDENCE_PREFIX } from "./form-specs.js";
16
+ import { AgentMark } from "./agent-mark.js";
17
+ import { addId, backendChoices, backendName, chainsOf, confidenceView, customEntries, customRows, defaultChainOf, engineChoices, filterPlatforms, idsOf, isCustomId, moveId, ORDER_PLATFORMS, PLATFORM_NAMES, removeId, sourceInfo, splitPlatforms, textOf, withChain, } from "./order.js";
18
+ import { styles as css } from "./styles.js";
19
+ import { Badge, Btn, Dialog, Fold, Group, Help, Item, Row, Select, SubHead, TextInput } from "./ui-kit.js";
20
+ import { DEFAULT_CUSTOM_CONFIDENCE } from "../cli/spec.js";
21
+ /** The fields of this group, for its "N overridden" badge (the confidence entries are counted by their prefix). */
22
+ const ORDER_FIELDS = ['engines', 'platformBackends'];
23
+ /** Whether the card can tell a source runs: its key, its address, its spec, or (when the plugin answers) the plugin's own probe. */
24
+ function sourceState(snapshot, info, t) {
25
+ const live = snapshot.server.status?.sources[info.id];
26
+ if (info.kind === 'keyed' && info.def) {
27
+ const def = info.def;
28
+ if (def.credential) {
29
+ const cred = snapshot.credentials[def.credential];
30
+ return cred.loading ? { tone: 'neutral', label: t('credentialChecking') } : cred.configured ? { tone: 'success', label: t('stateReady') } : { tone: 'warning', label: t('stateNoKey') };
31
+ }
32
+ return (snapshot.fields.searxngUrl?.text ?? '') !== '' ? { tone: 'success', label: t('stateReady') } : { tone: 'warning', label: t('stateNoUrl') };
33
+ }
34
+ if (info.kind === 'custom') {
35
+ const problems = customRows(adaptersOf(snapshot.fields.cliAdapters.text)).find(row => row.id === info.id.slice('custom-cli:'.length))?.problems ?? [];
36
+ if (problems.length)
37
+ return { tone: 'danger', label: t('stateSpecBad'), reason: problems[0] };
38
+ // A saved CLI is probed by the plugin: installed or not. One that is only in the draft is just a valid spec so far.
39
+ if (live)
40
+ return live.available ? { tone: 'success', label: t('stateReady') } : { tone: 'warning', label: t('stateNotReady'), ...live.reason ? { reason: live.reason } : {} };
41
+ return { tone: 'neutral', label: t('stateSpecOk') };
42
+ }
43
+ if (info.kind === 'unknown')
44
+ return info.id.startsWith('custom-cli:') ? { tone: 'danger', label: t('stateNoSpec') } : { tone: 'warning', label: t('stateUnknown') };
45
+ if (live && !live.available)
46
+ return { tone: 'warning', label: t('stateNotReady'), ...live.reason ? { reason: live.reason } : {} };
47
+ return { tone: 'success', label: t('stateReady') };
48
+ }
49
+ /** Confidence a source has when nothing is set for it. */
50
+ const defaultConfidence = (info, adapters) => {
51
+ if (info.kind !== 'custom')
52
+ return 1;
53
+ const raw = customEntries(adapters).find(([key]) => key === info.id.slice('custom-cli:'.length))?.[1];
54
+ return typeof raw?.confidence === 'number' ? raw.confidence : DEFAULT_CUSTOM_CONFIDENCE;
55
+ };
56
+ /**
57
+ * The confidence of a source, as a labelled box. While it is 1 (the built-in default, which changes nothing) it is only a quiet
58
+ * "Confidence · default 1" that opens into the box on a click; any other value, or a wrong one, keeps the box open and picked out.
59
+ */
60
+ function ConfidenceBox({ card, info, adapters, fallback }) {
61
+ const { t } = card;
62
+ const [open, setOpen] = useState(false);
63
+ const field = confidenceField(info.id);
64
+ const text = card.useWebSearchPro(snapshot => snapshot.fields[field]?.text ?? '');
65
+ const invalid = card.useWebSearchPro(snapshot => snapshot.fields[field]?.invalid ?? false);
66
+ const disabled = card.useWebSearchPro(snapshot => !snapshot.writable || snapshot.saving);
67
+ const dflt = fallback ?? defaultConfidence(info, adapters);
68
+ const view = confidenceView(text, dflt);
69
+ const name = fill(t('orderConfidenceOf'), { name: info.name });
70
+ const help = _jsx(Help, { label: t('helpLabel'), text: t('orderConfidenceHelp') });
71
+ if (view.quiet && !open && !invalid) {
72
+ return _jsxs("span", { className: "wsp-conf", "data-wsp-confidence": "quiet", children: [_jsxs("button", { type: "button", className: "wsp-conf-quiet", disabled: disabled, "aria-label": name, title: t('orderConfidenceEdit'), onClick: () => setOpen(true), children: [t('orderConfidenceLabel'), " ", _jsx("span", { children: view.typed ? view.effective : fill(t('orderConfidenceDefault'), { c: view.effective }) })] }), help, _jsx(AgentMark, { card: card, itemKey: 'sources.confidence.' + info.id, compact: true })] });
73
+ }
74
+ return _jsxs("span", { className: view.quiet && !invalid ? 'wsp-conf' : 'wsp-conf wsp-conf-on', "data-wsp-confidence": "set", children: [_jsx("label", { className: "wsp-conf-label", htmlFor: 'wsp-conf-' + info.id, children: t('orderConfidenceLabel') }), _jsx(TextInput, { id: 'wsp-conf-' + info.id, small: true, numeric: true, value: text, placeholder: String(dflt), invalid: invalid || view.invalid, disabled: disabled, ariaLabel: name, autoFocus: open, onBlur: () => setOpen(false), onChange: value => card.edit(field, value) }), help, _jsx(AgentMark, { card: card, itemKey: 'sources.confidence.' + info.id, compact: true })] });
75
+ }
76
+ /** One row of an ordered list: its place, name, readiness and confidence, and the buttons that move it. */
77
+ function OrderItem(props) {
78
+ const { card, info, index, count, state } = props;
79
+ const { t } = card;
80
+ return _jsx("div", { className: props.muted ? 'wsp-order-row wsp-order-default' : 'wsp-order-row', "data-wsp-order-item": info.id, children: _jsx(Item, { data: info.id, title: _jsxs(_Fragment, { children: [_jsx("span", { className: "wsp-order-no", children: index + 1 }), _jsx("strong", { children: info.name }), info.name !== info.id ? _jsx("code", { children: info.id }) : null] }), badges: _jsxs(_Fragment, { children: [info.kind === 'custom' ? _jsx(Badge, { tone: "outline", children: t('kindCustom') }) : null, _jsx(Badge, { tone: state.tone, children: state.label })] }), meta: state.reason, actions: _jsxs(_Fragment, { children: [_jsx(ConfidenceBox, { card: card, info: info, adapters: props.adapters, fallback: props.fallback }), _jsx(Btn, { ariaLabel: t('orderUp'), title: t('orderUp'), disabled: props.disabled || index === 0, onClick: () => props.onMove(-1), data: "order-up", children: "\u2191" }), _jsx(Btn, { ariaLabel: t('orderDown'), title: t('orderDown'), disabled: props.disabled || index === count - 1, onClick: () => props.onMove(1), data: "order-down", children: "\u2193" }), _jsx(Btn, { ariaLabel: t('orderRemove'), title: t('orderRemove'), danger: true, disabled: props.disabled, onClick: props.onRemove, data: "order-remove", children: "\u00D7" })] }) }) });
81
+ }
82
+ /** A closed drop-down that adds the source picked (it snaps back to its title). */
83
+ function AddSelect({ label, title, choices, onAdd, disabled, name }) {
84
+ return _jsx("span", { "data-wsp-add": name, children: _jsx(Select, { ariaLabel: label, value: "", options: [{ value: '', label: title }, ...choices], disabled: disabled || choices.length === 0, onChange: value => { if (value)
85
+ onAdd(value); } }) });
86
+ }
87
+ // ── the order a search would really use ─────────────────────────────────────────────────────────────────────────────────
88
+ function whyText(t, reasons) {
89
+ if (!reasons.length)
90
+ return t('orderWhySame');
91
+ const text = (reason) => {
92
+ const ids = reason.ids.join(', ');
93
+ switch (reason.kind) {
94
+ case 'common': return fill(t('orderWhyCommon'), { ids });
95
+ case 'disabled': return fill(t('orderWhyDisabled'), { ids });
96
+ case 'priority': return fill(t('orderWhyPriority'), { ids });
97
+ case 'anonymous-only': return fill(t('orderWhyAnonymous'), { ids });
98
+ case 'own-list': return fill(t('orderWhyOwn'), { ids });
99
+ }
100
+ };
101
+ return reasons.map(text).join(' ');
102
+ }
103
+ /** The chain a plain search would try, from the draft, and one sentence on why it is not the list as written. */
104
+ export function EffectiveChain({ card }) {
105
+ const { t } = card;
106
+ const view = card.useWebSearchPro(snapshot => explainChain(chainInputOf(snapshot)));
107
+ const agent = card.useWebSearchPro(snapshot => agentChainOf(snapshot));
108
+ return _jsxs("div", { "data-wsp-effective": true, children: [_jsxs("p", { className: css.chain, role: "status", "data-wsp-chain": true, children: [_jsx("span", { children: t('chainNow') }), view.chain?.length ? view.chain.map((id, index) => _jsxs("span", { children: [index ? '› ' : '', _jsx("code", { children: id })] }, id + index)) : _jsx("span", { children: t('chainEmpty') })] }), _jsxs("p", { className: css.why, "data-wsp-why": true, children: [_jsx("strong", { children: t('orderWhy') }), " ", view.chain ? whyText(t, view.reasons) : t('orderWhyNone')] }), agent ? _jsxs("p", { className: css.why, "data-wsp-effective-agent": true, children: [_jsx("strong", { children: t('orderAgentChain') }), " ", agent.length ? agent.map((id, index) => _jsxs("span", { children: [index ? '› ' : '', _jsx("code", { children: id }), " "] }, id + index)) : t('orderAgentChainNone')] }) : null] });
109
+ }
110
+ // ── the general engine list ────────────────────────────────────────────────────────────────────────────────────────────────
111
+ export function EngineOrder({ card }) {
112
+ const { t } = card;
113
+ const field = useField(card, 'engines');
114
+ const adapters = card.useWebSearchPro(snapshot => snapshot.fields.cliAdapters.text);
115
+ const adaptersValue = adaptersOf(adapters);
116
+ const ids = idsOf(field.state.text);
117
+ const st = field.state;
118
+ const set = (next) => field.edit(textOf(next));
119
+ const choices = engineChoices(ids, adaptersValue).map(id => ({ value: id, label: sourceInfo(id, adaptersValue).name + (sourceInfo(id, adaptersValue).name !== id ? ' (' + id + ')' : '') }));
120
+ return _jsx(Row, { field: "engines", label: t('engines'), hint: t('enginesHint'), help: hasHelp('engines') ? t(`${labelKey('engines')}Help`) : undefined, overridden: st.overridden, invalid: st.invalid || !!st.message, problem: st.message ?? t('invalid'), warning: st.warning, disabled: field.disabled, labels: rowLabels(t), wide: true, mark: _jsx(AgentMark, { card: card, itemKey: "engines" }), children: _jsxs("div", { className: css.stack, "data-wsp-order": "engines", children: [_jsx("div", { className: css.list, role: "list", "aria-label": t('orderListLabel'), children: ids.length === 0 ? _jsx("p", { className: css.empty, children: t('orderEmpty') }) : ids.map((id, index) => _jsx(EngineRow, { card: card, id: id, index: index, ids: ids, adapters: adaptersValue, disabled: field.disabled, onChange: set }, id)) }), _jsxs("div", { className: css.orderBar, children: [_jsx(AddSelect, { name: "engine", label: t('orderAddLabel'), title: t('orderAdd'), choices: choices, disabled: field.disabled, onAdd: id => set(addId(ids, id)) }), _jsx(Btn, { disabled: field.disabled || !st.overridden, onClick: field.reset, data: "order-restore", children: t('orderRestore') })] }), _jsx(EffectiveChain, { card: card })] }) });
121
+ }
122
+ function EngineRow({ card, id, index, ids, adapters, disabled, onChange }) {
123
+ const { t } = card;
124
+ const info = sourceInfo(id, adapters);
125
+ const state = card.useWebSearchPro(snapshot => sourceState(snapshot, info, t));
126
+ return _jsx(OrderItem, { card: card, info: info, index: index, count: ids.length, adapters: adapters, state: state, disabled: disabled, onMove: delta => onChange(moveId(ids, id, delta)), onRemove: () => onChange(removeId(ids, id)) });
127
+ }
128
+ // ── platforms ────────────────────────────────────────────────────────────────────────────────────────────────────────────────
129
+ /** The chain a platform uses now: the override when there is one, else the built-in default. */
130
+ function chainFor(text, platform) {
131
+ const chains = chainsOf(text);
132
+ if (!chains)
133
+ return { ids: [...defaultChainOf(platform)], overridden: false, valid: false };
134
+ const own = chains[platform];
135
+ return own ? { ids: own, overridden: true, valid: true } : { ids: [...defaultChainOf(platform)], overridden: false, valid: true };
136
+ }
137
+ function PlatformItem({ card, platform, onEdit }) {
138
+ const { t } = card;
139
+ const text = card.useWebSearchPro(snapshot => snapshot.fields.platformBackends.text);
140
+ const disabled = card.useWebSearchPro(snapshot => !snapshot.writable);
141
+ const chain = chainFor(text, platform);
142
+ return _jsx(Item, { data: platform, title: _jsx("strong", { children: PLATFORM_NAMES[platform] ?? platform }), badges: _jsxs(_Fragment, { children: [platform in PLATFORM_NAMES && PLATFORM_NAMES[platform] !== platform ? _jsx("code", { children: platform }) : null, _jsx(Badge, { tone: chain.overridden ? 'info' : 'outline', children: chain.overridden ? t('overridden') : t('orderDefaultBadge') }), _jsx(AgentMark, { card: card, itemKey: 'platformBackends.' + platform, compact: true })] }), meta: _jsx("span", { className: chain.overridden ? undefined : css.muted, children: chain.ids.map(backendName).join(' › ') || t('platformEmpty') }), actions: _jsx(Btn, { disabled: disabled, onClick: onEdit, data: "platform-edit", children: t('edit') }) });
143
+ }
144
+ /** The body of the platform dialog: the chain as a list with its buttons, the backends that can still be added, and "Restore default". */
145
+ export function PlatformForm({ card, platform }) {
146
+ const { t } = card;
147
+ const field = useField(card, 'platformBackends');
148
+ const adapters = card.useWebSearchPro(snapshot => snapshot.fields.cliAdapters.text);
149
+ const adaptersValue = adaptersOf(adapters);
150
+ const chain = chainFor(field.state.text, platform);
151
+ const write = (ids) => {
152
+ const next = withChain(field.state.text, platform, ids);
153
+ if (next !== undefined)
154
+ field.edit(next);
155
+ };
156
+ if (!chain.valid)
157
+ return _jsx("p", { className: `${css.rowHint} wsp-bad`, role: "alert", children: t('platformChainBad') });
158
+ const choices = backendChoices(platform, chain.ids, adaptersValue).map(id => ({ value: id, label: backendName(id) + (backendName(id) !== id ? ' (' + id + ')' : '') }));
159
+ return _jsxs("div", { className: css.stack, "data-wsp-order": 'platform:' + platform, children: [_jsx("div", { className: css.list, role: "list", "aria-label": t('orderListLabel'), children: chain.ids.length === 0 ? _jsx("p", { className: css.empty, children: t('platformEmpty') }) : chain.ids.map((id, index) => _jsx(BackendRow, { card: card, platform: platform, id: id, index: index, ids: chain.ids, muted: !chain.overridden, adapters: adaptersValue, disabled: field.disabled, onChange: write }, id)) }), _jsxs("div", { className: css.orderBar, children: [_jsx(AddSelect, { name: "backend", label: t('orderAddLabel'), title: choices.length ? t('orderAdd') : t('platformAddNone'), choices: choices, disabled: field.disabled, onAdd: id => write(addId(chain.ids, id)) }), _jsx(Btn, { disabled: field.disabled || !chain.overridden, onClick: () => write(undefined), data: "platform-restore", children: t('orderRestore') }), !chain.overridden ? _jsx(Badge, { tone: "outline", children: t('orderDefaultBadge') }) : null] })] });
160
+ }
161
+ function BackendRow({ card, platform, id, index, ids, muted, adapters, disabled, onChange }) {
162
+ const { t } = card;
163
+ const custom = isCustomId(id);
164
+ const base = custom ? sourceInfo(id, adapters) : { id, name: backendName(id), kind: 'unknown' };
165
+ const info = custom ? base : { ...base, kind: 'anonymous' };
166
+ const leg = card.useWebSearchPro(snapshot => snapshot.server.status?.legs[platform + '/' + id]);
167
+ const state = card.useWebSearchPro((snapshot) => {
168
+ if (custom)
169
+ return sourceState(snapshot, info, t);
170
+ return leg ? (leg.ready ? { tone: 'success', label: t('stateReady') } : { tone: 'warning', label: t('stateNotReady'), ...leg.reason ? { reason: leg.reason } : {} }) : { tone: 'neutral', label: t('backendUnknown') };
171
+ });
172
+ return _jsx(OrderItem, { card: card, info: info, index: index, count: ids.length, adapters: adapters, state: state, fallback: leg?.confidence, muted: muted, disabled: disabled, onMove: delta => onChange(moveId(ids, id, delta)), onRemove: () => onChange(removeId(ids, id)) });
173
+ }
174
+ export function PlatformList({ card }) {
175
+ const { t } = card;
176
+ const [editing, setEditing] = useState();
177
+ const [query, setQuery] = useState('');
178
+ const split = card.useWebSearchPro(snapshot => splitPlatforms(ORDER_PLATFORMS, snapshot.fields.platformBackends.text, adaptersOf(snapshot.fields.cliAdapters.text)));
179
+ const row = (platform) => _jsx(PlatformItem, { card: card, platform: platform, onEdit: () => setEditing(platform) }, platform);
180
+ const filtering = query.trim() !== '';
181
+ const found = filterPlatforms(ORDER_PLATFORMS, query);
182
+ return _jsxs(_Fragment, { children: [_jsxs("div", { className: "wsp-filter", "data-wsp-platform-filter": true, children: [_jsx(TextInput, { value: query, onChange: setQuery, placeholder: t('orderPlatformFilter'), ariaLabel: t('orderPlatformFilterLabel') }), filtering ? _jsx("span", { className: css.rowHint, children: fill(t('orderPlatformFound'), { n: found.length, total: ORDER_PLATFORMS.length }) }) : null] }), filtering
183
+ ? _jsx("div", { className: css.list, "data-wsp-platform-list": true, children: found.length ? found.map(row) : _jsx("p", { className: css.empty, children: t('orderPlatformNone') }) })
184
+ : _jsxs(_Fragment, { children: [_jsx("div", { className: css.list, "data-wsp-platform-list": true, children: split.shown.map(row) }), split.rest.length ? _jsx(Fold, { id: "platforms-more", title: fill(t('orderPlatformsMore'), { n: split.rest.length }), hint: t('orderPlatformsMoreHint'), children: _jsx("div", { className: css.list, "data-wsp-platform-rest": true, children: split.rest.map(row) }) }) : null] }), editing ? _jsxs(Dialog, { open: true, title: fill(t('platformDialogTitle'), { name: PLATFORM_NAMES[editing] ?? editing }), closeLabel: t('close'), description: t('platformDialogNote'), onClose: () => setEditing(undefined), footer: _jsx(Btn, { primary: true, onClick: () => setEditing(undefined), data: "platform-done", children: t('done') }), children: [_jsx("p", { className: css.rowHint, children: t('dialogStagesNote') }), _jsx(PlatformForm, { card: card, platform: editing })] }) : null] });
185
+ }
186
+ // ── the group ────────────────────────────────────────────────────────────────────────────────────────────────────────────────
187
+ /** Open another group of the card (the "Sources" group holds `sources.priority` / `sources.disabled`) and scroll to it. */
188
+ function openGroup(id) {
189
+ const node = document.querySelector(`[data-wsp-group="${id}"]`);
190
+ if (!node)
191
+ return;
192
+ node.open = true;
193
+ node.scrollIntoView?.({ block: 'start', behavior: 'smooth' });
194
+ }
195
+ export function OrderGroup({ card }) {
196
+ const { t } = card;
197
+ const count = useOverriddenCount(card, ORDER_FIELDS) + card.useWebSearchPro(snapshot => Object.keys(snapshot.fields).filter(field => field.startsWith(CONFIDENCE_PREFIX) && snapshot.fields[field]?.overridden).length);
198
+ const rules = card.useWebSearchPro(snapshot => ({ priority: (snapshot.fields['sources.priority']?.text ?? '').trim(), disabled: (snapshot.fields['sources.disabled']?.text ?? '').trim() }));
199
+ return _jsxs(Group, { id: "order", title: t('groupOrder'), summary: t('groupOrderSub'), badges: count ? _jsx(Badge, { tone: "info", children: fill(t('overriddenCount'), { n: count }) }) : null, children: [_jsx(SubHead, { children: t('orderEnginesTitle') }), _jsx(EngineOrder, { card: card }), _jsxs("p", { className: css.rowHint, "data-wsp-order-rules": true, children: [_jsxs("strong", { children: [t('orderRulesTitle'), "."] }), " ", t('orderRulesNote'), " ", fill(t('orderPriorityNow'), { ids: rules.priority || t('orderNone') }), " \u00B7 ", fill(t('orderDisabledNow'), { ids: rules.disabled || t('orderNone') }), " \u00B7 ", _jsx("button", { type: "button", className: css.link, onClick: () => openGroup('sources'), "data-wsp-open-sources": true, children: t('orderRulesLink') })] }), _jsx(SubHead, { children: t('orderPlatformsTitle') }), _jsx("p", { className: css.rowHint, children: t('orderPlatformsNote') }), _jsx(PlatformList, { card: card })] });
200
+ }
201
+ //# sourceMappingURL=group-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-order.js","sourceRoot":"","sources":["../../src/client/group-order.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * "Runtime and backends": the CLI / OpenCLI / Agent Reach switches, the Twitter / X login values (a dialog), the JSON objects
4
+ * that shape backends (Playwright, platform backend chains, CLI adapters) and the platform settings (custom platforms,
5
+ * selectors, browser bindings), each as a list with its own dialog. The backend order of the platforms and the custom CLIs have their own
6
+ * groups ("Search order", "Custom CLI"); their raw JSON is under "Advanced".
7
+ * @module web-search-pro/client/group-runtime
8
+ */
9
+ import { useState } from 'react';
10
+ import { fill, SwitchRow, TextRow, useOverriddenCount } from "./field-rows.js";
11
+ import { SecretRow } from "./group-sources.js";
12
+ import { JsonList, jsonFieldsOf } from "./json-list.js";
13
+ import { styles as css } from "./styles.js";
14
+ import { Badge, Btn, Dialog, Group, Item, SubHead } from "./ui-kit.js";
15
+ const RUNTIME = ['enableCliBackends', 'opencliEnabled', 'agentReachEnabled', 'twitterAuthTokenEnv', 'twitterCt0Env', 'playwright', 'customPlatforms', 'platformRules', 'browserBindings'];
16
+ /** The two values twitter-cli needs: the controls of the dialog. */
17
+ export function TwitterForm({ card }) {
18
+ const { t } = card;
19
+ return _jsxs(_Fragment, { children: [_jsx(TextRow, { card: card, field: "twitterAuthTokenEnv", code: true, placeholder: "TWITTER_AUTH_TOKEN" }), _jsx(SecretRow, { card: card, id: "twitter-auth-token", label: t('twitterAuthToken') }), _jsx(TextRow, { card: card, field: "twitterCt0Env", code: true, placeholder: "TWITTER_CT0" }), _jsx(SecretRow, { card: card, id: "twitter-ct0", label: t('twitterCt0') })] });
20
+ }
21
+ function TwitterItem({ card }) {
22
+ const { t } = card;
23
+ const [open, setOpen] = useState(false);
24
+ const view = card.useWebSearchPro(snapshot => ({ a: snapshot.credentials['twitter-auth-token'], b: snapshot.credentials['twitter-ct0'], writable: snapshot.writable }));
25
+ const both = view.a.configured && view.b.configured;
26
+ return _jsxs(_Fragment, { children: [_jsx("div", { className: css.list, "data-wsp-twitter": true, children: _jsx(Item, { data: "twitter", title: _jsx("strong", { children: t('twitterGroup') }), badges: _jsx(Badge, { tone: both ? 'success' : view.a.configured || view.b.configured ? 'warning' : 'neutral', children: both ? t('credentialSet') : view.a.configured || view.b.configured ? t('twitterPartial') : t('credentialUnset') }), meta: t('twitterGroupHint'), actions: _jsx(Btn, { disabled: !view.writable, onClick: () => setOpen(true), data: "twitter-edit", children: t('edit') }) }) }), open ? _jsxs(Dialog, { open: true, title: t('twitterGroup'), closeLabel: t('close'), description: t('twitterGroupHint'), onClose: () => setOpen(false), footer: _jsx(Btn, { primary: true, onClick: () => setOpen(false), children: t('done') }), children: [_jsx("p", { className: css.rowHint, children: t('dialogStagesNote') }), _jsx(TwitterForm, { card: card })] }) : null] });
27
+ }
28
+ export function RuntimeGroup({ card }) {
29
+ const { t } = card;
30
+ const n = useOverriddenCount(card, RUNTIME);
31
+ return _jsxs(Group, { id: "runtime", title: t('groupRuntime'), summary: t('groupRuntimeSub'), badges: n ? _jsx(Badge, { tone: "info", children: fill(t('overriddenCount'), { n }) }) : null, children: [_jsx(SwitchRow, { card: card, field: "enableCliBackends" }), _jsx(SwitchRow, { card: card, field: "opencliEnabled" }), _jsx(SwitchRow, { card: card, field: "agentReachEnabled" }), _jsx(SubHead, { children: t('runtimeLoginTitle') }), _jsx(TwitterItem, { card: card }), _jsx(SubHead, { children: t('runtimeBackendsTitle') }), _jsx(JsonList, { card: card, fields: jsonFieldsOf('runtime') }), _jsx(SubHead, { children: t('runtimePlatformsTitle') }), _jsx(JsonList, { card: card, fields: jsonFieldsOf('platform') })] });
32
+ }
33
+ //# sourceMappingURL=group-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-runtime.js","sourceRoot":"","sources":["../../src/client/group-runtime.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * "Sources": how sources are ranked (policy, priority, disabled) and a list of the sources that need a key or an address: a
4
+ * row per source (name, tier, whether its key is set, and the "常用" mark), and one edit dialog per source holding its key
5
+ * reference, write-only key, endpoint and request budget. The anonymous sources are a folded reference table. Edits stage into
6
+ * the same draft the sticky save bar writes; a dialog has no save button of its own.
7
+ * @module web-search-pro/client/group-sources
8
+ */
9
+ import { useState } from 'react';
10
+ import { fill, rowLabels, useOverriddenCount, ListRow, NumberRow, SelectRow, SwitchRow, TextRow } from "./field-rows.js";
11
+ import { SOURCE_DEFS, sourceFields } from "./field-keys.js";
12
+ import { ANONYMOUS_SOURCES } from "./sources-table.js";
13
+ import { styles as css } from "./styles.js";
14
+ import { Badge, Btn, Dialog, Fold, Group, Item, Row, SecretInput, SubHead } from "./ui-kit.js";
15
+ /** The write-only key of a source. It shows whether a key is stored, never the key. */
16
+ export function SecretRow({ card, id, label }) {
17
+ const { t } = card;
18
+ const cred = card.useWebSearchPro(snapshot => snapshot.credentials[id]);
19
+ const disabled = card.useWebSearchPro(snapshot => !snapshot.writable || snapshot.saving);
20
+ const status = cred.loading ? t('credentialChecking') : cred.configured ? t('credentialSet') : t('credentialUnset');
21
+ const inputId = `web-search-pro-credential-${id}`;
22
+ return _jsx("div", { "data-wsp-credential": id, children: _jsx(Row, { id: inputId, label: label, hint: cred.writable ? t('credentialWriteOnlyHint') : t('credentialReadOnlyHint'), labels: rowLabels(t), children: _jsx(SecretInput, { id: inputId, value: cred.text, onChange: text => card.editCredential(id, text), status: status, configured: cred.configured, disabled: disabled || !cred.writable, ariaLabel: label }) }) });
23
+ }
24
+ /** Whether a source is usable as far as the card can tell: its key is stored, or (SearXNG) its address is set. */
25
+ export function useSourceReady(card, def) {
26
+ return card.useWebSearchPro(snapshot => {
27
+ if (def.credential) {
28
+ const cred = snapshot.credentials[def.credential];
29
+ return { ready: cred.configured, loading: cred.loading };
30
+ }
31
+ return { ready: (snapshot.fields.searxngUrl?.text ?? '') !== '', loading: false };
32
+ });
33
+ }
34
+ const NOTE_KEYS = {
35
+ deepseek: 'sourceNoteDeepseek', bocha: 'sourceNoteBocha', exa: 'sourceNoteExa', jina: 'sourceNoteJina', github: 'sourceNoteGithub', searxng: 'sourceNoteSearxng',
36
+ };
37
+ /** The controls of one source: reference name, write-only key, endpoint, extras and request budget. */
38
+ export function SourceForm({ card, def }) {
39
+ const { t } = card;
40
+ const keyedFields = def.id === 'bocha' || def.id === 'exa' || def.id === 'jina' || def.id === 'github';
41
+ return _jsxs(_Fragment, { children: [def.envField ? _jsx(TextRow, { card: card, field: def.envField, placeholder: def.defaultEnv, code: true, hint: `${t('keyedEnvHint')} ${def.defaultEnv}`, label: keyedFields ? t(def.envField) : t('keyedEnv') }) : null, def.credential ? _jsx(SecretRow, { card: card, id: def.credential, label: t('keyedApiKey') }) : null, def.baseUrlField ? _jsx(TextRow, { card: card, field: def.baseUrlField, code: true, placeholder: def.id === 'bocha' ? 'https://api.bocha.cn' : def.id === 'deepseek' ? 'https://api.deepseek.com/v1/tools' : '', label: t(def.baseUrlField === 'bochaBaseUrl' ? 'bochaBaseUrl' : 'keyedBaseUrl'), hint: def.baseUrlField === 'bochaBaseUrl' ? t('bochaBaseUrlHint') : t('keyedBaseUrlHint') }) : null, def.extra?.map(field => field === 'bochaSummary' ? _jsx(SwitchRow, { card: card, field: field }, field)
42
+ : _jsx(TextRow, { card: card, field: field, code: true, placeholder: "http://127.0.0.1:8080" }, field)), def.budget ? _jsxs(_Fragment, { children: [_jsx(SubHead, { children: t('reqBudgetGroup') }), _jsx("p", { className: css.rowHint, children: t('reqBudgetNote') }), _jsx(NumberRow, { card: card, field: `sources.budget.${def.id}.total`, unit: "count" }), _jsx(NumberRow, { card: card, field: `sources.budget.${def.id}.daily`, unit: "count" })] }) : null] });
43
+ }
44
+ /** One source's edit dialog. */
45
+ export function SourceDialog({ card, def, onClose }) {
46
+ const { t } = card;
47
+ const fields = sourceFields(def);
48
+ const overridden = card.useWebSearchPro(snapshot => fields.filter(field => snapshot.fields[field]?.overridden));
49
+ const disabled = card.useWebSearchPro(snapshot => !snapshot.writable || snapshot.saving);
50
+ const note = NOTE_KEYS[def.id];
51
+ return _jsxs(Dialog, { open: true, wide: false, title: fill(t('sourceDialogTitle'), { name: def.name }), closeLabel: t('close'), description: t((note ?? 'sourceNoteKeyed')), onClose: onClose, footer: _jsxs(_Fragment, { children: [_jsx(Btn, { disabled: disabled || overridden.length === 0, onClick: () => { for (const field of overridden)
52
+ card.resetField(field); }, data: "source-reset", children: t('sourceResetAll') }), _jsx(Btn, { primary: true, onClick: onClose, data: "source-done", children: t('done') })] }), children: [_jsx("p", { className: css.rowHint, children: t('dialogStagesNote') }), _jsx(SourceForm, { card: card, def: def })] });
53
+ }
54
+ const TIER_KEYS = { paid: 'tierPaid', 'free-quota': 'tierFree', anonymous: 'tierAnonymous' };
55
+ /** One row of the sources list. */
56
+ export function SourceItem({ card, def, onEdit }) {
57
+ const { t } = card;
58
+ const { ready, loading } = useSourceReady(card, def);
59
+ const disabled = card.useWebSearchPro(snapshot => !snapshot.writable);
60
+ const view = card.useWebSearchPro(snapshot => ({
61
+ ref: def.envField ? (snapshot.fields[def.envField]?.text || def.defaultEnv || '') : '',
62
+ url: def.id === 'searxng' ? snapshot.fields.searxngUrl.text : '',
63
+ capped: def.budget ? ['total', 'daily'].some(axis => snapshot.fields[`sources.budget.${def.id}.${axis}`]?.text) : false,
64
+ }));
65
+ const meta = def.id === 'searxng' ? (view.url || t('sourceMetaNoUrl')) : [view.ref ? fill(t('sourceMetaRef'), { ref: view.ref }) : '', view.capped ? t('sourceMetaCapped') : ''].filter(Boolean).join(' · ');
66
+ return _jsx(Item, { data: def.id, title: _jsx("strong", { children: def.name }), badges: _jsxs(_Fragment, { children: [def.common ? _jsx(Badge, { tone: "info", children: t('commonBadge') }) : null, _jsx(Badge, { tone: def.tier === 'paid' ? 'warning' : 'outline', children: t(TIER_KEYS[def.tier]) }), _jsx(Badge, { tone: ready ? 'success' : 'neutral', children: loading ? t('credentialChecking') : ready ? (def.credential ? t('credentialSet') : t('sourceConfigured')) : (def.credential ? t('credentialUnset') : t('sourceNotConfigured')) })] }), meta: meta, actions: _jsx(Btn, { disabled: disabled, onClick: onEdit, data: "source-edit", children: t('edit') }) });
67
+ }
68
+ /** Open dialog state shared by the Common and Sources groups: one source at a time. */
69
+ export function SourceList({ card, only }) {
70
+ const [editing, setEditing] = useState();
71
+ const defs = SOURCE_DEFS.filter(def => !only || only.includes(def.id));
72
+ const def = SOURCE_DEFS.find(entry => entry.id === editing);
73
+ return _jsxs(_Fragment, { children: [_jsx("div", { className: css.list, "data-wsp-source-list": true, children: defs.map(entry => _jsx(SourceItem, { card: card, def: entry, onEdit: () => setEditing(entry.id) }, entry.id)) }), def ? _jsx(SourceDialog, { card: card, def: def, onClose: () => setEditing(undefined) }, def.id) : null] });
74
+ }
75
+ const FIELD_NAMES = [
76
+ 'evidence.sourcePolicy', 'sources.priority', 'sources.disabled', 'openalexMailto',
77
+ ];
78
+ export function SourcesGroup({ card }) {
79
+ const { t } = card;
80
+ const count = useOverriddenCount(card, [...FIELD_NAMES, ...SOURCE_DEFS.flatMap(sourceFields)]);
81
+ return _jsxs(Group, { id: "sources", title: t('groupSources'), summary: t('groupSourcesSub'), badges: count ? _jsx(Badge, { tone: "info", children: fill(t('overriddenCount'), { n: count }) }) : null, children: [_jsx(SubHead, { children: t('strategyGroup') }), _jsx("p", { className: css.rowHint, "data-wsp-strategy": true, children: t('strategyNote') }), _jsx(SelectRow, { card: card, field: "evidence.sourcePolicy", options: [{ value: 'default', label: t('optPolicyDefault') }, { value: 'anonymous-only', label: t('optPolicyAnonymousOnly') }] }), _jsx(ListRow, { card: card, field: "sources.priority", placeholder: "deepseek, exa" }), _jsx(ListRow, { card: card, field: "sources.disabled", placeholder: "bing" }), _jsx(SubHead, { children: t('sourcesListTitle') }), _jsx("p", { className: css.rowHint, children: t('sourcesListHint') }), _jsx(SourceList, { card: card }), _jsxs(Fold, { id: "anonymous", title: t('anonymousTitle'), hint: t('anonymousHint'), children: [_jsxs("table", { className: css.table, "data-wsp-anonymous": true, children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: t('anonymousName') }), _jsx("th", { scope: "col", children: "id" }), _jsx("th", { scope: "col", children: t('anonymousUse') })] }) }), _jsx("tbody", { children: ANONYMOUS_SOURCES.map(source => _jsxs("tr", { children: [_jsx("td", { children: source.name }), _jsx("td", { children: _jsx("code", { children: source.id }) }), _jsx("td", { children: t(source.use) })] }, source.id)) })] }), _jsx(TextRow, { card: card, field: "openalexMailto" }), _jsx("p", { className: css.rowHint, "data-wsp-status-line": true, children: t('sourcesStatusLine') })] })] });
82
+ }
83
+ //# sourceMappingURL=group-sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-sources.js","sourceRoot":"","sources":["../../src/client/group-sources.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * The small groups: "Reading and evidence", "Network and cache", "Ranking weights" (advanced) and the built-in web tool
4
+ * "Route". Each is a handful of rows built from the same controls; the long explanations sit behind the `?`.
5
+ * @module web-search-pro/client/groups-basic
6
+ */
7
+ import { fill, ListRow, NumberRow, SelectRow, SwitchRow, TextRow, useOverriddenCount } from "./field-rows.js";
8
+ import { styles as css } from "./styles.js";
9
+ import { Badge, Fold, Group } from "./ui-kit.js";
10
+ const count = (card, fields, t) => {
11
+ const n = useOverriddenCount(card, fields);
12
+ return n ? _jsx(Badge, { tone: "info", children: fill(t('overriddenCount'), { n }) }) : null;
13
+ };
14
+ const READING = ['fetchDefaultChars', 'exaContentsPerUrlChars', 'exaContentsTotalChars', 'evidence.autoProviders', 'evidence.maxRounds', 'evidence.maxQueries'];
15
+ export function ReadingGroup({ card }) {
16
+ const { t } = card;
17
+ return _jsxs(Group, { id: "reading", title: t('groupReading'), summary: t('groupReadingSub'), badges: count(card, READING, t), children: [_jsx(NumberRow, { card: card, field: "fetchDefaultChars", unit: "chars" }), _jsx(NumberRow, { card: card, field: "exaContentsPerUrlChars", unit: "chars" }), _jsx(NumberRow, { card: card, field: "exaContentsTotalChars", unit: "chars" }), _jsx(SwitchRow, { card: card, field: "evidence.autoProviders" }), _jsx(NumberRow, { card: card, field: "evidence.maxRounds", unit: "rounds" }), _jsx(NumberRow, { card: card, field: "evidence.maxQueries", unit: "count" }), _jsx("p", { className: css.notice, role: "note", children: t('evidenceNote') })] });
18
+ }
19
+ const NETWORK = ['timeoutMs', 'ttlSeconds', 'memoryCacheEntries', 'dbPath', 'verbose'];
20
+ export function NetworkGroup({ card }) {
21
+ const { t } = card;
22
+ return _jsxs(Group, { id: "network", title: t('groupNetwork'), summary: t('groupNetworkSub'), badges: count(card, NETWORK, t), children: [_jsx(NumberRow, { card: card, field: "timeoutMs", unit: "ms" }), _jsx(NumberRow, { card: card, field: "ttlSeconds", unit: "sec" }), _jsx(NumberRow, { card: card, field: "memoryCacheEntries", unit: "count" }), _jsx(TextRow, { card: card, field: "dbPath", code: true }), _jsx(SwitchRow, { card: card, field: "verbose" })] });
23
+ }
24
+ const RANKING = ['rrfConstant', 'freshnessBoost', 'freshnessDays', 'authorityBoost', 'authorityDomains'];
25
+ export function RankingGroup({ card }) {
26
+ const { t } = card;
27
+ return _jsxs(Group, { id: "ranking", title: t('groupRanking'), summary: t('groupRankingSub'), badges: count(card, RANKING, t), children: [_jsx(NumberRow, { card: card, field: "rrfConstant" }), _jsx(NumberRow, { card: card, field: "freshnessBoost" }), _jsx(NumberRow, { card: card, field: "freshnessDays", unit: "days" }), _jsx(NumberRow, { card: card, field: "authorityBoost" }), _jsx(ListRow, { card: card, field: "authorityDomains", placeholder: "docs.example.com" }), _jsx("p", { className: css.notice, role: "note", children: t('rankingNote') })] });
28
+ }
29
+ const ROUTE = ['registerProvider', 'providerId', 'provider.evidence', 'provider.deadlineMs'];
30
+ export function RouteGroup({ card }) {
31
+ const { t } = card;
32
+ const on = card.useWebSearchPro(snapshot => snapshot.fields.registerProvider.text === 'true');
33
+ const routeId = card.useWebSearchPro(snapshot => snapshot.fields.providerId.text.trim() || 'web-search-pro');
34
+ return _jsxs(Group, { id: "route", title: t('groupRoute'), summary: t('groupRouteSub'), badges: count(card, ROUTE, t), children: [_jsx(SwitchRow, { card: card, field: "registerProvider" }), on ? _jsxs(_Fragment, { children: [_jsx(TextRow, { card: card, field: "providerId", code: true }), _jsx(SelectRow, { card: card, field: "provider.evidence", options: [{ value: 'auto', label: t('optAuto') }, { value: 'off', label: t('optOff') }] }), _jsx(NumberRow, { card: card, field: "provider.deadlineMs", unit: "ms" })] }) : _jsx("p", { className: css.rowHint, children: t('routeOffNote') }), _jsx(Fold, { id: "route-patch", title: t('routeHelpTitle'), hint: t('routeHelpFoldHint'), children: _jsxs("div", { "data-wsp-route-help": true, children: [_jsx("p", { className: css.rowHint, children: t('routeHelpIntro') }), _jsx("pre", { className: css.codeBlock, children: `- id: web\n name: '@deepseek-ai/dsh-web'\n config:\n searchProvider: ${routeId}\n fetchProvider: ${routeId}` }), _jsx("p", { className: css.rowHint, children: t('routeHelpAfter') })] }) })] });
35
+ }
36
+ //# sourceMappingURL=groups-basic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groups-basic.js","sourceRoot":"","sources":["../../src/client/groups-basic.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,2BAA2B,GAK5B,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAA;AACjD,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,CAAC,MAAM,IAAI,GAAG,uBAAuB,CAAA;AAC3C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,EAAE,aAAa,CAAC,CAAA;AACxF,MAAM,CAAC,MAAM,EAAE,GAAG,qBAAqB,CAAA;AAevC,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,YAAY,EAAE,CAAA;IACd,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,uCAAuC,CAAC,CAAA;IAE9F,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAA0B,gBAAgB,CAAC,CAAA;IAC3E,MAAM,UAAU,GAAG,IAAI,2BAA2B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC7D,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC,EAAE,qCAAqC,CAAC,CAAA;IAEvF,wEAAwE;IACxE,mEAAmE;IACnE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,CACpE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;QACjE,IAAI,EAAE,uBAAuB;QAC7B,GAAG,EAAE,oBAAoB;QACzB,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE;KAClC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,sCAAsC,CAAC,CAAA;AAC/D,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,2BAA2B,GAK5B,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAA;AACjD,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG1C,MAAM,CAAC,MAAM,IAAI,GAAG,uBAAuB,CAAA;AAC3C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,EAAE,aAAa,CAAC,CAAA;AACxF,MAAM,CAAC,MAAM,EAAE,GAAG,qBAAqB,CAAA;AAsBvC,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,YAAY,EAAE,CAAA;IACd,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,uCAAuC,CAAC,CAAA;IAE9F,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAA0B,gBAAgB,CAAC,CAAA;IAC3E,MAAM,UAAU,GAAG,IAAI,2BAA2B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC7D,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC,EAAE,qCAAqC,CAAC,CAAA;IAEvF,wEAAwE;IACxE,mEAAmE;IACnE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,CACpE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;QACjE,IAAI,EAAE,uBAAuB;QAC7B,GAAG,EAAE,oBAAoB;QACzB,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE;KAClC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,sCAAsC,CAAC,CAAA;AAC/D,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * The settings that are whole JSON objects (custom providers, platform backend chains, CLI adapters, custom platforms, ...) as a
4
+ * list: a row each (name, how many entries it holds, "default" while it is empty) and one dialog with a code box and the
5
+ * server's own validation message. Nothing here is a second place the data lives: the box edits the same staged field.
6
+ * @module web-search-pro/client/json-list
7
+ */
8
+ import { useState } from 'react';
9
+ import { fill, rowLabels, stateOf, useField } from "./field-rows.js";
10
+ import { hasHelp, JSON_FIELDS, labelKey } from "./field-keys.js";
11
+ import { styles as css } from "./styles.js";
12
+ import { Badge, Btn, Dialog, Help, Item, Row } from "./ui-kit.js";
13
+ /** How many entries a JSON object text holds; undefined when it is not an object. */
14
+ export function entryCount(text) {
15
+ if (text.trim() === '')
16
+ return 0;
17
+ try {
18
+ const value = JSON.parse(text);
19
+ return value !== null && typeof value === 'object' && !Array.isArray(value) ? Object.keys(value).length : undefined;
20
+ }
21
+ catch {
22
+ return undefined;
23
+ }
24
+ }
25
+ /** The code box of one JSON field. */
26
+ export function JsonForm({ card, field }) {
27
+ const { t } = card;
28
+ const f = useField(card, field);
29
+ const key = labelKey(field);
30
+ const id = `web-search-pro-${field}`;
31
+ const st = f.state;
32
+ return _jsx(Row, { field: field, id: id, label: t(key), hint: t(`${key}Hint`), help: hasHelp(field) ? t(`${key}Help`) : undefined, overridden: st.overridden, invalid: st.invalid || !!st.message, problem: st.message ?? t('invalidJson'), warning: st.warning, disabled: f.disabled, labels: rowLabels(t), onReset: f.reset, wide: true, children: _jsx("textarea", { id: id, className: `${css.input} ${css.textarea} ${css.code} ${st.invalid ? css.invalidInput : ''}`, rows: 12, spellCheck: false, value: st.text, disabled: f.disabled, "aria-invalid": st.invalid || undefined, onChange: event => f.edit(event.currentTarget.value) }) });
33
+ }
34
+ function JsonItem({ card, field, onEdit }) {
35
+ const { t } = card;
36
+ const st = card.useWebSearchPro(snapshot => stateOf(snapshot, field));
37
+ const disabled = card.useWebSearchPro(snapshot => !snapshot.writable);
38
+ const n = entryCount(st.text);
39
+ const key = labelKey(field);
40
+ return _jsx(Item, { data: field, title: t(key), badges: _jsxs(_Fragment, { children: [_jsx(Badge, { tone: st.invalid ? 'danger' : st.overridden ? 'info' : 'outline', children: st.invalid ? t('invalid') : st.overridden ? t('overridden') : t('promptStateDefault') }), n ? _jsx(Badge, { tone: "neutral", children: fill(t('jsonEntries'), { n }) }) : null, field === 'playwright' ? _jsxs("span", { className: "wsp-restart", "data-wsp-restart": "playwright.snapshotDir", children: [_jsx(Badge, { tone: "outline", children: t('restartBadgeSnapshot') }), _jsx(Help, { label: t('helpLabel'), text: t('restartWhyPlaywright') })] }) : null] }), meta: t(`${key}Hint`), actions: _jsx(Btn, { disabled: disabled, onClick: onEdit, data: "json-edit", children: t('edit') }) });
41
+ }
42
+ /** A list of JSON-object settings with its dialog. `fields` names which ones (see JSON_FIELDS). */
43
+ export function JsonList({ card, fields }) {
44
+ const { t } = card;
45
+ const [editing, setEditing] = useState();
46
+ return _jsxs(_Fragment, { children: [_jsx("div", { className: css.list, "data-wsp-json-list": true, children: fields.map(field => _jsx(JsonItem, { card: card, field: field, onEdit: () => setEditing(field) }, field)) }), editing ? _jsx(Dialog, { open: true, wide: true, title: fill(t('jsonDialogTitle'), { name: t(labelKey(editing)) }), closeLabel: t('close'), description: t('jsonDialogHint'), onClose: () => setEditing(undefined), footer: _jsx(Btn, { primary: true, onClick: () => setEditing(undefined), data: "json-done", children: t('done') }), children: _jsx(JsonForm, { card: card, field: editing }) }) : null] });
47
+ }
48
+ /** The fields of one group of JSON settings. */
49
+ export const jsonFieldsOf = (group) => JSON_FIELDS.filter(entry => entry.group === group).map(entry => entry.field);
50
+ //# sourceMappingURL=json-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-list.js","sourceRoot":"","sources":["../../src/client/json-list.tsx"],"names":[],"mappings":"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"}