webfox 0.0.0-test.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +256 -3
  3. package/assets/webfox-lockup-dark.png +0 -0
  4. package/assets/webfox-lockup.png +0 -0
  5. package/dist/adapter-2YBFCBCZ.js +161 -0
  6. package/dist/adapter-67TIISDW.js +753 -0
  7. package/dist/adapter-AB7LKV7N.js +324 -0
  8. package/dist/adapter-AUYLTDPM.js +73 -0
  9. package/dist/adapter-HITGYUXN.js +494 -0
  10. package/dist/adapter-HPTMLH75.js +334 -0
  11. package/dist/adapter-I6OUKBZQ.js +492 -0
  12. package/dist/adapter-ISZQTZDP.js +166 -0
  13. package/dist/adapter-MAG7X663.js +230 -0
  14. package/dist/adapter-NEXSOHGT.js +232 -0
  15. package/dist/adapter-PADXKW43.js +162 -0
  16. package/dist/adapter-SDQX2533.js +123 -0
  17. package/dist/adapter-UAZNLDSS.js +237 -0
  18. package/dist/adapter-XBAQSK7I.js +282 -0
  19. package/dist/application-types.d.ts +34 -0
  20. package/dist/application.d.ts +2 -0
  21. package/dist/chunk-EF4VMDZL.js +85 -0
  22. package/dist/chunk-G2YAQEET.js +38 -0
  23. package/dist/chunk-I2UIACY3.js +12 -0
  24. package/dist/chunk-L425U55P.js +3051 -0
  25. package/dist/chunk-QRHDXM2L.js +31 -0
  26. package/dist/chunk-SMF5ALX7.js +762 -0
  27. package/dist/chunk-U4BLULLV.js +52 -0
  28. package/dist/chunk-WCTOYZVB.js +85 -0
  29. package/dist/chunk-X6ZBIHZC.js +21 -0
  30. package/dist/chunk-YZXM4U2C.js +21 -0
  31. package/dist/chunk-ZVTVERW5.js +20 -0
  32. package/dist/cli.js +641 -0
  33. package/dist/config.schema.json +4270 -0
  34. package/dist/configuration/defaults.d.ts +3 -0
  35. package/dist/configuration/file.d.ts +17 -0
  36. package/dist/configuration/options-schema.d.ts +2 -0
  37. package/dist/configuration/planning.d.ts +10 -0
  38. package/dist/configuration/schema.d.ts +9 -0
  39. package/dist/configuration/types.d.ts +37 -0
  40. package/dist/contents.d.ts +19 -0
  41. package/dist/domain.d.ts +89 -0
  42. package/dist/errors.d.ts +17 -0
  43. package/dist/index.d.ts +8 -0
  44. package/dist/index.js +38 -0
  45. package/dist/package-metadata.d.ts +3 -0
  46. package/dist/pi-keybindings.d.ts +1 -0
  47. package/dist/pi-params.d.ts +3 -0
  48. package/dist/pi-render.d.ts +50 -0
  49. package/dist/pi-search-render.d.ts +4 -0
  50. package/dist/pi-text.d.ts +4 -0
  51. package/dist/pi-validation.d.ts +4 -0
  52. package/dist/pi.d.ts +2 -0
  53. package/dist/pi.js +563 -0
  54. package/dist/providers/brave/adapter.d.ts +7 -0
  55. package/dist/providers/brave/definition.d.ts +1 -0
  56. package/dist/providers/brave/types.d.ts +4 -0
  57. package/dist/providers/cli-json.d.ts +9 -0
  58. package/dist/providers/cloudflare/adapter.d.ts +5 -0
  59. package/dist/providers/cloudflare/definition.d.ts +1 -0
  60. package/dist/providers/cloudflare/types.d.ts +4 -0
  61. package/dist/providers/contract.d.ts +88 -0
  62. package/dist/providers/custom/adapter.d.ts +9 -0
  63. package/dist/providers/custom/definition.d.ts +1 -0
  64. package/dist/providers/custom/types.d.ts +9 -0
  65. package/dist/providers/definition.d.ts +32 -0
  66. package/dist/providers/exa/adapter.d.ts +8 -0
  67. package/dist/providers/exa/definition.d.ts +1 -0
  68. package/dist/providers/exa/types.d.ts +4 -0
  69. package/dist/providers/firecrawl/adapter.d.ts +7 -0
  70. package/dist/providers/firecrawl/definition.d.ts +1 -0
  71. package/dist/providers/firecrawl/types.d.ts +4 -0
  72. package/dist/providers/gemini/adapter.d.ts +14 -0
  73. package/dist/providers/gemini/definition.d.ts +1 -0
  74. package/dist/providers/gemini/types.d.ts +3 -0
  75. package/dist/providers/linkup/adapter.d.ts +7 -0
  76. package/dist/providers/linkup/definition.d.ts +1 -0
  77. package/dist/providers/linkup/types.d.ts +4 -0
  78. package/dist/providers/metadata.d.ts +15 -0
  79. package/dist/providers/ollama/adapter.d.ts +6 -0
  80. package/dist/providers/ollama/definition.d.ts +1 -0
  81. package/dist/providers/ollama/types.d.ts +4 -0
  82. package/dist/providers/openai/adapter.d.ts +7 -0
  83. package/dist/providers/openai/definition.d.ts +1 -0
  84. package/dist/providers/openai/types.d.ts +28 -0
  85. package/dist/providers/parallel/adapter.d.ts +6 -0
  86. package/dist/providers/parallel/definition.d.ts +1 -0
  87. package/dist/providers/parallel/types.d.ts +4 -0
  88. package/dist/providers/perplexity/adapter.d.ts +7 -0
  89. package/dist/providers/perplexity/definition.d.ts +1 -0
  90. package/dist/providers/perplexity/types.d.ts +4 -0
  91. package/dist/providers/registry.d.ts +16 -0
  92. package/dist/providers/serper/adapter.d.ts +5 -0
  93. package/dist/providers/serper/definition.d.ts +1 -0
  94. package/dist/providers/serper/types.d.ts +21 -0
  95. package/dist/providers/shared.d.ts +4 -0
  96. package/dist/providers/tavily/adapter.d.ts +6 -0
  97. package/dist/providers/tavily/definition.d.ts +1 -0
  98. package/dist/providers/tavily/types.d.ts +4 -0
  99. package/dist/providers/valyu/adapter.d.ts +8 -0
  100. package/dist/providers/valyu/definition.d.ts +1 -0
  101. package/dist/providers/valyu/types.d.ts +4 -0
  102. package/dist/render.d.ts +5 -0
  103. package/dist/runtime/credentials.d.ts +15 -0
  104. package/dist/runtime/duration.d.ts +2 -0
  105. package/dist/runtime/execute.d.ts +20 -0
  106. package/dist/runtime/lifecycle.d.ts +8 -0
  107. package/dist/runtime/outward.d.ts +11 -0
  108. package/dist/runtime/polling.d.ts +13 -0
  109. package/dist/runtime/process.d.ts +4 -0
  110. package/docs/cli-experience.md +177 -0
  111. package/docs/provider.md +177 -0
  112. package/docs/reference.md +181 -0
  113. package/example-config.yaml +36 -0
  114. package/examples/custom/README.md +57 -0
  115. package/examples/custom/provider.mjs +54 -0
  116. package/examples/custom/webfox.json +18 -0
  117. package/package.json +122 -8
  118. package/index.js +0 -2
@@ -0,0 +1,85 @@
1
+ import {
2
+ formatDuration
3
+ } from "./chunk-I2UIACY3.js";
4
+ import {
5
+ sleep,
6
+ withSignal
7
+ } from "./chunk-WCTOYZVB.js";
8
+ import {
9
+ WebfoxError,
10
+ asWebfoxError
11
+ } from "./chunk-U4BLULLV.js";
12
+
13
+ // src/runtime/polling.ts
14
+ async function executeAsyncResearch({
15
+ providerLabel,
16
+ providerId,
17
+ context,
18
+ pollIntervalMs = 3e3,
19
+ start,
20
+ poll
21
+ }) {
22
+ context.signal?.throwIfAborted();
23
+ const startedAt = Date.now();
24
+ context.onProgress?.(`Submitting research to ${providerLabel}.`);
25
+ const job = await withSignal(start(context), context.signal);
26
+ if (!job.id)
27
+ throw new WebfoxError(
28
+ "PROVIDER_FAILURE",
29
+ `${providerLabel} returned no research job id.`
30
+ );
31
+ context.onProgress?.(
32
+ `${providerLabel} accepted the request; waiting for the report.`
33
+ );
34
+ let errors = 0;
35
+ let lastStatus = "in_progress";
36
+ let lastUpdate = Date.now();
37
+ while (true) {
38
+ context.signal?.throwIfAborted();
39
+ let result;
40
+ try {
41
+ result = await withSignal(poll(job.id, context), context.signal);
42
+ errors = 0;
43
+ } catch (error) {
44
+ if (context.signal?.aborted) throw context.signal.reason;
45
+ const normalized = asWebfoxError(error);
46
+ if (!normalized.options.retryable || ++errors > (context.retryPolicy?.retries ?? 0))
47
+ throw normalized;
48
+ const delayMs = Math.min(
49
+ (context.retryPolicy?.delayMs ?? 2e3) * 2 ** (errors - 1),
50
+ 3e4
51
+ );
52
+ context.onProgress?.(
53
+ `${providerLabel} status check failed; retrying in ${formatDuration(delayMs)} (retry ${errors}/${context.retryPolicy?.retries ?? 0}).`
54
+ );
55
+ await sleep(delayMs, context.signal);
56
+ continue;
57
+ }
58
+ if (result.status === "completed")
59
+ return result.output ?? {
60
+ provider: providerId,
61
+ text: `${providerLabel} research completed without textual output.`
62
+ };
63
+ if (result.status === "failed" || result.status === "cancelled")
64
+ throw new WebfoxError(
65
+ result.status === "cancelled" ? "CANCELLED" : "PROVIDER_FAILURE",
66
+ `${providerLabel} research ${result.status}${result.error ? `: ${result.error}` : "."}`,
67
+ { retryable: false }
68
+ );
69
+ const status = result.statusText ?? result.status;
70
+ const now = Date.now();
71
+ if (status !== lastStatus || now - lastUpdate >= 3e4) {
72
+ const detail = status === "in_progress" ? "is still running" : `status: ${status.replaceAll("_", " ")}`;
73
+ context.onProgress?.(
74
+ `${providerLabel} research ${detail} (${formatDuration(now - startedAt)} elapsed).`
75
+ );
76
+ lastStatus = status;
77
+ lastUpdate = now;
78
+ }
79
+ await sleep(pollIntervalMs, context.signal);
80
+ }
81
+ }
82
+
83
+ export {
84
+ executeAsyncResearch
85
+ };
@@ -0,0 +1,38 @@
1
+ // src/domain.ts
2
+ var CAPABILITIES = [
3
+ "search",
4
+ "contents",
5
+ "answer",
6
+ "research"
7
+ ];
8
+ var PROVIDER_IDS = [
9
+ "brave",
10
+ "cloudflare",
11
+ "custom",
12
+ "exa",
13
+ "firecrawl",
14
+ "gemini",
15
+ "linkup",
16
+ "ollama",
17
+ "openai",
18
+ "parallel",
19
+ "perplexity",
20
+ "serper",
21
+ "tavily",
22
+ "valyu"
23
+ ];
24
+ var WEBFOX_ERROR_CODES = [
25
+ "INVALID_CONFIG",
26
+ "INVALID_INPUT",
27
+ "PROVIDER_UNAVAILABLE",
28
+ "PROVIDER_FAILURE",
29
+ "PARTIAL_BATCH",
30
+ "TIMEOUT",
31
+ "CANCELLED"
32
+ ];
33
+
34
+ export {
35
+ CAPABILITIES,
36
+ PROVIDER_IDS,
37
+ WEBFOX_ERROR_CODES
38
+ };
@@ -0,0 +1,12 @@
1
+ // src/runtime/duration.ts
2
+ function formatDuration(milliseconds) {
3
+ const seconds = Math.max(0, Math.floor(milliseconds / 1e3));
4
+ if (seconds < 60) return `${seconds}s`;
5
+ const minutes = Math.floor(seconds / 60);
6
+ if (minutes < 60) return `${minutes}m ${seconds % 60}s`;
7
+ return `${Math.floor(minutes / 60)}h ${minutes % 60}m ${seconds % 60}s`;
8
+ }
9
+
10
+ export {
11
+ formatDuration
12
+ };