From 8eb9d9cf2882e987fe87c44e27c6a3f22b7a3b1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Jos=C3=A9=20Mata?= Date: Wed, 21 Jan 2026 21:56:46 +0100 Subject: [PATCH] Add GitHub Actions workflow to update documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Juan José Mata --- .github/workflows/update-docs.yml | 80 +++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 .github/workflows/update-docs.yml diff --git a/.github/workflows/update-docs.yml b/.github/workflows/update-docs.yml new file mode 100644 index 000000000..a218de355 --- /dev/null +++ b/.github/workflows/update-docs.yml @@ -0,0 +1,80 @@ +name: Update Docs + +on: + push: + branches: + - main + +jobs: + update-docs: + runs-on: ubuntu-latest + steps: + - uses: actions/github-script@v8 + env: + MINTLIFY_API_KEY: ${{ secrets.MINTLIFY_API_KEY }} + PROJECT_ID: ${{ secrets.MINTLIFY_PROJECT_ID }} + with: + script: | + const { owner, repo } = context.repo; + const projectId = process.env.PROJECT_ID; + const apiKey = process.env.MINTLIFY_API_KEY; + + if (!projectId || !apiKey) { + core.setFailed('Missing MINTLIFY_PROJECT_ID or MINTLIFY_API_KEY secrets'); + return; + } + + const url = `https://api.mintlify.com/v1/agent/${projectId}/job`; + const payload = { + branch: `mintlify/docs-update-${Date.now()}`, + messages: [ + { + role: 'system', + content: 'You are an action runner that updates documentation based on code changes. You should never ask questions. If you are not able to access the repository, report the error and exit.' + }, + { + role: 'user', + content: `Update the documentation for our recent pushes to main:\n\nRepository: ${owner}/${repo}` + } + ], + asDraft: false + }; + + try { + const response = await fetch(url, { + method: 'POST', + headers: { + 'Authorization': `Bearer ${apiKey}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify(payload) + }); + + if (!response.ok) { + throw new Error(`API request failed with status ${response.status}: ${await response.text()}`); + } + + const reader = response.body.getReader(); + const decoder = new TextDecoder(); + let buffer = ''; + + while (true) { + const { done, value } = await reader.read(); + if (done) break; + buffer += decoder.decode(value, { stream: true }); + const lines = buffer.split('\n'); + buffer = lines.pop() || ''; + for (const line of lines) { + if (line.trim()) { + console.log(line); + } + } + } + if (buffer.trim()) { + console.log(buffer); + } + + core.notice(`Documentation update job triggered for ${owner}/${repo}`); + } catch (error) { + core.setFailed(`Failed to create documentation update job: ${error.message}`); + }