cli-jaw 2.2.0 → 2.2.1-preview.20260625145621

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 (190) hide show
  1. package/README.ko.md +1 -1
  2. package/README.md +22 -3
  3. package/README.zh-CN.md +1 -1
  4. package/dist/bin/cli-jaw.js +13 -1
  5. package/dist/bin/cli-jaw.js.map +1 -1
  6. package/dist/bin/commands/bgtask.js +2 -1
  7. package/dist/bin/commands/bgtask.js.map +1 -1
  8. package/dist/bin/commands/dispatch-batch-summary.js +38 -0
  9. package/dist/bin/commands/dispatch-batch-summary.js.map +1 -0
  10. package/dist/bin/commands/dispatch.js +91 -52
  11. package/dist/bin/commands/dispatch.js.map +1 -1
  12. package/dist/bin/commands/hooks.js +58 -0
  13. package/dist/bin/commands/hooks.js.map +1 -0
  14. package/dist/bin/commands/jwc.js +237 -0
  15. package/dist/bin/commands/jwc.js.map +1 -0
  16. package/dist/bin/commands/orchestrate.js +37 -2
  17. package/dist/bin/commands/orchestrate.js.map +1 -1
  18. package/dist/bin/commands/provider.js +213 -0
  19. package/dist/bin/commands/provider.js.map +1 -0
  20. package/dist/bin/commands/skill.js +17 -4
  21. package/dist/bin/commands/skill.js.map +1 -1
  22. package/dist/bin/commands/worker.js +162 -4
  23. package/dist/bin/commands/worker.js.map +1 -1
  24. package/dist/lib/mcp/skills-distribution.js +17 -19
  25. package/dist/lib/mcp/skills-distribution.js.map +1 -1
  26. package/dist/server.js +2 -1
  27. package/dist/server.js.map +1 -1
  28. package/dist/src/agent/jwc-runtime.js +12 -3
  29. package/dist/src/agent/jwc-runtime.js.map +1 -1
  30. package/dist/src/agent/spawn/queue.js +14 -0
  31. package/dist/src/agent/spawn/queue.js.map +1 -1
  32. package/dist/src/agent/spawn.js +1 -1
  33. package/dist/src/agent/spawn.js.map +1 -1
  34. package/dist/src/bgtask/recover.js +4 -1
  35. package/dist/src/bgtask/recover.js.map +1 -1
  36. package/dist/src/bgtask/registry.js +12 -2
  37. package/dist/src/bgtask/registry.js.map +1 -1
  38. package/dist/src/browser/adaptive-fetch/bm25-filter.js +47 -0
  39. package/dist/src/browser/adaptive-fetch/bm25-filter.js.map +1 -0
  40. package/dist/src/browser/adaptive-fetch/browser-escalation.js +136 -3
  41. package/dist/src/browser/adaptive-fetch/browser-escalation.js.map +1 -1
  42. package/dist/src/browser/adaptive-fetch/browser-flow.js +118 -0
  43. package/dist/src/browser/adaptive-fetch/browser-flow.js.map +1 -0
  44. package/dist/src/browser/adaptive-fetch/browser-runtime.js +10 -1
  45. package/dist/src/browser/adaptive-fetch/browser-runtime.js.map +1 -1
  46. package/dist/src/browser/adaptive-fetch/camoufox-session.js +76 -0
  47. package/dist/src/browser/adaptive-fetch/camoufox-session.js.map +1 -0
  48. package/dist/src/browser/adaptive-fetch/candidate-discovery.js +116 -0
  49. package/dist/src/browser/adaptive-fetch/candidate-discovery.js.map +1 -0
  50. package/dist/src/browser/adaptive-fetch/challenge-detector.js +1 -1
  51. package/dist/src/browser/adaptive-fetch/challenge-detector.js.map +1 -1
  52. package/dist/src/browser/adaptive-fetch/endpoint-resolvers.js +66 -5
  53. package/dist/src/browser/adaptive-fetch/endpoint-resolvers.js.map +1 -1
  54. package/dist/src/browser/adaptive-fetch/feed-parser.js +152 -0
  55. package/dist/src/browser/adaptive-fetch/feed-parser.js.map +1 -0
  56. package/dist/src/browser/adaptive-fetch/fetcher.js +20 -1
  57. package/dist/src/browser/adaptive-fetch/fetcher.js.map +1 -1
  58. package/dist/src/browser/adaptive-fetch/human-loop.js +10 -1
  59. package/dist/src/browser/adaptive-fetch/human-loop.js.map +1 -1
  60. package/dist/src/browser/adaptive-fetch/index.js +17 -397
  61. package/dist/src/browser/adaptive-fetch/index.js.map +1 -1
  62. package/dist/src/browser/adaptive-fetch/live-smoke-manifest.js +99 -0
  63. package/dist/src/browser/adaptive-fetch/live-smoke-manifest.js.map +1 -0
  64. package/dist/src/browser/adaptive-fetch/metadata.js +74 -5
  65. package/dist/src/browser/adaptive-fetch/metadata.js.map +1 -1
  66. package/dist/src/browser/adaptive-fetch/public-endpoint-normalizers.js +414 -0
  67. package/dist/src/browser/adaptive-fetch/public-endpoint-normalizers.js.map +1 -0
  68. package/dist/src/browser/adaptive-fetch/reader-adapters.js +36 -0
  69. package/dist/src/browser/adaptive-fetch/reader-adapters.js.map +1 -1
  70. package/dist/src/browser/adaptive-fetch/scheduler.js +472 -0
  71. package/dist/src/browser/adaptive-fetch/scheduler.js.map +1 -0
  72. package/dist/src/browser/adaptive-fetch/stage-types.js +2 -0
  73. package/dist/src/browser/adaptive-fetch/stage-types.js.map +1 -0
  74. package/dist/src/browser/adaptive-fetch/structured-extractor.js +117 -0
  75. package/dist/src/browser/adaptive-fetch/structured-extractor.js.map +1 -0
  76. package/dist/src/browser/adaptive-fetch/third-party-readers.js +15 -1
  77. package/dist/src/browser/adaptive-fetch/third-party-readers.js.map +1 -1
  78. package/dist/src/browser/adaptive-fetch/tls-fetch.js +81 -0
  79. package/dist/src/browser/adaptive-fetch/tls-fetch.js.map +1 -0
  80. package/dist/src/browser/adaptive-fetch/validators.js +11 -8
  81. package/dist/src/browser/adaptive-fetch/validators.js.map +1 -1
  82. package/dist/src/browser/adaptive-fetch/ytdlp-reader.js +82 -0
  83. package/dist/src/browser/adaptive-fetch/ytdlp-reader.js.map +1 -0
  84. package/dist/src/cli/commands.js +67 -13
  85. package/dist/src/cli/commands.js.map +1 -1
  86. package/dist/src/cli/handlers-search.js +28 -0
  87. package/dist/src/cli/handlers-search.js.map +1 -0
  88. package/dist/src/cli/handlers-skill-invoke.js +30 -0
  89. package/dist/src/cli/handlers-skill-invoke.js.map +1 -0
  90. package/dist/src/cli/handlers.js +12 -1
  91. package/dist/src/cli/handlers.js.map +1 -1
  92. package/dist/src/code-mode/acp-host.js +1 -8
  93. package/dist/src/code-mode/acp-host.js.map +1 -1
  94. package/dist/src/command-contract/catalog.js +22 -1
  95. package/dist/src/command-contract/catalog.js.map +1 -1
  96. package/dist/src/core/cli-detection.js +7 -0
  97. package/dist/src/core/cli-detection.js.map +1 -1
  98. package/dist/src/core/skill-cache.js +34 -0
  99. package/dist/src/core/skill-cache.js.map +1 -0
  100. package/dist/src/goal/heartbeat.js +13 -7
  101. package/dist/src/goal/heartbeat.js.map +1 -1
  102. package/dist/src/memory/heartbeat.js +12 -1
  103. package/dist/src/memory/heartbeat.js.map +1 -1
  104. package/dist/src/orchestrator/attestation.js +156 -0
  105. package/dist/src/orchestrator/attestation.js.map +1 -0
  106. package/dist/src/orchestrator/pipeline.js +34 -6
  107. package/dist/src/orchestrator/pipeline.js.map +1 -1
  108. package/dist/src/orchestrator/sanitize.js +4 -0
  109. package/dist/src/orchestrator/sanitize.js.map +1 -1
  110. package/dist/src/orchestrator/state-machine.js +69 -13
  111. package/dist/src/orchestrator/state-machine.js.map +1 -1
  112. package/dist/src/orchestrator/worker-output-store.js +64 -0
  113. package/dist/src/orchestrator/worker-output-store.js.map +1 -0
  114. package/dist/src/orchestrator/worker-progress.js.map +1 -1
  115. package/dist/src/orchestrator/worker-registry.js +91 -10
  116. package/dist/src/orchestrator/worker-registry.js.map +1 -1
  117. package/dist/src/orchestrator/worker-replay-notice.js +28 -0
  118. package/dist/src/orchestrator/worker-replay-notice.js.map +1 -0
  119. package/dist/src/orchestrator/worker-run-store.js +142 -0
  120. package/dist/src/orchestrator/worker-run-store.js.map +1 -0
  121. package/dist/src/prompt/builder.js +35 -3
  122. package/dist/src/prompt/builder.js.map +1 -1
  123. package/dist/src/prompt/context-hooks.js +210 -0
  124. package/dist/src/prompt/context-hooks.js.map +1 -0
  125. package/dist/src/prompt/templates/orchestration.md +1 -1
  126. package/dist/src/routes/bgtask.js +13 -4
  127. package/dist/src/routes/bgtask.js.map +1 -1
  128. package/dist/src/routes/command.js +1 -1
  129. package/dist/src/routes/command.js.map +1 -1
  130. package/dist/src/routes/orchestrate.js +85 -10
  131. package/dist/src/routes/orchestrate.js.map +1 -1
  132. package/dist/src/shared/runtime-observability.js +20 -0
  133. package/dist/src/shared/runtime-observability.js.map +1 -0
  134. package/dist/src/workflows/search.js +21 -0
  135. package/dist/src/workflows/search.js.map +1 -0
  136. package/package.json +11 -12
  137. package/public/dist/assets/{app-BsVpXeLC.js → app-CLrfEHAk.js} +4 -4
  138. package/public/dist/assets/bgtask-badge-4OjtCvDq.js +1 -0
  139. package/public/dist/assets/{bgtask-badge-DqMU3pM3.js → bgtask-badge-xWbw-l-0.js} +1 -1
  140. package/public/dist/assets/{employees-BhkR2-xi.js → employees-C5GPj3d3.js} +1 -1
  141. package/public/dist/assets/manager-Ceg2x8D0.js +13 -0
  142. package/public/dist/assets/{manager-U147AWWu.css → manager-CwAlpgV7.css} +1 -1
  143. package/public/dist/assets/memory-B1beDKbo.js +1 -0
  144. package/public/dist/assets/{memory-DERWDVjI.js → memory-CcnjBuo-.js} +1 -1
  145. package/public/dist/assets/{message-history-CK0ah3pB.js → message-history-BSWJwi__.js} +2 -2
  146. package/public/dist/assets/message-history-CzaziSe8.js +1 -0
  147. package/public/dist/assets/{render-CqzsW5KN.js → render-C2g_qvCg.js} +2 -2
  148. package/public/dist/assets/settings-Dst1mUjn.js +1 -0
  149. package/public/dist/assets/{settings-DdwmhI5a.js → settings-DxClXVD0.js} +1 -1
  150. package/public/dist/assets/settings-core-BW5mtFPE.js +1 -0
  151. package/public/dist/assets/{settings-core-AiF7o3Ns.js → settings-core-CSUV4-QG.js} +1 -1
  152. package/public/dist/assets/{sidebar-Bhtk2fPc.js → sidebar-CJz_SnMW.js} +3 -3
  153. package/public/dist/assets/skills-B2io6S_4.js +1 -0
  154. package/public/dist/assets/{skills-Cs8byPIx.js → skills-PKg2h1N4.js} +1 -1
  155. package/public/dist/assets/slash-commands-D1IS00Eg.js +1 -0
  156. package/public/dist/assets/{slash-commands-C5erv0KS.js → slash-commands-FMOOfedZ.js} +1 -1
  157. package/public/dist/assets/{trace-drawer-CtmD6jwj.js → trace-drawer-BoU1ucw7.js} +1 -1
  158. package/public/dist/assets/{ui-DaFl446W.js → ui-BX-IfLze.js} +1 -1
  159. package/public/dist/assets/ui-C-al0etg.js +1 -0
  160. package/public/dist/index.html +1 -1
  161. package/public/dist/manager/index.html +2 -2
  162. package/public/js/features/command-info.ts +1 -0
  163. package/public/js/render/file-links.ts +1 -1
  164. package/public/js/render/notes-vault-path.ts +1 -1
  165. package/public/locales/en.json +2 -0
  166. package/public/locales/ja.json +2 -0
  167. package/public/locales/ko.json +2 -0
  168. package/public/locales/zh.json +2 -0
  169. package/public/manager/src/SidebarRailRouter.tsx +7 -3
  170. package/public/manager/src/background-tasks/background-task-client.ts +21 -1
  171. package/public/manager/src/main.tsx +2 -0
  172. package/public/manager/src/workers/WorkerProgressMonitorPanel.tsx +2 -0
  173. package/public/manager/src/workers/WorkerRunsPanel.tsx +152 -0
  174. package/public/manager/src/workers/useWorkerRuns.ts +138 -0
  175. package/public/manager/src/workers/worker-runs-client.ts +112 -0
  176. package/public/manager/src/workers/worker-runs.css +208 -0
  177. package/scripts/bundle-sidecar.sh +2 -64
  178. package/scripts/check-electron-sidecar-no-jwc.cjs +57 -0
  179. package/scripts/install-risk-gate.mjs +3 -2
  180. package/scripts/jwc-no-global-smoke.mjs +19 -21
  181. package/public/dist/assets/bgtask-badge-YR8SMYrp.js +0 -1
  182. package/public/dist/assets/manager-ycX0r7uL.js +0 -13
  183. package/public/dist/assets/memory-CfeG2ViL.js +0 -1
  184. package/public/dist/assets/message-history-BaI36ciH.js +0 -1
  185. package/public/dist/assets/settings-VeoQiKpd.js +0 -1
  186. package/public/dist/assets/settings-core-DlfGtuWD.js +0 -1
  187. package/public/dist/assets/skills-Z0rMlwnf.js +0 -1
  188. package/public/dist/assets/slash-commands-CZKlw4A6.js +0 -1
  189. package/public/dist/assets/ui-WRcA4tUT.js +0 -1
  190. package/scripts/check-electron-sidecar-jwc.cjs +0 -117
@@ -1 +1 @@
1
- {"version":3,"file":"reader-adapters.js","sourceRoot":"","sources":["../../../../src/browser/adaptive-fetch/reader-adapters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reader-adapters.js","sourceRoot":"","sources":["../../../../src/browser/adaptive-fetch/reader-adapters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,472 @@
1
+ import { validateFetchUrl } from './safety.js';
2
+ import { appendAttempt, createAttemptTrace, summarizeAttempts } from './trace.js';
3
+ import { resolvePublicEndpointCandidates } from './endpoint-resolvers.js';
4
+ import { fetchTextCandidate } from './fetcher.js';
5
+ import { tlsFetch } from './tls-fetch.js';
6
+ import { ytdlpMetadata, ytdlpSubtitles, formatYtdlpEvidence } from './ytdlp-reader.js';
7
+ import { fromFetchResult, fromUserSessionResult, fromHumanResolvedResult } from './reader-adapters.js';
8
+ import { chooseBestReaderCandidate, scoreReaderCandidate } from './content-scorer.js';
9
+ import { fetchThirdPartyReaderCandidate } from './third-party-readers.js';
10
+ import { collectBrowserMetadataCandidate, collectBrowserStructuredResultCandidates, collectDefuddleCandidate, collectNetworkJsonCandidates, } from './browser-escalation.js';
11
+ import { tryBrowserEscalation } from './browser-flow.js';
12
+ import { fromBrowserResult, fromMetadataResult, fromNetworkCandidate } from './reader-adapters.js';
13
+ import { classifyChallengeType } from './challenge-detector.js';
14
+ import { shouldTryUserSession, navigateInUserSession } from './browser-session.js';
15
+ import { humanResolve } from './human-loop.js';
16
+ import { bm25Filter } from './bm25-filter.js';
17
+ export async function executeAdaptiveFetch(options, deps = {}) {
18
+ const parsed = validateFetchUrl(options.url, { allowPrivateNetwork: options.allowPrivateNetwork });
19
+ const trace = createAttemptTrace({
20
+ url: options.url,
21
+ browserMode: options.browserMode,
22
+ browserSession: options.browserSessionRaw || options.browserSession,
23
+ });
24
+ const fetchImpl = deps['fetch'];
25
+ const fetchOpt = { ...(fetchImpl ? { fetchImpl } : {}), ...(options.proxy ? { proxy: options.proxy } : {}) };
26
+ appendAttempt(trace, {
27
+ source: 'validation',
28
+ verdict: 'weak_ok',
29
+ url: parsed.href,
30
+ reason: 'url-valid',
31
+ });
32
+ const overallTimeoutMs = options.overallTimeoutMs || 60_000;
33
+ // P0-6: an overall-deadline AbortController so a hung in-flight stage is
34
+ // actually aborted at the deadline — not merely skipped before the next
35
+ // stage. The signal flows through fetchOpt into every HTTP fetch path
36
+ // (direct/discovered/jina) and is combined with each request's own timeout.
37
+ const deadlineController = new AbortController();
38
+ const deadlineTimer = setTimeout(() => deadlineController.abort(new Error('overall-deadline-exceeded')), overallTimeoutMs);
39
+ deadlineTimer.unref?.();
40
+ const ctx = {
41
+ url: parsed,
42
+ options,
43
+ deps,
44
+ trace,
45
+ candidates: [],
46
+ challenge: null,
47
+ fetchedUrls: new Set(),
48
+ fetchOpt: { ...fetchOpt, signal: deadlineController.signal },
49
+ chromeUsed: false,
50
+ deadline: Date.now() + overallTimeoutMs,
51
+ signal: deadlineController.signal,
52
+ };
53
+ try {
54
+ runEndpointStage(ctx);
55
+ if (!isPastDeadline(ctx))
56
+ await runDirectFetchStage(ctx);
57
+ if (!isPastDeadline(ctx))
58
+ await runDiscoveredEndpointStage(ctx);
59
+ if (!isPastDeadline(ctx))
60
+ await runJinaStage(ctx);
61
+ const earlyBest = evaluateEarlyExit(ctx);
62
+ if (earlyBest)
63
+ return finalize(ctx, earlyBest);
64
+ if (!isPastDeadline(ctx))
65
+ await runBrowserStages(ctx);
66
+ const finalBest = chooseBestReaderCandidate(ctx.candidates);
67
+ if (finalBest)
68
+ return finalize(ctx, finalBest);
69
+ return finalize(ctx, null);
70
+ }
71
+ finally {
72
+ clearTimeout(deadlineTimer);
73
+ }
74
+ }
75
+ function runEndpointStage(ctx) {
76
+ if (ctx.options.browserMode === 'required' || !ctx.options.publicEndpoints)
77
+ return;
78
+ const resolved = resolvePublicEndpointCandidates(ctx.url);
79
+ for (const candidate of resolved) {
80
+ candidate.source = 'public_endpoint';
81
+ }
82
+ }
83
+ async function runDirectFetchStage(ctx) {
84
+ const candidateUrls = [];
85
+ if (ctx.options.browserMode !== 'required' && ctx.options.publicEndpoints) {
86
+ candidateUrls.push(...resolvePublicEndpointCandidates(ctx.url).map(candidate => ({
87
+ ...candidate,
88
+ source: 'public_endpoint',
89
+ })));
90
+ }
91
+ if (ctx.options.browserMode !== 'required') {
92
+ candidateUrls.push({ label: 'direct-fetch', url: ctx.url.href, source: 'fetch' });
93
+ }
94
+ for (const candidate of candidateUrls) {
95
+ let fetched;
96
+ if (candidate.source === 'ytdlp') {
97
+ try {
98
+ const meta = await ytdlpMetadata(candidate.url, { timeoutMs: ctx.options.timeoutMs });
99
+ if (meta) {
100
+ const subs = await ytdlpSubtitles(candidate.url, 'en', { timeoutMs: ctx.options.timeoutMs });
101
+ const text = formatYtdlpEvidence(meta, subs);
102
+ const evidence = subs ? ['ytdlp-metadata', 'ytdlp-transcript'] : ['ytdlp-metadata'];
103
+ fetched = { ok: true, status: 200, finalUrl: candidate.url, contentType: 'text/plain', text, headers: {}, evidence, warnings: [] };
104
+ appendAttempt(ctx.trace, { source: 'ytdlp', verdict: 'ok', url: candidate.url, reason: subs ? 'ytdlp-metadata+transcript' : 'ytdlp-metadata' });
105
+ }
106
+ else {
107
+ appendAttempt(ctx.trace, { source: 'ytdlp', verdict: 'skip', url: candidate.url, reason: 'ytdlp-not-available' });
108
+ continue;
109
+ }
110
+ }
111
+ catch (error) {
112
+ appendAttempt(ctx.trace, { source: 'ytdlp', verdict: 'error', url: candidate.url, reason: error.message || 'ytdlp-error' });
113
+ continue;
114
+ }
115
+ }
116
+ else {
117
+ try {
118
+ fetched = await fetchTextCandidate(candidate.url, {
119
+ maxBytes: ctx.options.maxBytes,
120
+ timeoutMs: ctx.options.timeoutMs,
121
+ allowPrivateNetwork: ctx.options.allowPrivateNetwork,
122
+ identity: ctx.options.identity,
123
+ ...ctx.fetchOpt,
124
+ });
125
+ }
126
+ catch (error) {
127
+ appendAttempt(ctx.trace, {
128
+ source: candidate.source,
129
+ verdict: 'error',
130
+ url: candidate.url,
131
+ reason: error.message || 'fetch-candidate-error',
132
+ });
133
+ continue;
134
+ }
135
+ }
136
+ ctx.fetchedUrls.add(fetched['finalUrl'] || candidate.url);
137
+ if (candidate.source === 'fetch' && !fetched['ok']) {
138
+ const challengeResult = classifyChallengeType({
139
+ status: fetched['status'],
140
+ headers: fetched['headers'],
141
+ body: fetched['text'],
142
+ });
143
+ if (challengeResult.type) {
144
+ ctx.challenge = challengeResult;
145
+ appendAttempt(ctx.trace, {
146
+ source: candidate.source,
147
+ verdict: challengeResult.type,
148
+ url: fetched['finalUrl'],
149
+ status: fetched['status'],
150
+ reason: `challenge:${challengeResult.type}`,
151
+ });
152
+ }
153
+ }
154
+ if (candidate.source === 'fetch' && !fetched['ok'] && (fetched['status'] === 403 || fetched['status'] === 429 || ctx.challenge)) {
155
+ const tlsOpts = { timeoutMs: ctx.options.timeoutMs, maxBytes: ctx.options.maxBytes };
156
+ if (ctx.options.proxy)
157
+ tlsOpts.proxy = ctx.options.proxy;
158
+ const tlsResult = await tlsFetch(candidate.url, tlsOpts);
159
+ if (tlsResult?.ok) {
160
+ appendAttempt(ctx.trace, { source: 'tls-fetch', verdict: 'ok', url: candidate.url, status: tlsResult.status, reason: `tls-profile:${tlsResult.profile}` });
161
+ fetched = { ok: true, status: tlsResult.status, finalUrl: candidate.url, contentType: tlsResult.headers['content-type'] || '', text: tlsResult.body, headers: tlsResult.headers, evidence: [`tls-fetch:${tlsResult.profile}`], warnings: [] };
162
+ }
163
+ }
164
+ const readerCandidate = fromFetchResult(fetched, {
165
+ source: candidate.source,
166
+ label: candidate.label,
167
+ });
168
+ if (ctx.challenge && candidate.source === 'fetch') {
169
+ readerCandidate.challenge = ctx.challenge;
170
+ }
171
+ const scored = scoreReaderCandidate(readerCandidate);
172
+ appendAttempt(ctx.trace, {
173
+ source: readerCandidate.source,
174
+ verdict: scored.verdict,
175
+ url: fetched['finalUrl'],
176
+ status: fetched['status'],
177
+ reason: `score:${scored.score}`,
178
+ });
179
+ if (readerCandidate.text || readerCandidate.title)
180
+ ctx.candidates.push(readerCandidate);
181
+ }
182
+ }
183
+ async function runDiscoveredEndpointStage(ctx) {
184
+ if (ctx.options.browserMode === 'required' || !ctx.options.publicEndpoints)
185
+ return;
186
+ const discoveredFeedUrls = [];
187
+ const discoveredOembedUrls = [];
188
+ for (const c of ctx.candidates) {
189
+ const metadata = c.metadata;
190
+ for (const feedUrl of metadata?.['feedUrls'] || []) {
191
+ if (!ctx.fetchedUrls.has(feedUrl) && !discoveredFeedUrls.includes(feedUrl))
192
+ discoveredFeedUrls.push(feedUrl);
193
+ }
194
+ for (const oEmbedUrl of metadata?.['oEmbedUrls'] || []) {
195
+ if (!ctx.fetchedUrls.has(oEmbedUrl) && !discoveredOembedUrls.includes(oEmbedUrl))
196
+ discoveredOembedUrls.push(oEmbedUrl);
197
+ }
198
+ }
199
+ for (const discovered of [
200
+ ...discoveredFeedUrls.map(url => ({ url, label: 'rss-atom-discovered' })),
201
+ ...discoveredOembedUrls.map(url => ({ url, label: 'oembed-discovered' })),
202
+ ]) {
203
+ let fetched;
204
+ try {
205
+ fetched = await fetchTextCandidate(discovered.url, {
206
+ maxBytes: ctx.options.maxBytes,
207
+ timeoutMs: ctx.options.timeoutMs,
208
+ allowPrivateNetwork: ctx.options.allowPrivateNetwork,
209
+ identity: ctx.options.identity,
210
+ ...ctx.fetchOpt,
211
+ });
212
+ }
213
+ catch (error) {
214
+ appendAttempt(ctx.trace, {
215
+ source: 'public_endpoint',
216
+ verdict: 'error',
217
+ url: discovered.url,
218
+ reason: error.message || `${discovered.label}-error`,
219
+ });
220
+ continue;
221
+ }
222
+ ctx.fetchedUrls.add(fetched['finalUrl'] || discovered.url);
223
+ const readerCandidate = fromFetchResult(fetched, {
224
+ source: 'public_endpoint',
225
+ label: discovered.label,
226
+ });
227
+ const scored = scoreReaderCandidate(readerCandidate);
228
+ appendAttempt(ctx.trace, {
229
+ source: readerCandidate.source,
230
+ verdict: scored.verdict,
231
+ url: fetched['finalUrl'],
232
+ status: fetched['status'],
233
+ reason: `score:${scored.score}`,
234
+ });
235
+ if (readerCandidate.text || readerCandidate.title)
236
+ ctx.candidates.push(readerCandidate);
237
+ }
238
+ }
239
+ async function runJinaStage(ctx) {
240
+ if (!ctx.options.allowThirdPartyReader)
241
+ return;
242
+ let fetched = null;
243
+ try {
244
+ fetched = await fetchThirdPartyReaderCandidate(ctx.url.href, {
245
+ allowThirdPartyReader: true,
246
+ maxBytes: ctx.options.maxBytes,
247
+ timeoutMs: ctx.options.timeoutMs,
248
+ ...ctx.fetchOpt,
249
+ });
250
+ }
251
+ catch (error) {
252
+ appendAttempt(ctx.trace, {
253
+ source: 'third_party_reader',
254
+ verdict: 'error',
255
+ url: ctx.url.href,
256
+ reason: error.message || 'third-party-reader-error',
257
+ });
258
+ }
259
+ if (fetched) {
260
+ const readerCandidate = fromFetchResult(fetched, {
261
+ source: 'third_party_reader',
262
+ label: 'jina-reader',
263
+ });
264
+ const scored = scoreReaderCandidate(readerCandidate);
265
+ appendAttempt(ctx.trace, {
266
+ source: readerCandidate.source,
267
+ verdict: scored.verdict,
268
+ url: fetched['readerUrl'] || fetched.finalUrl,
269
+ status: fetched.status,
270
+ reason: `score:${scored.score}`,
271
+ });
272
+ if (readerCandidate.text || readerCandidate.title)
273
+ ctx.candidates.push(readerCandidate);
274
+ }
275
+ }
276
+ async function runBrowserStages(ctx) {
277
+ if (ctx.signal.aborted)
278
+ return;
279
+ const browserResult = await tryBrowserEscalation(ctx.url.href, ctx.options, ctx.deps, ctx.trace, ctx.challenge, ctx.signal);
280
+ if (browserResult) {
281
+ ctx.chromeUsed = true;
282
+ ctx.candidates.push(fromBrowserResult(browserResult));
283
+ const metadataCandidate = collectBrowserMetadataCandidate(browserResult);
284
+ if (metadataCandidate)
285
+ ctx.candidates.push(fromMetadataResult(metadataCandidate));
286
+ for (const structuredCandidate of collectBrowserStructuredResultCandidates(browserResult)) {
287
+ ctx.candidates.push(fromBrowserResult(structuredCandidate));
288
+ }
289
+ const defuddleCandidate = collectDefuddleCandidate(browserResult);
290
+ if (defuddleCandidate)
291
+ ctx.candidates.push(fromBrowserResult(defuddleCandidate));
292
+ for (const networkCandidate of collectNetworkJsonCandidates(browserResult)) {
293
+ ctx.candidates.push(fromNetworkCandidate(networkCandidate));
294
+ }
295
+ const best = chooseBestReaderCandidate(ctx.candidates);
296
+ if (best && best.verdict === 'strong_ok') {
297
+ return;
298
+ }
299
+ }
300
+ await runUserSessionStage(ctx);
301
+ await runHumanLoopStage(ctx);
302
+ }
303
+ async function runUserSessionStage(ctx) {
304
+ const sessionDecision = shouldTryUserSession(ctx.candidates, { ...ctx.options, browserDeps: ctx.deps });
305
+ if (sessionDecision !== true)
306
+ return;
307
+ if (ctx.signal.aborted)
308
+ return; // P0-6: skip the user-session tail past the deadline
309
+ try {
310
+ const userResult = await navigateInUserSession(ctx.url.href, {
311
+ browserDeps: ctx.deps,
312
+ timeoutMs: ctx.options.timeoutMs,
313
+ selector: ctx.options.selector,
314
+ allowPrivateNetwork: ctx.options.allowPrivateNetwork,
315
+ });
316
+ ctx.candidates.push(fromUserSessionResult(userResult));
317
+ ctx.chromeUsed = true;
318
+ appendAttempt(ctx.trace, {
319
+ source: 'browser_user',
320
+ verdict: 'strong_ok',
321
+ url: userResult['finalUrl'],
322
+ reason: 'user-session-render',
323
+ });
324
+ }
325
+ catch (error) {
326
+ appendAttempt(ctx.trace, {
327
+ source: 'browser_user',
328
+ verdict: 'error',
329
+ url: ctx.url.href,
330
+ reason: error.message || 'user-session-error',
331
+ });
332
+ }
333
+ }
334
+ async function runHumanLoopStage(ctx) {
335
+ const best = chooseBestReaderCandidate(ctx.candidates);
336
+ if (!ctx.options.humanLoop || !hasUnresolvedChallenge(ctx.candidates, best))
337
+ return;
338
+ if (ctx.signal.aborted)
339
+ return; // P0-6: skip the human-loop tail past the deadline
340
+ const challengeInfo = ctx.challenge || { type: 'challenge' };
341
+ try {
342
+ const humanResult = await humanResolve(ctx.url.href, {
343
+ ...ctx.options,
344
+ browserDeps: ctx.deps,
345
+ }, challengeInfo);
346
+ if (humanResult['ok'] !== false) {
347
+ ctx.candidates.push(fromHumanResolvedResult(humanResult));
348
+ ctx.chromeUsed = true;
349
+ appendAttempt(ctx.trace, {
350
+ source: 'human_resolved',
351
+ verdict: 'strong_ok',
352
+ url: humanResult['finalUrl'] || ctx.url.href,
353
+ reason: 'human-resolved',
354
+ });
355
+ }
356
+ else {
357
+ appendAttempt(ctx.trace, {
358
+ source: 'human_resolved',
359
+ verdict: humanResult['verdict'] || 'blocked',
360
+ url: ctx.url.href,
361
+ reason: humanResult['actionMessage'] || 'human-action-needed',
362
+ });
363
+ }
364
+ }
365
+ catch (error) {
366
+ appendAttempt(ctx.trace, {
367
+ source: 'human_resolved',
368
+ verdict: 'error',
369
+ url: ctx.url.href,
370
+ reason: error.message || 'human-loop-error',
371
+ });
372
+ }
373
+ }
374
+ function evaluateEarlyExit(ctx) {
375
+ const best = chooseBestReaderCandidate(ctx.candidates);
376
+ if (shouldReturnWithoutBrowser(best, ctx.options))
377
+ return best;
378
+ return null;
379
+ }
380
+ function finalize(ctx, scored) {
381
+ if (scored) {
382
+ const result = resultFromScoredCandidate(scored);
383
+ if (ctx.options.userSessionExplicit) {
384
+ result.safetyFlags = [...result.safetyFlags, 'user_session_used'];
385
+ }
386
+ return buildFinalResult(result, ctx);
387
+ }
388
+ return buildFinalResult({
389
+ ok: false,
390
+ verdict: ctx.options.browserMode === 'required' ? 'browser_required' : 'blocked',
391
+ source: ctx.options.browserMode === 'required' ? 'browser' : 'fetch',
392
+ finalUrl: ctx.url.href,
393
+ title: null,
394
+ content: '',
395
+ summary: 'No public endpoint, fetch, or metadata attempt produced readable content.',
396
+ evidence: [],
397
+ warnings: [],
398
+ safetyFlags: [],
399
+ metadata: null,
400
+ }, ctx);
401
+ }
402
+ function buildFinalResult(result, ctx) {
403
+ let content = result.content;
404
+ const evidence = [...result.evidence];
405
+ if (ctx.options.query && content.length > 5000) {
406
+ content = bm25Filter(content, { query: ctx.options.query, topK: 15 });
407
+ evidence.push('bm25-filtered');
408
+ }
409
+ return {
410
+ ok: result.ok,
411
+ verdict: result.verdict,
412
+ source: result.source,
413
+ finalUrl: result.finalUrl,
414
+ browserMode: ctx.options.browserMode,
415
+ browserSession: ctx.options.browserSessionRaw || ctx.options.browserSession,
416
+ identity: ctx.options.identity || 'auto',
417
+ chromeUsed: ctx.chromeUsed,
418
+ chromeRequired: result.verdict === 'browser_required' || (ctx.options.browserMode === 'required' && !result.ok),
419
+ title: result.title,
420
+ content,
421
+ summary: result.summary,
422
+ attempts: ctx.options.trace ? ctx.trace.attempts : [],
423
+ safetyFlags: result.safetyFlags,
424
+ evidence,
425
+ warnings: [...(ctx.options.optionWarnings || []), ...result.warnings],
426
+ metadata: result.metadata,
427
+ _traceSummary: summarizeAttempts(ctx.trace.attempts),
428
+ };
429
+ }
430
+ function resultFromScoredCandidate(scored) {
431
+ const candidate = scored.candidate;
432
+ return {
433
+ ok: candidate.ok !== false && ['strong_ok', 'weak_ok'].includes(scored.verdict),
434
+ verdict: scored.verdict,
435
+ source: candidate.source,
436
+ finalUrl: candidate.finalUrl,
437
+ title: candidate.title || null,
438
+ content: candidate.text || '',
439
+ summary: `${candidate.label || candidate.source} selected with ${scored.verdict} (score ${scored.score}).`,
440
+ evidence: scored.evidence,
441
+ warnings: candidate.warnings || [],
442
+ safetyFlags: candidate.safetyFlags || [],
443
+ metadata: candidate.metadata || null,
444
+ };
445
+ }
446
+ function isPastDeadline(ctx) {
447
+ if (Date.now() > ctx.deadline) {
448
+ appendAttempt(ctx.trace, {
449
+ source: 'scheduler',
450
+ verdict: 'blocked',
451
+ url: ctx.url.href,
452
+ reason: 'overall-deadline-exceeded',
453
+ });
454
+ return true;
455
+ }
456
+ return false;
457
+ }
458
+ function shouldReturnWithoutBrowser(best, options) {
459
+ if (options.browserMode === 'required')
460
+ return false;
461
+ if (options.browserMode === 'never')
462
+ return Boolean(best);
463
+ return Boolean(best && best.verdict === 'strong_ok');
464
+ }
465
+ function hasUnresolvedChallenge(candidates, best) {
466
+ if (best && best.verdict === 'strong_ok')
467
+ return false;
468
+ return candidates.some(c => c.challenge?.type === 'challenge' ||
469
+ c.challenge?.type === 'auth_required' ||
470
+ c.challenge?.type === 'paywall') || (best != null && ['challenge', 'auth_required', 'paywall', 'blocked'].includes(best.verdict));
471
+ }
472
+ //# sourceMappingURL=scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../../../src/browser/adaptive-fetch/scheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stage-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stage-types.js","sourceRoot":"","sources":["../../../../src/browser/adaptive-fetch/stage-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,117 @@
1
+ const MAX_TABLE_ROWS = 50;
2
+ export function extractStructuredContent(html) {
3
+ return {
4
+ headings: extractHeadings(html),
5
+ tables: extractTables(html),
6
+ lists: extractLists(html),
7
+ codeBlocks: extractCodeBlocks(html),
8
+ jsonLd: extractJsonLd(html),
9
+ mainText: '',
10
+ wordCount: 0,
11
+ };
12
+ }
13
+ function extractHeadings(html) {
14
+ const headings = [];
15
+ const re = /<h([1-6])[^>]*>([\s\S]*?)<\/h\1>/gi;
16
+ let match;
17
+ while ((match = re.exec(html)) !== null) {
18
+ const text = stripTags(match[2] ?? '').trim();
19
+ if (text)
20
+ headings.push({ level: Number(match[1]), text });
21
+ }
22
+ return headings;
23
+ }
24
+ function extractTables(html) {
25
+ const tables = [];
26
+ const tableRe = /<table[^>]*>([\s\S]*?)<\/table>/gi;
27
+ let tableMatch;
28
+ while ((tableMatch = tableRe.exec(html)) !== null) {
29
+ const tableHtml = tableMatch[1] ?? '';
30
+ const caption = extractFirst(tableHtml, /<caption[^>]*>([\s\S]*?)<\/caption>/i);
31
+ const headers = [];
32
+ const headerRe = /<th[^>]*>([\s\S]*?)<\/th>/gi;
33
+ let hm;
34
+ while ((hm = headerRe.exec(tableHtml)) !== null) {
35
+ headers.push(stripTags(hm[1] ?? '').trim());
36
+ }
37
+ const rows = [];
38
+ const rowRe = /<tr[^>]*>([\s\S]*?)<\/tr>/gi;
39
+ let rowMatch;
40
+ while ((rowMatch = rowRe.exec(tableHtml)) !== null) {
41
+ const cells = [];
42
+ const cellRe = /<td[^>]*>([\s\S]*?)<\/td>/gi;
43
+ let cellMatch;
44
+ while ((cellMatch = cellRe.exec(rowMatch[1] ?? '')) !== null) {
45
+ cells.push(stripTags(cellMatch[1] ?? '').trim());
46
+ }
47
+ if (cells.length > 0 && rows.length < MAX_TABLE_ROWS)
48
+ rows.push(cells);
49
+ }
50
+ if (headers.length > 0 || rows.length > 0) {
51
+ const entry = { headers, rows };
52
+ if (caption)
53
+ entry.caption = caption;
54
+ tables.push(entry);
55
+ }
56
+ }
57
+ return tables;
58
+ }
59
+ function extractLists(html) {
60
+ const lists = [];
61
+ const listRe = /<(ol|ul)[^>]*>([\s\S]*?)<\/\1>/gi;
62
+ let match;
63
+ while ((match = listRe.exec(html)) !== null) {
64
+ const type = (match[1] ?? '').toLowerCase() === 'ol' ? 'ordered' : 'unordered';
65
+ const items = [];
66
+ const itemRe = /<li[^>]*>([\s\S]*?)<\/li>/gi;
67
+ let im;
68
+ while ((im = itemRe.exec(match[2] ?? '')) !== null) {
69
+ const text = stripTags(im[1] ?? '').trim();
70
+ if (text)
71
+ items.push(text);
72
+ }
73
+ if (items.length > 0)
74
+ lists.push({ type, items });
75
+ }
76
+ return lists;
77
+ }
78
+ function extractCodeBlocks(html) {
79
+ const blocks = [];
80
+ const re = /<pre[^>]*>[\s\S]*?<code[^>]*(?:class="[^"]*language-(\w+)[^"]*")?[^>]*>([\s\S]*?)<\/code>[\s\S]*?<\/pre>/gi;
81
+ let match;
82
+ while ((match = re.exec(html)) !== null) {
83
+ const code = decodeEntities(stripTags(match[2] ?? '')).trim();
84
+ if (code)
85
+ blocks.push({ language: match[1] || '', code });
86
+ }
87
+ return blocks;
88
+ }
89
+ function extractJsonLd(html) {
90
+ const results = [];
91
+ const re = /<script[^>]*type=["']application\/ld\+json["'][^>]*>([\s\S]*?)<\/script>/gi;
92
+ let match;
93
+ while ((match = re.exec(html)) !== null) {
94
+ try {
95
+ results.push(JSON.parse(match[1] ?? ''));
96
+ }
97
+ catch { /* malformed JSON-LD */ }
98
+ }
99
+ return results;
100
+ }
101
+ function stripTags(html) {
102
+ return html.replace(/<[^>]+>/g, '');
103
+ }
104
+ function decodeEntities(text) {
105
+ return text
106
+ .replace(/&amp;/g, '&')
107
+ .replace(/&lt;/g, '<')
108
+ .replace(/&gt;/g, '>')
109
+ .replace(/&quot;/g, '"')
110
+ .replace(/&#39;/g, "'")
111
+ .replace(/&#x27;/g, "'");
112
+ }
113
+ function extractFirst(html, re) {
114
+ const m = re.exec(html);
115
+ return m ? stripTags(m[1] ?? '').trim() : '';
116
+ }
117
+ //# sourceMappingURL=structured-extractor.js.map