@farming-labs/docs 0.1.121 → 0.1.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.
@@ -122,7 +122,7 @@ async function main() {
122
122
  }
123
123
  await runDoctor(doctorOptions);
124
124
  } else if (parsedCommand.command === "review") {
125
- const { parseReviewArgs, printReviewHelp, runReview } = await import("../review-BouPBEHv.mjs");
125
+ const { parseReviewArgs, printReviewHelp, runReview } = await import("../review-DEG_UnxV.mjs");
126
126
  const reviewOptions = parseReviewArgs(args.slice(1));
127
127
  if (reviewOptions.help) {
128
128
  printReviewHelp();
@@ -3,6 +3,10 @@ import { dirname, isAbsolute, join, relative } from "node:path";
3
3
 
4
4
  //#region src/review.ts
5
5
  const DEFAULT_DOCS_REVIEW_WORKFLOW_PATH = ".github/workflows/docs-review.yml";
6
+ const DEFAULT_DOCS_REVIEW_REUSABLE_WORKFLOW_PATH = ".github/workflows/docs-review-reusable.yml";
7
+ const DEFAULT_DOCS_REVIEW_REUSABLE_WORKFLOW = "farming-labs/docs/.github/workflows/docs-review-reusable.yml@main";
8
+ const LOCAL_DOCS_REVIEW_REUSABLE_WORKFLOW = "./.github/workflows/docs-review-reusable.yml";
9
+ const DEFAULT_DOCS_REVIEW_PNPM_VERSION = "10";
6
10
  const DEFAULT_DOCS_REVIEW_SCORE_THRESHOLD = 80;
7
11
  const DEFAULT_DOCS_REVIEW_CI_NAME = "docs-review";
8
12
  const DEFAULT_REVIEW_RULES = {
@@ -87,12 +91,18 @@ function buildDocsReviewWorkflow(options = {}) {
87
91
  const packageManager = options.packageManager ?? "npm";
88
92
  const ciName = normalizeCiName(options.ciName);
89
93
  const projectDir = normalizeProjectDir(options.projectDir);
90
- const configArg = options.configPath ? ` --config ${shellQuote(options.configPath)}` : "";
91
- const reviewCommand = `${options.reviewCommand ?? reviewCommandForPackageManager(packageManager)} review --ci${configArg}`;
94
+ const configPath = options.configPath ?? "docs.config.ts";
95
+ const reusableWorkflow = options.reusableWorkflow ?? DEFAULT_DOCS_REVIEW_REUSABLE_WORKFLOW;
92
96
  const filters = normalizePathFilters(options.pathFilters);
93
- const installSteps = buildInstallSteps(packageManager);
94
- const buildStep = options.buildCommand ? `\n - name: Build docs CLI\n run: ${options.buildCommand}\n` : "";
95
- const workingDirectoryLine = projectDir === "." ? "" : `\n working-directory: ${projectDir}`;
97
+ const workflowInputs = [
98
+ ["check-name", ciName],
99
+ ["config", configPath],
100
+ ["working-directory", projectDir],
101
+ ["package-manager", packageManager],
102
+ options.pnpmVersion ? ["pnpm-version", options.pnpmVersion] : void 0,
103
+ options.buildCommand ? ["build-command", options.buildCommand] : void 0,
104
+ options.reviewCommand ? ["review-command", options.reviewCommand] : void 0
105
+ ].filter((input) => Boolean(input)).map(([key, value]) => ` ${key}: ${JSON.stringify(value)}`).join("\n");
96
106
  return `# Generated by @farming-labs/docs. You can edit this file.
97
107
  name: Docs Review
98
108
 
@@ -109,17 +119,13 @@ permissions:
109
119
  jobs:
110
120
  docs-review:
111
121
  name: ${JSON.stringify(ciName)}
112
- runs-on: ubuntu-latest
113
- steps:
114
- - uses: actions/checkout@v4
115
- with:
116
- fetch-depth: 0
117
-
118
- ${installSteps}
119
- ${buildStep}
120
-
121
- - name: Review docs
122
- run: ${reviewCommand}${workingDirectoryLine}
122
+ uses: ${reusableWorkflow}
123
+ with:
124
+ ${workflowInputs}
125
+ permissions:
126
+ contents: read
127
+ checks: write
128
+ pull-requests: write
123
129
  `;
124
130
  }
125
131
  function ensureDocsReviewWorkflow(options) {
@@ -146,6 +152,8 @@ function ensureDocsReviewWorkflow(options) {
146
152
  const workflow = buildDocsReviewWorkflow({
147
153
  packageManager,
148
154
  ciName: review.ci.name,
155
+ reusableWorkflow: hasLocalDocsWorkspacePackage(repoRoot) ? LOCAL_DOCS_REVIEW_REUSABLE_WORKFLOW : DEFAULT_DOCS_REVIEW_REUSABLE_WORKFLOW,
156
+ pnpmVersion: detectPnpmVersionFallback(repoRoot, packageManager),
149
157
  projectDir,
150
158
  configPath,
151
159
  buildCommand: detectLocalDocsCliBuildCommand(repoRoot, packageManager),
@@ -209,7 +217,8 @@ function buildDocsReviewWorkflowPathFilters(options) {
209
217
  prefixPath(projectPrefix, "content/docs/**"),
210
218
  prefixPath(projectPrefix, "src/content/docs/**"),
211
219
  prefixPath(projectPrefix, "src/lib/docs.config.*"),
212
- DEFAULT_DOCS_REVIEW_WORKFLOW_PATH
220
+ DEFAULT_DOCS_REVIEW_WORKFLOW_PATH,
221
+ DEFAULT_DOCS_REVIEW_REUSABLE_WORKFLOW_PATH
213
222
  ];
214
223
  return Array.from(new Set(candidates.filter((candidate) => Boolean(candidate))));
215
224
  }
@@ -270,6 +279,13 @@ function detectLocalDocsCliBuildCommand(repoRoot, packageManager) {
270
279
  if (packageManager === "bun") return "bun run --filter @farming-labs/docs build";
271
280
  return "npm run build --workspace=@farming-labs/docs";
272
281
  }
282
+ function detectPnpmVersionFallback(repoRoot, packageManager) {
283
+ if (packageManager !== "pnpm") return void 0;
284
+ try {
285
+ if (JSON.parse(readFileSync(join(repoRoot, "package.json"), "utf-8")).packageManager?.startsWith("pnpm@")) return void 0;
286
+ } catch {}
287
+ return DEFAULT_DOCS_REVIEW_PNPM_VERSION;
288
+ }
273
289
  function detectLocalDocsCliReviewCommand(repoRoot, rootDir) {
274
290
  if (!hasLocalDocsWorkspacePackage(repoRoot)) return void 0;
275
291
  return `node ${shellQuote(toPosixPath(relative(rootDir, join(repoRoot, "packages", "docs", "dist", "cli", "index.mjs"))) || "./packages/docs/dist/cli/index.mjs")}`;
@@ -284,44 +300,6 @@ function hasLocalDocsWorkspacePackage(repoRoot) {
284
300
  return false;
285
301
  }
286
302
  }
287
- function buildInstallSteps(packageManager) {
288
- if (packageManager === "pnpm") return ` - uses: pnpm/action-setup@v4
289
-
290
- - uses: actions/setup-node@v4
291
- with:
292
- node-version: 20
293
- cache: pnpm
294
-
295
- - name: Install dependencies
296
- run: pnpm install --frozen-lockfile`;
297
- if (packageManager === "yarn") return ` - uses: actions/setup-node@v4
298
- with:
299
- node-version: 20
300
- cache: yarn
301
-
302
- - name: Enable Corepack
303
- run: corepack enable
304
-
305
- - name: Install dependencies
306
- run: yarn install --immutable || yarn install --frozen-lockfile`;
307
- if (packageManager === "bun") return ` - uses: oven-sh/setup-bun@v2
308
-
309
- - name: Install dependencies
310
- run: bun install --frozen-lockfile`;
311
- return ` - uses: actions/setup-node@v4
312
- with:
313
- node-version: 20
314
- cache: npm
315
-
316
- - name: Install dependencies
317
- run: npm ci`;
318
- }
319
- function reviewCommandForPackageManager(packageManager) {
320
- if (packageManager === "pnpm") return "pnpm exec docs";
321
- if (packageManager === "yarn") return "yarn exec docs";
322
- if (packageManager === "bun") return "bunx docs";
323
- return "npx --no-install docs";
324
- }
325
303
  function shellQuote(value) {
326
304
  if (/^[A-Za-z0-9_./:-]+$/.test(value)) return value;
327
305
  return `'${value.replaceAll("'", "'\\''")}'`;
@@ -1,4 +1,4 @@
1
- import { a as ensureDocsReviewWorkflow, o as readDocsReviewConfigFromSource, s as resolveDocsReviewConfig } from "./review-SngQ_dxy.mjs";
1
+ import { a as ensureDocsReviewWorkflow, o as readDocsReviewConfigFromSource, s as resolveDocsReviewConfig } from "./review-B7goPYUb.mjs";
2
2
  import { d as readTopLevelStringProperty, f as resolveDocsConfigPath, i as loadDocsConfigModule, p as resolveDocsContentDir } from "./config-BHRL4R2v.mjs";
3
3
  import matter from "gray-matter";
4
4
  import { existsSync, lstatSync, readFileSync, readdirSync } from "node:fs";
package/dist/server.d.mts CHANGED
@@ -77,6 +77,8 @@ interface ResolvedDocsReviewConfig {
77
77
  interface DocsReviewWorkflowOptions {
78
78
  packageManager?: "npm" | "pnpm" | "yarn" | "bun";
79
79
  ciName?: string;
80
+ reusableWorkflow?: string;
81
+ pnpmVersion?: string;
80
82
  projectDir?: string;
81
83
  configPath?: string;
82
84
  buildCommand?: string;
package/dist/server.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { A as resolveDocsAnalyticsConfig, D as emitDocsAgentTraceEvent, E as createDocsAgentTraceId, M as createDocsCloudAnalytics, O as emitDocsAnalyticsEvent, T as createDocsAgentTraceContext, a as createMcpSearchAdapter, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, f as resolveSearchRequestConfig, i as createCustomSearchAdapter, j as resolveDocsObservabilityConfig, k as emitDocsObservabilityEvent, l as inferDocsAskAIPackageHints, n as buildDocsSearchDocuments, o as createSimpleSearchAdapter, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, u as performDocsSearch, w as DOCS_AGENT_TRACE_EVENT_TYPES } from "./search-BL7o2rXk.mjs";
2
2
  import { a as buildDocsSitemapManifest, c as renderDocsSitemapMarkdown, d as resolveDocsSitemapPageLastmod, f as resolveDocsSitemapRequest, i as DEFAULT_SITEMAP_XML_ROUTE, l as renderDocsSitemapXml, n as DEFAULT_SITEMAP_MD_ROUTE, o as createDocsSitemapResponse, p as toDocsSitemapMarkdownUrl, r as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, s as readDocsSitemapManifestFromContentMap, t as DEFAULT_SITEMAP_MANIFEST_PATH, u as resolveDocsSitemapConfig } from "./sitemap-CnqcTdQg.mjs";
3
3
  import { C as resolveApiReferenceOpenApiDiscovery, S as resolveApiReferenceConfig, _ as buildApiReferenceOpenApiDocument, a as DEFAULT_PROMPT_PROVIDER_TEMPLATES, b as buildApiReferenceScalarCss, c as resolvePromptProviderChoices, d as serializeDocsIconRegistry, f as serializeOpenDocsProvider, g as buildApiReferenceHtmlDocumentAsync, h as buildApiReferenceHtmlDocument, i as DEFAULT_OPEN_DOCS_TARGET, l as sanitizePromptText, m as DEFAULT_API_REFERENCE_OPENAPI_ROUTE, n as DEFAULT_OPEN_DOCS_PROMPT, o as normalizePromptProviderName, p as serializeOpenDocsProviders, r as DEFAULT_OPEN_DOCS_PROVIDER_IDS, s as parsePromptStringArray, t as readDocsSitemapManifest, u as serializeDocsIcon, v as buildApiReferenceOpenApiDocumentAsync, w as resolveApiReferenceRenderer, x as isApiReferenceOpenApiRequest, y as buildApiReferencePageTitle } from "./sitemap-server-DdHzJorR.mjs";
4
- import { a as ensureDocsReviewWorkflow, i as buildDocsReviewWorkflowPathFilters, n as DEFAULT_DOCS_REVIEW_WORKFLOW_PATH, o as readDocsReviewConfigFromSource, r as buildDocsReviewWorkflow, s as resolveDocsReviewConfig, t as DEFAULT_DOCS_REVIEW_SCORE_THRESHOLD } from "./review-SngQ_dxy.mjs";
4
+ import { a as ensureDocsReviewWorkflow, i as buildDocsReviewWorkflowPathFilters, n as DEFAULT_DOCS_REVIEW_WORKFLOW_PATH, o as readDocsReviewConfigFromSource, r as buildDocsReviewWorkflow, s as resolveDocsReviewConfig, t as DEFAULT_DOCS_REVIEW_SCORE_THRESHOLD } from "./review-B7goPYUb.mjs";
5
5
  import { createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
6
6
 
7
7
  export { DEFAULT_API_REFERENCE_OPENAPI_ROUTE, DEFAULT_DOCS_REVIEW_SCORE_THRESHOLD, DEFAULT_DOCS_REVIEW_WORKFLOW_PATH, DEFAULT_OPEN_DOCS_PROMPT, DEFAULT_OPEN_DOCS_PROVIDER_IDS, DEFAULT_OPEN_DOCS_TARGET, DEFAULT_PROMPT_PROVIDER_TEMPLATES, DEFAULT_SITEMAP_MANIFEST_PATH, DEFAULT_SITEMAP_MD_ROUTE, DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, DEFAULT_SITEMAP_XML_ROUTE, DOCS_AGENT_TRACE_EVENT_TYPES, buildApiReferenceHtmlDocument, buildApiReferenceHtmlDocumentAsync, buildApiReferenceOpenApiDocument, buildApiReferenceOpenApiDocumentAsync, buildApiReferencePageTitle, buildApiReferenceScalarCss, buildDocsAskAIContext, buildDocsReviewWorkflow, buildDocsReviewWorkflowPathFilters, buildDocsSearchDocuments, buildDocsSitemapManifest, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsCloudAnalytics, createDocsMcpHttpHandler, createDocsMcpServer, createDocsSitemapResponse, createFilesystemDocsMcpSource, createMcpSearchAdapter, createSimpleSearchAdapter, createTypesenseSearchAdapter, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsObservabilityEvent, ensureDocsReviewWorkflow, formatDocsAskAIPackageHints, inferDocsAskAIPackageHints, isApiReferenceOpenApiRequest, normalizeDocsMcpRoute, normalizePromptProviderName, parsePromptStringArray, performDocsSearch, readDocsReviewConfigFromSource, readDocsSitemapManifest, readDocsSitemapManifestFromContentMap, renderDocsSitemapMarkdown, renderDocsSitemapXml, resolveApiReferenceConfig, resolveApiReferenceOpenApiDiscovery, resolveApiReferenceRenderer, resolveAskAISearchRequestConfig, resolveDocsAnalyticsConfig, resolveDocsMcpConfig, resolveDocsObservabilityConfig, resolveDocsReviewConfig, resolveDocsSitemapConfig, resolveDocsSitemapPageLastmod, resolveDocsSitemapRequest, resolvePromptProviderChoices, resolveSearchRequestConfig, runDocsMcpStdio, sanitizePromptText, serializeDocsIcon, serializeDocsIconRegistry, serializeOpenDocsProvider, serializeOpenDocsProviders, toDocsSitemapMarkdownUrl };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farming-labs/docs",
3
- "version": "0.1.121",
3
+ "version": "0.1.122",
4
4
  "description": "Modern, flexible MDX-based docs framework — core types, config, and CLI",
5
5
  "keywords": [
6
6
  "docs",