diff --git a/.github/workflows/jan-astro-docs.yml b/.github/workflows/jan-astro-docs.yml index 511b1cc96..b551d847d 100644 --- a/.github/workflows/jan-astro-docs.yml +++ b/.github/workflows/jan-astro-docs.yml @@ -1,4 +1,4 @@ -name: Deploy Astro Docs (v2) +name: Jan Astro Docs on: push: @@ -11,58 +11,81 @@ on: paths: - 'website/**' - '.github/workflows/jan-astro-docs.yml' + # Review gh actions docs if you want to further define triggers, paths, etc + # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on workflow_dispatch: jobs: deploy: - name: Deploy to v2.jan.ai + name: Deploy to CloudFlare Pages env: - # IMPORTANT: You will need to create a new Cloudflare Pages project - # and name it "jan-v2" or update this value to your new project name. - CLOUDFLARE_PROJECT_NAME: jan-v2 + CLOUDFLARE_PROJECT_NAME: astro-docs runs-on: ubuntu-latest permissions: - contents: read + contents: write deployments: write pull-requests: write steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v3 + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 with: node-version: 20 + - uses: oven-sh/setup-bun@v2 + + - name: Install jq + uses: dcarbone/install-jq-action@v2.0.1 + + - name: Fill env vars + continue-on-error: true + working-directory: website + run: | + env_example_file=".env.example" + touch .env + while IFS= read -r line || [[ -n "$line" ]]; do + if [[ "$line" == *"="* ]]; then + var_name=$(echo $line | cut -d '=' -f 1) + echo $var_name + var_value="$(jq -r --arg key "$var_name" '.[$key]' <<< "$SECRETS")" + echo "$var_name=$var_value" >> .env + fi + done < "$env_example_file" + env: + SECRETS: '${{ toJson(secrets) }}' + - name: Install dependencies working-directory: website - run: npm install - - - name: Build Astro Docs + run: bun install + - name: Build website working-directory: website - # No PUBLIC_BASE_PATH is set, so it builds for the root, which is correct for a subdomain - run: npm run build + run: bun run build - - name: Publish to Cloudflare Pages (PR Preview) + - name: copy redirects and headers + continue-on-error: true + working-directory: website + run: | + cp _redirects dist/_redirects + cp _headers dist/_headers + + - name: Publish to Cloudflare Pages PR Preview and Staging if: github.event_name == 'pull_request' uses: cloudflare/pages-action@v1 - id: deployPreview with: apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} projectName: ${{ env.CLOUDFLARE_PROJECT_NAME }} directory: ./website/dist + # Optional: Enable this if you want to have GitHub Deployments triggered gitHubToken: ${{ secrets.GITHUB_TOKEN }} + id: deployCloudflarePages - - name: Add PR Comment with Preview URL + - uses: mshick/add-pr-comment@v2 if: github.event_name == 'pull_request' - uses: mshick/add-pr-comment@v2 with: message: | - 🚀 Astro docs preview is ready! - URL: ${{ steps.deployPreview.outputs.url }} + Preview URL Astro Docs: ${{ steps.deployCloudflarePages.outputs.url }} - - name: Publish to Cloudflare Pages (Production) + - name: Publish to Cloudflare Pages Production if: (github.event_name == 'push' && github.ref == 'refs/heads/dev') || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/dev') uses: cloudflare/pages-action@v1 with: @@ -70,6 +93,6 @@ jobs: accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} projectName: ${{ env.CLOUDFLARE_PROJECT_NAME }} directory: ./website/dist - # This deploys to the production branch of your new Cloudflare project branch: main + # Optional: Enable this if you want to have GitHub Deployments triggered gitHubToken: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index a20f96c30..9f6735802 100644 --- a/.gitignore +++ b/.gitignore @@ -77,3 +77,9 @@ docs/.next/ # Combined output for local testing combined-output/ + +# vscode +.vscode/ + +# yarn +.yarnrc.yml \ No newline at end of file diff --git a/.yarnrc.yml b/.yarnrc.yml deleted file mode 100644 index 74febbee3..000000000 --- a/.yarnrc.yml +++ /dev/null @@ -1,3 +0,0 @@ -nmHoistingLimits: workspaces -nodeLinker: node-modules -checksumBehavior: update diff --git a/website/astro.config.mjs b/website/astro.config.mjs index c13290f1d..63d93bea6 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -96,6 +96,7 @@ export default defineConfig({ { label: 'Local Server', items: [ + { label: 'Introduction', link: '/local-server/' }, { label: 'Server Setup', slug: 'local-server/api-server' }, { label: 'Jan Data Folder', diff --git a/website/bun.lock b/website/bun.lock index 9ec213e17..09e4c8323 100644 --- a/website/bun.lock +++ b/website/bun.lock @@ -9,8 +9,9 @@ "astro": "^5.6.1", "astro-mermaid": "^1.0.4", "gsap": "^3.13.0", + "mermaid": "^11.9.0", "phosphor-astro": "^2.1.0", - "sharp": "^0.34.2", + "sharp": "^0.34.3", "starlight-openapi": "^0.19.1", "starlight-sidebar-topics": "^0.6.0", "starlight-theme-rapide": "^0.5.1", diff --git a/website/package.json b/website/package.json index de97498a9..895c7e11e 100644 --- a/website/package.json +++ b/website/package.json @@ -15,11 +15,13 @@ "astro": "^5.6.1", "astro-mermaid": "^1.0.4", "gsap": "^3.13.0", + "mermaid": "^11.9.0", "phosphor-astro": "^2.1.0", - "sharp": "^0.34.2", + "sharp": "^0.34.3", "starlight-openapi": "^0.19.1", "starlight-sidebar-topics": "^0.6.0", "starlight-theme-rapide": "^0.5.1", "starlight-videos": "^0.3.0" - } + }, + "packageManager": "yarn@1.22.22" } diff --git a/website/src/content/docs/local-server/api-server.mdx b/website/src/content/docs/local-server/api-server.mdx index b06347da4..c4ac4c32d 100644 --- a/website/src/content/docs/local-server/api-server.mdx +++ b/website/src/content/docs/local-server/api-server.mdx @@ -39,7 +39,7 @@ The server is ready when the logs show `JAN API listening at http://12.0.0.1:133 ```sh curl http://127.0.0.1:1337/v1/models/start -H "Content-Type: application/json" \ - -H "Authorization: Bearer hey" \ + -H "Authorization: Bearer secret-key-123" \ -d '{"model": "gemma3:12b"}' ``` diff --git a/website/src/content/products/tools/browseruse.mdx b/website/src/content/products/tools/browseruse.mdx index da9a0fcf1..0363df1b9 100644 --- a/website/src/content/products/tools/browseruse.mdx +++ b/website/src/content/products/tools/browseruse.mdx @@ -4,11 +4,6 @@ description: Native browser automation for Jan, enabling AI to interact with the sidebar: order: 3 --- -import { Aside } from '@astrojs/starlight/components'; - - ## Let Jan Use Your Browser @@ -16,11 +11,22 @@ import { Aside } from '@astrojs/starlight/components'; Think of it as an integrated, privacy-first automation layer that turns Jan from a conversational AI into a powerful agent for action. +:::note +**This tool is not yet available.** We are designing `BrowserUse` to be a core component of Jan's agentic capabilities. +::: + +### Inspired by the Best + +While tools like [Browser Use](https://docs.browser-use.com/introduction) exist for developers, Jan's `BrowserUse` will be a built-in, user-friendly feature. No complex setup required—just grant permission and let Jan handle the rest. + ### Built on MCP -The tool will be implemented as a native **Model Context Protocol (MCP)** server within Jan, ensuring secure and standardized communication between the AI model and the browser. + +The tool will be implemented as a native **Model Context Protocol (MCP)** server within Jan, ensuring secure and standardized communication between the AI model and the browser. This allows for powerful, auditable, and secure web interactions. ### Planned Core Features: -- **Secure Sessions** in an isolated, sandboxed environment. -- **Natural Language Control** (e.g., 'Book a flight...') -- **Visual Understanding** to interpret page content. -- **User in the Loop** for critical actions. +- **Secure Sessions**: All browsing activity happens in an isolated, sandboxed environment. +- **Natural Language Control**: Simply tell Jan what you want to do (e.g., "Book a flight," "Research this topic and summarize the top 5 findings," "Apply for this job for me"). +- **Visual Understanding**: Jan will be able to see and interpret the content on pages, not just the underlying code. +- **User in the Loop**: Always ask for permission before taking critical actions like submitting forms or making purchases. + +---