@farming-labs/docs 0.2.120 → 0.2.122

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 (188) hide show
  1. package/README.md +8 -0
  2. package/dist/access.d.mts +13 -0
  3. package/dist/access.mjs +56 -0
  4. package/dist/agent-conformance.d.mts +60 -0
  5. package/dist/agent-conformance.mjs +538 -0
  6. package/dist/agent-contract.d.mts +47 -0
  7. package/dist/agent-contract.mjs +645 -0
  8. package/dist/agent-detection.d.mts +6 -0
  9. package/dist/agent-detection.mjs +83 -0
  10. package/dist/agent-evals.d.mts +224 -0
  11. package/dist/{agent-evals-BLNLvXbG.mjs → agent-evals.mjs} +7 -565
  12. package/dist/agent-feedback-evaluations-node.mjs +38 -0
  13. package/dist/agent-feedback-evaluations.d.mts +91 -0
  14. package/dist/{agent-feedback-evaluations-CcMGlgsO.mjs → agent-feedback-evaluations.mjs} +2 -2
  15. package/dist/agent-feedback-loop.d.mts +45 -0
  16. package/dist/{agent-feedback-loop-CcZL_sb1.mjs → agent-feedback-loop.mjs} +1 -1
  17. package/dist/agent-maintenance.d.mts +71 -0
  18. package/dist/{agent-maintenance-CuZ7iAKq.mjs → agent-maintenance.mjs} +1 -1
  19. package/dist/agent-provenance.d.mts +23 -0
  20. package/dist/agent-provenance.mjs +77 -0
  21. package/dist/agent-scope.mjs +321 -0
  22. package/dist/agent-skills-archive.mjs +86 -0
  23. package/dist/agent-skills-bundle.d.mts +1 -1
  24. package/dist/{agent-skills-progressive-disclosure-PjPtTYL-.mjs → agent-skills-progressive-disclosure.mjs} +2 -2
  25. package/dist/{agent-skills-server-D5IuvwM7.d.mts → agent-skills-server.d.mts} +3 -3
  26. package/dist/{agent-skills-server-BC7md56k.mjs → agent-skills-server.mjs} +2 -2
  27. package/dist/agent-skills-vite.d.mts +3 -3
  28. package/dist/agent-skills-vite.mjs +1 -2
  29. package/dist/agent-surface-drift.mjs +236 -0
  30. package/dist/{golden-evaluations-CLUViycJ.mjs → agent-usefulness.mjs} +5 -290
  31. package/dist/{content-change-hydration-wqXIZHp6.d.mts → agent.d.mts} +10 -411
  32. package/dist/agent.mjs +2729 -0
  33. package/dist/{analytics-w3FDOksr.d.mts → analytics.d.mts} +2 -2
  34. package/dist/{analytics-p8Vhhu2P.mjs → analytics.mjs} +2 -2
  35. package/dist/{sitemap-server-BUdPBcGs.d.mts → api-reference.d.mts} +2 -6
  36. package/dist/api-reference.mjs +1481 -0
  37. package/dist/{audience-exposure-DBrFWULA.d.mts → audience-exposure.d.mts} +1 -1
  38. package/dist/audience-exposure.mjs +8 -0
  39. package/dist/audience.d.mts +44 -0
  40. package/dist/audience.mjs +1654 -0
  41. package/dist/authoring-mcp.d.mts +44 -0
  42. package/dist/{authoring-mcp-CiCUQe3o.mjs → authoring-mcp.mjs} +3 -3
  43. package/dist/browser.d.mts +6 -4
  44. package/dist/browser.mjs +6 -7
  45. package/dist/build.d.mts +8 -0
  46. package/dist/build.mjs +8 -0
  47. package/dist/changelog.d.mts +20 -0
  48. package/dist/changelog.mjs +39 -0
  49. package/dist/{agent-export-CA6IUQ7T.mjs → cli/agent-export.mjs} +19 -45
  50. package/dist/{agent-CYk2DxY7.mjs → cli/agent.mjs} +6 -35
  51. package/dist/{agents-BUiVmj8i.mjs → cli/agents.mjs} +5 -18
  52. package/dist/cli/api-doctor.mjs +206 -0
  53. package/dist/{authoring-C2ymvYWl.mjs → cli/authoring.mjs} +2 -8
  54. package/dist/{cloud-6eKrlmKd.mjs → cli/cloud.mjs} +3 -3
  55. package/dist/{codeblocks-CHpgAwY-.mjs → cli/codeblocks.mjs} +2 -2
  56. package/dist/cli/config.d.mts +11 -0
  57. package/dist/{config-BZnKAj_Y.mjs → cli/config.mjs} +1 -1
  58. package/dist/cli/dev-banner.mjs +58 -0
  59. package/dist/{dev-Bnn-NUNa.mjs → cli/dev.mjs} +3 -57
  60. package/dist/{doctor-Bfkrkzad.mjs → cli/doctor.mjs} +41 -226
  61. package/dist/{downgrade-CHMta85e.mjs → cli/downgrade.mjs} +2 -2
  62. package/dist/cli/errors.d.mts +4 -0
  63. package/dist/{errors-BtnVLhNF.mjs → cli/errors.mjs} +1 -1
  64. package/dist/{feedback-evals-DMilg9pY.mjs → cli/feedback-evals.mjs} +3 -36
  65. package/dist/{feedback-DL4T5oIO.mjs → cli/feedback.mjs} +1 -1
  66. package/dist/cli/git-dates.mjs +35 -0
  67. package/dist/cli/golden-evaluations.mjs +52 -0
  68. package/dist/cli/index.d.mts +2 -3
  69. package/dist/cli/index.mjs +38 -38
  70. package/dist/{init-K0LmXDZ5.mjs → cli/init.mjs} +3 -3
  71. package/dist/{mcp-iLCmnPJI.mjs → cli/mcp.mjs} +7 -19
  72. package/dist/{openapi-diff-HcpUNjA-.mjs → cli/openapi-diff.mjs} +2 -7
  73. package/dist/{openapi-sdk-BQKC6H-_.mjs → cli/openapi-sdk.mjs} +2 -7
  74. package/dist/{openapi-source-DK6ts_Bk.mjs → cli/openapi-source.mjs} +2 -2
  75. package/dist/{package-version-HJhYeq4M.mjs → cli/package-version.mjs} +2 -2
  76. package/dist/{propose-JmUv_BTt.mjs → cli/propose.mjs} +1 -1
  77. package/dist/{review-C6EmbV0l.mjs → cli/review.mjs} +16 -15
  78. package/dist/{robots-DteZB8vl.mjs → cli/robots.mjs} +3 -7
  79. package/dist/{search-Bhuv_YsL.mjs → cli/search.mjs} +7 -20
  80. package/dist/{sitemap-DW5LDKDa.mjs → cli/sitemap.mjs} +7 -42
  81. package/dist/{skills-BAPQLSCm.mjs → cli/skills.mjs} +5 -19
  82. package/dist/{templates-BuQ8YsGv.mjs → cli/templates.mjs} +1 -1
  83. package/dist/{upgrade-DlQMOFV1.mjs → cli/upgrade.mjs} +2 -2
  84. package/dist/{utils-C7KDrPpA.mjs → cli/utils.mjs} +1 -1
  85. package/dist/client/react.d.mts +2 -18
  86. package/dist/client/react.mjs +1 -157
  87. package/dist/{cloud-analytics-D14HplI7.mjs → cloud-analytics.mjs} +1 -1
  88. package/dist/{cloud-ask-ai-BrsTXQf6.d.mts → cloud-ask-ai.d.mts} +2 -2
  89. package/dist/{cloud-ask-ai-BqKhjpS5.mjs → cloud-ask-ai.mjs} +3 -3
  90. package/dist/code-blocks.d.mts +51 -0
  91. package/dist/{code-blocks-GYdvS3BH.mjs → code-blocks.mjs} +2 -2
  92. package/dist/code-group-mdx.d.mts +11 -0
  93. package/dist/code-group-mdx.mjs +57 -0
  94. package/dist/content-change-hydration.d.mts +87 -0
  95. package/dist/{openapi-mcp-BIOTLiA7.mjs → content-change-hydration.mjs} +5 -210
  96. package/dist/content-changes.d.mts +47 -0
  97. package/dist/content-changes.mjs +216 -0
  98. package/dist/create-theme.d.mts +48 -0
  99. package/dist/create-theme.mjs +57 -0
  100. package/dist/date.d.mts +5 -0
  101. package/dist/date.mjs +17 -0
  102. package/dist/define-docs.d.mts +9 -0
  103. package/dist/define-docs.mjs +46 -0
  104. package/dist/docs-cloud-client.d.mts +18 -0
  105. package/dist/docs-cloud-client.mjs +161 -0
  106. package/dist/docs-cloud-server.d.mts +2 -2
  107. package/dist/docs-cloud-server.mjs +2 -3
  108. package/dist/heading-toc.d.mts +10 -0
  109. package/dist/heading-toc.mjs +23 -0
  110. package/dist/http-body.d.mts +14 -0
  111. package/dist/{http-body-DkAPk6D5.mjs → http-body.mjs} +1 -1
  112. package/dist/http-cache.d.mts +25 -0
  113. package/dist/http-cache.mjs +140 -0
  114. package/dist/http-link.mjs +81 -0
  115. package/dist/i18n.d.mts +18 -0
  116. package/dist/{i18n-B1gJ9EW0.mjs → i18n.mjs} +1 -1
  117. package/dist/index.d.mts +42 -674
  118. package/dist/index.mjs +40 -14
  119. package/dist/markdown-rendering.mjs +1 -1
  120. package/dist/markdown-section-cache.mjs +49 -0
  121. package/dist/markdown-sections.d.mts +47 -0
  122. package/dist/{markdown-sections-9Oxr33b-.mjs → markdown-sections.mjs} +29 -703
  123. package/dist/mcp-auth.d.mts +14 -0
  124. package/dist/mcp-auth.mjs +99 -0
  125. package/dist/mcp.d.mts +5 -3
  126. package/dist/mcp.mjs +21 -9
  127. package/dist/mdx.d.mts +6 -0
  128. package/dist/mdx.mjs +7 -0
  129. package/dist/metadata.d.mts +60 -0
  130. package/dist/{metadata-BOHn0Y5K.mjs → metadata.mjs} +2 -2
  131. package/dist/native-api-reference.mjs +968 -0
  132. package/dist/okf.d.mts +42 -0
  133. package/dist/okf.mjs +145 -0
  134. package/dist/openapi-contract.mjs +154 -0
  135. package/dist/{openapi-mcp-node-C4jUpZG6.mjs → openapi-mcp-node.mjs} +1 -1
  136. package/dist/openapi-mcp.d.mts +26 -0
  137. package/dist/openapi-mcp.mjs +132 -0
  138. package/dist/openapi-operations.d.mts +71 -0
  139. package/dist/{openapi-operations-DFpaqOqA.mjs → openapi-operations.mjs} +1 -1
  140. package/dist/openapi-overlays.mjs +221 -0
  141. package/dist/openapi-references.mjs +233 -0
  142. package/dist/pagination.d.mts +7 -0
  143. package/dist/pagination.mjs +100 -0
  144. package/dist/prompt-references.d.mts +12 -0
  145. package/dist/prompt-references.mjs +132 -0
  146. package/dist/prompt-utils.d.mts +36 -0
  147. package/dist/{prompt-utils-B5g-bv7o.mjs → prompt-utils.mjs} +1 -57
  148. package/dist/reading-time.d.mts +23 -0
  149. package/dist/reading-time.mjs +58 -0
  150. package/dist/related.d.mts +7 -0
  151. package/dist/related.mjs +50 -0
  152. package/dist/retrieval-digest.d.mts +16 -0
  153. package/dist/{retrieval-digest-CT-eIEcp.mjs → retrieval-digest.mjs} +1 -1
  154. package/dist/review.d.mts +69 -0
  155. package/dist/review.mjs +562 -0
  156. package/dist/robots.d.mts +54 -0
  157. package/dist/{robots-BYJAVeI6.mjs → robots.mjs} +5 -3
  158. package/dist/runtime.d.mts +3 -3
  159. package/dist/runtime.mjs +3 -9
  160. package/dist/search.d.mts +210 -0
  161. package/dist/search.mjs +3401 -0
  162. package/dist/server.d.mts +22 -198
  163. package/dist/server.mjs +21 -19
  164. package/dist/sidebar.d.mts +15 -0
  165. package/dist/sidebar.mjs +73 -0
  166. package/dist/sitemap-server.d.mts +7 -0
  167. package/dist/{sitemap-server-Lg3YhUx4.mjs → sitemap-server.mjs} +2 -2
  168. package/dist/{sitemap-Cl8vrixd.d.mts → sitemap.d.mts} +3 -3
  169. package/dist/sitemap.mjs +254 -0
  170. package/dist/{standards-discovery-BHPc7YIX.d.mts → standards-discovery.d.mts} +2 -2
  171. package/dist/{standards-discovery-sSEojU80.mjs → standards-discovery.mjs} +3 -139
  172. package/dist/telemetry-runtime.d.mts +42 -0
  173. package/dist/telemetry-runtime.mjs +238 -0
  174. package/dist/telemetry.d.mts +15 -0
  175. package/dist/telemetry.mjs +117 -0
  176. package/dist/{types-BJFeMXWZ.d.mts → types.d.mts} +3 -2
  177. package/dist/urls.d.mts +7 -0
  178. package/dist/urls.mjs +21 -0
  179. package/dist/utils.d.mts +8 -0
  180. package/dist/utils.mjs +22 -0
  181. package/package.json +21 -3
  182. package/dist/agent-DkAidqtV.mjs +0 -9026
  183. package/dist/api-reference-BYee4zMo.mjs +0 -3046
  184. package/dist/prompt-references-DMgbu_dz.mjs +0 -1082
  185. package/dist/retrieval-digest-AOx2-LbC.d.mts +0 -367
  186. package/dist/sidebar-CFHBj29f.mjs +0 -421
  187. package/dist/sidebar-CMPbVfGP.d.mts +0 -63
  188. /package/dist/{openapi-CfCzX_a1.mjs → cli/openapi.mjs} +0 -0
@@ -1,421 +0,0 @@
1
- import { $ as isDocsSkillRequest, K as isDocsAgentDiscoveryRequest, St as resolveDocsSkillFormat, Xt as resolveDocsContentChangesConfig, Yt as isDocsContentChangesRequest, dt as resolveDocsAgentFeedbackRequest, ft as resolveDocsAgentsFormat, mt as resolveDocsLlmsTxtRequest, q as isDocsAgentsRequest, ut as resolveDocsAgentFeedbackConfig, vt as resolveDocsMarkdownRequest } from "./agent-DkAidqtV.mjs";
2
-
3
- //#region src/telemetry.ts
4
- const DOCS_PACKAGE_NAME = "@farming-labs/docs";
5
- const DOCS_PACKAGE_VERSION = "0.2.25";
6
- const DEFAULT_DOCS_TELEMETRY_ENDPOINT = "https://docs.farming-labs.dev/api/telemetry/events";
7
- const PROJECT_TELEMETRY_CACHE_TTL_MS = 1440 * 60 * 1e3;
8
- const PROJECT_TELEMETRY_CACHE_MAX_KEYS = 256;
9
- function getRuntimeEnv() {
10
- if (typeof process === "undefined" || !process.env) return;
11
- return process.env;
12
- }
13
- function readRuntimeEnv(name) {
14
- const value = getRuntimeEnv()?.[name]?.trim();
15
- return value ? value : void 0;
16
- }
17
- function isTruthyEnv(value) {
18
- return /^(1|true|yes|on)$/i.test(value ?? "");
19
- }
20
- function isFalsyEnv(value) {
21
- return /^(0|false|no|off)$/i.test(value ?? "");
22
- }
23
- function isBrowserRuntime() {
24
- return typeof window !== "undefined" && typeof document !== "undefined";
25
- }
26
- function isProductionTelemetryRuntime() {
27
- if (isBrowserRuntime()) return false;
28
- const env = getRuntimeEnv();
29
- if (!env) return true;
30
- if (env.NODE_ENV === "test") return false;
31
- if (env.VERCEL_ENV === "production") return true;
32
- if (env.CONTEXT === "production" && isTruthyEnv(env.NETLIFY)) return true;
33
- if (isTruthyEnv(env.CF_PAGES)) return true;
34
- if (env.RENDER_SERVICE_ID || env.FLY_APP_NAME || env.RAILWAY_ENVIRONMENT) return true;
35
- return env.NODE_ENV === "production";
36
- }
37
- function resolveDocsTelemetryConfig(telemetry) {
38
- const envToggle = readRuntimeEnv("DOCS_TELEMETRY");
39
- const envDisabled = readRuntimeEnv("DOCS_TELEMETRY_DISABLED");
40
- if (isFalsyEnv(envToggle) || isTruthyEnv(envDisabled) || telemetry === false) return { enabled: false };
41
- const objectConfig = telemetry && typeof telemetry === "object" ? telemetry : void 0;
42
- if (objectConfig?.enabled === false) return { enabled: false };
43
- return {
44
- enabled: telemetry === true || objectConfig?.enabled === true || isTruthyEnv(envToggle) || isProductionTelemetryRuntime(),
45
- endpoint: objectConfig?.endpoint?.trim() || readRuntimeEnv("DOCS_TELEMETRY_ENDPOINT") || DEFAULT_DOCS_TELEMETRY_ENDPOINT
46
- };
47
- }
48
- function readRequestOrigin(request) {
49
- if (!request?.url) return void 0;
50
- try {
51
- return new URL(request.url).origin;
52
- } catch {
53
- return;
54
- }
55
- }
56
- /** Normalize an HTTP(S) telemetry site value to its origin. */
57
- function normalizeDocsTelemetryOrigin(candidate) {
58
- if (typeof candidate !== "string") return void 0;
59
- const trimmed = candidate.trim();
60
- if (!trimmed) return void 0;
61
- try {
62
- const hasScheme = /^[a-z][a-z\d+.-]*:(?!\d)/i.test(trimmed);
63
- const url = new URL(hasScheme ? trimmed : `https://${trimmed}`);
64
- if (url.protocol !== "http:" && url.protocol !== "https:") return void 0;
65
- return url.origin;
66
- } catch {
67
- return;
68
- }
69
- }
70
- /** Return whether a telemetry origin points at a local development server. */
71
- function isLocalDocsTelemetryOrigin(candidate) {
72
- const origin = normalizeDocsTelemetryOrigin(candidate);
73
- if (!origin) return false;
74
- const hostname = new URL(origin).hostname.toLowerCase().replace(/^\[|\]$/g, "").replace(/\.+$/, "");
75
- if ([
76
- "localhost",
77
- "localhost.localdomain",
78
- "localhost6",
79
- "localhost6.localdomain6",
80
- "ip6-localhost",
81
- "ip6-loopback"
82
- ].includes(hostname) || hostname.endsWith(".localhost")) return true;
83
- if (hostname === "::" || hostname === "::1") return true;
84
- const ipv4 = hostname.split(".").map((part) => Number(part));
85
- if (ipv4.length === 4 && ipv4.every((part) => Number.isInteger(part) && part >= 0 && part <= 255)) return ipv4[0] === 127 || ipv4.every((part) => part === 0);
86
- return /^::ffff:7f[0-9a-f]{2}:/.test(hostname) || hostname === "::ffff:0:0";
87
- }
88
- function isBlockedDocsTelemetryOrigin(candidate) {
89
- if (candidate === void 0) return false;
90
- return !normalizeDocsTelemetryOrigin(candidate) || isLocalDocsTelemetryOrigin(candidate);
91
- }
92
- function readDeploymentOrigin() {
93
- const candidates = [
94
- readRuntimeEnv("DOCS_SITE_URL"),
95
- readRuntimeEnv("NEXT_PUBLIC_BASE_URL"),
96
- readRuntimeEnv("NEXT_PUBLIC_SITE_URL"),
97
- readRuntimeEnv("SITE_URL"),
98
- readRuntimeEnv("URL"),
99
- readRuntimeEnv("CF_PAGES_URL"),
100
- readRuntimeEnv("VERCEL_PROJECT_PRODUCTION_URL"),
101
- readRuntimeEnv("VERCEL_URL"),
102
- readRuntimeEnv("DEPLOY_PRIME_URL")
103
- ];
104
- for (const candidate of candidates) {
105
- const origin = normalizeDocsTelemetryOrigin(candidate);
106
- if (origin) return origin;
107
- }
108
- }
109
- function detectDeployment() {
110
- const env = getRuntimeEnv();
111
- if (!env) return void 0;
112
- if (env.VERCEL || env.VERCEL_ENV) return {
113
- provider: "vercel",
114
- environment: env.VERCEL_ENV,
115
- id: env.VERCEL_DEPLOYMENT_ID ?? env.VERCEL_GIT_COMMIT_SHA,
116
- region: env.VERCEL_REGION
117
- };
118
- if (env.NETLIFY) return {
119
- provider: "netlify",
120
- environment: env.CONTEXT,
121
- id: env.DEPLOY_ID ?? env.COMMIT_REF
122
- };
123
- if (env.CF_PAGES) return {
124
- provider: "cloudflare-pages",
125
- environment: env.CF_PAGES_BRANCH,
126
- id: env.CF_PAGES_COMMIT_SHA
127
- };
128
- if (env.RENDER_SERVICE_ID) return {
129
- provider: "render",
130
- environment: env.RENDER_ENV,
131
- id: env.RENDER_SERVICE_ID
132
- };
133
- if (env.FLY_APP_NAME) return {
134
- provider: "fly",
135
- environment: env.FLY_APP_NAME,
136
- id: env.FLY_ALLOC_ID,
137
- region: env.FLY_REGION
138
- };
139
- if (env.RAILWAY_ENVIRONMENT) return {
140
- provider: "railway",
141
- environment: env.RAILWAY_ENVIRONMENT,
142
- id: env.RAILWAY_DEPLOYMENT_ID
143
- };
144
- return env.NODE_ENV === "production" ? { environment: "production" } : void 0;
145
- }
146
- function detectRuntime() {
147
- if (typeof process !== "undefined" && process.versions?.node) return {
148
- name: "node",
149
- version: process.versions.node
150
- };
151
- if (typeof navigator !== "undefined" && navigator.userAgent) return { name: "web-standard" };
152
- }
153
- function isObjectConfigEnabled(value, defaultEnabled) {
154
- if (value === false) return false;
155
- if (value === true) return true;
156
- if (value && typeof value === "object" && !Array.isArray(value)) {
157
- const enabled = value.enabled;
158
- return enabled === false ? false : defaultEnabled || enabled === true;
159
- }
160
- return defaultEnabled;
161
- }
162
- function hasObjectConfig(value) {
163
- return Boolean(value && typeof value === "object" && !Array.isArray(value));
164
- }
165
- function getDocsTelemetryFeatures(config) {
166
- const pageActions = config.pageActions;
167
- const feedback = config.feedback;
168
- return {
169
- search: isObjectConfigEnabled(config.search, true),
170
- contentChanges: resolveDocsContentChangesConfig(config.agent?.contentChanges, { staticExport: config.staticExport === true }).enabled,
171
- ai: isObjectConfigEnabled(config.ai, false),
172
- mcp: isObjectConfigEnabled(config.mcp, true),
173
- llmsTxt: isObjectConfigEnabled(config.llmsTxt, true),
174
- pageActions: hasObjectConfig(pageActions),
175
- feedback: feedback === true || hasObjectConfig(feedback) && feedback.enabled !== false,
176
- agentFeedback: feedback !== false && !(hasObjectConfig(feedback) && feedback.agent === false) && !(hasObjectConfig(feedback) && hasObjectConfig(feedback.agent) && feedback.agent.enabled === false),
177
- sitemap: isObjectConfigEnabled(config.sitemap, true),
178
- robots: isObjectConfigEnabled(config.robots, true),
179
- apiReference: isObjectConfigEnabled(config.apiReference, false),
180
- staticExport: config.staticExport === true,
181
- changelog: isObjectConfigEnabled(config.changelog, false),
182
- cloud: typeof config.cloud !== "undefined" && isObjectConfigEnabled(config.cloud, true),
183
- review: isObjectConfigEnabled(config.review, true),
184
- codeBlocksValidate: hasObjectConfig(config.codeBlocks) && Boolean(config.codeBlocks.validate)
185
- };
186
- }
187
- function createDocsTelemetryEvent(config, input, context = {}) {
188
- const telemetryConfig = config.telemetry && typeof config.telemetry === "object" ? config.telemetry : void 0;
189
- const siteOriginCandidates = [
190
- context.siteOrigin,
191
- input.site?.origin,
192
- telemetryConfig?.siteOrigin,
193
- readRequestOrigin(context.request),
194
- readDeploymentOrigin()
195
- ];
196
- if (siteOriginCandidates.some(isBlockedDocsTelemetryOrigin)) return void 0;
197
- const siteOrigin = siteOriginCandidates.map(normalizeDocsTelemetryOrigin).find((origin) => Boolean(origin));
198
- const deployment = input.deployment ?? detectDeployment();
199
- const properties = context.properties || input.properties ? {
200
- ...input.properties,
201
- ...context.properties
202
- } : void 0;
203
- return {
204
- ...input,
205
- timestamp: input.timestamp ?? (/* @__PURE__ */ new Date()).toISOString(),
206
- package: {
207
- name: DOCS_PACKAGE_NAME,
208
- version: DOCS_PACKAGE_VERSION,
209
- ...input.package
210
- },
211
- framework: input.framework ?? context.framework,
212
- runtime: input.runtime ?? detectRuntime(),
213
- site: siteOrigin ? { origin: siteOrigin } : input.site,
214
- deployment,
215
- features: input.features ?? getDocsTelemetryFeatures(config),
216
- properties
217
- };
218
- }
219
- function projectEventKey(event) {
220
- return [
221
- event.package.name,
222
- event.package.version,
223
- event.framework ?? "",
224
- event.site?.origin ?? "",
225
- event.deployment?.provider ?? "",
226
- event.deployment?.environment ?? "",
227
- event.deployment?.id ?? ""
228
- ].join("|");
229
- }
230
- function getSentProjectKeys() {
231
- const globalValue = globalThis;
232
- globalValue.__farmingLabsDocsTelemetryProjectKeys__ ??= /* @__PURE__ */ new Map();
233
- return globalValue.__farmingLabsDocsTelemetryProjectKeys__;
234
- }
235
- function pruneSentProjectKeys(sent, now) {
236
- for (const [key, expiresAt] of sent) if (expiresAt <= now) sent.delete(key);
237
- while (sent.size >= PROJECT_TELEMETRY_CACHE_MAX_KEYS) {
238
- const oldestKey = sent.keys().next().value;
239
- if (!oldestKey) return;
240
- sent.delete(oldestKey);
241
- }
242
- }
243
- async function emitDocsTelemetryEvent(telemetry, event) {
244
- const resolved = resolveDocsTelemetryConfig(telemetry);
245
- const eventSiteOrigin = event.site?.origin;
246
- const normalizedSiteOrigin = normalizeDocsTelemetryOrigin(eventSiteOrigin);
247
- if (!resolved.enabled || !resolved.endpoint || typeof fetch !== "function" || eventSiteOrigin !== void 0 && (!normalizedSiteOrigin || isLocalDocsTelemetryOrigin(eventSiteOrigin))) return;
248
- const eventToSend = normalizedSiteOrigin ? {
249
- ...event,
250
- site: { origin: normalizedSiteOrigin }
251
- } : event;
252
- try {
253
- const ingestKey = readRuntimeEnv("DOCS_TELEMETRY_INGEST_KEY");
254
- const browserRequest = isBrowserRuntime() && !ingestKey;
255
- const headers = { "content-type": browserRequest ? "text/plain;charset=UTF-8" : "application/json" };
256
- if (ingestKey) headers["x-docs-telemetry-key"] = ingestKey;
257
- await fetch(resolved.endpoint, {
258
- method: "POST",
259
- headers,
260
- body: JSON.stringify({ event: eventToSend }),
261
- keepalive: true,
262
- ...browserRequest ? {
263
- credentials: "omit",
264
- mode: "no-cors"
265
- } : {}
266
- });
267
- } catch {}
268
- }
269
- function emitDocsTelemetryProjectEvent(config, context = {}) {
270
- const event = createDocsTelemetryEvent(config, { type: "project_detected" }, context);
271
- if (!event) return;
272
- const key = projectEventKey(event);
273
- const sent = getSentProjectKeys();
274
- const now = Date.now();
275
- const expiresAt = sent.get(key);
276
- if (expiresAt && expiresAt > now) return;
277
- if (typeof expiresAt === "number") sent.delete(key);
278
- pruneSentProjectKeys(sent, now);
279
- sent.set(key, now + PROJECT_TELEMETRY_CACHE_TTL_MS);
280
- emitDocsTelemetryEvent(config.telemetry, event);
281
- }
282
- /**
283
- * Emit a privacy-preserving browser page view for the maintainer telemetry dashboard.
284
- *
285
- * Page views include only the public site origin, pathname, locale, framework, and package
286
- * metadata. They never include a query string, referrer, visitor id, IP address, or user agent.
287
- */
288
- function emitDocsTelemetryPageViewEvent(telemetry, context = {}) {
289
- if (telemetry === false || telemetry && typeof telemetry === "object" && telemetry.enabled === false) return;
290
- const runtimeSiteOrigin = context.siteOrigin ?? (typeof window !== "undefined" ? window.location?.origin : void 0);
291
- if (isBlockedDocsTelemetryOrigin(runtimeSiteOrigin)) return;
292
- const siteOrigin = (telemetry && typeof telemetry === "object" ? telemetry.siteOrigin : void 0) ?? runtimeSiteOrigin;
293
- const event = createDocsTelemetryEvent({ telemetry }, {
294
- type: "page_view",
295
- features: {},
296
- properties: {
297
- trafficType: "human",
298
- ...context.path ? { path: context.path.slice(0, 2048) } : {},
299
- ...context.locale ? { locale: context.locale.slice(0, 80) } : {}
300
- }
301
- }, {
302
- framework: context.framework,
303
- siteOrigin
304
- });
305
- if (!event) return;
306
- emitDocsTelemetryEvent(telemetry && typeof telemetry === "object" ? {
307
- ...telemetry,
308
- enabled: true
309
- } : true, event);
310
- }
311
- function emitDocsTelemetryAgentSurfaceEvent(config, context) {
312
- const event = createDocsTelemetryEvent(config, {
313
- type: context.surface === "mcp" ? "mcp_request" : "agent_surface_used",
314
- properties: { surface: context.surface }
315
- }, context);
316
- if (!event) return;
317
- emitDocsTelemetryEvent(config.telemetry, event);
318
- }
319
- function emitDocsTelemetryMcpToolEvent(config, context) {
320
- const event = createDocsTelemetryEvent(config, {
321
- type: "mcp_tool_used",
322
- properties: {
323
- tool: context.tool,
324
- locale: context.locale,
325
- resultCount: context.resultCount
326
- }
327
- }, context);
328
- if (!event) return;
329
- emitDocsTelemetryEvent(config.telemetry, event);
330
- }
331
- function inferDocsTelemetryAgentSurface(request, options) {
332
- const url = new URL(request.url);
333
- const method = request.method.toUpperCase();
334
- const feedbackRequest = resolveDocsAgentFeedbackRequest(url, resolveDocsAgentFeedbackConfig(options.feedback));
335
- if ((method === "GET" || method === "HEAD") && isDocsAgentDiscoveryRequest(url)) return "agent_spec";
336
- if ((method === "GET" || method === "HEAD") && feedbackRequest?.kind === "schema") return "agent_feedback_schema";
337
- if (method === "POST" && feedbackRequest?.kind === "submit") return "agent_feedback_submit";
338
- if (method === "GET" || method === "HEAD") {
339
- if (isDocsContentChangesRequest(url)) return "content_changes";
340
- if (isDocsAgentsRequest(url) || resolveDocsAgentsFormat(url) === "agents") return "agents";
341
- if (isDocsSkillRequest(url) || resolveDocsSkillFormat(url) === "skill") return "skill";
342
- if (resolveDocsMarkdownRequest(options.entry, url, request)) return "markdown";
343
- if (resolveDocsLlmsTxtRequest(url, options.llmsTxt, options.entry)) return "llms";
344
- }
345
- if (method === "POST") return "ask_ai";
346
- }
347
-
348
- //#endregion
349
- //#region src/sidebar.ts
350
- function resolvePageSidebarFolderIndexBehavior(sidebar) {
351
- if (!sidebar || typeof sidebar !== "object") return void 0;
352
- const value = sidebar.folderIndexBehavior;
353
- return value === "link" || value === "toggle" || value === "hidden" ? value : void 0;
354
- }
355
- function normalizeSidebarFolderBehaviorPath(path) {
356
- if (!path) return void 0;
357
- let value = path.trim();
358
- if (!value) return void 0;
359
- if (/^[a-zA-Z][a-zA-Z\d+\-.]*:\/\//.test(value)) try {
360
- value = new URL(value).pathname;
361
- } catch {
362
- return;
363
- }
364
- else value = value.split("#", 1)[0]?.split("?", 1)[0] ?? value;
365
- if (!value.startsWith("/")) value = `/${value}`;
366
- return value.replace(/\/$/, "") || "/";
367
- }
368
- function resolveSidebarFolderIndexBehavior(sidebar, defaultBehavior = "link") {
369
- if (sidebar === void 0 || sidebar === true || sidebar === false) return defaultBehavior;
370
- if (sidebar.folderIndexBehavior === "toggle") return "toggle";
371
- if (sidebar.folderIndexBehavior === "hidden") return "hidden";
372
- if (sidebar.folderIndexBehavior === "link") return "link";
373
- return defaultBehavior;
374
- }
375
- function resolveSidebarFolderIndexBehaviorForPath(sidebar, folderPath, defaultBehavior = "link") {
376
- const fallback = resolveSidebarFolderIndexBehavior(sidebar, defaultBehavior);
377
- if (!sidebar || typeof sidebar !== "object") return fallback;
378
- const normalizedPath = normalizeSidebarFolderBehaviorPath(folderPath);
379
- if (!normalizedPath) return fallback;
380
- for (const [rawPath, override] of Object.entries(sidebar.folderIndexBehaviorOverrides ?? {})) if (normalizeSidebarFolderBehaviorPath(rawPath) === normalizedPath) return override === "link" || override === "toggle" || override === "hidden" ? override : fallback;
381
- return fallback;
382
- }
383
- function applySidebarFolderIndexBehavior(tree, behaviorOrOptions) {
384
- const resolveBehavior = typeof behaviorOrOptions === "string" ? () => behaviorOrOptions : (folderPath) => resolveSidebarFolderIndexBehaviorForPath(behaviorOrOptions.sidebar, folderPath, behaviorOrOptions.defaultBehavior);
385
- function mapNode(node) {
386
- if (!node || typeof node !== "object") return node;
387
- const candidate = node;
388
- if (candidate.type !== "folder" || !Array.isArray(candidate.children)) return node;
389
- const children = candidate.children.map(mapNode);
390
- const index = candidate.index ? mapNode(candidate.index) : void 0;
391
- const folderPath = (typeof candidate.url === "string" ? candidate.url : void 0) || (candidate.index && typeof candidate.index === "object" && "url" in candidate.index && typeof candidate.index.url === "string" ? candidate.index.url ?? void 0 : void 0);
392
- const behavior = (candidate.folderIndexBehavior === "link" || candidate.folderIndexBehavior === "toggle" || candidate.folderIndexBehavior === "hidden" ? candidate.folderIndexBehavior : void 0) ?? resolveBehavior(folderPath);
393
- if (behavior === "link") return {
394
- ...candidate,
395
- folderIndexBehavior: void 0,
396
- index,
397
- children
398
- };
399
- if (behavior === "hidden") return {
400
- ...candidate,
401
- folderIndexBehavior: void 0,
402
- index: void 0,
403
- url: void 0,
404
- children
405
- };
406
- return {
407
- ...candidate,
408
- folderIndexBehavior: void 0,
409
- index: void 0,
410
- url: void 0,
411
- children: index ? [index, ...children] : children
412
- };
413
- }
414
- return {
415
- ...tree,
416
- children: tree.children.map(mapNode)
417
- };
418
- }
419
-
420
- //#endregion
421
- export { emitDocsTelemetryAgentSurfaceEvent as a, emitDocsTelemetryPageViewEvent as c, inferDocsTelemetryAgentSurface as d, isLocalDocsTelemetryOrigin as f, resolveSidebarFolderIndexBehaviorForPath as i, emitDocsTelemetryProjectEvent as l, resolveDocsTelemetryConfig as m, resolvePageSidebarFolderIndexBehavior as n, emitDocsTelemetryEvent as o, normalizeDocsTelemetryOrigin as p, resolveSidebarFolderIndexBehavior as r, emitDocsTelemetryMcpToolEvent as s, applySidebarFolderIndexBehavior as t, getDocsTelemetryFeatures as u };
@@ -1,63 +0,0 @@
1
- import { Cr as DocsTelemetryConfig, Dr as DocsTelemetryFeatures, Or as DocsTelemetryFramework, Sr as DocsTelemetryAgentSurface, Wt as DocsConfig, di as SidebarFolderIndexBehavior, ui as SidebarConfig, wr as DocsTelemetryEvent } from "./types-BJFeMXWZ.mjs";
2
-
3
- //#region src/telemetry.d.ts
4
- interface ResolvedDocsTelemetryConfig {
5
- enabled: boolean;
6
- endpoint?: string;
7
- }
8
- interface DocsTelemetryContext {
9
- framework?: DocsTelemetryFramework;
10
- request?: Request;
11
- siteOrigin?: string;
12
- properties?: Record<string, unknown>;
13
- }
14
- interface DocsTelemetryAgentSurfaceContext extends DocsTelemetryContext {
15
- surface: DocsTelemetryAgentSurface;
16
- }
17
- interface DocsTelemetryPageViewContext {
18
- framework?: DocsTelemetryFramework;
19
- siteOrigin?: string;
20
- path?: string;
21
- locale?: string;
22
- }
23
- interface DocsTelemetryAgentSurfaceRequestOptions {
24
- entry: string;
25
- llmsTxt?: DocsConfig["llmsTxt"];
26
- feedback?: DocsConfig["feedback"];
27
- }
28
- declare function resolveDocsTelemetryConfig(telemetry?: boolean | DocsTelemetryConfig): ResolvedDocsTelemetryConfig;
29
- /** Normalize an HTTP(S) telemetry site value to its origin. */
30
- declare function normalizeDocsTelemetryOrigin(candidate: string | undefined): string | undefined;
31
- /** Return whether a telemetry origin points at a local development server. */
32
- declare function isLocalDocsTelemetryOrigin(candidate: string | undefined): boolean;
33
- declare function getDocsTelemetryFeatures(config: Partial<DocsConfig>): DocsTelemetryFeatures;
34
- declare function emitDocsTelemetryEvent(telemetry: boolean | DocsTelemetryConfig | undefined, event: DocsTelemetryEvent): Promise<void>;
35
- declare function emitDocsTelemetryProjectEvent(config: Partial<DocsConfig>, context?: DocsTelemetryContext): void;
36
- /**
37
- * Emit a privacy-preserving browser page view for the maintainer telemetry dashboard.
38
- *
39
- * Page views include only the public site origin, pathname, locale, framework, and package
40
- * metadata. They never include a query string, referrer, visitor id, IP address, or user agent.
41
- */
42
- declare function emitDocsTelemetryPageViewEvent(telemetry: boolean | DocsTelemetryConfig | undefined, context?: DocsTelemetryPageViewContext): void;
43
- declare function emitDocsTelemetryAgentSurfaceEvent(config: Partial<DocsConfig>, context: DocsTelemetryAgentSurfaceContext): void;
44
- declare function emitDocsTelemetryMcpToolEvent(config: Partial<DocsConfig>, context: DocsTelemetryContext & {
45
- tool: string;
46
- locale?: string;
47
- resultCount?: number;
48
- }): void;
49
- declare function inferDocsTelemetryAgentSurface(request: Request, options: DocsTelemetryAgentSurfaceRequestOptions): DocsTelemetryAgentSurface | undefined;
50
- //#endregion
51
- //#region src/sidebar.d.ts
52
- interface SidebarFolderIndexBehaviorOptions {
53
- sidebar: boolean | SidebarConfig | undefined;
54
- defaultBehavior?: SidebarFolderIndexBehavior;
55
- }
56
- declare function resolvePageSidebarFolderIndexBehavior(sidebar: unknown): SidebarFolderIndexBehavior | undefined;
57
- declare function resolveSidebarFolderIndexBehavior(sidebar: boolean | SidebarConfig | undefined, defaultBehavior?: SidebarFolderIndexBehavior): SidebarFolderIndexBehavior;
58
- declare function resolveSidebarFolderIndexBehaviorForPath(sidebar: boolean | SidebarConfig | undefined, folderPath: string | undefined, defaultBehavior?: SidebarFolderIndexBehavior): SidebarFolderIndexBehavior;
59
- declare function applySidebarFolderIndexBehavior<TTree extends {
60
- children: unknown[];
61
- }>(tree: TTree, behaviorOrOptions: SidebarFolderIndexBehavior | SidebarFolderIndexBehaviorOptions): TTree;
62
- //#endregion
63
- export { isLocalDocsTelemetryOrigin as _, DocsTelemetryAgentSurfaceContext as a, DocsTelemetryPageViewContext as c, emitDocsTelemetryEvent as d, emitDocsTelemetryMcpToolEvent as f, inferDocsTelemetryAgentSurface as g, getDocsTelemetryFeatures as h, resolveSidebarFolderIndexBehaviorForPath as i, ResolvedDocsTelemetryConfig as l, emitDocsTelemetryProjectEvent as m, resolvePageSidebarFolderIndexBehavior as n, DocsTelemetryAgentSurfaceRequestOptions as o, emitDocsTelemetryPageViewEvent as p, resolveSidebarFolderIndexBehavior as r, DocsTelemetryContext as s, applySidebarFolderIndexBehavior as t, emitDocsTelemetryAgentSurfaceEvent as u, normalizeDocsTelemetryOrigin as v, resolveDocsTelemetryConfig as y };
File without changes