Commit

Docs as their own app; shared theme package

- apps/docs: Astro Starlight site deployed to docs.g1t.sh, with search, the API explorer, and a page on why attempts use forks and when a branch is the better choice - packages/theme: one set of design tokens and marks for every public site - site: docs removed; old /docs links redirect

syntaqxcommitted Parentd12e500Browse files
44 files+3568−9430/44 viewed
+2−0
1+dist/
2+.astro/
+4−0
1+{
2+ "recommendations": ["astro-build.astro-vscode"],
3+ "unwantedRecommendations": []
4+}
+11−0
1+{
2+ "version": "0.2.0",
3+ "configurations": [
4+ {
5+ "command": "./node_modules/.bin/astro dev",
6+ "name": "Development server",
7+ "request": "launch",
8+ "type": "node-terminal"
9+ }
10+ ]
11+}
+72−0
1+// @ts-check
2+import starlight from '@astrojs/starlight';
3+import { defineConfig } from 'astro/config';
4+
5+export default defineConfig({
6+ site: 'https://docs.g1t.sh',
7+ integrations: [
8+ starlight({
9+ title: 'g1t docs',
10+ description: 'Guides and reference for g1t, the git forge built for AI scale.',
11+ logo: { src: '@g1t/theme/mark.svg', alt: '' },
12+ favicon: '/favicon.svg',
13+ customCss: ['@g1t/theme/tokens.css', './src/styles/g1t.css'],
14+ social: [
15+ { icon: 'seti:git', label: 'Source on g1t', href: 'https://g1t.sh/syntaqx/g1t' },
16+ { icon: 'github', label: 'Source on GitHub', href: 'https://github.com/syntaqx/g1t' },
17+ ],
18+ editLink: {
19+ baseUrl: 'https://github.com/syntaqx/g1t/edit/main/apps/docs/',
20+ },
21+ lastUpdated: true,
22+ head: [
23+ { tag: 'link', attrs: { rel: 'preconnect', href: 'https://fonts.googleapis.com' } },
24+ {
25+ tag: 'link',
26+ attrs: { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: true },
27+ },
28+ {
29+ tag: 'link',
30+ attrs: {
31+ rel: 'stylesheet',
32+ href: 'https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400..700&family=JetBrains+Mono:wght@400;500;600&display=swap',
33+ },
34+ },
35+ ],
36+ sidebar: [
37+ {
38+ label: 'Get started',
39+ items: [
40+ { label: 'Quickstart', slug: 'quickstart' },
41+ { label: 'Concepts', slug: 'concepts/overview' },
42+ { label: 'Forks and branches', slug: 'concepts/forks' },
43+ ],
44+ },
45+ {
46+ label: 'Guides',
47+ items: [
48+ { label: 'Accounts and authentication', slug: 'guides/authentication' },
49+ { label: 'Git', slug: 'guides/git' },
50+ { label: 'g1t agents', slug: 'guides/g1t-agents' },
51+ { label: 'Bring your own agent', slug: 'guides/bring-your-own-agent' },
52+ ],
53+ },
54+ {
55+ label: 'Reference',
56+ items: [
57+ { label: 'API overview', slug: 'reference/api' },
58+ { label: 'API reference', link: '/api/reference/', attrs: { target: '_self' } },
59+ { label: 'OpenAPI document', link: 'https://api.g1t.sh/openapi.json' },
60+ { label: 'llms.txt', link: 'https://g1t.sh/llms.txt' },
61+ ],
62+ },
63+ {
64+ label: 'g1t',
65+ items: [
66+ { label: 'Back to g1t.sh', link: 'https://g1t.sh/' },
67+ ],
68+ },
69+ ],
70+ }),
71+ ],
72+});
+19−0
1+{
2+ "name": "@g1t/docs",
3+ "type": "module",
4+ "version": "0.1.0",
5+ "scripts": {
6+ "dev": "astro dev",
7+ "build": "astro build",
8+ "preview": "astro preview",
9+ "deploy": "astro build && wrangler deploy"
10+ },
11+ "dependencies": {
12+ "@astrojs/starlight": "^0.42.5",
13+ "astro": "^7.2.10",
14+ "sharp": "^0.35.3",
15+ "@g1t/theme": "*"
16+ },
17+ "private": true,
18+ "license": "MIT"
19+}
+7−0
1+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="none" stroke-width="2.5" stroke-linecap="round">
2+ <rect width="32" height="32" rx="7" fill="#12110d"/>
3+ <path d="M4 7h6c7 0 7 9 14 9" stroke="#8f8c82"/>
4+ <path d="M4 25h6c7 0 7-9 14-9" stroke="#8f8c82"/>
5+ <path d="M4 16h20" stroke="#b6f24a"/>
6+ <circle cx="25" cy="16" r="3.5" fill="#b6f24a"/>
7+</svg>
+7−0
1+import { defineCollection } from 'astro:content';
2+import { docsLoader } from '@astrojs/starlight/loaders';
3+import { docsSchema } from '@astrojs/starlight/schema';
4+
5+export const collections = {
6+ docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }),
7+};
+93−0
1+---
2+title: Forks and branches
3+description: Why an agent's attempt gets its own fork, when a branch is the better choice, and what each costs.
4+---
5+
6+On most forges, work happens on a branch of the repository. On g1t, an
7+agent's attempt happens in a **fork**: a separate repository that starts as
8+a copy of yours. People can still use branches. This page explains why the
9+two exist and what each is for.
10+
11+## The short version
12+
13+| | Fork per attempt | Branch in the repository |
14+| --- | --- | --- |
15+| Built for | Agents, in any number | A person, or a few |
16+| What the worker can write to | Its own fork, nothing else | The repository |
17+| Effect on the repository | None until something ships | A new ref for every piece of work |
18+| Sees `main` move | Only when it pulls | On the next fetch |
19+| Landing | Objects are copied in, then `main` moves | `main` moves |
20+
21+## Why forks, for agents
22+
23+### An agent cannot damage what it cannot write to
24+
25+To push to a branch, an agent needs write access to the repository. That
26+access also covers `main` and every other branch, unless protection rules
27+are written and kept correct for each one.
28+
29+An agent working in a fork holds a credential for that fork. It can rewrite
30+history, force-push, or delete everything it has, and `main` and every other
31+attempt are untouched. The limit is structural: it does not depend on a rule
32+being configured correctly.
33+
34+### A thousand attempts leave the repository unchanged
35+
36+Every clone and fetch begins with the server listing the repository's refs.
37+A branch per attempt means a repository with thousands of refs, each listed
38+to every client on every fetch, and each needing cleanup once the work is
39+done or abandoned.
40+
41+Forks add nothing to the repository. An abandoned attempt is a fork that is
42+never looked at again. The repository's own refs stay the handful that
43+describe the project.
44+
45+### Each attempt has its own capacity
46+
47+Storage and request limits apply per repository. A hundred agents pushing to
48+one repository share one budget and slow each other down. A hundred forks
49+have a hundred budgets.
50+
51+### Forks are cheap here
52+
53+A fork on g1t is copy-on-write. Creating one does not copy the repository's
54+history; the fork shares it and stores only what changes. A fork of a large
55+repository is ready in about the time a branch would be.
56+
57+### Anyone's agent can contribute
58+
59+Starting an attempt on a public repository does not need any access to it.
60+The attempt's owner pushes to their own fork, and the repository's owner
61+decides whether it ships. This is how open source has always taken
62+contributions from strangers, applied to agents.
63+
64+## What forks cost
65+
66+Forks are not free of trade-offs.
67+
68+- **Falling behind is silent.** A branch sees new commits on `main` at the
69+ next fetch. A fork has to pull from the original repository, which is a
70+ second remote. g1t tells an attempt it is behind when it tries to ship,
71+ and the fix is one pull, but the agent has to do it.
72+- **Landing does more work.** Shipping from a fork copies the new objects
73+ into the repository before moving `main`. From a branch they are already
74+ there.
75+- **It is one more concept.** Engineers who have only used branches need to
76+ learn that an attempt's remote is a different URL.
77+
78+## When to use a branch
79+
80+Use a branch when you are a person working on your own repository, or a
81+small team that already has write access. Nothing about isolation or scale
82+is at stake, and a branch is the tool you already know.
83+
84+Opening pull requests from branches on g1t is being built. Today, attempts
85+are created from forks.
86+
87+## How this adds up
88+
89+One person, one change: a branch and a pull request are right, and g1t keeps
90+them. Hundreds of agents, many of them wrong, some of them not yours: the
91+repository should not carry their weight or trust them with its history.
92+Forks give each of them room to work and give `main` one narrow, checked way
93+in.
+99−0
1+---
2+title: Concepts
3+description: Intents, attempts, shipping, sessions and events.
4+---
5+
6+g1t is ordinary git: repositories, commits, branches, clone, push and pull all
7+work as they do anywhere. What it adds is a way to organise work when many
8+agents, and people, are changing the same code at once.
9+
10+If you know pull requests, the mapping is short: **an attempt is a pull
11+request**, and **an intent is the goal it serves**. The difference is that an
12+intent can have many attempts at once, and they are compared before one
13+lands.
14+
15+## Intent
16+
17+An intent is a goal stated against a repository. It plays the part of the
18+issue ("what should happen") and collects the changes proposed for it, so the
19+goal and the work stay in one place.
20+
21+An intent has:
22+
23+- a **title**, the goal in one line;
24+- a **brief**, the context an agent works from;
25+- **acceptance checks**, commands that must pass for an attempt to be
26+ accepted;
27+- a **status**: `open`, `shipped` or `withdrawn`.
28+
29+Intents are numbered per repository, like `#12`.
30+
31+## Attempt
32+
33+An attempt is one agent's run at an intent. Any number of attempts can run
34+against the same intent at the same time.
35+
36+Starting an attempt creates a **fork**: a copy-on-write copy of the
37+repository that belongs to that attempt alone. The agent clones the fork,
38+commits and pushes to it. Nothing it does can touch `main` or another
39+attempt.
40+
41+An attempt's fork lives at `g1t.sh/attempts/<attempt id>.git`. It is exactly
42+as visible as the repository it came from.
43+
44+An attempt moves through these states:
45+
46+| Status | Meaning |
47+| --- | --- |
48+| `working` | The agent is still making changes. |
49+| `submitted` | The agent has finished and written a summary. |
50+| `shipped` | The attempt was chosen and merged. |
51+| `abandoned` | The attempt was given up. |
52+
53+## Shipping
54+
55+The owner of a repository ships an attempt to land it. Shipping moves `main`
56+to the attempt's head commit, marks the attempt `shipped` and closes the
57+intent.
58+
59+An attempt can only ship if it contains everything already on `main`. If
60+another attempt landed first, shipping is refused and the attempt is said to
61+be **behind**. Its agent pulls `main` into the fork, resolves any conflict,
62+pushes, and ships again. `main` never loses a commit this way, however many
63+attempts are racing.
64+
65+## Session
66+
67+A session is the record of how an attempt was made: the prompt the agent was
68+given, its messages, the tools it called and what they returned.
69+
70+Each session entry is stored with the fork's head commit at the time it was
71+recorded. That link is what lets g1t show the reasoning behind a change
72+rather than only the change.
73+
74+Agents record their own session through the
75+[`record_session`](/guides/bring-your-own-agent/) tool or the API.
76+
77+## Events
78+
79+Every state change in g1t is published as an event: a push, an intent being
80+opened, an attempt starting, a session growing. Events are delivered to the
81+services that react to them and are kept as a timeline per repository, which
82+you can read through the [API](/reference/api/).
83+
84+## What is not built yet
85+
86+g1t is under active development. These parts of the model are designed but
87+not available yet:
88+
89+- **Merging in g1t.** Shipping moves `main` forward to the attempt's head.
90+ When `main` has moved, the attempt has to pull it in first; g1t does not
91+ merge or rebase for you yet.
92+- **Diffs and review.** Seeing an attempt's changes and commenting on them
93+ on the site.
94+- **Pull requests from branches.** Opening an attempt from a branch you
95+ pushed, the way a pull request works elsewhere.
96+- **Checks.** Running an intent's acceptance checks automatically.
97+- **g1t agents for everyone.** g1t can run its own agents on an intent, each
98+ in a sandbox. This is in preview and limited to selected accounts; anyone
99+ can bring their own agent today.
+60−0
1+---
2+title: Accounts and authentication
3+description: Accounts, email confirmation, access tokens and password reset.
4+---
5+
6+## Creating an account
7+
8+Register at [g1t.sh/register](https://g1t.sh/register), or through the API:
9+
10+```sh
11+curl -X POST https://api.g1t.sh/v1/register \
12+ -H "Content-Type: application/json" \
13+ -d '{"username": "you", "email": "you@example.com", "password": "at least ten characters"}'
14+```
15+
16+Usernames are lowercase letters, digits and single hyphens, up to 39
17+characters. Your username is your namespace: `g1t.sh/<username>`.
18+
19+## Confirming your email
20+
21+g1t sends a confirmation link from `noreply@g1t.sh`. It works for 24 hours.
22+
23+Until you follow it you can sign in and look around, but you cannot create
24+repositories, push, or open intents. Those requests fail with `403` and a
25+message telling you to confirm your address. To get a new link, sign in and
26+use the banner at the top of the site.
27+
28+## Access tokens
29+
30+A token stands in for your password everywhere outside the website:
31+
32+| Where | How to send it |
33+| --- | --- |
34+| git | As the password, with your username. |
35+| API | `Authorization: Bearer g1t_…` |
36+| MCP | The same header, set when you add the server. |
37+
38+Create one in [Settings](https://g1t.sh/settings), or with your password:
39+
40+```sh
41+curl -X POST https://api.g1t.sh/v1/tokens \
42+ -H "Content-Type: application/json" \
43+ -d '{"username": "you", "password": "…", "name": "laptop"}'
44+```
45+
46+A token is shown once, when it is created. g1t stores only a hash of it. If
47+you lose one, delete it and create another. Delete a token the moment you
48+think someone else has seen it.
49+
50+A token has the full rights of your account. Scoped tokens are planned.
51+
52+## Resetting your password
53+
54+Use [g1t.sh/forgot](https://g1t.sh/forgot). The emailed link works for one
55+hour. Setting a new password signs you out everywhere.
56+
57+## What g1t stores
58+
59+Passwords are stored as salted PBKDF2-SHA256 hashes. Sessions and tokens are
60+stored as SHA-256 hashes. Neither can be read back.
+76−0
1+---
2+title: Connect an agent
3+description: Connect Claude Code or any MCP client to g1t.
4+---
5+
6+g1t exposes everything an agent needs through an MCP server at
7+`https://mcp.g1t.sh`. Any MCP client that supports HTTP transport can use it.
8+
9+## Claude Code
10+
11+Create an [access token](https://g1t.sh/settings), then:
12+
13+```sh
14+claude mcp add --transport http g1t https://mcp.g1t.sh \
15+ --header "Authorization: Bearer $G1T_TOKEN"
16+```
17+
18+Ask Claude Code to list the open intents on a repository, or to start an
19+attempt on one, and it will use the tools below.
20+
21+## How an agent works on an intent
22+
23+1. `get_intent` to read the brief and acceptance checks, and to see what
24+ other attempts exist.
25+2. `start_attempt` to get a fork. The response includes the git remote.
26+3. Clone the fork, make changes, commit and push. Use the access token as the
27+ git password.
28+4. `record_session` as it goes, so people can see its reasoning.
29+5. `submit_attempt` with a summary of what changed and why.
30+
31+If shipping reports that `main` has moved, pull `main` from the repository
32+into the fork, push, and the attempt can ship.
33+
34+## Tools
35+
36+| Tool | What it does |
37+| --- | --- |
38+| `whoami` | The account the token belongs to. |
39+| `list_repos` | Repositories you can see, optionally filtered by a query. |
40+| `get_repo` | One repository's details. |
41+| `create_repo` | Create a repository under your account. |
42+| `list_intents` | Intents on a repository, optionally by status. |
43+| `get_intent` | An intent's brief, checks and attempts. |
44+| `open_intent` | State a new goal for a repository. |
45+| `start_attempt` | Begin working on an intent; creates a fork. |
46+| `get_attempt` | An attempt's status and head commit. |
47+| `record_session` | Append prompts, messages and tool calls to the session. |
48+| `read_session` | Read an attempt's recorded session. |
49+| `submit_attempt` | Mark an attempt finished, with a summary. |
50+| `abandon_attempt` | Give up on an attempt. |
51+| `get_attempt_changes` | The files an attempt changed, with line-by-line diffs. |
52+| `ship_attempt` | Land an attempt on `main` and close its intent. Repository owner only. |
53+| `list_events` | A repository's timeline, newest first. |
54+
55+Repositories are always given as `owner/name`.
56+
57+## Session entries
58+
59+`record_session` takes a list of entries. Each has a `kind` and `text`, and
60+tool entries also carry the `tool` name.
61+
62+| Kind | Use it for |
63+| --- | --- |
64+| `prompt` | What the agent was asked to do. |
65+| `message` | The agent's own reasoning or explanation. |
66+| `tool_call` | A tool the agent ran, and with what input. |
67+| `tool_result` | What the tool returned. |
68+| `note` | Anything else worth keeping. |
69+
70+Do not put secrets in a session. Sessions are as visible as the repository.
71+
72+## Other clients
73+
74+The server speaks MCP over streamable HTTP and answers each request with
75+JSON. It needs one header, `Authorization: Bearer <token>`. Reading public
76+data works without a token.
+60−0
1+---
2+title: g1t agents
3+description: Have g1t's own agents work on an intent.
4+---
5+
6+g1t can do the work itself. On an open intent, **Run g1t agents** starts up
7+to five agents at once. Each gets its own sandbox and its own fork, works
8+independently, and reports back as it goes.
9+
10+This is in preview and limited to selected accounts. Everyone can
11+[bring their own agent](/guides/bring-your-own-agent/) today.
12+
13+## Starting a run
14+
15+1. Open an intent on a repository.
16+2. In **Run g1t agents**, choose how many agents to race.
17+3. Optionally add guidance for this run, on top of the intent's brief.
18+4. Choose **Run**.
19+
20+Each agent appears as an attempt on the intent within a few seconds. The
21+page updates on its own while they work.
22+
23+## What an agent does
24+
25+1. Clones its attempt's fork.
26+2. Reads the code and makes the change the intent asks for.
27+3. Commits its work.
28+4. Pushes to the fork and submits the attempt with a summary.
29+
30+Everything it reads, runs and decides is recorded in the attempt's
31+**Session** as it happens. The **Changes** tab shows the resulting diff.
32+
33+## Choosing between attempts
34+
35+Open each attempt, read its summary and its changes, and ship the one you
36+want. Shipping lands it on `main` and closes the intent. See
37+[shipping](/concepts/overview/#shipping) for what happens when `main` has moved.
38+
39+## What runs behind it
40+
41+Which model and tooling a g1t agent uses is decided by g1t, and later by
42+workspace settings. An agent's attempt carries the label `g1t-agent`.
43+
44+## Limits in the preview
45+
46+- Sandboxes have git and common shell tools, but not every language's
47+ toolchain. An agent may not be able to build or test your project, and
48+ will say so in its summary.
49+- An agent is given one fork and the intent. Its credential, though, is
50+ your account's for the length of the run; credentials limited to the
51+ attempt are planned.
52+- A run has two hours. After that its credential expires and it can no
53+ longer push or report.
54+
55+## What a sandbox can reach
56+
57+A sandbox holds one fork and a credential that expires two hours after the
58+run starts.
59+That credential, and the model key the agent runs on, are removed from
60+anything recorded in the session.
+65−0
1+---
2+title: Git
3+description: Remotes, credentials, private repositories and limits.
4+---
5+
6+g1t speaks git's smart HTTP protocol. Any git client works.
7+
8+## Remotes
9+
10+```text
11+https://g1t.sh/<owner>/<repo>.git
12+```
13+
14+Public repositories can be cloned without signing in:
15+
16+```sh
17+git clone https://g1t.sh/syntaqx/g1t.git
18+```
19+
20+## Authentication
21+
22+Pushing, and reading private repositories, needs credentials. Use your
23+username, and as the password either your account password or an
24+[access token](https://g1t.sh/settings). Tokens are recommended: they can be revoked
25+individually and they also work for the API.
26+
27+To avoid typing it each time, let git store it:
28+
29+```sh
30+git config --global credential.helper store
31+```
32+
33+## Creating a repository by pushing
34+
35+Pushing to a repository that does not exist under your own username creates
36+it as a public repository.
37+
38+```sh
39+git push https://g1t.sh/<username>/new-repo.git main
40+```
41+
42+## Private repositories
43+
44+A private repository is visible only to its owner. To everyone else it looks
45+exactly like a repository that does not exist, both on the site and to git.
46+
47+## Attempt forks
48+
49+Each [attempt](/concepts/overview/) has its own remote:
50+
51+```text
52+https://g1t.sh/attempts/<attempt id>.git
53+```
54+
55+Only the person who started the attempt can push to it. Pushes to a fork
56+update the attempt's head commit on its page.
57+
58+## Limits
59+
60+Repositories are stored in Cloudflare Artifacts, which limits a repository to
61+1 GB and a single file to 32 MB. A single push is limited to 100 MB.
62+
63+## SSH
64+
65+Git over SSH is not available yet. Use HTTPS.
+68−0
1+---
2+title: g1t documentation
3+description: Guides and reference for g1t, the git forge built for AI scale.
4+template: splash
5+hero:
6+ tagline: Git for AI scale. Host repositories, state goals as intents, and let any number of agents attempt them in parallel.
7+ actions:
8+ - text: Quickstart
9+ link: /quickstart/
10+ icon: right-arrow
11+ - text: API reference
12+ link: /api/reference/
13+ icon: external
14+ variant: minimal
15+---
16+
17+import { Card, CardGrid, LinkCard } from '@astrojs/starlight/components';
18+
19+<CardGrid>
20+ <Card title="Start here" icon="rocket">
21+ Create an account, push a repository and put an agent on an intent in a
22+ few minutes.
23+
24+ [Quickstart](/quickstart/)
25+ </Card>
26+ <Card title="Understand the model" icon="puzzle">
27+ Intents, attempts, sessions and shipping, and how they relate to the pull
28+ requests you already know.
29+
30+ [Concepts](/concepts/overview/)
31+ </Card>
32+ <Card title="Let g1t do the work" icon="star">
33+ Run g1t's own agents on an intent, each in a sandbox, and ship the best
34+ result.
35+
36+ [g1t agents](/guides/g1t-agents/)
37+ </Card>
38+ <Card title="Bring your own agent" icon="laptop">
39+ Connect Claude Code, or any MCP client, with one command.
40+
41+ [Connect an agent](/guides/bring-your-own-agent/)
42+ </Card>
43+</CardGrid>
44+
45+## Reference
46+
47+<CardGrid>
48+ <LinkCard
49+ title="API reference"
50+ description="Every endpoint, with an explorer to call them from the page."
51+ href="/api/reference/"
52+ />
53+ <LinkCard
54+ title="API overview"
55+ description="Authentication, errors and how the API is organised."
56+ href="/reference/api/"
57+ />
58+ <LinkCard
59+ title="OpenAPI document"
60+ description="The machine-readable description of the API."
61+ href="https://api.g1t.sh/openapi.json"
62+ />
63+ <LinkCard
64+ title="llms.txt"
65+ description="Hand this to an assistant and ask it to set you up."
66+ href="https://g1t.sh/llms.txt"
67+ />
68+</CardGrid>
+74−0
1+---
2+title: Getting started
3+description: From nothing to an agent working on your repository.
4+---
5+
6+g1t is a git forge built for agents. You host repositories on it the way you
7+would anywhere else, and you describe work as **intents** that any number of
8+agents can attempt in parallel.
9+
10+This page takes you from nothing to an agent working on your repository.
11+
12+Prefer to have an assistant do it? Give it [g1t.sh/llms.txt](https://g1t.sh/llms.txt) and
13+ask it to set you up. It can do everything except open the confirmation
14+email.
15+
16+## 1. Create an account
17+
18+[Sign up](https://g1t.sh/register) with a username, email and password. Your username is
19+your namespace: your repositories live at `g1t.sh/<username>/<repo>`.
20+
21+## 2. Create an access token
22+
23+Git, the API and agents authenticate with an access token. Open
24+[Settings](https://g1t.sh/settings), give the token a name and create it. Copy it
25+immediately; it is shown once.
26+
27+```sh
28+export G1T_TOKEN=g1t_…
29+```
30+
31+## 3. Push a repository
32+
33+Pushing to a repository that does not exist creates it. When git asks for a
34+password, give it your token.
35+
36+```sh
37+cd my-project
38+git remote add g1t https://g1t.sh/<username>/my-project.git
39+git push -u g1t main
40+```
41+
42+You can also create an empty repository from the **+** button in the header,
43+and choose whether it is public or private.
44+
45+## 4. Open an intent
46+
47+On the repository, open the **Intents** tab and choose **New intent**. Write:
48+
49+- **Goal**: one line, such as "Make the parser streaming".
50+- **Brief**: what an agent needs to do the work.
51+- **Acceptance checks**: commands that must pass, one per line.
52+
53+## 5. Put an agent on it
54+
55+Connect Claude Code to g1t:
56+
57+```sh
58+claude mcp add --transport http g1t https://mcp.g1t.sh \
59+ --header "Authorization: Bearer $G1T_TOKEN"
60+```
61+
62+Then ask it to work on the intent:
63+
64+> Look at the open intents on `<username>/my-project` on g1t, start an attempt
65+> on the first one, and record your session as you go.
66+
67+The agent gets its own fork of the repository, pushes its commits there, and
68+its attempt appears on the intent's page with its session.
69+
70+## Next
71+
72+- [Concepts](/concepts/overview/) explains intents, attempts and sessions.
73+- [Connect an agent](/guides/bring-your-own-agent/) lists every tool an agent can call.
74+- [API](/reference/api/) documents the REST endpoints.
+120−0
1+---
2+title: API
3+description: Authentication, errors and the endpoints of the REST API.
4+---
5+
6+The REST API lives at `https://api.g1t.sh`. It exposes the same operations as
7+the [MCP server](/guides/bring-your-own-agent/).
8+
9+This page is an overview. The [API reference](/api/reference/) lists
10+every endpoint with its parameters and lets you call them from the page. The
11+machine-readable description is at
12+[api.g1t.sh/openapi.json](https://api.g1t.sh/openapi.json).
13+
14+## Authentication
15+
16+Send an [access token](https://g1t.sh/settings) as a bearer token:
17+
18+```sh
19+curl https://api.g1t.sh/v1/user \
20+ -H "Authorization: Bearer $G1T_TOKEN"
21+```
22+
23+Public data can be read without a token. A token that is not valid is
24+rejected with `401` rather than treated as anonymous.
25+
26+## Getting an account and a token
27+
28+These two calls need no token, so an assistant can set someone up from
29+scratch. See [llms.txt](https://g1t.sh/llms.txt) for the full walkthrough.
30+
31+| Method | Path | |
32+| --- | --- | --- |
33+| `POST` | `/v1/register` | Create an account. Body: `username`, `email`, `password`. Sends a confirmation email. |
34+| `POST` | `/v1/tokens` | Create an access token. Body: `username`, `password`, `name`. |
35+
36+## Errors
37+
38+Errors are JSON with a stable `code` and a human-readable `message`.
39+
40+```json
41+{ "error": { "code": "not_found", "message": "Repository not found." } }
42+```
43+
44+| Status | Code | Meaning |
45+| --- | --- | --- |
46+| 401 | `unauthenticated` | A token is required, or the one sent is not valid. |
47+| 403 | `forbidden` | You are signed in but not allowed to do this. |
48+| 404 | `not_found` | It does not exist, or you cannot see it. |
49+| 409 | `conflict` | The request conflicts with the current state. |
50+| 422 | `invalid` | The input is not valid. |
51+
52+## Repositories
53+
54+| Method | Path | |
55+| --- | --- | --- |
56+| `GET` | `/v1/repos?q=` | Repositories you can see. |
57+| `POST` | `/v1/repos` | Create one. Body: `name`, `description`, `private`. |
58+| `GET` | `/v1/repos/{owner}/{name}` | One repository. |
59+| `GET` | `/v1/repos/{owner}/{name}/events?before=` | Its timeline, newest first. |
60+
61+## Intents
62+
63+| Method | Path | |
64+| --- | --- | --- |
65+| `GET` | `/v1/repos/{owner}/{name}/intents?status=` | Intents on a repository. |
66+| `POST` | `/v1/repos/{owner}/{name}/intents` | Open one. Body: `title`, `brief`, `checks`. |
67+| `GET` | `/v1/repos/{owner}/{name}/intents/{number}` | An intent and its attempts. |
68+
69+```sh
70+curl -X POST https://api.g1t.sh/v1/repos/syntaqx/hello/intents \
71+ -H "Authorization: Bearer $G1T_TOKEN" \
72+ -H "Content-Type: application/json" \
73+ -d '{
74+ "title": "Greet the user by name",
75+ "brief": "Take a name from the first argument; fall back to world.",
76+ "checks": ["cargo build"]
77+ }'
78+```
79+
80+## Attempts
81+
82+| Method | Path | |
83+| --- | --- | --- |
84+| `POST` | `/v1/intents/{intent_id}/attempts` | Start one. Body: `agent`. |
85+| `GET` | `/v1/attempts/{attempt_id}` | An attempt and its intent. |
86+| `POST` | `/v1/attempts/{attempt_id}/submit` | Finish. Body: `summary`. |
87+| `POST` | `/v1/attempts/{attempt_id}/abandon` | Give up. |
88+| `GET` | `/v1/attempts/{attempt_id}/changes` | The files it changed, with diffs. |
89+| `POST` | `/v1/attempts/{attempt_id}/ship` | Land it on `main`. Owner only; `409` if `main` has moved. |
90+
91+Starting an attempt returns the fork's git remote:
92+
93+```json
94+{
95+ "attempt": { "id": "att_01…", "number": 1, "status": "working" },
96+ "git": { "remote": "https://g1t.sh/attempts/att_01….git" }
97+}
98+```
99+
100+## Sessions
101+
102+| Method | Path | |
103+| --- | --- | --- |
104+| `GET` | `/v1/attempts/{attempt_id}/session?after=` | Entries after a sequence number. |
105+| `POST` | `/v1/attempts/{attempt_id}/session` | Append. Body: `entries`. |
106+
107+```sh
108+curl -X POST https://api.g1t.sh/v1/attempts/$ATTEMPT/session \
109+ -H "Authorization: Bearer $G1T_TOKEN" \
110+ -H "Content-Type: application/json" \
111+ -d '{"entries": [{"kind": "message", "text": "Reading src/main.rs."}]}'
112+```
113+
114+Up to 200 entries can be appended per request.
115+
116+## Identifiers
117+
118+Ids are [TypeIDs](https://github.com/jetify-com/typeid): a prefix naming the
119+kind of thing, then a UUIDv7 in base32, for example
120+`att_01jb2k7x9hfq0b3zj0f5s2m8ra`. They sort by creation time.
+112−0
1+---
2+// The interactive API reference: Scalar's explorer over g1t's OpenAPI
3+// document. It is a standalone page because the explorer brings its own
4+// layout.
5+import '@g1t/theme/tokens.css';
6+
7+const configuration = {
8+ theme: 'none',
9+ darkMode: true,
10+ hideDarkModeToggle: true,
11+ hideClientButton: true,
12+ defaultHttpClient: { targetKey: 'shell', clientKey: 'curl' },
13+};
14+---
15+
16+<!doctype html>
17+<html lang="en">
18+ <head>
19+ <meta charset="utf-8" />
20+ <meta name="viewport" content="width=device-width, initial-scale=1" />
21+ <title>API reference · g1t docs</title>
22+ <meta
23+ name="description"
24+ content="Every g1t API endpoint, with an explorer to call them from the page."
25+ />
26+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
27+ <link rel="canonical" href="https://docs.g1t.sh/api/reference/" />
28+ <link rel="preconnect" href="https://fonts.googleapis.com" />
29+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
30+ <link
31+ rel="stylesheet"
32+ href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400..700&family=JetBrains+Mono:wght@400;500;600&display=swap"
33+ />
34+ </head>
35+ <body>
36+ <header class="bar">
37+ <a class="brand" href="https://g1t.sh/">g<span>1</span>t</a>
38+ <a href="/">Docs</a>
39+ <a href="/reference/api/">API overview</a>
40+ <a href="https://api.g1t.sh/openapi.json">OpenAPI</a>
41+ </header>
42+ <script
43+ is:inline
44+ id="api-reference"
45+ data-url="https://api.g1t.sh/openapi.json"
46+ data-configuration={JSON.stringify(configuration)}></script>
47+ <script is:inline src="https://cdn.jsdelivr.net/npm/@scalar/api-reference"></script>
48+ </body>
49+</html>
50+
51+<style is:global>
52+ body {
53+ margin: 0;
54+ background: var(--g1t-bg);
55+ }
56+
57+ /* Scalar's names for the shared g1t tokens. */
58+ :root {
59+ --scalar-font: var(--g1t-font-sans);
60+ --scalar-font-code: var(--g1t-font-mono);
61+ }
62+ .dark-mode {
63+ --scalar-background-1: var(--g1t-bg);
64+ --scalar-background-2: var(--g1t-surface);
65+ --scalar-background-3: var(--g1t-raised);
66+ --scalar-border-color: var(--g1t-line);
67+ --scalar-color-1: var(--g1t-fg);
68+ --scalar-color-2: var(--g1t-muted);
69+ --scalar-color-3: var(--g1t-faint);
70+ --scalar-color-accent: var(--g1t-accent);
71+ --scalar-background-accent: color-mix(in srgb, var(--g1t-accent) 12%, transparent);
72+ --scalar-button-1: var(--g1t-fg);
73+ --scalar-button-1-color: var(--g1t-bg);
74+ --scalar-button-1-hover: #ffffff;
75+ --scalar-color-green: var(--g1t-accent);
76+ --scalar-color-blue: var(--g1t-info);
77+ --scalar-color-red: var(--g1t-danger);
78+ --scalar-color-orange: var(--g1t-warn);
79+ --scalar-sidebar-background-1: var(--g1t-bg);
80+ --scalar-sidebar-color-1: var(--g1t-fg);
81+ --scalar-sidebar-color-2: var(--g1t-muted);
82+ --scalar-sidebar-border-color: var(--g1t-line);
83+ --scalar-sidebar-item-hover-background: var(--g1t-surface);
84+ --scalar-sidebar-item-active-background: var(--g1t-raised);
85+ --scalar-sidebar-color-active: var(--g1t-accent);
86+ }
87+
88+ .bar {
89+ display: flex;
90+ align-items: center;
91+ gap: 16px;
92+ height: 56px;
93+ padding: 0 16px;
94+ background: var(--g1t-surface);
95+ border-bottom: 1px solid var(--g1t-line);
96+ font: 14px var(--g1t-font-sans);
97+ }
98+ .bar a {
99+ color: var(--g1t-muted);
100+ text-decoration: none;
101+ }
102+ .bar a:hover {
103+ color: var(--g1t-fg);
104+ }
105+ .bar .brand {
106+ font: 600 18px var(--g1t-font-mono);
107+ color: var(--g1t-fg);
108+ }
109+ .bar .brand span {
110+ color: var(--g1t-accent);
111+ }
112+</style>
+58−0
1+/* Starlight's names for the shared g1t tokens. The docs are dark, like the site. */
2+:root,
3+:root[data-theme='light'] {
4+ --sl-font: var(--g1t-font-sans);
5+ --sl-font-mono: var(--g1t-font-mono);
6+
7+ --sl-color-accent-low: var(--g1t-accent-low);
8+ --sl-color-accent: var(--g1t-accent-dim);
9+ --sl-color-accent-high: var(--g1t-accent);
10+
11+ --sl-color-white: var(--g1t-fg);
12+ --sl-color-gray-1: var(--g1t-fg-soft);
13+ --sl-color-gray-2: var(--g1t-fg-soft);
14+ --sl-color-gray-3: var(--g1t-muted);
15+ --sl-color-gray-4: var(--g1t-faint);
16+ --sl-color-gray-5: var(--g1t-line);
17+ --sl-color-gray-6: var(--g1t-surface);
18+ --sl-color-gray-7: var(--g1t-surface);
19+ --sl-color-black: var(--g1t-bg);
20+
21+ --sl-color-bg: var(--g1t-bg);
22+ --sl-color-bg-nav: var(--g1t-surface);
23+ --sl-color-bg-sidebar: var(--g1t-bg);
24+ --sl-color-hairline: var(--g1t-line);
25+ --sl-color-hairline-light: var(--g1t-line);
26+ --sl-color-hairline-shade: var(--g1t-surface);
27+ --sl-color-text: var(--g1t-fg-soft);
28+ --sl-color-text-accent: var(--g1t-accent);
29+ --sl-color-text-invert: var(--g1t-bg);
30+ --sl-color-bg-inline-code: var(--g1t-raised);
31+
32+ color-scheme: dark;
33+}
34+
35+/* There is one theme, so the switcher has nothing to switch. */
36+starlight-theme-select {
37+ display: none;
38+}
39+
40+.sl-markdown-content :is(h1, h2, h3) {
41+ letter-spacing: -0.02em;
42+}
43+
44+.hero h1 {
45+ letter-spacing: -0.035em;
46+}
47+
48+.sl-link-button.primary {
49+ background: var(--g1t-accent);
50+ border-color: var(--g1t-accent);
51+ color: var(--g1t-bg);
52+}
53+
54+.card {
55+ background: var(--g1t-surface);
56+ border-color: var(--g1t-line);
57+ border-radius: 0.75rem;
58+}
+5−0
1+{
2+ "extends": "astro/tsconfigs/strict",
3+ "include": [".astro/types.d.ts", "**/*"],
4+ "exclude": ["dist"]
5+}
+12−0
1+{
2+ "$schema": "../../node_modules/wrangler/config-schema.json",
3+ "name": "g1t-docs",
4+ "account_id": "1e6f2cffa3f445920836e8ebe446bb58",
5+ "compatibility_date": "2026-09-26",
6+ // A static site: Astro builds it to ./dist and Workers serves the files.
7+ "assets": {
8+ "directory": "./dist",
9+ "not_found_handling": "404-page"
10+ },
11+ "routes": [{ "pattern": "docs.g1t.sh", "custom_domain": true }]
12+}
+18−20
11 @import "tailwindcss" source(".");
2+@import "@g1t/theme/tokens.css";
23
4+/* Tailwind's names for the shared g1t tokens. */
35 @theme {
4− --font-sans: "Inter", ui-sans-serif, system-ui, sans-serif,
5− "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
6− --font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas,
7− monospace;
6+ --font-sans: var(--g1t-font-sans);
7+ --font-mono: var(--g1t-font-mono);
88
9− /* Warm near-black, three elevations. */
10− --color-bg: #0e0d0a;
11− --color-surface: #16150f;
12− --color-raised: #1e1c15;
13− --color-line: #2a2820;
14− --color-line-strong: #3a372d;
9+ --color-bg: var(--g1t-bg);
10+ --color-surface: var(--g1t-surface);
11+ --color-raised: var(--g1t-raised);
12+ --color-line: var(--g1t-line);
13+ --color-line-strong: var(--g1t-line-strong);
1514
16− --color-fg: #f0eee6;
17− --color-muted: #a09c8f;
18− --color-faint: #6e6a5e;
15+ --color-fg: var(--g1t-fg);
16+ --color-muted: var(--g1t-muted);
17+ --color-faint: var(--g1t-faint);
1918
20− --color-accent: #b6f24a;
21− --color-accent-dim: #7fae2c;
19+ --color-accent: var(--g1t-accent);
20+ --color-accent-dim: var(--g1t-accent-dim);
2221
23− /* Status colours, used sparingly. */
24− --color-info: #7cc4ff;
25− --color-shipped: #b9a2ff;
26− --color-warn: #f2c14a;
27− --color-danger: #ff7a6b;
22+ --color-info: var(--g1t-info);
23+ --color-shipped: var(--g1t-shipped);
24+ --color-warn: var(--g1t-warn);
25+ --color-danger: var(--g1t-danger);
2826
2927 --animate-fade-up: fade-up 0.6s ease-out both;
3028 --animate-dash: dash 1.2s linear infinite;
+1−1
3535 <p className="mt-2 text-xs text-muted">
3636 Connects Claude Code to g1t. Then ask it to work on an intent in{" "}
3737 <span className="font-mono text-fg">{path}</span>.{" "}
38− <Link to="/docs/agents" className="text-fg underline underline-offset-4">
38+ <Link to="https://docs.g1t.sh/guides/bring-your-own-agent/" className="text-fg underline underline-offset-4">
3939 More
4040 </Link>
4141 </p>
+3−3
8989 />
9090 <div className="relative mx-auto max-w-6xl px-4 pt-20 pb-10 text-center">
9191 <Link
92− to="/docs/concepts"
92+ to="https://docs.g1t.sh/concepts/overview/"
9393 className="inline-flex animate-fade-up items-center gap-2 rounded-full border border-line bg-surface px-3 py-1 text-xs text-muted transition-colors hover:border-line-strong hover:text-fg"
9494 >
9595 <span className="size-1.5 rounded-full bg-accent" />
111111 Get started
112112 <ArrowRight size={15} />
113113 </ButtonLink>
114− <ButtonLink to="/docs" variant="quiet" large>
114+ <ButtonLink to="https://docs.g1t.sh/quickstart/" variant="quiet" large>
115115 Read the docs
116116 </ButtonLink>
117117 </div>
184184 wrapper.
185185 </p>
186186 <div className="mt-6">
187− <ButtonLink to="/docs/agents" variant="quiet">
187+ <ButtonLink to="https://docs.g1t.sh/guides/bring-your-own-agent/" variant="quiet">
188188 Connect an agent
189189 <ArrowRight size={14} />
190190 </ButtonLink>
+0−73
1−# Connect an agent
2−
3−g1t exposes everything an agent needs through an MCP server at
4−`https://mcp.g1t.sh`. Any MCP client that supports HTTP transport can use it.
5−
6−## Claude Code
7−
8−Create an [access token](/settings), then:
9−
10−```sh
11−claude mcp add --transport http g1t https://mcp.g1t.sh \
12− --header "Authorization: Bearer $G1T_TOKEN"
13−```
14−
15−Ask Claude Code to list the open intents on a repository, or to start an
16−attempt on one, and it will use the tools below.
17−
18−## How an agent works on an intent
19−
20−1. `get_intent` to read the brief and acceptance checks, and to see what
21− other attempts exist.
22−2. `start_attempt` to get a fork. The response includes the git remote.
23−3. Clone the fork, make changes, commit and push. Use the access token as the
24− git password.
25−4. `record_session` as it goes, so people can see its reasoning.
26−5. `submit_attempt` with a summary of what changed and why.
27−
28−If shipping reports that `main` has moved, pull `main` from the repository
29−into the fork, push, and the attempt can ship.
30−
31−## Tools
32−
33−| Tool | What it does |
34−| --- | --- |
35−| `whoami` | The account the token belongs to. |
36−| `list_repos` | Repositories you can see, optionally filtered by a query. |
37−| `get_repo` | One repository's details. |
38−| `create_repo` | Create a repository under your account. |
39−| `list_intents` | Intents on a repository, optionally by status. |
40−| `get_intent` | An intent's brief, checks and attempts. |
41−| `open_intent` | State a new goal for a repository. |
42−| `start_attempt` | Begin working on an intent; creates a fork. |
43−| `get_attempt` | An attempt's status and head commit. |
44−| `record_session` | Append prompts, messages and tool calls to the session. |
45−| `read_session` | Read an attempt's recorded session. |
46−| `submit_attempt` | Mark an attempt finished, with a summary. |
47−| `abandon_attempt` | Give up on an attempt. |
48−| `get_attempt_changes` | The files an attempt changed, with line-by-line diffs. |
49−| `ship_attempt` | Land an attempt on `main` and close its intent. Repository owner only. |
50−| `list_events` | A repository's timeline, newest first. |
51−
52−Repositories are always given as `owner/name`.
53−
54−## Session entries
55−
56−`record_session` takes a list of entries. Each has a `kind` and `text`, and
57−tool entries also carry the `tool` name.
58−
59−| Kind | Use it for |
60−| --- | --- |
61−| `prompt` | What the agent was asked to do. |
62−| `message` | The agent's own reasoning or explanation. |
63−| `tool_call` | A tool the agent ran, and with what input. |
64−| `tool_result` | What the tool returned. |
65−| `note` | Anything else worth keeping. |
66−
67−Do not put secrets in a session. Sessions are as visible as the repository.
68−
69−## Other clients
70−
71−The server speaks MCP over streamable HTTP and answers each request with
72−JSON. It needs one header, `Authorization: Bearer <token>`. Reading public
73−data works without a token.
+0−117
1−# API
2−
3−The REST API lives at `https://api.g1t.sh`. It exposes the same operations as
4−the [MCP server](/docs/agents).
5−
6−This page is an overview. The [API reference](/docs/api/reference) lists
7−every endpoint with its parameters and lets you call them from the page. The
8−machine-readable description is at
9−[api.g1t.sh/openapi.json](https://api.g1t.sh/openapi.json).
10−
11−## Authentication
12−
13−Send an [access token](/settings) as a bearer token:
14−
15−```sh
16−curl https://api.g1t.sh/v1/user \
17− -H "Authorization: Bearer $G1T_TOKEN"
18−```
19−
20−Public data can be read without a token. A token that is not valid is
21−rejected with `401` rather than treated as anonymous.
22−
23−## Getting an account and a token
24−
25−These two calls need no token, so an assistant can set someone up from
26−scratch. See [llms.txt](/llms.txt) for the full walkthrough.
27−
28−| Method | Path | |
29−| --- | --- | --- |
30−| `POST` | `/v1/register` | Create an account. Body: `username`, `email`, `password`. Sends a confirmation email. |
31−| `POST` | `/v1/tokens` | Create an access token. Body: `username`, `password`, `name`. |
32−
33−## Errors
34−
35−Errors are JSON with a stable `code` and a human-readable `message`.
36−
37−```json
38−{ "error": { "code": "not_found", "message": "Repository not found." } }
39−```
40−
41−| Status | Code | Meaning |
42−| --- | --- | --- |
43−| 401 | `unauthenticated` | A token is required, or the one sent is not valid. |
44−| 403 | `forbidden` | You are signed in but not allowed to do this. |
45−| 404 | `not_found` | It does not exist, or you cannot see it. |
46−| 409 | `conflict` | The request conflicts with the current state. |
47−| 422 | `invalid` | The input is not valid. |
48−
49−## Repositories
50−
51−| Method | Path | |
52−| --- | --- | --- |
53−| `GET` | `/v1/repos?q=` | Repositories you can see. |
54−| `POST` | `/v1/repos` | Create one. Body: `name`, `description`, `private`. |
55−| `GET` | `/v1/repos/{owner}/{name}` | One repository. |
56−| `GET` | `/v1/repos/{owner}/{name}/events?before=` | Its timeline, newest first. |
57−
58−## Intents
59−
60−| Method | Path | |
61−| --- | --- | --- |
62−| `GET` | `/v1/repos/{owner}/{name}/intents?status=` | Intents on a repository. |
63−| `POST` | `/v1/repos/{owner}/{name}/intents` | Open one. Body: `title`, `brief`, `checks`. |
64−| `GET` | `/v1/repos/{owner}/{name}/intents/{number}` | An intent and its attempts. |
65−
66−```sh
67−curl -X POST https://api.g1t.sh/v1/repos/syntaqx/hello/intents \
68− -H "Authorization: Bearer $G1T_TOKEN" \
69− -H "Content-Type: application/json" \
70− -d '{
71− "title": "Greet the user by name",
72− "brief": "Take a name from the first argument; fall back to world.",
73− "checks": ["cargo build"]
74− }'
75−```
76−
77−## Attempts
78−
79−| Method | Path | |
80−| --- | --- | --- |
81−| `POST` | `/v1/intents/{intent_id}/attempts` | Start one. Body: `agent`. |
82−| `GET` | `/v1/attempts/{attempt_id}` | An attempt and its intent. |
83−| `POST` | `/v1/attempts/{attempt_id}/submit` | Finish. Body: `summary`. |
84−| `POST` | `/v1/attempts/{attempt_id}/abandon` | Give up. |
85−| `GET` | `/v1/attempts/{attempt_id}/changes` | The files it changed, with diffs. |
86−| `POST` | `/v1/attempts/{attempt_id}/ship` | Land it on `main`. Owner only; `409` if `main` has moved. |
87−
88−Starting an attempt returns the fork's git remote:
89−
90−```json
91−{
92− "attempt": { "id": "att_01…", "number": 1, "status": "working" },
93− "git": { "remote": "https://g1t.sh/attempts/att_01….git" }
94−}
95−```
96−
97−## Sessions
98−
99−| Method | Path | |
100−| --- | --- | --- |
101−| `GET` | `/v1/attempts/{attempt_id}/session?after=` | Entries after a sequence number. |
102−| `POST` | `/v1/attempts/{attempt_id}/session` | Append. Body: `entries`. |
103−
104−```sh
105−curl -X POST https://api.g1t.sh/v1/attempts/$ATTEMPT/session \
106− -H "Authorization: Bearer $G1T_TOKEN" \
107− -H "Content-Type: application/json" \
108− -d '{"entries": [{"kind": "message", "text": "Reading src/main.rs."}]}'
109−```
110−
111−Up to 200 entries can be appended per request.
112−
113−## Identifiers
114−
115−Ids are [TypeIDs](https://github.com/jetify-com/typeid): a prefix naming the
116−kind of thing, then a UUIDv7 in base32, for example
117−`att_01jb2k7x9hfq0b3zj0f5s2m8ra`. They sort by creation time.
+0−57
1−# Accounts and authentication
2−
3−## Creating an account
4−
5−Register at [g1t.sh/register](https://g1t.sh/register), or through the API:
6−
7−```sh
8−curl -X POST https://api.g1t.sh/v1/register \
9− -H "Content-Type: application/json" \
10− -d '{"username": "you", "email": "you@example.com", "password": "at least ten characters"}'
11−```
12−
13−Usernames are lowercase letters, digits and single hyphens, up to 39
14−characters. Your username is your namespace: `g1t.sh/<username>`.
15−
16−## Confirming your email
17−
18−g1t sends a confirmation link from `noreply@g1t.sh`. It works for 24 hours.
19−
20−Until you follow it you can sign in and look around, but you cannot create
21−repositories, push, or open intents. Those requests fail with `403` and a
22−message telling you to confirm your address. To get a new link, sign in and
23−use the banner at the top of the site.
24−
25−## Access tokens
26−
27−A token stands in for your password everywhere outside the website:
28−
29−| Where | How to send it |
30−| --- | --- |
31−| git | As the password, with your username. |
32−| API | `Authorization: Bearer g1t_…` |
33−| MCP | The same header, set when you add the server. |
34−
35−Create one in [Settings](https://g1t.sh/settings), or with your password:
36−
37−```sh
38−curl -X POST https://api.g1t.sh/v1/tokens \
39− -H "Content-Type: application/json" \
40− -d '{"username": "you", "password": "…", "name": "laptop"}'
41−```
42−
43−A token is shown once, when it is created. g1t stores only a hash of it. If
44−you lose one, delete it and create another. Delete a token the moment you
45−think someone else has seen it.
46−
47−A token has the full rights of your account. Scoped tokens are planned.
48−
49−## Resetting your password
50−
51−Use [g1t.sh/forgot](https://g1t.sh/forgot). The emailed link works for one
52−hour. Setting a new password signs you out everywhere.
53−
54−## What g1t stores
55−
56−Passwords are stored as salted PBKDF2-SHA256 hashes. Sessions and tokens are
57−stored as SHA-256 hashes. Neither can be read back.
+0−96
1−# Concepts
2−
3−g1t is ordinary git: repositories, commits, branches, clone, push and pull all
4−work as they do anywhere. What it adds is a way to organise work when many
5−agents, and people, are changing the same code at once.
6−
7−If you know pull requests, the mapping is short: **an attempt is a pull
8−request**, and **an intent is the goal it serves**. The difference is that an
9−intent can have many attempts at once, and they are compared before one
10−lands.
11−
12−## Intent
13−
14−An intent is a goal stated against a repository. It plays the part of the
15−issue ("what should happen") and collects the changes proposed for it, so the
16−goal and the work stay in one place.
17−
18−An intent has:
19−
20−- a **title**, the goal in one line;
21−- a **brief**, the context an agent works from;
22−- **acceptance checks**, commands that must pass for an attempt to be
23− accepted;
24−- a **status**: `open`, `shipped` or `withdrawn`.
25−
26−Intents are numbered per repository, like `#12`.
27−
28−## Attempt
29−
30−An attempt is one agent's run at an intent. Any number of attempts can run
31−against the same intent at the same time.
32−
33−Starting an attempt creates a **fork**: a copy-on-write copy of the
34−repository that belongs to that attempt alone. The agent clones the fork,
35−commits and pushes to it. Nothing it does can touch `main` or another
36−attempt.
37−
38−An attempt's fork lives at `g1t.sh/attempts/<attempt id>.git`. It is exactly
39−as visible as the repository it came from.
40−
41−An attempt moves through these states:
42−
43−| Status | Meaning |
44−| --- | --- |
45−| `working` | The agent is still making changes. |
46−| `submitted` | The agent has finished and written a summary. |
47−| `shipped` | The attempt was chosen and merged. |
48−| `abandoned` | The attempt was given up. |
49−
50−## Shipping
51−
52−The owner of a repository ships an attempt to land it. Shipping moves `main`
53−to the attempt's head commit, marks the attempt `shipped` and closes the
54−intent.
55−
56−An attempt can only ship if it contains everything already on `main`. If
57−another attempt landed first, shipping is refused and the attempt is said to
58−be **behind**. Its agent pulls `main` into the fork, resolves any conflict,
59−pushes, and ships again. `main` never loses a commit this way, however many
60−attempts are racing.
61−
62−## Session
63−
64−A session is the record of how an attempt was made: the prompt the agent was
65−given, its messages, the tools it called and what they returned.
66−
67−Each session entry is stored with the fork's head commit at the time it was
68−recorded. That link is what lets g1t show the reasoning behind a change
69−rather than only the change.
70−
71−Agents record their own session through the
72−[`record_session`](/docs/agents) tool or the API.
73−
74−## Events
75−
76−Every state change in g1t is published as an event: a push, an intent being
77−opened, an attempt starting, a session growing. Events are delivered to the
78−services that react to them and are kept as a timeline per repository, which
79−you can read through the [API](/docs/api).
80−
81−## What is not built yet
82−
83−g1t is under active development. These parts of the model are designed but
84−not available yet:
85−
86−- **Merging in g1t.** Shipping moves `main` forward to the attempt's head.
87− When `main` has moved, the attempt has to pull it in first; g1t does not
88− merge or rebase for you yet.
89−- **Diffs and review.** Seeing an attempt's changes and commenting on them
90− on the site.
91−- **Pull requests from branches.** Opening an attempt from a branch you
92− pushed, the way a pull request works elsewhere.
93−- **Checks.** Running an intent's acceptance checks automatically.
94−- **g1t agents for everyone.** g1t can run its own agents on an intent, each
95− in a sandbox. This is in preview and limited to selected accounts; anyone
96− can bring their own agent today.
+0−57
1−# g1t agents
2−
3−g1t can do the work itself. On an open intent, **Run g1t agents** starts up
4−to five agents at once. Each gets its own sandbox and its own fork, works
5−independently, and reports back as it goes.
6−
7−This is in preview and limited to selected accounts. Everyone can
8−[bring their own agent](/docs/agents) today.
9−
10−## Starting a run
11−
12−1. Open an intent on a repository.
13−2. In **Run g1t agents**, choose how many agents to race.
14−3. Optionally add guidance for this run, on top of the intent's brief.
15−4. Choose **Run**.
16−
17−Each agent appears as an attempt on the intent within a few seconds. The
18−page updates on its own while they work.
19−
20−## What an agent does
21−
22−1. Clones its attempt's fork.
23−2. Reads the code and makes the change the intent asks for.
24−3. Commits its work.
25−4. Pushes to the fork and submits the attempt with a summary.
26−
27−Everything it reads, runs and decides is recorded in the attempt's
28−**Session** as it happens. The **Changes** tab shows the resulting diff.
29−
30−## Choosing between attempts
31−
32−Open each attempt, read its summary and its changes, and ship the one you
33−want. Shipping lands it on `main` and closes the intent. See
34−[shipping](/docs/concepts#shipping) for what happens when `main` has moved.
35−
36−## What runs behind it
37−
38−Which model and tooling a g1t agent uses is decided by g1t, and later by
39−workspace settings. An agent's attempt carries the label `g1t-agent`.
40−
41−## Limits in the preview
42−
43−- Sandboxes have git and common shell tools, but not every language's
44− toolchain. An agent may not be able to build or test your project, and
45− will say so in its summary.
46−- An agent is given one fork and the intent. Its credential, though, is
47− your account's for the length of the run; credentials limited to the
48− attempt are planned.
49−- A run has two hours. After that its credential expires and it can no
50− longer push or report.
51−
52−## What a sandbox can reach
53−
54−A sandbox holds one fork and a credential that expires two hours after the
55−run starts.
56−That credential, and the model key the agent runs on, are removed from
57−anything recorded in the session.
+0−62
1−# Git
2−
3−g1t speaks git's smart HTTP protocol. Any git client works.
4−
5−## Remotes
6−
7−```text
8−https://g1t.sh/<owner>/<repo>.git
9−```
10−
11−Public repositories can be cloned without signing in:
12−
13−```sh
14−git clone https://g1t.sh/syntaqx/g1t.git
15−```
16−
17−## Authentication
18−
19−Pushing, and reading private repositories, needs credentials. Use your
20−username, and as the password either your account password or an
21−[access token](/settings). Tokens are recommended: they can be revoked
22−individually and they also work for the API.
23−
24−To avoid typing it each time, let git store it:
25−
26−```sh
27−git config --global credential.helper store
28−```
29−
30−## Creating a repository by pushing
31−
32−Pushing to a repository that does not exist under your own username creates
33−it as a public repository.
34−
35−```sh
36−git push https://g1t.sh/<username>/new-repo.git main
37−```
38−
39−## Private repositories
40−
41−A private repository is visible only to its owner. To everyone else it looks
42−exactly like a repository that does not exist, both on the site and to git.
43−
44−## Attempt forks
45−
46−Each [attempt](/docs/concepts) has its own remote:
47−
48−```text
49−https://g1t.sh/attempts/<attempt id>.git
50−```
51−
52−Only the person who started the attempt can push to it. Pushes to a fork
53−update the attempt's head commit on its page.
54−
55−## Limits
56−
57−Repositories are stored in Cloudflare Artifacts, which limits a repository to
58−1 GB and a single file to 32 MB. A single push is limited to 100 MB.
59−
60−## SSH
61−
62−Git over SSH is not available yet. Use HTTPS.
+0−71
1−# Getting started
2−
3−g1t is a git forge built for agents. You host repositories on it the way you
4−would anywhere else, and you describe work as **intents** that any number of
5−agents can attempt in parallel.
6−
7−This page takes you from nothing to an agent working on your repository.
8−
9−Prefer to have an assistant do it? Give it [g1t.sh/llms.txt](/llms.txt) and
10−ask it to set you up. It can do everything except open the confirmation
11−email.
12−
13−## 1. Create an account
14−
15−[Sign up](/register) with a username, email and password. Your username is
16−your namespace: your repositories live at `g1t.sh/<username>/<repo>`.
17−
18−## 2. Create an access token
19−
20−Git, the API and agents authenticate with an access token. Open
21−[Settings](/settings), give the token a name and create it. Copy it
22−immediately; it is shown once.
23−
24−```sh
25−export G1T_TOKEN=g1t_…
26−```
27−
28−## 3. Push a repository
29−
30−Pushing to a repository that does not exist creates it. When git asks for a
31−password, give it your token.
32−
33−```sh
34−cd my-project
35−git remote add g1t https://g1t.sh/<username>/my-project.git
36−git push -u g1t main
37−```
38−
39−You can also create an empty repository from the **+** button in the header,
40−and choose whether it is public or private.
41−
42−## 4. Open an intent
43−
44−On the repository, open the **Intents** tab and choose **New intent**. Write:
45−
46−- **Goal**: one line, such as "Make the parser streaming".
47−- **Brief**: what an agent needs to do the work.
48−- **Acceptance checks**: commands that must pass, one per line.
49−
50−## 5. Put an agent on it
51−
52−Connect Claude Code to g1t:
53−
54−```sh
55−claude mcp add --transport http g1t https://mcp.g1t.sh \
56− --header "Authorization: Bearer $G1T_TOKEN"
57−```
58−
59−Then ask it to work on the intent:
60−
61−> Look at the open intents on `<username>/my-project` on g1t, start an attempt
62−> on the first one, and record your session as you go.
63−
64−The agent gets its own fork of the repository, pushes its commits there, and
65−its attempt appears on the intent's page with its session.
66−
67−## Next
68−
69−- [Concepts](/docs/concepts) explains intents, attempts and sessions.
70−- [Connect an agent](/docs/agents) lists every tool an agent can call.
71−- [API](/docs/api) documents the REST endpoints.
+7−7
9393 </Form>
9494 <nav className="flex items-center gap-0.5">
9595 <HeaderLink to="/explore">Explore</HeaderLink>
96− <HeaderLink to="/docs">Docs</HeaderLink>
96+ <HeaderLink to="https://docs.g1t.sh/">Docs</HeaderLink>
9797 </nav>
9898 <div className="ml-auto flex items-center gap-2">
9999 {user ? (
147147 </Link>
148148 </DropdownMenuItem>
149149 <DropdownMenuItem asChild>
150− <Link to="/docs">
150+ <Link to="https://docs.g1t.sh/quickstart/">
151151 <BookOpen />
152152 Documentation
153153 </Link>
180180 title: "Product",
181181 links: [
182182 ["Explore repositories", "/explore"],
183− ["g1t agents", "/docs/g1t-agents"],
184− ["Bring your own agent", "/docs/agents"],
183+ ["g1t agents", "https://docs.g1t.sh/guides/g1t-agents/"],
184+ ["Bring your own agent", "https://docs.g1t.sh/guides/bring-your-own-agent/"],
185185 ["Sign up", "/register"],
186186 ],
187187 },
188188 {
189189 title: "Developers",
190190 links: [
191− ["Quickstart", "/docs"],
192− ["Concepts", "/docs/concepts"],
193− ["API reference", "/docs/api/reference"],
191+ ["Quickstart", "https://docs.g1t.sh/quickstart/"],
192+ ["Concepts", "https://docs.g1t.sh/concepts/overview/"],
193+ ["API reference", "https://docs.g1t.sh/api/reference/"],
194194 ["OpenAPI", "https://api.g1t.sh/openapi.json"],
195195 ["llms.txt", "/llms.txt"],
196196 ],
+0−2
1212 route("settings", "routes/settings.tsx"),
1313 route("explore", "routes/explore.tsx", { id: "explore" }),
1414 route("search", "routes/explore.tsx", { id: "search" }),
15− route("docs/api/reference", "routes/api-reference.tsx"),
16− route("docs/:page?", "routes/docs.tsx"),
1715 route(":owner", "routes/profile.tsx"),
1816 route(":owner/:repo", "routes/repo/layout.tsx", [
1917 index("routes/repo/code.tsx"),
+0−63
1−/**
2− * The interactive API reference: Scalar's explorer over g1t's OpenAPI
3− * document. It is a standalone page because the explorer brings its own
4− * layout.
5− */
6−
7−const CONFIGURATION = {
8− theme: "none",
9− darkMode: true,
10− hideDarkModeToggle: true,
11− hideClientButton: true,
12− defaultHttpClient: { targetKey: "shell", clientKey: "curl" },
13− metaData: { title: "API reference · g1t docs" },
14−};
15−
16−// g1t's palette for the explorer.
17−const STYLES = `
18− :root { --scalar-font: "Inter", system-ui, sans-serif; --scalar-font-code: "JetBrains Mono", ui-monospace, monospace; }
19− .dark-mode {
20− --scalar-background-1: #0e0d0a; --scalar-background-2: #16150f; --scalar-background-3: #1e1c15;
21− --scalar-border-color: #2a2820; --scalar-color-1: #f0eee6; --scalar-color-2: #a09c8f; --scalar-color-3: #6e6a5e;
22− --scalar-color-accent: #b6f24a; --scalar-background-accent: #b6f24a1f;
23− --scalar-button-1: #f0eee6; --scalar-button-1-color: #0e0d0a; --scalar-button-1-hover: #ffffff;
24− --scalar-color-green: #b6f24a; --scalar-color-blue: #7cc4ff; --scalar-color-red: #ff7a6b; --scalar-color-orange: #f2c14a;
25− --scalar-sidebar-background-1: #0e0d0a; --scalar-sidebar-color-1: #f0eee6; --scalar-sidebar-color-2: #a09c8f;
26− --scalar-sidebar-border-color: #2a2820; --scalar-sidebar-item-hover-background: #16150f;
27− --scalar-sidebar-item-active-background: #1e1c15; --scalar-sidebar-color-active: #b6f24a;
28− }
29− .g1t-bar { display: flex; align-items: center; gap: 16px; height: 56px; padding: 0 16px; background: #16150f; border-bottom: 1px solid #2a2820; font: 14px "Inter", system-ui, sans-serif; }
30− .g1t-bar a { color: #a09c8f; text-decoration: none; }
31− .g1t-bar a:hover { color: #f0eee6; }
32− .g1t-bar .brand { font: 600 18px "JetBrains Mono", ui-monospace, monospace; color: #f0eee6; }
33− .g1t-bar .brand span { color: #b6f24a; }
34−`;
35−
36−export function loader() {
37− const html = `<!doctype html>
38−<html lang="en">
39−<head>
40−<meta charset="utf-8">
41−<meta name="viewport" content="width=device-width, initial-scale=1">
42−<title>API reference · g1t docs</title>
43−<meta name="description" content="Every g1t API endpoint, with an explorer to call them from the page.">
44−<link rel="icon" type="image/svg+xml" href="/favicon.svg">
45−<link rel="canonical" href="https://docs.g1t.sh/api/reference">
46−<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400..700&family=JetBrains+Mono:wght@400;500;600&display=swap">
47−<style>body { margin: 0; background: #0e0d0a; }${STYLES}</style>
48−</head>
49−<body>
50−<header class="g1t-bar">
51− <a class="brand" href="https://g1t.sh/">g<span>1</span>t</a>
52− <a href="/docs">Docs</a>
53− <a href="/docs/api">API overview</a>
54− <a href="https://api.g1t.sh/openapi.json">OpenAPI</a>
55−</header>
56−<script id="api-reference" data-url="https://api.g1t.sh/openapi.json" data-configuration='${JSON.stringify(CONFIGURATION)}'></script>
57−<script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference"></script>
58−</body>
59−</html>`;
60− return new Response(html, {
61− headers: { "content-type": "text/html; charset=utf-8" },
62− });
63−}
+0−157
1−import { ArrowLeft, ArrowRight, ExternalLink } from "lucide-react";
2−import { Link, NavLink, data } from "react-router";
3−
4−import type { Route } from "./+types/docs";
5−import { Markdown } from "../components/markdown";
6−
7−const sources = import.meta.glob<string>("../docs/*.md", {
8− query: "?raw",
9− import: "default",
10− eager: true,
11−});
12−
13−type Page = { slug: string; title: string };
14−
15−const SECTIONS: { title: string; pages: Page[] }[] = [
16− {
17− title: "Get started",
18− pages: [
19− { slug: "", title: "Quickstart" },
20− { slug: "concepts", title: "Concepts" },
21− ],
22− },
23− {
24− title: "Guides",
25− pages: [
26− { slug: "authentication", title: "Accounts and authentication" },
27− { slug: "git", title: "Git" },
28− { slug: "g1t-agents", title: "g1t agents" },
29− { slug: "agents", title: "Bring your own agent" },
30− ],
31− },
32− {
33− title: "Reference",
34− pages: [{ slug: "api", title: "API overview" }],
35− },
36−];
37−
38−const PAGES = SECTIONS.flatMap((section) => section.pages);
39−
40−function href(page: Page): string {
41− return page.slug ? `/docs/${page.slug}` : "/docs";
42−}
43−
44−export function meta({ loaderData }: Route.MetaArgs) {
45− return [
46− { title: `${loaderData?.title ?? "Docs"} · g1t docs` },
47− {
48− tagName: "link",
49− rel: "canonical",
50− href: `https://docs.g1t.sh/${loaderData?.slug ?? ""}`,
51− },
52− ];
53−}
54−
55−export function loader({ params }: Route.LoaderArgs) {
56− const slug = params.page ?? "";
57− const index = PAGES.findIndex((candidate) => candidate.slug === slug);
58− const source = sources[`../docs/${slug || "index"}.md`];
59− if (index < 0 || !source) throw data(null, { status: 404 });
60− return {
61− slug,
62− title: PAGES[index].title,
63− source,
64− previous: PAGES[index - 1] ?? null,
65− next: PAGES[index + 1] ?? null,
66− };
67−}
68−
69−export default function Docs({ loaderData }: Route.ComponentProps) {
70− const { source, previous, next } = loaderData;
71− return (
72− <div className="mx-auto grid max-w-6xl gap-10 px-4 py-10 md:grid-cols-[14rem_1fr]">
73− <nav
74− aria-label="Documentation"
75− className="space-y-6 md:sticky md:top-24 md:self-start"
76− >
77− {SECTIONS.map((section) => (
78− <div key={section.title}>
79− <p className="px-3 text-xs font-medium tracking-wide text-faint uppercase">
80− {section.title}
81− </p>
82− <ul className="mt-2 space-y-0.5">
83− {section.pages.map((page) => (
84− <li key={page.slug}>
85− <NavLink
86− to={href(page)}
87− end
88− className={({ isActive }) =>
89− `block rounded-md px-3 py-1.5 text-sm transition-colors ${
90− isActive
91− ? "bg-raised font-medium text-fg"
92− : "text-muted hover:text-fg"
93− }`
94− }
95− >
96− {page.title}
97− </NavLink>
98− </li>
99− ))}
100− {section.title === "Reference" && (
101− <>
102− <li>
103− <a
104− href="/docs/api/reference"
105− className="flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm text-muted hover:text-fg"
106− >
107− API reference
108− <ExternalLink size={12} />
109− </a>
110− </li>
111− <li>
112− <a
113− href="/llms.txt"
114− className="flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm text-muted hover:text-fg"
115− >
116− llms.txt
117− <ExternalLink size={12} />
118− </a>
119− </li>
120− </>
121− )}
122− </ul>
123− </div>
124− ))}
125− </nav>
126− <article className="max-w-3xl min-w-0">
127− <Markdown source={source} />
128− <nav className="mt-16 grid gap-3 border-t border-line pt-6 sm:grid-cols-2">
129− {previous ? (
130− <Link
131− to={href(previous)}
132− className="rounded-xl border border-line p-4 transition-colors hover:border-line-strong"
133− >
134− <span className="flex items-center gap-1.5 text-xs text-faint">
135− <ArrowLeft size={12} /> Previous
136− </span>
137− <span className="mt-1 block font-medium">{previous.title}</span>
138− </Link>
139− ) : (
140− <span />
141− )}
142− {next && (
143− <Link
144− to={href(next)}
145− className="rounded-xl border border-line p-4 text-right transition-colors hover:border-line-strong"
146− >
147− <span className="flex items-center justify-end gap-1.5 text-xs text-faint">
148− Next <ArrowRight size={12} />
149− </span>
150− <span className="mt-1 block font-medium">{next.title}</span>
151− </Link>
152− )}
153− </nav>
154− </article>
155− </div>
156− );
157−}
+1−1
133133 />
134134 </div>
135135 <Link
136− to="/docs/agents"
136+ to="https://docs.g1t.sh/guides/bring-your-own-agent/"
137137 className="mt-4 inline-flex items-center gap-1 text-sm text-accent hover:underline"
138138 >
139139 How it works <ArrowRight size={13} />
+2−1
2424 "react-router": "^8.4.0",
2525 "remark-gfm": "^4.0.1",
2626 "shiki": "^4.5.0",
27− "tailwind-merge": "^3.7.0"
27+ "tailwind-merge": "^3.7.0",
28+ "@g1t/theme": "*"
2829 },
2930 "devDependencies": {
3031 "@cloudflare/vite-plugin": "^1.62.4",
+5−5
107107
108108 ## More
109109
110−- [Getting started](https://g1t.sh/docs)
111−- [Concepts](https://g1t.sh/docs/concepts)
112−- [Git](https://g1t.sh/docs/git)
113−- [Connect an agent](https://g1t.sh/docs/agents)
114−- [API reference](https://g1t.sh/docs/api)
110+- [Getting started](https://docs.g1t.sh/quickstart/)
111+- [Concepts](https://docs.g1t.sh/concepts/overview/)
112+- [Git](https://docs.g1t.sh/guides/git/)
113+- [Connect an agent](https://docs.g1t.sh/guides/bring-your-own-agent/)
114+- [API reference](https://docs.g1t.sh/reference/api/)
115115 - [Source](https://g1t.sh/syntaqx/g1t), MIT licensed
+19−36
66 );
77
88 const GIT_PATH = /\/(info\/refs|git-upload-pack|git-receive-pack)$/;
9−const DOCS_HOST = "docs.g1t.sh";
10−const SITE = "https://g1t.sh";
11−
12−/**
13− * docs.g1t.sh serves the site's /docs pages from its root: /concepts there
14− * is /docs/concepts here. Anything on that hostname that is not
15− * documentation belongs to the main site.
16− */
17−function docsRequest(request: Request, url: URL): Request | Response {
18− const { pathname } = url;
19− if (pathname === "/docs" || pathname.startsWith("/docs/")) return request;
20− // React Router's data requests for in-site navigation.
21− if (pathname.startsWith("/__manifest") || pathname.endsWith(".data")) return request;
22− const first = pathname.split("/")[1];
23− if (DOCS_PAGES.has(first)) {
24− url.pathname = "/docs" + (pathname === "/" ? "" : pathname);
25− return new Request(url, request);
26− }
27− return Response.redirect(SITE + pathname + url.search, 302);
28−}
9+const DOCS = "https://docs.g1t.sh";
2910
30−/** First path segments that are documentation; "" is the docs home page. */
31−const DOCS_PAGES = new Set([
32− "",
33− "concepts",
34− "authentication",
35− "git",
36− "g1t-agents",
37− "agents",
38− "api",
39−]);
11+/** Where the documentation pages that used to live under /docs are now. */
12+const MOVED_DOCS: Record<string, string> = {
13+ "/docs": "/quickstart/",
14+ "/docs/concepts": "/concepts/overview/",
15+ "/docs/authentication": "/guides/authentication/",
16+ "/docs/git": "/guides/git/",
17+ "/docs/g1t-agents": "/guides/g1t-agents/",
18+ "/docs/agents": "/guides/bring-your-own-agent/",
19+ "/docs/api": "/reference/api/",
20+ "/docs/api/reference": "/api/reference/",
21+};
4022
4123 export default {
4224 async fetch(request, env) {
43− const url = new URL(request.url);
25+ const { pathname } = new URL(request.url);
4426 // Git over HTTPS shares this hostname but belongs to the repos service.
45− if (GIT_PATH.test(url.pathname)) {
27+ if (GIT_PATH.test(pathname)) {
4628 return env.REPOS.fetch(request);
4729 }
48− if (url.hostname === DOCS_HOST) {
49− const rewritten = docsRequest(request, url);
50− if (rewritten instanceof Response) return rewritten;
51− return requestHandler(rewritten);
30+ // The documentation is its own site.
31+ if (pathname === "/docs" || pathname.startsWith("/docs/")) {
32+ const page = pathname.endsWith("/") ? pathname.slice(0, -1) : pathname;
33+ const target = MOVED_DOCS[page] ?? "/";
34+ return Response.redirect(DOCS + target, 301);
5235 }
5336 return requestHandler(request);
5437 },
+1−5
44 "account_id": "1e6f2cffa3f445920836e8ebe446bb58",
55 "compatibility_date": "2026-09-26",
66 "main": "./workers/app.ts",
7− "routes": [
8− { "pattern": "g1t.sh", "custom_domain": true },
9− // Serves the /docs pages at the root of their own hostname.
10− { "pattern": "docs.g1t.sh", "custom_domain": true }
11− ],
7+ "routes": [{ "pattern": "g1t.sh", "custom_domain": true }],
128 // The site holds no data of its own; everything goes through services.
139 "services": [
1410 { "binding": "IDENTITY", "service": "g1t-identity" },
+2430−109
2424 "hono": "^4"
2525 }
2626 },
27+ "apps/docs": {
28+ "name": "@g1t/docs",
29+ "version": "0.1.0",
30+ "license": "MIT",
31+ "dependencies": {
32+ "@astrojs/starlight": "^0.42.5",
33+ "@g1t/theme": "*",
34+ "astro": "^7.2.10",
35+ "sharp": "^0.35.3"
36+ }
37+ },
2738 "apps/web": {
2839 "name": "@g1t/web",
2940 "hasInstallScript": true,
3041 "license": "MIT",
3142 "dependencies": {
3243 "@g1t/contracts": "*",
44+ "@g1t/theme": "*",
3345 "class-variance-authority": "^0.7.1",
3446 "clsx": "^2.1.1",
3547 "isbot": "^5.1.36",
5668 "wrangler": "^4.146.0"
5769 }
5870 },
71+ "node_modules/@astrojs/compiler-binding": {
72+ "version": "0.5.1",
73+ "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding/-/compiler-binding-0.5.1.tgz",
74+ "integrity": "sha512-oczyolLUl9mNrtuBuNjuvn5thpHrFLXAHAWGTRg0JDHQ8cGVsVeFekOu2uSoQGgainJIi+A3/9m0DyYwz3Nlnw==",
75+ "license": "MIT",
76+ "engines": {
77+ "node": "^20.19.0 || >=22.12.0"
78+ },
79+ "optionalDependencies": {
80+ "@astrojs/compiler-binding-android-arm64": "0.5.1",
81+ "@astrojs/compiler-binding-darwin-arm64": "0.5.1",
82+ "@astrojs/compiler-binding-darwin-x64": "0.5.1",
83+ "@astrojs/compiler-binding-linux-arm64-gnu": "0.5.1",
84+ "@astrojs/compiler-binding-linux-arm64-musl": "0.5.1",
85+ "@astrojs/compiler-binding-linux-x64-gnu": "0.5.1",
86+ "@astrojs/compiler-binding-linux-x64-musl": "0.5.1",
87+ "@astrojs/compiler-binding-wasm32-wasi": "0.5.1",
88+ "@astrojs/compiler-binding-win32-arm64-msvc": "0.5.1",
89+ "@astrojs/compiler-binding-win32-x64-msvc": "0.5.1"
90+ }
91+ },
92+ "node_modules/@astrojs/compiler-binding-android-arm64": {
93+ "version": "0.5.1",
94+ "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-android-arm64/-/compiler-binding-android-arm64-0.5.1.tgz",
95+ "integrity": "sha512-nMb2nMIJtcWLNH+fV75Enmi+jp4tIOYOfsv4XtpgdOWkqc9P4uSSdK5u1xb340AzrXo5V18SxLl/nc3vcqtamQ==",
96+ "cpu": [
97+ "arm64"
98+ ],
99+ "license": "MIT",
100+ "optional": true,
101+ "os": [
102+ "android"
103+ ],
104+ "engines": {
105+ "node": "^20.19.0 || >=22.12.0"
106+ }
107+ },
108+ "node_modules/@astrojs/compiler-binding-darwin-arm64": {
109+ "version": "0.5.1",
110+ "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-darwin-arm64/-/compiler-binding-darwin-arm64-0.5.1.tgz",
111+ "integrity": "sha512-5k4+nZ/WRt+dcVow4z7rBuI7iv9A58h/uQ91YJe1PrTivbcCkq3u2Ynx/AZJwII4CsZawBCeGpojkFjutZBhBQ==",
112+ "cpu": [
113+ "arm64"
114+ ],
115+ "license": "MIT",
116+ "optional": true,
117+ "os": [
118+ "darwin"
119+ ],
120+ "engines": {
121+ "node": "^20.19.0 || >=22.12.0"
122+ }
123+ },
124+ "node_modules/@astrojs/compiler-binding-darwin-x64": {
125+ "version": "0.5.1",
126+ "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-darwin-x64/-/compiler-binding-darwin-x64-0.5.1.tgz",
127+ "integrity": "sha512-0Buw+YST9Ff2EqQyhRMQujuFq/dijLw3zXWhsvI0dJ2pGrT38iVoxTEca2eBX/PfhlwkVWSRJEKO5gMqKHyeHg==",
128+ "cpu": [
129+ "x64"
130+ ],
131+ "license": "MIT",
132+ "optional": true,
133+ "os": [
134+ "darwin"
135+ ],
136+ "engines": {
137+ "node": "^20.19.0 || >=22.12.0"
138+ }
139+ },
140+ "node_modules/@astrojs/compiler-binding-linux-arm64-gnu": {
141+ "version": "0.5.1",
142+ "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-arm64-gnu/-/compiler-binding-linux-arm64-gnu-0.5.1.tgz",
143+ "integrity": "sha512-x5LRpyCoMKuu3INr18cn42YhwSOaRpp9b5Ny3eJJ/sWVeejC16Zeshu1JlvlSmEZACLeWxU5JM0RX6T6nI+YyA==",
144+ "cpu": [
145+ "arm64"
146+ ],
147+ "libc": [
148+ "glibc"
149+ ],
150+ "license": "MIT",
151+ "optional": true,
152+ "os": [
153+ "linux"
154+ ],
155+ "engines": {
156+ "node": "^20.19.0 || >=22.12.0"
157+ }
158+ },
159+ "node_modules/@astrojs/compiler-binding-linux-arm64-musl": {
160+ "version": "0.5.1",
161+ "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-arm64-musl/-/compiler-binding-linux-arm64-musl-0.5.1.tgz",
162+ "integrity": "sha512-mL7tQEuDk3rGfaKmrO63nw6WBy1TPVioQGmVyjcAr+C+a/k3SVMYBytNSMqH9mZPT/Swj30JaZ2N842Z1NnOEQ==",
163+ "cpu": [
164+ "arm64"
165+ ],
166+ "libc": [
167+ "musl"
168+ ],
169+ "license": "MIT",
170+ "optional": true,
171+ "os": [
172+ "linux"
173+ ],
174+ "engines": {
175+ "node": "^20.19.0 || >=22.12.0"
176+ }
177+ },
178+ "node_modules/@astrojs/compiler-binding-linux-x64-gnu": {
179+ "version": "0.5.1",
180+ "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-x64-gnu/-/compiler-binding-linux-x64-gnu-0.5.1.tgz",
181+ "integrity": "sha512-uLGc9jtxwiDe4cQyhNPQim4ECiB/YzbWlXssfLAv8r374kArfTwBHjwR2+j+XVyF71yCx5mF9YNRclRqdNBgeg==",
182+ "cpu": [
183+ "x64"
184+ ],
185+ "libc": [
186+ "glibc"
187+ ],
188+ "license": "MIT",
189+ "optional": true,
190+ "os": [
191+ "linux"
192+ ],
193+ "engines": {
194+ "node": "^20.19.0 || >=22.12.0"
195+ }
196+ },
197+ "node_modules/@astrojs/compiler-binding-linux-x64-musl": {
198+ "version": "0.5.1",
199+ "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-linux-x64-musl/-/compiler-binding-linux-x64-musl-0.5.1.tgz",
200+ "integrity": "sha512-G0cywinaQUc8v1MrytvYKUX7svTDMmYtOCZfxjwKPbJi59zIqM+Ll0rWgO0GQWLZH3XoPYo19ZwlP3Xt9ep9YA==",
201+ "cpu": [
202+ "x64"
203+ ],
204+ "libc": [
205+ "musl"
206+ ],
207+ "license": "MIT",
208+ "optional": true,
209+ "os": [
210+ "linux"
211+ ],
212+ "engines": {
213+ "node": "^20.19.0 || >=22.12.0"
214+ }
215+ },
216+ "node_modules/@astrojs/compiler-binding-wasm32-wasi": {
217+ "version": "0.5.1",
218+ "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-wasm32-wasi/-/compiler-binding-wasm32-wasi-0.5.1.tgz",
219+ "integrity": "sha512-yMhLL8asmLydoAdnEZxAw6eLfNDs3YJl6jqn0pjPt6zrb2U5qIDLnii4/twThpIFODKkQ6YDpBRTOz/vSfZCxw==",
220+ "cpu": [
221+ "wasm32"
222+ ],
223+ "license": "MIT",
224+ "optional": true,
225+ "dependencies": {
226+ "@emnapi/core": "1.11.3",
227+ "@emnapi/runtime": "1.11.3",
228+ "@napi-rs/wasm-runtime": "^1.2.4"
229+ },
230+ "engines": {
231+ "node": "^20.19.0 || >=22.12.0"
232+ }
233+ },
234+ "node_modules/@astrojs/compiler-binding-win32-arm64-msvc": {
235+ "version": "0.5.1",
236+ "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-win32-arm64-msvc/-/compiler-binding-win32-arm64-msvc-0.5.1.tgz",
237+ "integrity": "sha512-aClIG6poFt3Wf/bZykrEAX2nAnKvBHW6RXiKUa69QjBtWH0/FOlOAjnFcxRNlhej2AMWNYFx0o+LGjwMcH8P7Q==",
238+ "cpu": [
239+ "arm64"
240+ ],
241+ "license": "MIT",
242+ "optional": true,
243+ "os": [
244+ "win32"
245+ ],
246+ "engines": {
247+ "node": "^20.19.0 || >=22.12.0"
248+ }
249+ },
250+ "node_modules/@astrojs/compiler-binding-win32-x64-msvc": {
251+ "version": "0.5.1",
252+ "resolved": "https://registry.npmjs.org/@astrojs/compiler-binding-win32-x64-msvc/-/compiler-binding-win32-x64-msvc-0.5.1.tgz",
253+ "integrity": "sha512-/E6uBCagY70YpWqssBC+/FuniNSloeQPRgj7l3LDWiqjxIyTLnIgX1sTt18FU7jrigetpSnC9cHAM6b6IxSgPw==",
254+ "cpu": [
255+ "x64"
256+ ],
257+ "license": "MIT",
258+ "optional": true,
259+ "os": [
260+ "win32"
261+ ],
262+ "engines": {
263+ "node": "^20.19.0 || >=22.12.0"
264+ }
265+ },
266+ "node_modules/@astrojs/compiler-rs": {
267+ "version": "0.5.1",
268+ "resolved": "https://registry.npmjs.org/@astrojs/compiler-rs/-/compiler-rs-0.5.1.tgz",
269+ "integrity": "sha512-1k1acnX7DepIiea9U9/Y+d1hdAFfylu1ZQQkkYgRSwBOBAsXInolyZuh/2tax+83vu/A+hOYP6P3+265RvMTvw==",
270+ "license": "MIT",
271+ "dependencies": {
272+ "@astrojs/compiler-binding": "0.5.1"
273+ },
274+ "engines": {
275+ "node": ">=22.12.0"
276+ }
277+ },
278+ "node_modules/@astrojs/internal-helpers": {
279+ "version": "0.11.0",
280+ "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.11.0.tgz",
281+ "integrity": "sha512-3rzxJ+xbo0+8YyqOzLziIN32wmsHdCjEVz2sGOpRxJ+Ben/KiLph4ItxBy1abEL+E8fkRzqjg0rfXmaHJGw9JA==",
282+ "license": "MIT",
283+ "dependencies": {
284+ "@types/hast": "^3.0.4",
285+ "@types/mdast": "^4.0.4",
286+ "js-yaml": "^4.3.0",
287+ "picomatch": "^4.0.4",
288+ "retext-smartypants": "^6.2.0",
289+ "shiki": "^4.0.2",
290+ "smol-toml": "^1.6.0",
291+ "unified": "^11.0.5"
292+ }
293+ },
294+ "node_modules/@astrojs/markdown-satteri": {
295+ "version": "0.4.2",
296+ "resolved": "https://registry.npmjs.org/@astrojs/markdown-satteri/-/markdown-satteri-0.4.2.tgz",
297+ "integrity": "sha512-g4QehXnB/MzxQWnSf17NciFInMqEJy9948p8cc7zGg/r7995m0Ln5PMr3Xlnj24iey1LchaoZ3SzTOa3D4P/3w==",
298+ "license": "MIT",
299+ "dependencies": {
300+ "@astrojs/internal-helpers": "0.11.0",
301+ "@astrojs/prism": "4.0.2",
302+ "github-slugger": "^2.0.0",
303+ "satteri": "^0.10.3"
304+ }
305+ },
306+ "node_modules/@astrojs/mdx": {
307+ "version": "8.0.2",
308+ "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-8.0.2.tgz",
309+ "integrity": "sha512-WedIVP2Bu8fXSzxb3ZYZ8xDrWWjf2SRKCneh52Llhoa+O3lcpHPhoZVP3FerlivUaH/0LJz2yVaCNvMdg0u8Bw==",
310+ "license": "MIT",
311+ "dependencies": {
312+ "@astrojs/internal-helpers": "0.11.0",
313+ "@astrojs/markdown-satteri": "0.4.2",
314+ "es-module-lexer": "^2.0.0"
315+ },
316+ "engines": {
317+ "node": ">=22.12.0"
318+ },
319+ "peerDependencies": {
320+ "@astrojs/markdown-remark": "^7.3.0",
321+ "@astrojs/markdown-satteri": "^0.4.0",
322+ "astro": "^7.2.10"
323+ },
324+ "peerDependenciesMeta": {
325+ "@astrojs/markdown-remark": {
326+ "optional": true
327+ }
328+ }
329+ },
330+ "node_modules/@astrojs/prism": {
331+ "version": "4.0.2",
332+ "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-4.0.2.tgz",
333+ "integrity": "sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA==",
334+ "license": "MIT",
335+ "dependencies": {
336+ "prismjs": "^1.30.0"
337+ },
338+ "engines": {
339+ "node": ">=22.12.0"
340+ }
341+ },
342+ "node_modules/@astrojs/sitemap": {
343+ "version": "3.7.4",
344+ "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.7.4.tgz",
345+ "integrity": "sha512-LbKNC24bdUWcQf/pThB6qLlSqHojxGjZDURIzFocY8rlWnAn2t74nnhnK6S5x0NHriHoAduLEpVjRykmeGiVvA==",
346+ "license": "MIT",
347+ "dependencies": {
348+ "sitemap": "^9.0.0",
349+ "zod": "^4.3.6"
350+ }
351+ },
352+ "node_modules/@astrojs/starlight": {
353+ "version": "0.42.5",
354+ "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.42.5.tgz",
355+ "integrity": "sha512-S6hjUexk9rrKtjJF3WR8T9dM1woNR7X2XU8e3wj4OpRT4X15AXk/mzPjWe/Qd5+P8whHj2+ves+k06qirBzimg==",
356+ "license": "MIT",
357+ "dependencies": {
358+ "@astrojs/markdown-satteri": "^0.4.0",
359+ "@astrojs/mdx": "^8.0.0",
360+ "@astrojs/sitemap": "^3.7.3",
361+ "@pagefind/default-ui": "^1.3.0",
362+ "@types/hast": "^3.0.5",
363+ "@types/js-yaml": "^4.0.9",
364+ "@types/mdast": "^4.0.4",
365+ "astro-expressive-code": "^0.44.0",
366+ "bcp-47": "^2.1.0",
367+ "hast-util-format": "^1.1.0",
368+ "hast-util-select": "^6.0.4",
369+ "hast-util-to-html": "^9.0.5",
370+ "hast-util-to-string": "^3.0.1",
371+ "hastscript": "^9.0.1",
372+ "i18next": "^26.0.7",
373+ "js-yaml": "^4.1.1",
374+ "klona": "^2.0.6",
375+ "magic-string": "^1.2.3",
376+ "mdast-util-directive": "^3.1.0",
377+ "mdast-util-to-markdown": "^2.1.2",
378+ "mdast-util-to-string": "^4.0.0",
379+ "pagefind": "^1.5.2",
380+ "remark-directive": "^4.0.0",
381+ "satteri": "^0.10.3",
382+ "ultrahtml": "^1.6.0",
383+ "unified": "^11.0.5",
384+ "unist-util-visit": "^5.1.0",
385+ "vfile": "^6.0.3"
386+ },
387+ "peerDependencies": {
388+ "@astrojs/markdown-remark": "^7.3.0",
389+ "astro": "^7.2.10"
390+ },
391+ "peerDependenciesMeta": {
392+ "@astrojs/markdown-remark": {
393+ "optional": true
394+ }
395+ }
396+ },
397+ "node_modules/@astrojs/starlight/node_modules/magic-string": {
398+ "version": "1.4.2",
399+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.4.2.tgz",
400+ "integrity": "sha512-vG+rjFRj1PqdIBozIxAGMjPlOhaVe+GXpbttY/iSK7rGcJRMlwNJO7dcUwmUqkymsFLJiNGI06t4D7Fr7yRC9g==",
401+ "license": "MIT",
402+ "dependencies": {
403+ "@jridgewell/sourcemap-codec": "^1.6.0"
404+ }
405+ },
406+ "node_modules/@astrojs/telemetry": {
407+ "version": "3.3.3",
408+ "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.3.tgz",
409+ "integrity": "sha512-C1TLn5sPJr0x4vk56piHWKbnqlEB8BKyte5Y45V02U+D7BGO5eMqZDH5aPjnkXQWJggvmsTXxH03QMZ9NgWLzQ==",
410+ "license": "MIT",
411+ "dependencies": {
412+ "ci-info": "^4.4.0",
413+ "dset": "^3.1.4",
414+ "is-docker": "^4.0.0",
415+ "package-manager-detector": "^1.6.0"
416+ },
417+ "engines": {
418+ "node": "18.20.8 || ^20.3.0 || >=22.0.0"
419+ }
420+ },
59421 "node_modules/@babel/code-frame": {
60422 "version": "7.29.7",
61423 "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
223585 "version": "7.29.7",
224586 "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
225587 "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==",
226− "dev": true,
227588 "license": "MIT",
228589 "engines": {
229590 "node": ">=6.9.0"
233594 "version": "7.29.7",
234595 "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
235596 "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
236− "dev": true,
237597 "license": "MIT",
238598 "engines": {
239599 "node": ">=6.9.0"
267627 "version": "7.29.9",
268628 "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.9.tgz",
269629 "integrity": "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==",
270− "dev": true,
271630 "license": "MIT",
272631 "dependencies": {
273632 "@babel/types": "^7.29.8"
317676 "version": "7.29.8",
318677 "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
319678 "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
320− "dev": true,
321679 "license": "MIT",
322680 "dependencies": {
323681 "@babel/helper-string-parser": "^7.29.7",
327685 "node": ">=6.9.0"
328686 }
329687 },
688+ "node_modules/@bruits/satteri-darwin-arm64": {
689+ "version": "0.10.5",
690+ "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-arm64/-/satteri-darwin-arm64-0.10.5.tgz",
691+ "integrity": "sha512-27KTVl4TJkVahMy/ohyA7qd4938G5UNneFUz/PsScYfpIhj0IVAS23mpcJXdPF44sa6nva198lmV/cKIb2YPyA==",
692+ "cpu": [
693+ "arm64"
694+ ],
695+ "license": "MIT",
696+ "optional": true,
697+ "os": [
698+ "darwin"
699+ ]
700+ },
701+ "node_modules/@bruits/satteri-darwin-x64": {
702+ "version": "0.10.5",
703+ "resolved": "https://registry.npmjs.org/@bruits/satteri-darwin-x64/-/satteri-darwin-x64-0.10.5.tgz",
704+ "integrity": "sha512-IjnLe3nKspq6qaeqGgjT7MT8VrTV74yWRlaag7ZdNsI8TDAYZ0iPxMCo+9KQZHUk5EyVB+reBI/PFWL5KuFw9Q==",
705+ "cpu": [
706+ "x64"
707+ ],
708+ "license": "MIT",
709+ "optional": true,
710+ "os": [
711+ "darwin"
712+ ]
713+ },
714+ "node_modules/@bruits/satteri-linux-arm64-gnu": {
715+ "version": "0.10.5",
716+ "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-gnu/-/satteri-linux-arm64-gnu-0.10.5.tgz",
717+ "integrity": "sha512-glkYXZCJywjP13v67eAyAMSJdF+ncvEbYvgi/wOtffL9tQ27lr/zsyzUfgs+ovjJ9d8JNQKiXeiArJcX8PJL9w==",
718+ "cpu": [
719+ "arm64"
720+ ],
721+ "libc": [
722+ "glibc"
723+ ],
724+ "license": "MIT",
725+ "optional": true,
726+ "os": [
727+ "linux"
728+ ]
729+ },
730+ "node_modules/@bruits/satteri-linux-arm64-musl": {
731+ "version": "0.10.5",
732+ "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-arm64-musl/-/satteri-linux-arm64-musl-0.10.5.tgz",
733+ "integrity": "sha512-yWdgG1g17Nh2QyGVlFUxGRa3FEFwiMcpZEyMNWkbM3deC94cmVc+/i9OuyFpdKuWo3GkgoCtYVOoxk1uCnCZIA==",
734+ "cpu": [
735+ "arm64"
736+ ],
737+ "libc": [
738+ "musl"
739+ ],
740+ "license": "MIT",
741+ "optional": true,
742+ "os": [
743+ "linux"
744+ ]
745+ },
746+ "node_modules/@bruits/satteri-linux-x64-gnu": {
747+ "version": "0.10.5",
748+ "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-gnu/-/satteri-linux-x64-gnu-0.10.5.tgz",
749+ "integrity": "sha512-FVaLoPT1fBgGl0J+AYebyyXJYBachGl8Oyyrf1lye4RTqCB4S0Gwkj1uM9RJyThUOvx5VUmAT1CnNh1SFHA+kw==",
750+ "cpu": [
751+ "x64"
752+ ],
753+ "libc": [
754+ "glibc"
755+ ],
756+ "license": "MIT",
757+ "optional": true,
758+ "os": [
759+ "linux"
760+ ]
761+ },
762+ "node_modules/@bruits/satteri-linux-x64-musl": {
763+ "version": "0.10.5",
764+ "resolved": "https://registry.npmjs.org/@bruits/satteri-linux-x64-musl/-/satteri-linux-x64-musl-0.10.5.tgz",
765+ "integrity": "sha512-EHpVAx2bqW3GINHTKkljtxVfQmVDGWIuwOYOP5YghTj+0PkBa2o8oKPRtQ9Kbsr1Fye8jtUcDjhwj2jMNugZKg==",
766+ "cpu": [
767+ "x64"
768+ ],
769+ "libc": [
770+ "musl"
771+ ],
772+ "license": "MIT",
773+ "optional": true,
774+ "os": [
775+ "linux"
776+ ]
777+ },
778+ "node_modules/@bruits/satteri-wasm32-wasi": {
779+ "version": "0.10.5",
780+ "resolved": "https://registry.npmjs.org/@bruits/satteri-wasm32-wasi/-/satteri-wasm32-wasi-0.10.5.tgz",
781+ "integrity": "sha512-ypz8c/Zmipxp4IoeDa228Gstv6TLzVmNs3yC6wKCoNSOjx1iwpgzu87Y3hTkXFdwChVGU85qeUDuOIarGUZQLw==",
782+ "cpu": [
783+ "wasm32"
784+ ],
785+ "license": "MIT",
786+ "optional": true,
787+ "dependencies": {
788+ "@emnapi/core": "1.11.1",
789+ "@emnapi/runtime": "1.11.1",
790+ "@napi-rs/wasm-runtime": "^1.2.3"
791+ },
792+ "engines": {
793+ "node": ">=14.0.0"
794+ }
795+ },
796+ "node_modules/@bruits/satteri-wasm32-wasi/node_modules/@emnapi/core": {
797+ "version": "1.11.1",
798+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz",
799+ "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==",
800+ "license": "MIT",
801+ "optional": true,
802+ "dependencies": {
803+ "@emnapi/wasi-threads": "1.2.2",
804+ "tslib": "^2.4.0"
805+ }
806+ },
807+ "node_modules/@bruits/satteri-wasm32-wasi/node_modules/@emnapi/runtime": {
808+ "version": "1.11.1",
809+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz",
810+ "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==",
811+ "license": "MIT",
812+ "optional": true,
813+ "dependencies": {
814+ "tslib": "^2.4.0"
815+ }
816+ },
817+ "node_modules/@bruits/satteri-wasm32-wasi/node_modules/@emnapi/wasi-threads": {
818+ "version": "1.2.2",
819+ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz",
820+ "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==",
821+ "license": "MIT",
822+ "optional": true,
823+ "dependencies": {
824+ "tslib": "^2.4.0"
825+ }
826+ },
827+ "node_modules/@bruits/satteri-win32-arm64-msvc": {
828+ "version": "0.10.5",
829+ "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-arm64-msvc/-/satteri-win32-arm64-msvc-0.10.5.tgz",
830+ "integrity": "sha512-siTV88nb0LRqNpkL2gXboqCwVdq95sLtzMHS1/3eONV2gLbB3NAK46wmSMvCO/yquBvI2lvaFIfd8P12ecsxBw==",
831+ "cpu": [
832+ "arm64"
833+ ],
834+ "license": "MIT",
835+ "optional": true,
836+ "os": [
837+ "win32"
838+ ]
839+ },
840+ "node_modules/@bruits/satteri-win32-x64-msvc": {
841+ "version": "0.10.5",
842+ "resolved": "https://registry.npmjs.org/@bruits/satteri-win32-x64-msvc/-/satteri-win32-x64-msvc-0.10.5.tgz",
843+ "integrity": "sha512-C3IfPvfvMXmlzBxaMPKFS1XiuV9pu2mC7YqkPk7PSvTgPZ8gbdASIpHpztDLvTTQjqZ0z1Ol8tK5X+V6XXC0wQ==",
844+ "cpu": [
845+ "x64"
846+ ],
847+ "license": "MIT",
848+ "optional": true,
849+ "os": [
850+ "win32"
851+ ]
852+ },
853+ "node_modules/@capsizecss/unpack": {
854+ "version": "4.0.1",
855+ "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-4.0.1.tgz",
856+ "integrity": "sha512-CuNiSqg7+e1cO/GjffyMOm5Tt2jUF9CWHHnvQ/UkqvtkGfHdgwEC0wpmq7fkN3gxwpRnrAN0WzO3vREKmNolMQ==",
857+ "license": "MIT",
858+ "dependencies": {
859+ "fontkitten": "^1.0.3"
860+ },
861+ "engines": {
862+ "node": ">=18"
863+ }
864+ },
865+ "node_modules/@clack/core": {
866+ "version": "1.5.1",
867+ "resolved": "https://registry.npmjs.org/@clack/core/-/core-1.5.1.tgz",
868+ "integrity": "sha512-iHTrHA8MtVuLl2TfZySmcKv1qO2PoyC9Z7pfSDozEuV5vtY3/wcOPKJXlqJ5Oq2Cx5DDGQGAMVx6HZfRRoVEbQ==",
869+ "license": "MIT",
870+ "dependencies": {
871+ "fast-wrap-ansi": "^0.2.0",
872+ "sisteransi": "^1.0.5"
873+ },
874+ "engines": {
875+ "node": ">= 20.12.0"
876+ }
877+ },
878+ "node_modules/@clack/prompts": {
879+ "version": "1.8.1",
880+ "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-1.8.1.tgz",
881+ "integrity": "sha512-dlT1m5e/0yUL0kRNcQn7yGLVThkgbB0Ga/1AmfDDC/8ik6AIiSf2QLQO2zPYvefsHP0aFgxO93cVLCCfDp7kzQ==",
882+ "license": "MIT",
883+ "dependencies": {
884+ "@clack/core": "1.5.1",
885+ "fast-string-width": "^3.0.2",
886+ "fast-wrap-ansi": "^0.2.0",
887+ "sisteransi": "^1.0.5"
888+ },
889+ "engines": {
890+ "node": ">= 20.12.0"
891+ }
892+ },
330893 "node_modules/@cloudflare/containers": {
331894 "version": "0.3.7",
332895 "resolved": "https://registry.npmjs.org/@cloudflare/containers/-/containers-0.3.7.tgz",
4791042 "node": ">=12"
4801043 }
4811044 },
1045+ "node_modules/@ctrl/tinycolor": {
1046+ "version": "4.2.1",
1047+ "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-4.2.1.tgz",
1048+ "integrity": "sha512-Vh5uy9Y1JBMId6J1f68TMXnZrTCvNdo9Fu2k0d1YnJngR+sM5kWTKl441c/3TFs+cG0NWOjRWgQ/iaWhbYx+7A==",
1049+ "license": "MIT",
1050+ "engines": {
1051+ "node": ">=14"
1052+ }
1053+ },
1054+ "node_modules/@emnapi/core": {
1055+ "version": "1.11.3",
1056+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.3.tgz",
1057+ "integrity": "sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==",
1058+ "license": "MIT",
1059+ "optional": true,
1060+ "dependencies": {
1061+ "@emnapi/wasi-threads": "1.2.3",
1062+ "tslib": "^2.4.0"
1063+ }
1064+ },
4821065 "node_modules/@emnapi/runtime": {
4831066 "version": "1.11.3",
4841067 "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz",
4851068 "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==",
486− "dev": true,
4871069 "license": "MIT",
4881070 "optional": true,
4891071 "dependencies": {
4901072 "tslib": "^2.4.0"
4911073 }
4921074 },
1075+ "node_modules/@emnapi/wasi-threads": {
1076+ "version": "1.2.3",
1077+ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.3.tgz",
1078+ "integrity": "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==",
1079+ "license": "MIT",
1080+ "optional": true,
1081+ "dependencies": {
1082+ "tslib": "^2.4.0"
1083+ }
1084+ },
4931085 "node_modules/@esbuild/aix-ppc64": {
4941086 "version": "0.28.1",
4951087 "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz",
4971089 "cpu": [
4981090 "ppc64"
4991091 ],
500− "dev": true,
5011092 "license": "MIT",
5021093 "optional": true,
5031094 "os": [
5141105 "cpu": [
5151106 "arm"
5161107 ],
517− "dev": true,
5181108 "license": "MIT",
5191109 "optional": true,
5201110 "os": [
5311121 "cpu": [
5321122 "arm64"
5331123 ],
534− "dev": true,
5351124 "license": "MIT",
5361125 "optional": true,
5371126 "os": [
5481137 "cpu": [
5491138 "x64"
5501139 ],
551− "dev": true,
5521140 "license": "MIT",
5531141 "optional": true,
5541142 "os": [
5651153 "cpu": [
5661154 "arm64"
5671155 ],
568− "dev": true,
5691156 "license": "MIT",
5701157 "optional": true,
5711158 "os": [
5821169 "cpu": [
5831170 "x64"
5841171 ],
585− "dev": true,
5861172 "license": "MIT",
5871173 "optional": true,
5881174 "os": [
5991185 "cpu": [
6001186 "arm64"
6011187 ],
602− "dev": true,
6031188 "license": "MIT",
6041189 "optional": true,
6051190 "os": [
6161201 "cpu": [
6171202 "x64"
6181203 ],
619− "dev": true,
6201204 "license": "MIT",
6211205 "optional": true,
6221206 "os": [
6331217 "cpu": [
6341218 "arm"
6351219 ],
636− "dev": true,
6371220 "license": "MIT",
6381221 "optional": true,
6391222 "os": [
6501233 "cpu": [
6511234 "arm64"
6521235 ],
653− "dev": true,
6541236 "license": "MIT",
6551237 "optional": true,
6561238 "os": [
6671249 "cpu": [
6681250 "ia32"
6691251 ],
670− "dev": true,
6711252 "license": "MIT",
6721253 "optional": true,
6731254 "os": [
6841265 "cpu": [
6851266 "loong64"
6861267 ],
687− "dev": true,
6881268 "license": "MIT",
6891269 "optional": true,
6901270 "os": [
7011281 "cpu": [
7021282 "mips64el"
7031283 ],
704− "dev": true,
7051284 "license": "MIT",
7061285 "optional": true,
7071286 "os": [
7181297 "cpu": [
7191298 "ppc64"
7201299 ],
721− "dev": true,
7221300 "license": "MIT",
7231301 "optional": true,
7241302 "os": [
7351313 "cpu": [
7361314 "riscv64"
7371315 ],
738− "dev": true,
7391316 "license": "MIT",
7401317 "optional": true,
7411318 "os": [
7521329 "cpu": [
7531330 "s390x"
7541331 ],
755− "dev": true,
7561332 "license": "MIT",
7571333 "optional": true,
7581334 "os": [
7691345 "cpu": [
7701346 "x64"
7711347 ],
772− "dev": true,
7731348 "license": "MIT",
7741349 "optional": true,
7751350 "os": [
7861361 "cpu": [
7871362 "arm64"
7881363 ],
789− "dev": true,
7901364 "license": "MIT",
7911365 "optional": true,
7921366 "os": [
8031377 "cpu": [
8041378 "x64"
8051379 ],
806− "dev": true,
8071380 "license": "MIT",
8081381 "optional": true,
8091382 "os": [
8201393 "cpu": [
8211394 "arm64"
8221395 ],
823− "dev": true,
8241396 "license": "MIT",
8251397 "optional": true,
8261398 "os": [
8371409 "cpu": [
8381410 "x64"
8391411 ],
840− "dev": true,
8411412 "license": "MIT",
8421413 "optional": true,
8431414 "os": [
8541425 "cpu": [
8551426 "arm64"
8561427 ],
857− "dev": true,
8581428 "license": "MIT",
8591429 "optional": true,
8601430 "os": [
8711441 "cpu": [
8721442 "x64"
8731443 ],
874− "dev": true,
8751444 "license": "MIT",
8761445 "optional": true,
8771446 "os": [
8881457 "cpu": [
8891458 "arm64"
8901459 ],
891− "dev": true,
8921460 "license": "MIT",
8931461 "optional": true,
8941462 "os": [
9051473 "cpu": [
9061474 "ia32"
9071475 ],
908− "dev": true,
9091476 "license": "MIT",
9101477 "optional": true,
9111478 "os": [
9221489 "cpu": [
9231490 "x64"
9241491 ],
925− "dev": true,
9261492 "license": "MIT",
9271493 "optional": true,
9281494 "os": [
9321498 "node": ">=18"
9331499 }
9341500 },
1501+ "node_modules/@expressive-code/core": {
1502+ "version": "0.44.2",
1503+ "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.44.2.tgz",
1504+ "integrity": "sha512-Yw5KonQCD1HoOO2P89y4wifqS9qrJcGVY0LkVMUsVZjhi++bhz4WwQ37inenKFNOEVo50P7cjoVsCdaVnUbq8w==",
1505+ "license": "MIT",
1506+ "dependencies": {
1507+ "@ctrl/tinycolor": "^4.0.4",
1508+ "hast-util-select": "^6.0.2",
1509+ "hast-util-to-html": "^9.0.1",
1510+ "hast-util-to-text": "^4.0.1",
1511+ "hastscript": "^9.0.0",
1512+ "postcss": "^8.4.38",
1513+ "postcss-nested": "^6.0.1",
1514+ "unist-util-visit": "^5.0.0",
1515+ "unist-util-visit-parents": "^6.0.1"
1516+ }
1517+ },
1518+ "node_modules/@expressive-code/plugin-frames": {
1519+ "version": "0.44.2",
1520+ "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.44.2.tgz",
1521+ "integrity": "sha512-gVLm6TQMNIRWIaM7o+mCtxkGNjLZY5/2faSTLoXeo9wv/Pkj/0QAtZyXPVPrRsPARqiipATNFmfvQFLJudxPHQ==",
1522+ "license": "MIT",
1523+ "dependencies": {
1524+ "@expressive-code/core": "^0.44.2"
1525+ }
1526+ },
1527+ "node_modules/@expressive-code/plugin-shiki": {
1528+ "version": "0.44.2",
1529+ "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.44.2.tgz",
1530+ "integrity": "sha512-ebWIvCDzXvjyD8rH6T6DfytYJw1GoArLR4nusIAE4VxXrCQf3d+owytiv010KU/dUg+SRLZskDn0N+HaFXeuSg==",
1531+ "license": "MIT",
1532+ "dependencies": {
1533+ "@expressive-code/core": "^0.44.2",
1534+ "shiki": "^4.0.2"
1535+ }
1536+ },
1537+ "node_modules/@expressive-code/plugin-text-markers": {
1538+ "version": "0.44.2",
1539+ "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.44.2.tgz",
1540+ "integrity": "sha512-SNI7EgUSiADqbqUzzMbj1ZeC/r2pa5eg3KyFOGAd3a7EsIA4qzjXQLp+ODWQtHVDKFCdGs4J3ovSJUqvKIK96g==",
1541+ "license": "MIT",
1542+ "dependencies": {
1543+ "@expressive-code/core": "^0.44.2"
1544+ }
1545+ },
9351546 "node_modules/@floating-ui/core": {
9361547 "version": "1.8.0",
9371548 "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.8.0.tgz",
9781589 "resolved": "packages/contracts",
9791590 "link": true
9801591 },
1592+ "node_modules/@g1t/docs": {
1593+ "resolved": "apps/docs",
1594+ "link": true
1595+ },
9811596 "node_modules/@g1t/events": {
9821597 "resolved": "services/events",
9831598 "link": true
9861601 "resolved": "services/runner",
9871602 "link": true
9881603 },
1604+ "node_modules/@g1t/theme": {
1605+ "resolved": "packages/theme",
1606+ "link": true
1607+ },
9891608 "node_modules/@g1t/web": {
9901609 "resolved": "apps/web",
9911610 "link": true
9981617 "version": "1.1.0",
9991618 "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz",
10001619 "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==",
1001− "dev": true,
10021620 "license": "MIT",
10031621 "engines": {
10041622 "node": ">=18"
10111629 "cpu": [
10121630 "arm64"
10131631 ],
1014− "dev": true,
10151632 "license": "Apache-2.0",
10161633 "optional": true,
10171634 "os": [
10341651 "cpu": [
10351652 "x64"
10361653 ],
1037− "dev": true,
10381654 "license": "Apache-2.0",
10391655 "optional": true,
10401656 "os": [
10541670 "version": "0.35.4",
10551671 "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.4.tgz",
10561672 "integrity": "sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==",
1057− "dev": true,
10581673 "license": "Apache-2.0",
10591674 "optional": true,
10601675 "os": [
10771692 "cpu": [
10781693 "arm64"
10791694 ],
1080− "dev": true,
10811695 "license": "LGPL-3.0-or-later",
10821696 "optional": true,
10831697 "os": [
10941708 "cpu": [
10951709 "x64"
10961710 ],
1097− "dev": true,
10981711 "license": "LGPL-3.0-or-later",
10991712 "optional": true,
11001713 "os": [
11111724 "cpu": [
11121725 "arm"
11131726 ],
1114− "dev": true,
11151727 "libc": [
11161728 "glibc"
11171729 ],
11311743 "cpu": [
11321744 "arm64"
11331745 ],
1134− "dev": true,
11351746 "libc": [
11361747 "glibc"
11371748 ],
11511762 "cpu": [
11521763 "ppc64"
11531764 ],
1154− "dev": true,
11551765 "libc": [
11561766 "glibc"
11571767 ],
11711781 "cpu": [
11721782 "riscv64"
11731783 ],
1174− "dev": true,
11751784 "libc": [
11761785 "glibc"
11771786 ],
11911800 "cpu": [
11921801 "s390x"
11931802 ],
1194− "dev": true,
11951803 "libc": [
11961804 "glibc"
11971805 ],
12111819 "cpu": [
12121820 "x64"
12131821 ],
1214− "dev": true,
12151822 "libc": [
12161823 "glibc"
12171824 ],
12311838 "cpu": [
12321839 "arm64"
12331840 ],
1234− "dev": true,
12351841 "libc": [
12361842 "musl"
12371843 ],
12511857 "cpu": [
12521858 "x64"
12531859 ],
1254− "dev": true,
12551860 "libc": [
12561861 "musl"
12571862 ],
12711876 "cpu": [
12721877 "arm"
12731878 ],
1274− "dev": true,
12751879 "libc": [
12761880 "glibc"
12771881 ],
12971901 "cpu": [
12981902 "arm64"
12991903 ],
1300− "dev": true,
13011904 "libc": [
13021905 "glibc"
13031906 ],
13231926 "cpu": [
13241927 "ppc64"
13251928 ],
1326− "dev": true,
13271929 "libc": [
13281930 "glibc"
13291931 ],
13491951 "cpu": [
13501952 "riscv64"
13511953 ],
1352− "dev": true,
13531954 "libc": [
13541955 "glibc"
13551956 ],
13751976 "cpu": [
13761977 "s390x"
13771978 ],
1378− "dev": true,
13791979 "libc": [
13801980 "glibc"
13811981 ],
14012001 "cpu": [
14022002 "x64"
14032003 ],
1404− "dev": true,
14052004 "libc": [
14062005 "glibc"
14072006 ],
14272026 "cpu": [
14282027 "arm64"
14292028 ],
1430− "dev": true,
14312029 "libc": [
14322030 "musl"
14332031 ],
14532051 "cpu": [
14542052 "x64"
14552053 ],
1456− "dev": true,
14572054 "libc": [
14582055 "musl"
14592056 ],
14762073 "version": "0.35.4",
14772074 "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.4.tgz",
14782075 "integrity": "sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==",
1479− "dev": true,
14802076 "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
14812077 "optional": true,
14822078 "dependencies": {
14962092 "cpu": [
14972093 "wasm32"
14982094 ],
1499− "dev": true,
15002095 "license": "Apache-2.0",
15012096 "optional": true,
15022097 "dependencies": {
15162111 "cpu": [
15172112 "arm64"
15182113 ],
1519− "dev": true,
15202114 "license": "Apache-2.0 AND LGPL-3.0-or-later",
15212115 "optional": true,
15222116 "os": [
15362130 "cpu": [
15372131 "ia32"
15382132 ],
1539− "dev": true,
15402133 "license": "Apache-2.0 AND LGPL-3.0-or-later",
15412134 "optional": true,
15422135 "os": [
15562149 "cpu": [
15572150 "x64"
15582151 ],
1559− "dev": true,
15602152 "license": "Apache-2.0 AND LGPL-3.0-or-later",
15612153 "optional": true,
15622154 "os": [
16272219 "version": "1.6.0",
16282220 "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz",
16292221 "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==",
1630− "dev": true,
16312222 "license": "MIT"
16322223 },
16332224 "node_modules/@jridgewell/trace-mapping": {
16412232 "@jridgewell/sourcemap-codec": "^1.4.10"
16422233 }
16432234 },
2235+ "node_modules/@napi-rs/wasm-runtime": {
2236+ "version": "1.2.4",
2237+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.4.tgz",
2238+ "integrity": "sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g==",
2239+ "license": "MIT",
2240+ "optional": true,
2241+ "dependencies": {
2242+ "@tybys/wasm-util": "^0.10.3"
2243+ },
2244+ "engines": {
2245+ "node": "^20.19.0 || ^22.13.0 || >=23.5.0"
2246+ },
2247+ "funding": {
2248+ "type": "github",
2249+ "url": "https://github.com/sponsors/Brooooooklyn"
2250+ },
2251+ "peerDependencies": {
2252+ "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4",
2253+ "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4"
2254+ }
2255+ },
2256+ "node_modules/@oslojs/encoding": {
2257+ "version": "1.1.0",
2258+ "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz",
2259+ "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==",
2260+ "license": "MIT"
2261+ },
16442262 "node_modules/@oxc-project/types": {
16452263 "version": "0.152.0",
16462264 "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.152.0.tgz",
16472265 "integrity": "sha512-oM/5rLBm2tPkg0iBgkH/FOeR3PCDpY19GTgAZjMFM8h9WI9VW7cLgzp6nwtarYKmovavIQZ+Fe/RKX/8C8O/Rw==",
1648− "dev": true,
16492266 "license": "MIT",
16502267 "funding": {
16512268 "url": "https://github.com/sponsors/oxc-project"
16522269 }
16532270 },
2271+ "node_modules/@pagefind/darwin-arm64": {
2272+ "version": "1.5.2",
2273+ "resolved": "https://registry.npmjs.org/@pagefind/darwin-arm64/-/darwin-arm64-1.5.2.tgz",
2274+ "integrity": "sha512-MXpI+7HsAdPkvJ0gk9xj9g541BCqBZOBbdwj9g6lB5LCj6kSV6nqDSjzcAJwvOsfu0fjwvC8hQU+ecfhp+MpiQ==",
2275+ "cpu": [
2276+ "arm64"
2277+ ],
2278+ "license": "MIT",
2279+ "optional": true,
2280+ "os": [
2281+ "darwin"
2282+ ]
2283+ },
2284+ "node_modules/@pagefind/darwin-x64": {
2285+ "version": "1.5.2",
2286+ "resolved": "https://registry.npmjs.org/@pagefind/darwin-x64/-/darwin-x64-1.5.2.tgz",
2287+ "integrity": "sha512-IojxFWMEJe0RQ7PQ3KXQsPIImNsbpPYpoZ+QUDrL8fAl/O27IX+LVLs74/UzEZy5uA2LD8Nz1AiwKr72vrkZQw==",
2288+ "cpu": [
2289+ "x64"
2290+ ],
2291+ "license": "MIT",
2292+ "optional": true,
2293+ "os": [
2294+ "darwin"
2295+ ]
2296+ },
2297+ "node_modules/@pagefind/default-ui": {
2298+ "version": "1.5.2",
2299+ "resolved": "https://registry.npmjs.org/@pagefind/default-ui/-/default-ui-1.5.2.tgz",
2300+ "integrity": "sha512-pm1LMnQg8N2B3n2TnjKlhaFihpz6zTiA4HiGQ6/slKO/+8K9CAU5kcjdSSPgpuk1PMuuN4hxLipUIifnrkl3Sg==",
2301+ "license": "MIT"
2302+ },
2303+ "node_modules/@pagefind/freebsd-x64": {
2304+ "version": "1.5.2",
2305+ "resolved": "https://registry.npmjs.org/@pagefind/freebsd-x64/-/freebsd-x64-1.5.2.tgz",
2306+ "integrity": "sha512-7EVzo9+0w+2cbe671BtMj10UlNo83I+HrLVLfRxO731svHRJKUfJ/mo05gU14pe9PCfpKNQT8FS3Xc/oDN6pOA==",
2307+ "cpu": [
2308+ "x64"
2309+ ],
2310+ "license": "MIT",
2311+ "optional": true,
2312+ "os": [
2313+ "freebsd"
2314+ ]
2315+ },
2316+ "node_modules/@pagefind/linux-arm64": {
2317+ "version": "1.5.2",
2318+ "resolved": "https://registry.npmjs.org/@pagefind/linux-arm64/-/linux-arm64-1.5.2.tgz",
2319+ "integrity": "sha512-Ovt9+K35sqzn8H3ZMXGwls4TD/wMJuvRtShHIsmUQREmaxjrDEX7gHckRCrwYJ4XE1H1p6HkLz3wukrAnsfXQw==",
2320+ "cpu": [
2321+ "arm64"
2322+ ],
2323+ "license": "MIT",
2324+ "optional": true,
2325+ "os": [
2326+ "linux"
2327+ ]
2328+ },
2329+ "node_modules/@pagefind/linux-x64": {
2330+ "version": "1.5.2",
2331+ "resolved": "https://registry.npmjs.org/@pagefind/linux-x64/-/linux-x64-1.5.2.tgz",
2332+ "integrity": "sha512-V+tFqHKXhQKq/WqPBD67AFy7scn1/aZID00ws4fSDd+1daSi5UHR9VVlRrOUYKxn3VuFQYRD7lYXdZK1WED1YA==",
2333+ "cpu": [
2334+ "x64"
2335+ ],
2336+ "license": "MIT",
2337+ "optional": true,
2338+ "os": [
2339+ "linux"
2340+ ]
2341+ },
2342+ "node_modules/@pagefind/windows-arm64": {
2343+ "version": "1.5.2",
2344+ "resolved": "https://registry.npmjs.org/@pagefind/windows-arm64/-/windows-arm64-1.5.2.tgz",
2345+ "integrity": "sha512-hN9Nh90fNW61nNRCW9ZyQrAj/mD0eRvmJ8NlTUzkbuW8kIzGJUi3cxjFkEcMZ5h/8FsKWD/VcouZl4yo1F7B6g==",
2346+ "cpu": [
2347+ "arm64"
2348+ ],
2349+ "license": "MIT",
2350+ "optional": true,
2351+ "os": [
2352+ "win32"
2353+ ]
2354+ },
2355+ "node_modules/@pagefind/windows-x64": {
2356+ "version": "1.5.2",
2357+ "resolved": "https://registry.npmjs.org/@pagefind/windows-x64/-/windows-x64-1.5.2.tgz",
2358+ "integrity": "sha512-Fa2Iyw7kaDRzGMfNYNUXNW2zbL5FQVDgSOcbDHdzBrDEdpqOqg8TcZ68F22ol6NJ9IGzvUdmeyZypLW5dyhqsg==",
2359+ "cpu": [
2360+ "x64"
2361+ ],
2362+ "license": "MIT",
2363+ "optional": true,
2364+ "os": [
2365+ "win32"
2366+ ]
2367+ },
16542368 "node_modules/@poppinss/colors": {
16552369 "version": "4.1.6",
16562370 "resolved": "https://registry.npmjs.org/@poppinss/colors/-/colors-4.1.6.tgz",
32823996 "cpu": [
32833997 "arm"
32843998 ],
3285− "dev": true,
32863999 "license": "MIT",
32874000 "optional": true,
32884001 "os": [
32994012 "cpu": [
33004013 "arm64"
33014014 ],
3302− "dev": true,
33034015 "license": "MIT",
33044016 "optional": true,
33054017 "os": [
33164028 "cpu": [
33174029 "arm64"
33184030 ],
3319− "dev": true,
33204031 "license": "MIT",
33214032 "optional": true,
33224033 "os": [
33334044 "cpu": [
33344045 "x64"
33354046 ],
3336− "dev": true,
33374047 "license": "MIT",
33384048 "optional": true,
33394049 "os": [
33504060 "cpu": [
33514061 "x64"
33524062 ],
3353− "dev": true,
33544063 "license": "MIT",
33554064 "optional": true,
33564065 "os": [
33674076 "cpu": [
33684077 "arm"
33694078 ],
3370− "dev": true,
33714079 "license": "MIT",
33724080 "optional": true,
33734081 "os": [
33844092 "cpu": [
33854093 "arm64"
33864094 ],
3387− "dev": true,
33884095 "libc": [
33894096 "glibc"
33904097 ],
34044111 "cpu": [
34054112 "arm64"
34064113 ],
3407− "dev": true,
34084114 "libc": [
34094115 "musl"
34104116 ],
34244130 "cpu": [
34254131 "ppc64"
34264132 ],
3427− "dev": true,
34284133 "libc": [
34294134 "glibc"
34304135 ],
34444149 "cpu": [
34454150 "s390x"
34464151 ],
3447− "dev": true,
34484152 "libc": [
34494153 "glibc"
34504154 ],
34644168 "cpu": [
34654169 "x64"
34664170 ],
3467− "dev": true,
34684171 "libc": [
34694172 "glibc"
34704173 ],
34844187 "cpu": [
34854188 "x64"
34864189 ],
3487− "dev": true,
34884190 "libc": [
34894191 "musl"
34904192 ],
35044206 "cpu": [
35054207 "arm64"
35064208 ],
3507− "dev": true,
35084209 "license": "MIT",
35094210 "optional": true,
35104211 "os": [
35214222 "cpu": [
35224223 "arm64"
35234224 ],
3524− "dev": true,
35254225 "license": "MIT",
35264226 "optional": true,
35274227 "os": [
35384238 "cpu": [
35394239 "x64"
35404240 ],
3541− "dev": true,
35424241 "license": "MIT",
35434242 "optional": true,
35444243 "os": [
35524251 "version": "1.0.1",
35534252 "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz",
35544253 "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==",
3555− "dev": true,
35564254 "license": "MIT"
35574255 },
35584256 "node_modules/@shikijs/core": {
39594657 "vite": "^5.2.0 || ^6 || ^7 || ^8"
39604658 }
39614659 },
4660+ "node_modules/@tybys/wasm-util": {
4661+ "version": "0.10.4",
4662+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.4.tgz",
4663+ "integrity": "sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==",
4664+ "license": "MIT",
4665+ "optional": true,
4666+ "dependencies": {
4667+ "tslib": "^2.4.0"
4668+ }
4669+ },
39624670 "node_modules/@types/debug": {
39634671 "version": "4.1.13",
39644672 "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz",
39924700 "@types/unist": "*"
39934701 }
39944702 },
4703+ "node_modules/@types/js-yaml": {
4704+ "version": "4.0.9",
4705+ "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz",
4706+ "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==",
4707+ "license": "MIT"
4708+ },
39954709 "node_modules/@types/mdast": {
39964710 "version": "4.0.4",
39974711 "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
40074721 "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
40084722 "license": "MIT"
40094723 },
4724+ "node_modules/@types/nlcst": {
4725+ "version": "2.0.3",
4726+ "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz",
4727+ "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==",
4728+ "license": "MIT",
4729+ "dependencies": {
4730+ "@types/unist": "*"
4731+ }
4732+ },
40104733 "node_modules/@types/node": {
40114734 "version": "22.20.5",
40124735 "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.5.tgz",
40134736 "integrity": "sha512-U2+DNr+wSjpsTS/wZGYHq7GcwfuSmKiKvoPvK22zwTlRhU91yOniN4qRR5KhIjvif7ysw/dz/hKmfDH0Ris4aA==",
4014− "dev": true,
40154737 "license": "MIT",
40164738 "dependencies": {
40174739 "undici-types": "~6.21.0"
40364758 "@types/react": "^19.3.0"
40374759 }
40384760 },
4761+ "node_modules/@types/sax": {
4762+ "version": "1.2.7",
4763+ "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz",
4764+ "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==",
4765+ "license": "MIT",
4766+ "dependencies": {
4767+ "@types/node": "*"
4768+ }
4769+ },
40394770 "node_modules/@types/unist": {
40404771 "version": "3.0.3",
40414772 "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
40484779 "integrity": "sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==",
40494780 "license": "ISC"
40504781 },
4782+ "node_modules/am-i-vibing": {
4783+ "version": "0.4.0",
4784+ "resolved": "https://registry.npmjs.org/am-i-vibing/-/am-i-vibing-0.4.0.tgz",
4785+ "integrity": "sha512-MxT4XZL7pzLHpuvhDKdMaQHMGGkJDLluKBLsbstn+8wv9sWcFT6h+0ve9qkml95amVTZtZV83gQe2hY+ojgHLg==",
4786+ "license": "MIT",
4787+ "dependencies": {
4788+ "process-ancestry": "^0.1.0"
4789+ },
4790+ "bin": {
4791+ "am-i-vibing": "dist/cli.mjs"
4792+ }
4793+ },
4794+ "node_modules/anymatch": {
4795+ "version": "3.1.3",
4796+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
4797+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
4798+ "license": "ISC",
4799+ "dependencies": {
4800+ "normalize-path": "^3.0.0",
4801+ "picomatch": "^2.0.4"
4802+ },
4803+ "engines": {
4804+ "node": ">= 8"
4805+ }
4806+ },
4807+ "node_modules/anymatch/node_modules/picomatch": {
4808+ "version": "2.3.2",
4809+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
4810+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
4811+ "license": "MIT",
4812+ "engines": {
4813+ "node": ">=8.6"
4814+ },
4815+ "funding": {
4816+ "url": "https://github.com/sponsors/jonschlinkert"
4817+ }
4818+ },
4819+ "node_modules/arg": {
4820+ "version": "5.0.2",
4821+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
4822+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
4823+ "license": "MIT"
4824+ },
4825+ "node_modules/argparse": {
4826+ "version": "2.0.1",
4827+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
4828+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
4829+ "license": "Python-2.0"
4830+ },
40514831 "node_modules/aria-hidden": {
40524832 "version": "1.2.6",
40534833 "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz",
40604840 "node": ">=10"
40614841 }
40624842 },
4843+ "node_modules/aria-query": {
4844+ "version": "5.3.2",
4845+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
4846+ "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
4847+ "license": "Apache-2.0",
4848+ "engines": {
4849+ "node": ">= 0.4"
4850+ }
4851+ },
4852+ "node_modules/astro": {
4853+ "version": "7.3.5",
4854+ "resolved": "https://registry.npmjs.org/astro/-/astro-7.3.5.tgz",
4855+ "integrity": "sha512-1p/ernaq/RuESbM5NMjWzbO6SiebMGrGcYlGjMfBhzzgM+n/X7AUmVyw8BqW2QYCdivpsHwJBcD1fqmlTZjZHg==",
4856+ "license": "MIT",
4857+ "dependencies": {
4858+ "@astrojs/compiler-rs": "^0.5.0",
4859+ "@astrojs/internal-helpers": "0.11.0",
4860+ "@astrojs/markdown-satteri": "0.4.2",
4861+ "@astrojs/telemetry": "3.3.3",
4862+ "@capsizecss/unpack": "^4.0.0",
4863+ "@clack/prompts": "^1.1.0",
4864+ "@oslojs/encoding": "^1.1.0",
4865+ "am-i-vibing": "^0.4.0",
4866+ "aria-query": "^5.3.2",
4867+ "axobject-query": "^4.1.0",
4868+ "ci-info": "^4.4.0",
4869+ "clsx": "^2.1.1",
4870+ "common-ancestor-path": "^2.0.0",
4871+ "cookie": "^2.0.1",
4872+ "devalue": "^5.8.1",
4873+ "diff": "^9.0.0",
4874+ "dset": "^3.1.4",
4875+ "es-module-lexer": "^2.0.0",
4876+ "esbuild": "^0.28.0",
4877+ "find-proc": "0.2.0",
4878+ "flattie": "^1.1.1",
4879+ "fontace": "~0.4.1",
4880+ "get-tsconfig": "5.0.0-beta.4",
4881+ "github-slugger": "^2.0.0",
4882+ "html-escaper": "3.0.3",
4883+ "http-cache-semantics": "^4.2.0",
4884+ "js-yaml": "^4.3.2",
4885+ "jsonc-parser": "^3.3.1",
4886+ "magic-string": "^1.0.0",
4887+ "magicast": "^0.5.2",
4888+ "mrmime": "^2.0.1",
4889+ "neotraverse": "^1.0.1",
4890+ "obug": "^3.0.0",
4891+ "p-limit": "^7.3.0",
4892+ "p-queue": "^9.1.0",
4893+ "package-manager-detector": "^1.6.0",
4894+ "piccolore": "^0.1.3",
4895+ "picomatch": "^4.0.4",
4896+ "shiki": "^4.0.2",
4897+ "smol-toml": "^1.8.0",
4898+ "svgo": "^4.1.0",
4899+ "tinyclip": "^1.0.1",
4900+ "tinyexec": "^1.0.4",
4901+ "tinyglobby": "^0.2.15",
4902+ "ultrahtml": "^1.6.0",
4903+ "unifont": "~0.7.5",
4904+ "unstorage": "^1.17.5",
4905+ "verkit": "^0.4.0",
4906+ "vite": "^8.0.13",
4907+ "vitefu": "^1.1.2",
4908+ "xxhash-wasm": "^1.1.0",
4909+ "yargs-parser": "^22.0.0",
4910+ "zod": "^4.5.4"
4911+ },
4912+ "bin": {
4913+ "astro": "bin/astro.mjs"
4914+ },
4915+ "engines": {
4916+ "node": ">=22.12.0",
4917+ "npm": ">=9.6.5",
4918+ "pnpm": ">=7.1.0"
4919+ },
4920+ "funding": {
4921+ "type": "opencollective",
4922+ "url": "https://opencollective.com/astrodotbuild"
4923+ },
4924+ "optionalDependencies": {
4925+ "sharp": "^0.35.4"
4926+ },
4927+ "peerDependencies": {
4928+ "@astrojs/markdown-remark": "^7.3.0"
4929+ },
4930+ "peerDependenciesMeta": {
4931+ "@astrojs/markdown-remark": {
4932+ "optional": true
4933+ }
4934+ }
4935+ },
4936+ "node_modules/astro-expressive-code": {
4937+ "version": "0.44.2",
4938+ "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.44.2.tgz",
4939+ "integrity": "sha512-avop7nZcRwC7quvIxVguhwEZ9Tp6IoTzKUCLwP30Fb7+er+pWQgcysP01dcuzRIJo81kLGg30q/YAI2Yb1Sdzg==",
4940+ "license": "MIT",
4941+ "dependencies": {
4942+ "rehype-expressive-code": "^0.44.2",
4943+ "url-extras": "^0.1.0"
4944+ },
4945+ "peerDependencies": {
4946+ "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta || ^7.0.0"
4947+ }
4948+ },
4949+ "node_modules/astro/node_modules/cookie": {
4950+ "version": "2.0.1",
4951+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-2.0.1.tgz",
4952+ "integrity": "sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w==",
4953+ "license": "MIT",
4954+ "engines": {
4955+ "node": ">=22"
4956+ },
4957+ "funding": {
4958+ "type": "opencollective",
4959+ "url": "https://opencollective.com/express"
4960+ }
4961+ },
4962+ "node_modules/astro/node_modules/magic-string": {
4963+ "version": "1.4.2",
4964+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-1.4.2.tgz",
4965+ "integrity": "sha512-vG+rjFRj1PqdIBozIxAGMjPlOhaVe+GXpbttY/iSK7rGcJRMlwNJO7dcUwmUqkymsFLJiNGI06t4D7Fr7yRC9g==",
4966+ "license": "MIT",
4967+ "dependencies": {
4968+ "@jridgewell/sourcemap-codec": "^1.6.0"
4969+ }
4970+ },
4971+ "node_modules/axobject-query": {
4972+ "version": "4.1.0",
4973+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
4974+ "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
4975+ "license": "Apache-2.0",
4976+ "engines": {
4977+ "node": ">= 0.4"
4978+ }
4979+ },
40634980 "node_modules/babel-dead-code-elimination": {
40644981 "version": "1.0.12",
40654982 "resolved": "https://registry.npmjs.org/babel-dead-code-elimination/-/babel-dead-code-elimination-1.0.12.tgz",
40965013 "node": ">=6.0.0"
40975014 }
40985015 },
5016+ "node_modules/bcp-47": {
5017+ "version": "2.1.1",
5018+ "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-2.1.1.tgz",
5019+ "integrity": "sha512-KLw+H/gd2p4zly1X7Yh/qziuyae5/w/QFnvTng9eZL5fvszL7Whl3MBoWF8yxL7ksUjBfOD+OxkytiqbBpG+Fw==",
5020+ "license": "MIT",
5021+ "dependencies": {
5022+ "is-alphabetical": "^2.0.0",
5023+ "is-alphanumerical": "^2.0.0",
5024+ "is-decimal": "^2.0.0"
5025+ },
5026+ "funding": {
5027+ "type": "github",
5028+ "url": "https://github.com/sponsors/wooorm"
5029+ }
5030+ },
5031+ "node_modules/bcp-47-match": {
5032+ "version": "2.0.3",
5033+ "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz",
5034+ "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==",
5035+ "license": "MIT",
5036+ "funding": {
5037+ "type": "github",
5038+ "url": "https://github.com/sponsors/wooorm"
5039+ }
5040+ },
40995041 "node_modules/blake3-wasm": {
41005042 "version": "2.1.5",
41015043 "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz",
41035045 "dev": true,
41045046 "license": "MIT"
41055047 },
5048+ "node_modules/boolbase": {
5049+ "version": "1.0.0",
5050+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
5051+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
5052+ "license": "ISC"
5053+ },
41065054 "node_modules/browserslist": {
41075055 "version": "4.29.3",
41085056 "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.29.3.tgz",
42125160 "version": "5.0.0",
42135161 "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz",
42145162 "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==",
4215− "dev": true,
42165163 "license": "MIT",
42175164 "dependencies": {
42185165 "readdirp": "^5.0.0"
42245171 "url": "https://paulmillr.com/funding/"
42255172 }
42265173 },
5174+ "node_modules/ci-info": {
5175+ "version": "4.4.0",
5176+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz",
5177+ "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==",
5178+ "funding": [
5179+ {
5180+ "type": "github",
5181+ "url": "https://github.com/sponsors/sibiraj-s"
5182+ }
5183+ ],
5184+ "license": "MIT",
5185+ "engines": {
5186+ "node": ">=8"
5187+ }
5188+ },
42275189 "node_modules/class-variance-authority": {
42285190 "version": "0.7.1",
42295191 "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz",
42555217 "url": "https://github.com/sponsors/wooorm"
42565218 }
42575219 },
5220+ "node_modules/commander": {
5221+ "version": "11.1.0",
5222+ "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
5223+ "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
5224+ "license": "MIT",
5225+ "engines": {
5226+ "node": ">=16"
5227+ }
5228+ },
5229+ "node_modules/common-ancestor-path": {
5230+ "version": "2.0.0",
5231+ "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-2.0.0.tgz",
5232+ "integrity": "sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng==",
5233+ "license": "BlueOak-1.0.0",
5234+ "engines": {
5235+ "node": ">= 18"
5236+ }
5237+ },
42585238 "node_modules/confbox": {
42595239 "version": "0.3.1",
42605240 "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.3.1.tgz",
42895269 "integrity": "sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg==",
42905270 "license": "MIT"
42915271 },
5272+ "node_modules/crossws": {
5273+ "version": "0.3.5",
5274+ "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz",
5275+ "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==",
5276+ "license": "MIT",
5277+ "dependencies": {
5278+ "uncrypto": "^0.1.3"
5279+ }
5280+ },
5281+ "node_modules/css-select": {
5282+ "version": "6.0.0",
5283+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-6.0.0.tgz",
5284+ "integrity": "sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==",
5285+ "license": "BSD-2-Clause",
5286+ "dependencies": {
5287+ "boolbase": "^1.0.0",
5288+ "css-what": "^7.0.0",
5289+ "domhandler": "^5.0.3",
5290+ "domutils": "^3.2.2",
5291+ "nth-check": "^2.1.1"
5292+ },
5293+ "funding": {
5294+ "url": "https://github.com/sponsors/fb55"
5295+ }
5296+ },
5297+ "node_modules/css-selector-parser": {
5298+ "version": "3.3.0",
5299+ "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.3.0.tgz",
5300+ "integrity": "sha512-Y2asgMGFqJKF4fq4xHDSlFYIkeVfRsm69lQC1q9kbEsH5XtnINTMrweLkjYMeaUgiXBy/uvKeO/a1JHTNnmB2g==",
5301+ "funding": [
5302+ {
5303+ "type": "github",
5304+ "url": "https://github.com/sponsors/mdevils"
5305+ },
5306+ {
5307+ "type": "patreon",
5308+ "url": "https://patreon.com/mdevils"
5309+ }
5310+ ],
5311+ "license": "MIT"
5312+ },
5313+ "node_modules/css-tree": {
5314+ "version": "3.2.1",
5315+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz",
5316+ "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==",
5317+ "license": "MIT",
5318+ "dependencies": {
5319+ "mdn-data": "2.27.1",
5320+ "source-map-js": "^1.2.1"
5321+ },
5322+ "engines": {
5323+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
5324+ }
5325+ },
5326+ "node_modules/css-what": {
5327+ "version": "7.0.0",
5328+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-7.0.0.tgz",
5329+ "integrity": "sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==",
5330+ "license": "BSD-2-Clause",
5331+ "engines": {
5332+ "node": ">= 6"
5333+ },
5334+ "funding": {
5335+ "url": "https://github.com/sponsors/fb55"
5336+ }
5337+ },
5338+ "node_modules/cssesc": {
5339+ "version": "3.0.0",
5340+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
5341+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
5342+ "license": "MIT",
5343+ "bin": {
5344+ "cssesc": "bin/cssesc"
5345+ },
5346+ "engines": {
5347+ "node": ">=4"
5348+ }
5349+ },
5350+ "node_modules/csso": {
5351+ "version": "5.0.5",
5352+ "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
5353+ "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
5354+ "license": "MIT",
5355+ "dependencies": {
5356+ "css-tree": "~2.2.0"
5357+ },
5358+ "engines": {
5359+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
5360+ "npm": ">=7.0.0"
5361+ }
5362+ },
5363+ "node_modules/csso/node_modules/css-tree": {
5364+ "version": "2.2.1",
5365+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz",
5366+ "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==",
5367+ "license": "MIT",
5368+ "dependencies": {
5369+ "mdn-data": "2.0.28",
5370+ "source-map-js": "^1.0.1"
5371+ },
5372+ "engines": {
5373+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
5374+ "npm": ">=7.0.0"
5375+ }
5376+ },
5377+ "node_modules/csso/node_modules/mdn-data": {
5378+ "version": "2.0.28",
5379+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz",
5380+ "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
5381+ "license": "CC0-1.0"
5382+ },
42925383 "node_modules/csstype": {
42935384 "version": "3.2.3",
42945385 "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
43405431 }
43415432 }
43425433 },
5434+ "node_modules/defu": {
5435+ "version": "6.1.7",
5436+ "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz",
5437+ "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==",
5438+ "license": "MIT"
5439+ },
43435440 "node_modules/dequal": {
43445441 "version": "2.0.3",
43455442 "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
43495446 "node": ">=6"
43505447 }
43515448 },
5449+ "node_modules/destr": {
5450+ "version": "2.0.5",
5451+ "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz",
5452+ "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==",
5453+ "license": "MIT"
5454+ },
43525455 "node_modules/detect-libc": {
43535456 "version": "2.1.2",
43545457 "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
43555458 "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
4356− "dev": true,
43575459 "license": "Apache-2.0",
43585460 "engines": {
43595461 "node": ">=8"
43655467 "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==",
43665468 "license": "MIT"
43675469 },
5470+ "node_modules/devalue": {
5471+ "version": "5.9.4",
5472+ "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.9.4.tgz",
5473+ "integrity": "sha512-sPAT4pztbu6586/hrhOnMKS17IJrvg12mXiSPSS3W5qDeN2RGgvZ0diZCm31dBbnevfVmujNO3IM2wrS4Y2Rhg==",
5474+ "license": "MIT"
5475+ },
43685476 "node_modules/devlop": {
43695477 "version": "1.1.0",
43705478 "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
43785486 "url": "https://github.com/sponsors/wooorm"
43795487 }
43805488 },
5489+ "node_modules/diff": {
5490+ "version": "9.0.0",
5491+ "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz",
5492+ "integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==",
5493+ "license": "BSD-3-Clause",
5494+ "engines": {
5495+ "node": ">=0.3.1"
5496+ }
5497+ },
5498+ "node_modules/direction": {
5499+ "version": "2.0.1",
5500+ "resolved": "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz",
5501+ "integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==",
5502+ "license": "MIT",
5503+ "bin": {
5504+ "direction": "cli.js"
5505+ },
5506+ "funding": {
5507+ "type": "github",
5508+ "url": "https://github.com/sponsors/wooorm"
5509+ }
5510+ },
5511+ "node_modules/dom-serializer": {
5512+ "version": "2.0.0",
5513+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
5514+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
5515+ "license": "MIT",
5516+ "dependencies": {
5517+ "domelementtype": "^2.3.0",
5518+ "domhandler": "^5.0.2",
5519+ "entities": "^4.2.0"
5520+ },
5521+ "funding": {
5522+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
5523+ }
5524+ },
5525+ "node_modules/domelementtype": {
5526+ "version": "2.3.0",
5527+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
5528+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
5529+ "funding": [
5530+ {
5531+ "type": "github",
5532+ "url": "https://github.com/sponsors/fb55"
5533+ }
5534+ ],
5535+ "license": "BSD-2-Clause"
5536+ },
5537+ "node_modules/domhandler": {
5538+ "version": "5.0.3",
5539+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
5540+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
5541+ "license": "BSD-2-Clause",
5542+ "dependencies": {
5543+ "domelementtype": "^2.3.0"
5544+ },
5545+ "engines": {
5546+ "node": ">= 4"
5547+ },
5548+ "funding": {
5549+ "url": "https://github.com/fb55/domhandler?sponsor=1"
5550+ }
5551+ },
5552+ "node_modules/domutils": {
5553+ "version": "3.2.2",
5554+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
5555+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
5556+ "license": "BSD-2-Clause",
5557+ "dependencies": {
5558+ "dom-serializer": "^2.0.0",
5559+ "domelementtype": "^2.3.0",
5560+ "domhandler": "^5.0.3"
5561+ },
5562+ "funding": {
5563+ "url": "https://github.com/fb55/domutils?sponsor=1"
5564+ }
5565+ },
5566+ "node_modules/dset": {
5567+ "version": "3.1.4",
5568+ "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz",
5569+ "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==",
5570+ "license": "MIT",
5571+ "engines": {
5572+ "node": ">=4"
5573+ }
5574+ },
43815575 "node_modules/electron-to-chromium": {
43825576 "version": "1.5.444",
43835577 "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.444.tgz",
43995593 "node": ">=10.13.0"
44005594 }
44015595 },
5596+ "node_modules/entities": {
5597+ "version": "4.5.0",
5598+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
5599+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
5600+ "license": "BSD-2-Clause",
5601+ "engines": {
5602+ "node": ">=0.12"
5603+ },
5604+ "funding": {
5605+ "url": "https://github.com/fb55/entities?sponsor=1"
5606+ }
5607+ },
44025608 "node_modules/error-stack-parser-es": {
44035609 "version": "1.0.5",
44045610 "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-1.0.5.tgz",
44135619 "version": "2.3.2",
44145620 "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz",
44155621 "integrity": "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==",
4416− "dev": true,
44175622 "license": "MIT"
44185623 },
44195624 "node_modules/esbuild": {
44205625 "version": "0.28.1",
44215626 "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz",
44225627 "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==",
4423− "dev": true,
44245628 "hasInstallScript": true,
44255629 "license": "MIT",
44265630 "bin": {
44905694 "url": "https://opencollective.com/unified"
44915695 }
44925696 },
5697+ "node_modules/eventemitter3": {
5698+ "version": "5.0.4",
5699+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz",
5700+ "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==",
5701+ "license": "MIT"
5702+ },
44935703 "node_modules/exit-hook": {
44945704 "version": "5.1.0",
44955705 "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-5.1.0.tgz",
45035713 "url": "https://github.com/sponsors/sindresorhus"
45045714 }
45055715 },
5716+ "node_modules/expressive-code": {
5717+ "version": "0.44.2",
5718+ "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.44.2.tgz",
5719+ "integrity": "sha512-MLNghkvhyFgVW4oCD5DxBuYnnTXIf0PygzGmfT6OZeOOYWh/D4sH1j931biElkA5RG/J9wY/iuSMGAPF5vzHOg==",
5720+ "license": "MIT",
5721+ "dependencies": {
5722+ "@expressive-code/core": "^0.44.2",
5723+ "@expressive-code/plugin-frames": "^0.44.2",
5724+ "@expressive-code/plugin-shiki": "^0.44.2",
5725+ "@expressive-code/plugin-text-markers": "^0.44.2"
5726+ }
5727+ },
45065728 "node_modules/exsolve": {
45075729 "version": "1.1.1",
45085730 "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.1.1.tgz",
45165738 "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
45175739 "license": "MIT"
45185740 },
5741+ "node_modules/fast-string-truncated-width": {
5742+ "version": "3.0.3",
5743+ "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz",
5744+ "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==",
5745+ "license": "MIT"
5746+ },
5747+ "node_modules/fast-string-width": {
5748+ "version": "3.0.2",
5749+ "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz",
5750+ "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==",
5751+ "license": "MIT",
5752+ "dependencies": {
5753+ "fast-string-truncated-width": "^3.0.2"
5754+ }
5755+ },
5756+ "node_modules/fast-wrap-ansi": {
5757+ "version": "0.2.2",
5758+ "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz",
5759+ "integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==",
5760+ "license": "MIT",
5761+ "dependencies": {
5762+ "fast-string-width": "^3.0.2"
5763+ }
5764+ },
45195765 "node_modules/fdir": {
45205766 "version": "6.5.0",
45215767 "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
45225768 "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
4523− "dev": true,
45245769 "license": "MIT",
45255770 "engines": {
45265771 "node": ">=12.0.0"
45345779 }
45355780 }
45365781 },
5782+ "node_modules/find-proc": {
5783+ "version": "0.2.0",
5784+ "resolved": "https://registry.npmjs.org/find-proc/-/find-proc-0.2.0.tgz",
5785+ "integrity": "sha512-a6h2nTrgB3g5Wrn4au9Ux4kMk7IJtyF6oA8uGn+mk3weLZssUtc1cp6meHIzzuW2o1srrBAxzkmXLbqjRkgB6w==",
5786+ "license": "MIT",
5787+ "engines": {
5788+ "node": "^20.19.0 || >=22.12.0"
5789+ }
5790+ },
5791+ "node_modules/flattie": {
5792+ "version": "1.1.1",
5793+ "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz",
5794+ "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==",
5795+ "license": "MIT",
5796+ "engines": {
5797+ "node": ">=8"
5798+ }
5799+ },
5800+ "node_modules/fontace": {
5801+ "version": "0.4.1",
5802+ "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.4.1.tgz",
5803+ "integrity": "sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==",
5804+ "license": "MIT",
5805+ "dependencies": {
5806+ "fontkitten": "^1.0.2"
5807+ }
5808+ },
5809+ "node_modules/fontkitten": {
5810+ "version": "1.0.3",
5811+ "resolved": "https://registry.npmjs.org/fontkitten/-/fontkitten-1.0.3.tgz",
5812+ "integrity": "sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==",
5813+ "license": "MIT",
5814+ "dependencies": {
5815+ "tiny-inflate": "^1.0.3"
5816+ },
5817+ "engines": {
5818+ "node": ">=20"
5819+ }
5820+ },
45375821 "node_modules/fsevents": {
45385822 "version": "2.3.3",
45395823 "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
45405824 "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
4541− "dev": true,
45425825 "hasInstallScript": true,
45435826 "license": "MIT",
45445827 "optional": true,
45685851 "node": ">=6"
45695852 }
45705853 },
5854+ "node_modules/get-tsconfig": {
5855+ "version": "5.0.0-beta.4",
5856+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-5.0.0-beta.4.tgz",
5857+ "integrity": "sha512-7nF7C9fIPFEMHgEMEfgIlO9wDdZ8CyHw27rWciFZfHvHDReIiPhsYuzPRXsfvBCqFy1l8RRyyWV7QLM+ZhUJsQ==",
5858+ "license": "MIT",
5859+ "dependencies": {
5860+ "resolve-pkg-maps": "^1.0.0"
5861+ },
5862+ "engines": {
5863+ "node": ">=20.20.0"
5864+ },
5865+ "funding": {
5866+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
5867+ }
5868+ },
5869+ "node_modules/github-slugger": {
5870+ "version": "2.0.0",
5871+ "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz",
5872+ "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==",
5873+ "license": "ISC"
5874+ },
45715875 "node_modules/graceful-fs": {
45725876 "version": "4.2.11",
45735877 "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
45755879 "dev": true,
45765880 "license": "ISC"
45775881 },
5882+ "node_modules/h3": {
5883+ "version": "1.15.11",
5884+ "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.11.tgz",
5885+ "integrity": "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==",
5886+ "license": "MIT",
5887+ "dependencies": {
5888+ "cookie-es": "^1.2.3",
5889+ "crossws": "^0.3.5",
5890+ "defu": "^6.1.6",
5891+ "destr": "^2.0.5",
5892+ "iron-webcrypto": "^1.2.1",
5893+ "node-mock-http": "^1.0.4",
5894+ "radix3": "^1.1.2",
5895+ "ufo": "^1.6.3",
5896+ "uncrypto": "^0.1.3"
5897+ }
5898+ },
5899+ "node_modules/h3/node_modules/cookie-es": {
5900+ "version": "1.2.3",
5901+ "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.3.tgz",
5902+ "integrity": "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==",
5903+ "license": "MIT"
5904+ },
5905+ "node_modules/hast-util-embedded": {
5906+ "version": "3.0.0",
5907+ "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz",
5908+ "integrity": "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==",
5909+ "license": "MIT",
5910+ "dependencies": {
5911+ "@types/hast": "^3.0.0",
5912+ "hast-util-is-element": "^3.0.0"
5913+ },
5914+ "funding": {
5915+ "type": "opencollective",
5916+ "url": "https://opencollective.com/unified"
5917+ }
5918+ },
5919+ "node_modules/hast-util-format": {
5920+ "version": "1.1.0",
5921+ "resolved": "https://registry.npmjs.org/hast-util-format/-/hast-util-format-1.1.0.tgz",
5922+ "integrity": "sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==",
5923+ "license": "MIT",
5924+ "dependencies": {
5925+ "@types/hast": "^3.0.0",
5926+ "hast-util-embedded": "^3.0.0",
5927+ "hast-util-minify-whitespace": "^1.0.0",
5928+ "hast-util-phrasing": "^3.0.0",
5929+ "hast-util-whitespace": "^3.0.0",
5930+ "html-whitespace-sensitive-tag-names": "^3.0.0",
5931+ "unist-util-visit-parents": "^6.0.0"
5932+ },
5933+ "funding": {
5934+ "type": "opencollective",
5935+ "url": "https://opencollective.com/unified"
5936+ }
5937+ },
5938+ "node_modules/hast-util-has-property": {
5939+ "version": "3.0.0",
5940+ "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz",
5941+ "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==",
5942+ "license": "MIT",
5943+ "dependencies": {
5944+ "@types/hast": "^3.0.0"
5945+ },
5946+ "funding": {
5947+ "type": "opencollective",
5948+ "url": "https://opencollective.com/unified"
5949+ }
5950+ },
5951+ "node_modules/hast-util-is-body-ok-link": {
5952+ "version": "3.0.1",
5953+ "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-3.0.1.tgz",
5954+ "integrity": "sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==",
5955+ "license": "MIT",
5956+ "dependencies": {
5957+ "@types/hast": "^3.0.0"
5958+ },
5959+ "funding": {
5960+ "type": "opencollective",
5961+ "url": "https://opencollective.com/unified"
5962+ }
5963+ },
5964+ "node_modules/hast-util-is-element": {
5965+ "version": "3.0.0",
5966+ "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz",
5967+ "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==",
5968+ "license": "MIT",
5969+ "dependencies": {
5970+ "@types/hast": "^3.0.0"
5971+ },
5972+ "funding": {
5973+ "type": "opencollective",
5974+ "url": "https://opencollective.com/unified"
5975+ }
5976+ },
5977+ "node_modules/hast-util-minify-whitespace": {
5978+ "version": "1.0.1",
5979+ "resolved": "https://registry.npmjs.org/hast-util-minify-whitespace/-/hast-util-minify-whitespace-1.0.1.tgz",
5980+ "integrity": "sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==",
5981+ "license": "MIT",
5982+ "dependencies": {
5983+ "@types/hast": "^3.0.0",
5984+ "hast-util-embedded": "^3.0.0",
5985+ "hast-util-is-element": "^3.0.0",
5986+ "hast-util-whitespace": "^3.0.0",
5987+ "unist-util-is": "^6.0.0"
5988+ },
5989+ "funding": {
5990+ "type": "opencollective",
5991+ "url": "https://opencollective.com/unified"
5992+ }
5993+ },
5994+ "node_modules/hast-util-parse-selector": {
5995+ "version": "4.0.0",
5996+ "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz",
5997+ "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==",
5998+ "license": "MIT",
5999+ "dependencies": {
6000+ "@types/hast": "^3.0.0"
6001+ },
6002+ "funding": {
6003+ "type": "opencollective",
6004+ "url": "https://opencollective.com/unified"
6005+ }
6006+ },
6007+ "node_modules/hast-util-phrasing": {
6008+ "version": "3.0.1",
6009+ "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-3.0.1.tgz",
6010+ "integrity": "sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==",
6011+ "license": "MIT",
6012+ "dependencies": {
6013+ "@types/hast": "^3.0.0",
6014+ "hast-util-embedded": "^3.0.0",
6015+ "hast-util-has-property": "^3.0.0",
6016+ "hast-util-is-body-ok-link": "^3.0.0",
6017+ "hast-util-is-element": "^3.0.0"
6018+ },
6019+ "funding": {
6020+ "type": "opencollective",
6021+ "url": "https://opencollective.com/unified"
6022+ }
6023+ },
6024+ "node_modules/hast-util-select": {
6025+ "version": "6.0.4",
6026+ "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.4.tgz",
6027+ "integrity": "sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==",
6028+ "license": "MIT",
6029+ "dependencies": {
6030+ "@types/hast": "^3.0.0",
6031+ "@types/unist": "^3.0.0",
6032+ "bcp-47-match": "^2.0.0",
6033+ "comma-separated-tokens": "^2.0.0",
6034+ "css-selector-parser": "^3.0.0",
6035+ "devlop": "^1.0.0",
6036+ "direction": "^2.0.0",
6037+ "hast-util-has-property": "^3.0.0",
6038+ "hast-util-to-string": "^3.0.0",
6039+ "hast-util-whitespace": "^3.0.0",
6040+ "nth-check": "^2.0.0",
6041+ "property-information": "^7.0.0",
6042+ "space-separated-tokens": "^2.0.0",
6043+ "unist-util-visit": "^5.0.0",
6044+ "zwitch": "^2.0.0"
6045+ },
6046+ "funding": {
6047+ "type": "opencollective",
6048+ "url": "https://opencollective.com/unified"
6049+ }
6050+ },
45786051 "node_modules/hast-util-to-html": {
45796052 "version": "9.0.5",
45806053 "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz",
46256098 "url": "https://opencollective.com/unified"
46266099 }
46276100 },
6101+ "node_modules/hast-util-to-string": {
6102+ "version": "3.0.1",
6103+ "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz",
6104+ "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==",
6105+ "license": "MIT",
6106+ "dependencies": {
6107+ "@types/hast": "^3.0.0"
6108+ },
6109+ "funding": {
6110+ "type": "opencollective",
6111+ "url": "https://opencollective.com/unified"
6112+ }
6113+ },
6114+ "node_modules/hast-util-to-text": {
6115+ "version": "4.0.2",
6116+ "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz",
6117+ "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==",
6118+ "license": "MIT",
6119+ "dependencies": {
6120+ "@types/hast": "^3.0.0",
6121+ "@types/unist": "^3.0.0",
6122+ "hast-util-is-element": "^3.0.0",
6123+ "unist-util-find-after": "^5.0.0"
6124+ },
6125+ "funding": {
6126+ "type": "opencollective",
6127+ "url": "https://opencollective.com/unified"
6128+ }
6129+ },
46286130 "node_modules/hast-util-whitespace": {
46296131 "version": "3.0.0",
46306132 "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
46386140 "url": "https://opencollective.com/unified"
46396141 }
46406142 },
6143+ "node_modules/hastscript": {
6144+ "version": "9.0.1",
6145+ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz",
6146+ "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==",
6147+ "license": "MIT",
6148+ "dependencies": {
6149+ "@types/hast": "^3.0.0",
6150+ "comma-separated-tokens": "^2.0.0",
6151+ "hast-util-parse-selector": "^4.0.0",
6152+ "property-information": "^7.0.0",
6153+ "space-separated-tokens": "^2.0.0"
6154+ },
6155+ "funding": {
6156+ "type": "opencollective",
6157+ "url": "https://opencollective.com/unified"
6158+ }
6159+ },
46416160 "node_modules/hono": {
46426161 "version": "4.13.12",
46436162 "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.12.tgz",
46476166 "node": ">=16.9.0"
46486167 }
46496168 },
6169+ "node_modules/html-escaper": {
6170+ "version": "3.0.3",
6171+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz",
6172+ "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==",
6173+ "license": "MIT"
6174+ },
46506175 "node_modules/html-url-attributes": {
46516176 "version": "3.0.1",
46526177 "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz",
46676192 "url": "https://github.com/sponsors/wooorm"
46686193 }
46696194 },
6195+ "node_modules/html-whitespace-sensitive-tag-names": {
6196+ "version": "3.0.1",
6197+ "resolved": "https://registry.npmjs.org/html-whitespace-sensitive-tag-names/-/html-whitespace-sensitive-tag-names-3.0.1.tgz",
6198+ "integrity": "sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==",
6199+ "license": "MIT",
6200+ "funding": {
6201+ "type": "opencollective",
6202+ "url": "https://opencollective.com/unified"
6203+ }
6204+ },
6205+ "node_modules/http-cache-semantics": {
6206+ "version": "4.2.0",
6207+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
6208+ "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
6209+ "license": "BSD-2-Clause"
6210+ },
6211+ "node_modules/i18next": {
6212+ "version": "26.4.2",
6213+ "resolved": "https://registry.npmjs.org/i18next/-/i18next-26.4.2.tgz",
6214+ "integrity": "sha512-RX+R0VLg13IbvRuJSxnqykUFS9vQZTl8wYpWPCIUDWVrSGjsQywB5Y+pjzrkboxGAuYfJZVH1InFTdgBdxq6ug==",
6215+ "funding": [
6216+ {
6217+ "type": "individual",
6218+ "url": "https://www.locize.com/i18next"
6219+ },
6220+ {
6221+ "type": "individual",
6222+ "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project"
6223+ },
6224+ {
6225+ "type": "individual",
6226+ "url": "https://www.locize.com"
6227+ }
6228+ ],
6229+ "license": "MIT",
6230+ "peerDependencies": {
6231+ "typescript": "^5 || ^6 || ^7"
6232+ },
6233+ "peerDependenciesMeta": {
6234+ "typescript": {
6235+ "optional": true
6236+ }
6237+ }
6238+ },
46706239 "node_modules/inline-style-parser": {
46716240 "version": "0.2.7",
46726241 "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz",
46736242 "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==",
46746243 "license": "MIT"
46756244 },
6245+ "node_modules/iron-webcrypto": {
6246+ "version": "1.2.1",
6247+ "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz",
6248+ "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==",
6249+ "license": "MIT",
6250+ "funding": {
6251+ "url": "https://github.com/sponsors/brc-dd"
6252+ }
6253+ },
46766254 "node_modules/is-alphabetical": {
46776255 "version": "2.0.1",
46786256 "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
47076285 "url": "https://github.com/sponsors/wooorm"
47086286 }
47096287 },
6288+ "node_modules/is-docker": {
6289+ "version": "4.0.0",
6290+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-4.0.0.tgz",
6291+ "integrity": "sha512-LHE+wROyG/Y/0ZnbktRCoTix2c1RhgWaZraMZ8o1Q7zCh0VSrICJQO5oqIIISrcSBtrXv0o233w1IYwsWCjTzA==",
6292+ "license": "MIT",
6293+ "bin": {
6294+ "is-docker": "cli.js"
6295+ },
6296+ "engines": {
6297+ "node": ">=20"
6298+ },
6299+ "funding": {
6300+ "url": "https://github.com/sponsors/sindresorhus"
6301+ }
6302+ },
47106303 "node_modules/is-hexadecimal": {
47116304 "version": "2.0.1",
47126305 "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
47426335 "version": "2.7.0",
47436336 "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz",
47446337 "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==",
4745− "dev": true,
6338+ "devOptional": true,
47466339 "license": "MIT",
47476340 "bin": {
47486341 "jiti": "lib/jiti-cli.mjs"
47556348 "dev": true,
47566349 "license": "MIT"
47576350 },
6351+ "node_modules/js-yaml": {
6352+ "version": "4.3.2",
6353+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz",
6354+ "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==",
6355+ "funding": [
6356+ {
6357+ "type": "github",
6358+ "url": "https://github.com/sponsors/puzrin"
6359+ },
6360+ {
6361+ "type": "github",
6362+ "url": "https://github.com/sponsors/nodeca"
6363+ }
6364+ ],
6365+ "license": "MIT",
6366+ "dependencies": {
6367+ "argparse": "^2.0.1"
6368+ },
6369+ "bin": {
6370+ "js-yaml": "bin/js-yaml.js"
6371+ }
6372+ },
47586373 "node_modules/jsesc": {
47596374 "version": "3.1.0",
47606375 "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
47816396 "node": ">=6"
47826397 }
47836398 },
6399+ "node_modules/jsonc-parser": {
6400+ "version": "3.3.1",
6401+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
6402+ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
6403+ "license": "MIT"
6404+ },
47846405 "node_modules/kleur": {
47856406 "version": "4.1.5",
47866407 "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
47916412 "node": ">=6"
47926413 }
47936414 },
6415+ "node_modules/klona": {
6416+ "version": "2.0.6",
6417+ "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz",
6418+ "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==",
6419+ "license": "MIT",
6420+ "engines": {
6421+ "node": ">= 8"
6422+ }
6423+ },
47946424 "node_modules/lightningcss": {
47956425 "version": "1.32.0",
47966426 "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz",
51166746 "@jridgewell/sourcemap-codec": "^1.5.5"
51176747 }
51186748 },
6749+ "node_modules/magicast": {
6750+ "version": "0.5.5",
6751+ "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.5.tgz",
6752+ "integrity": "sha512-UicdXN8zQ3JHlxVq+28afMXPr1z7WNY6+7EJnzTdQWkTAlMLF5fNCCKxJHBQwGaNGR11581EiQmQzx73+MvszA==",
6753+ "license": "MIT",
6754+ "dependencies": {
6755+ "@babel/parser": "^7.29.7",
6756+ "@babel/types": "^7.29.7",
6757+ "source-map-js": "^1.2.1"
6758+ }
6759+ },
51196760 "node_modules/markdown-table": {
51206761 "version": "3.0.4",
51216762 "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz",
51266767 "url": "https://github.com/sponsors/wooorm"
51276768 }
51286769 },
6770+ "node_modules/mdast-util-directive": {
6771+ "version": "3.1.0",
6772+ "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz",
6773+ "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==",
6774+ "license": "MIT",
6775+ "dependencies": {
6776+ "@types/mdast": "^4.0.0",
6777+ "@types/unist": "^3.0.0",
6778+ "ccount": "^2.0.0",
6779+ "devlop": "^1.0.0",
6780+ "mdast-util-from-markdown": "^2.0.0",
6781+ "mdast-util-to-markdown": "^2.0.0",
6782+ "parse-entities": "^4.0.0",
6783+ "stringify-entities": "^4.0.0",
6784+ "unist-util-visit-parents": "^6.0.0"
6785+ },
6786+ "funding": {
6787+ "type": "opencollective",
6788+ "url": "https://opencollective.com/unified"
6789+ }
6790+ },
51296791 "node_modules/mdast-util-find-and-replace": {
51306792 "version": "3.0.2",
51316793 "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz",
53987060 "url": "https://opencollective.com/unified"
53997061 }
54007062 },
7063+ "node_modules/mdn-data": {
7064+ "version": "2.27.1",
7065+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz",
7066+ "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==",
7067+ "license": "CC0-1.0"
7068+ },
54017069 "node_modules/micromark": {
54027070 "version": "4.0.3",
54037071 "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.3.tgz",
54697137 "micromark-util-types": "^2.0.3"
54707138 }
54717139 },
7140+ "node_modules/micromark-extension-directive": {
7141+ "version": "4.0.0",
7142+ "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-4.0.0.tgz",
7143+ "integrity": "sha512-/C2nqVmXXmiseSSuCdItCMho7ybwwop6RrrRPk0KbOHW21JKoCldC+8rFOaundDoRBUWBnJJcxeA/Kvi34WQXg==",
7144+ "license": "MIT",
7145+ "dependencies": {
7146+ "devlop": "^1.0.0",
7147+ "micromark-factory-space": "^2.0.0",
7148+ "micromark-factory-whitespace": "^2.0.0",
7149+ "micromark-util-character": "^2.0.0",
7150+ "micromark-util-symbol": "^2.0.0",
7151+ "micromark-util-types": "^2.0.0",
7152+ "parse-entities": "^4.0.0"
7153+ },
7154+ "funding": {
7155+ "type": "opencollective",
7156+ "url": "https://opencollective.com/unified"
7157+ }
7158+ },
54727159 "node_modules/micromark-extension-gfm": {
54737160 "version": "3.0.0",
54747161 "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz",
60007687 "node": ">=22.0.0"
60017688 }
60027689 },
7690+ "node_modules/mrmime": {
7691+ "version": "2.0.1",
7692+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
7693+ "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==",
7694+ "license": "MIT",
7695+ "engines": {
7696+ "node": ">=10"
7697+ }
7698+ },
60037699 "node_modules/ms": {
60047700 "version": "2.1.3",
60057701 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
60107706 "version": "3.3.19",
60117707 "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.19.tgz",
60127708 "integrity": "sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==",
6013− "dev": true,
60147709 "funding": [
60157710 {
60167711 "type": "github",
60257720 "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
60267721 }
60277722 },
7723+ "node_modules/neotraverse": {
7724+ "version": "1.0.1",
7725+ "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-1.0.1.tgz",
7726+ "integrity": "sha512-WmmLty1YWwJl9yZi77v2dVIV6X2kuYV8YYBI/G3LWGKdGHmHUvL1z7FW0iDvEvGAwNEoc5x1tOOOyDnf5jJw/w==",
7727+ "license": "MIT",
7728+ "engines": {
7729+ "node": ">= 10"
7730+ }
7731+ },
7732+ "node_modules/nlcst-to-string": {
7733+ "version": "4.0.0",
7734+ "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz",
7735+ "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==",
7736+ "license": "MIT",
7737+ "dependencies": {
7738+ "@types/nlcst": "^2.0.0"
7739+ },
7740+ "funding": {
7741+ "type": "opencollective",
7742+ "url": "https://opencollective.com/unified"
7743+ }
7744+ },
7745+ "node_modules/node-fetch-native": {
7746+ "version": "1.6.7",
7747+ "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz",
7748+ "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==",
7749+ "license": "MIT"
7750+ },
7751+ "node_modules/node-mock-http": {
7752+ "version": "1.0.5",
7753+ "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.5.tgz",
7754+ "integrity": "sha512-KQyt/wLjG3TAc7DOUhpqWzgd4ERxR80JOlTK5VE5R1S12IaPVN5qkj4klBce9HPG1Njuup4Sb5bljaT34lIyjw==",
7755+ "license": "MIT"
7756+ },
60287757 "node_modules/node-releases": {
60297758 "version": "2.0.57",
60307759 "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.57.tgz",
60357764 "node": ">=18"
60367765 }
60377766 },
7767+ "node_modules/normalize-path": {
7768+ "version": "3.0.0",
7769+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
7770+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
7771+ "license": "MIT",
7772+ "engines": {
7773+ "node": ">=0.10.0"
7774+ }
7775+ },
7776+ "node_modules/nth-check": {
7777+ "version": "2.1.1",
7778+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
7779+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
7780+ "license": "BSD-2-Clause",
7781+ "dependencies": {
7782+ "boolbase": "^1.0.0"
7783+ },
7784+ "funding": {
7785+ "url": "https://github.com/fb55/nth-check?sponsor=1"
7786+ }
7787+ },
7788+ "node_modules/obug": {
7789+ "version": "3.0.0",
7790+ "resolved": "https://registry.npmjs.org/obug/-/obug-3.0.0.tgz",
7791+ "integrity": "sha512-5vvB5+W7ePv+p3uqxi+RcW1XAzLW0/hxt3/4X4Lc4qHudzOhmBiBwOY6DRob4WnanAEGvNcLjF+KNOufrUoEQw==",
7792+ "funding": [
7793+ "https://github.com/sponsors/sxzz",
7794+ "https://opencollective.com/debug"
7795+ ],
7796+ "license": "MIT",
7797+ "engines": {
7798+ "node": ">=12.20.0"
7799+ }
7800+ },
7801+ "node_modules/ofetch": {
7802+ "version": "1.5.1",
7803+ "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz",
7804+ "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==",
7805+ "license": "MIT",
7806+ "dependencies": {
7807+ "destr": "^2.0.5",
7808+ "node-fetch-native": "^1.6.7",
7809+ "ufo": "^1.6.1"
7810+ }
7811+ },
7812+ "node_modules/ohash": {
7813+ "version": "2.0.12",
7814+ "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.12.tgz",
7815+ "integrity": "sha512-65S/5gk9YSsaRjcyf7Nfa6h/d3E8/1gslpXfI4W7Dxn/oap8IKRuNT5VXkLQ1YFKIEg4apRY4Pj6aiwFzrDdmw==",
7816+ "license": "MIT"
7817+ },
60387818 "node_modules/oniguruma-parser": {
60397819 "version": "0.12.2",
60407820 "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.2.tgz",
60527832 "regex-recursion": "^6.0.2"
60537833 }
60547834 },
7835+ "node_modules/p-limit": {
7836+ "version": "7.3.3",
7837+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-7.3.3.tgz",
7838+ "integrity": "sha512-SKgVvDU5TNIxQ4r30U75BNLC6a+6GOEjngrk/ysM5+Zu3oJuk1SC5ApzIzY/7PjCEjoVPMWJ0zho/4QUiEB7TQ==",
7839+ "license": "MIT",
7840+ "dependencies": {
7841+ "yocto-queue": "^1.2.1"
7842+ },
7843+ "engines": {
7844+ "node": ">=20"
7845+ },
7846+ "funding": {
7847+ "url": "https://github.com/sponsors/sindresorhus"
7848+ }
7849+ },
60557850 "node_modules/p-map": {
60567851 "version": "7.0.8",
60577852 "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.8.tgz",
60657860 "url": "https://github.com/sponsors/sindresorhus"
60667861 }
60677862 },
7863+ "node_modules/p-queue": {
7864+ "version": "9.3.3",
7865+ "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-9.3.3.tgz",
7866+ "integrity": "sha512-NXAOdnEe5FsZJfT4oK84lE1Y5cFFdWlRuOo5tww8DyNMxyRXwn39fIkUtNLKppcPC+UYU/bXujNCUGDv01y7CA==",
7867+ "license": "MIT",
7868+ "dependencies": {
7869+ "eventemitter3": "^5.0.4",
7870+ "p-timeout": "^7.0.0"
7871+ },
7872+ "engines": {
7873+ "node": ">=20"
7874+ },
7875+ "funding": {
7876+ "url": "https://github.com/sponsors/sindresorhus"
7877+ }
7878+ },
7879+ "node_modules/p-timeout": {
7880+ "version": "7.0.2",
7881+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-7.0.2.tgz",
7882+ "integrity": "sha512-prbX4Z3YszrFNgH+MW5Zoeq3baXrMtP/MQnFeET90UB/GtGcGDQ5Usg9OCy6ETjTTntOw1SL2z9fMPUppN3Guw==",
7883+ "license": "MIT",
7884+ "engines": {
7885+ "node": ">=20"
7886+ },
7887+ "funding": {
7888+ "url": "https://github.com/sponsors/sindresorhus"
7889+ }
7890+ },
7891+ "node_modules/package-manager-detector": {
7892+ "version": "1.8.0",
7893+ "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.8.0.tgz",
7894+ "integrity": "sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==",
7895+ "license": "MIT"
7896+ },
7897+ "node_modules/pagefind": {
7898+ "version": "1.5.2",
7899+ "resolved": "https://registry.npmjs.org/pagefind/-/pagefind-1.5.2.tgz",
7900+ "integrity": "sha512-XTUaK0hXMCu2jszWE584JGQT7y284TmMV9l/HX3rnG5uo3rHI/uHU56XTyyyPFjeWEBxECbAi0CaFDJOONtG0Q==",
7901+ "license": "MIT",
7902+ "bin": {
7903+ "pagefind": "lib/runner/bin.cjs"
7904+ },
7905+ "optionalDependencies": {
7906+ "@pagefind/darwin-arm64": "1.5.2",
7907+ "@pagefind/darwin-x64": "1.5.2",
7908+ "@pagefind/freebsd-x64": "1.5.2",
7909+ "@pagefind/linux-arm64": "1.5.2",
7910+ "@pagefind/linux-x64": "1.5.2",
7911+ "@pagefind/windows-arm64": "1.5.2",
7912+ "@pagefind/windows-x64": "1.5.2"
7913+ }
7914+ },
60687915 "node_modules/parse-entities": {
60697916 "version": "4.0.2",
60707917 "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz",
61047951 "dev": true,
61057952 "license": "MIT"
61067953 },
7954+ "node_modules/piccolore": {
7955+ "version": "0.1.3",
7956+ "resolved": "https://registry.npmjs.org/piccolore/-/piccolore-0.1.3.tgz",
7957+ "integrity": "sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==",
7958+ "license": "ISC"
7959+ },
61077960 "node_modules/picocolors": {
61087961 "version": "1.1.1",
61097962 "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
61107963 "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
6111− "dev": true,
61127964 "license": "ISC"
61137965 },
61147966 "node_modules/picomatch": {
61157967 "version": "4.0.7",
61167968 "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz",
61177969 "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==",
6118− "dev": true,
61197970 "license": "MIT",
61207971 "engines": {
61217972 "node": ">=12"
61407991 "version": "8.5.28",
61417992 "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz",
61427993 "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==",
6143− "dev": true,
61447994 "funding": [
61457995 {
61467996 "type": "opencollective",
61658015 "node": "^10 || ^12 || >=14"
61668016 }
61678017 },
8018+ "node_modules/postcss-nested": {
8019+ "version": "6.2.0",
8020+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
8021+ "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
8022+ "funding": [
8023+ {
8024+ "type": "opencollective",
8025+ "url": "https://opencollective.com/postcss/"
8026+ },
8027+ {
8028+ "type": "github",
8029+ "url": "https://github.com/sponsors/ai"
8030+ }
8031+ ],
8032+ "license": "MIT",
8033+ "dependencies": {
8034+ "postcss-selector-parser": "^6.1.1"
8035+ },
8036+ "engines": {
8037+ "node": ">=12.0"
8038+ },
8039+ "peerDependencies": {
8040+ "postcss": "^8.2.14"
8041+ }
8042+ },
8043+ "node_modules/postcss-selector-parser": {
8044+ "version": "6.1.4",
8045+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz",
8046+ "integrity": "sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==",
8047+ "license": "MIT",
8048+ "dependencies": {
8049+ "cssesc": "^3.0.0",
8050+ "util-deprecate": "^1.0.2"
8051+ },
8052+ "engines": {
8053+ "node": ">=4"
8054+ }
8055+ },
8056+ "node_modules/prismjs": {
8057+ "version": "1.30.0",
8058+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz",
8059+ "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==",
8060+ "license": "MIT",
8061+ "engines": {
8062+ "node": ">=6"
8063+ }
8064+ },
8065+ "node_modules/process-ancestry": {
8066+ "version": "0.1.0",
8067+ "resolved": "https://registry.npmjs.org/process-ancestry/-/process-ancestry-0.1.0.tgz",
8068+ "integrity": "sha512-tGqJW/UnclpYASFcM6Xh8D8l/BMtaQ9+CSG0vlJSJTcdMM4lDRv4c6H0Pdcsfted+bVczdYSfk2fdukg2gQkZg==",
8069+ "license": "MIT",
8070+ "engines": {
8071+ "node": ">=18.0.0"
8072+ }
8073+ },
61688074 "node_modules/property-information": {
61698075 "version": "7.2.0",
61708076 "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz",
62528158 }
62538159 }
62548160 },
8161+ "node_modules/radix3": {
8162+ "version": "1.1.2",
8163+ "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz",
8164+ "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==",
8165+ "license": "MIT"
8166+ },
62558167 "node_modules/react": {
62568168 "version": "19.3.0",
62578169 "resolved": "https://registry.npmjs.org/react/-/react-19.3.0.tgz",
64058317 "version": "5.1.1",
64068318 "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz",
64078319 "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==",
6408− "dev": true,
64098320 "license": "MIT",
64108321 "engines": {
64118322 "node": ">= 20.19.0"
64398350 "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==",
64408351 "license": "MIT"
64418352 },
8353+ "node_modules/rehype-expressive-code": {
8354+ "version": "0.44.2",
8355+ "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.44.2.tgz",
8356+ "integrity": "sha512-jvjQpsfWKBquDrEl5YQA3CJybRRIuDOYsui1BJTs5oKDUK8pPkJSSxY8FjxNlIFIdtgrTjC1zuahuY4Cc1j9SQ==",
8357+ "license": "MIT",
8358+ "dependencies": {
8359+ "expressive-code": "^0.44.2"
8360+ }
8361+ },
8362+ "node_modules/remark-directive": {
8363+ "version": "4.0.0",
8364+ "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-4.0.0.tgz",
8365+ "integrity": "sha512-7sxn4RfF1o3izevPV1DheyGDD6X4c9hrGpfdUpm7uC++dqrnJxIZVkk7CoKqcLm0VUMAuOol7Mno3m6g8cfMuA==",
8366+ "license": "MIT",
8367+ "dependencies": {
8368+ "@types/mdast": "^4.0.0",
8369+ "mdast-util-directive": "^3.0.0",
8370+ "micromark-extension-directive": "^4.0.0",
8371+ "unified": "^11.0.0"
8372+ },
8373+ "funding": {
8374+ "type": "opencollective",
8375+ "url": "https://opencollective.com/unified"
8376+ }
8377+ },
64428378 "node_modules/remark-gfm": {
64438379 "version": "4.0.1",
64448380 "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz",
65058441 "url": "https://opencollective.com/unified"
65068442 }
65078443 },
8444+ "node_modules/resolve-pkg-maps": {
8445+ "version": "1.0.0",
8446+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
8447+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
8448+ "license": "MIT",
8449+ "funding": {
8450+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
8451+ }
8452+ },
8453+ "node_modules/retext-smartypants": {
8454+ "version": "6.2.0",
8455+ "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz",
8456+ "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==",
8457+ "license": "MIT",
8458+ "dependencies": {
8459+ "@types/nlcst": "^2.0.0",
8460+ "nlcst-to-string": "^4.0.0",
8461+ "unist-util-visit": "^5.0.0"
8462+ },
8463+ "funding": {
8464+ "type": "opencollective",
8465+ "url": "https://opencollective.com/unified"
8466+ }
8467+ },
65088468 "node_modules/rolldown": {
65098469 "version": "1.2.12",
65108470 "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.12.tgz",
65118471 "integrity": "sha512-8wafseiaG80xmXSfqidUNqZcylTlhmPZZt+za2m+js2sFZ8dTNlhIOV2WcbIPx2hgwPBJpEUGFAMZ9bgBBLTSQ==",
6512− "dev": true,
65138472 "license": "MIT",
65148473 "dependencies": {
65158474 "@oxc-project/types": "=0.152.0",
65398498 "@rolldown/binding-win32-x64-msvc": "1.2.12"
65408499 }
65418500 },
8501+ "node_modules/satteri": {
8502+ "version": "0.10.5",
8503+ "resolved": "https://registry.npmjs.org/satteri/-/satteri-0.10.5.tgz",
8504+ "integrity": "sha512-Ao1LKpAEa9Wdg0otgbVKViZHEq9ebdXe4DMrp3s9vQAU0HNIuHnFEuMuOcm0ZIXyV0Yzxj91NvhLpvXZJO/5ZQ==",
8505+ "license": "MIT",
8506+ "dependencies": {
8507+ "@types/estree-jsx": "^1.0.5",
8508+ "@types/hast": "^3.0.5",
8509+ "@types/mdast": "^4.0.4",
8510+ "@types/unist": "^3.0.3"
8511+ },
8512+ "optionalDependencies": {
8513+ "@bruits/satteri-darwin-arm64": "0.10.5",
8514+ "@bruits/satteri-darwin-x64": "0.10.5",
8515+ "@bruits/satteri-linux-arm64-gnu": "0.10.5",
8516+ "@bruits/satteri-linux-arm64-musl": "0.10.5",
8517+ "@bruits/satteri-linux-x64-gnu": "0.10.5",
8518+ "@bruits/satteri-linux-x64-musl": "0.10.5",
8519+ "@bruits/satteri-wasm32-wasi": "0.10.5",
8520+ "@bruits/satteri-win32-arm64-msvc": "0.10.5",
8521+ "@bruits/satteri-win32-x64-msvc": "0.10.5"
8522+ }
8523+ },
8524+ "node_modules/sax": {
8525+ "version": "1.6.1",
8526+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz",
8527+ "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==",
8528+ "license": "BlueOak-1.0.0",
8529+ "engines": {
8530+ "node": ">=11.0.0"
8531+ }
8532+ },
65428533 "node_modules/scheduler": {
65438534 "version": "0.28.0",
65448535 "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.28.0.tgz",
65498540 "version": "7.8.5",
65508541 "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
65518542 "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
6552− "dev": true,
65538543 "license": "ISC",
65548544 "bin": {
65558545 "semver": "bin/semver.js"
65628552 "version": "0.35.4",
65638553 "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.4.tgz",
65648554 "integrity": "sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==",
6565− "dev": true,
65668555 "license": "Apache-2.0",
65678556 "dependencies": {
65688557 "@img/colour": "^1.1.0",
66278616 "node": ">=20"
66288617 }
66298618 },
8619+ "node_modules/sisteransi": {
8620+ "version": "1.0.5",
8621+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
8622+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
8623+ "license": "MIT"
8624+ },
8625+ "node_modules/sitemap": {
8626+ "version": "9.0.1",
8627+ "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-9.0.1.tgz",
8628+ "integrity": "sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ==",
8629+ "license": "MIT",
8630+ "dependencies": {
8631+ "@types/node": "^24.9.2",
8632+ "@types/sax": "^1.2.1",
8633+ "arg": "^5.0.0",
8634+ "sax": "^1.4.1"
8635+ },
8636+ "bin": {
8637+ "sitemap": "dist/esm/cli.js"
8638+ },
8639+ "engines": {
8640+ "node": ">=20.19.5",
8641+ "npm": ">=10.8.2"
8642+ }
8643+ },
8644+ "node_modules/sitemap/node_modules/@types/node": {
8645+ "version": "24.19.1",
8646+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.19.1.tgz",
8647+ "integrity": "sha512-aS3/DG0oM05K0RIXXP+hKjinGG5IgSSVGzswZxW3O0sS3pH4/fycXundUC9XsszgKCk4gHXylTEK6hyFxVxnoQ==",
8648+ "license": "MIT",
8649+ "dependencies": {
8650+ "undici-types": ">=7.24.0 <7.24.7"
8651+ }
8652+ },
8653+ "node_modules/sitemap/node_modules/undici-types": {
8654+ "version": "7.24.6",
8655+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz",
8656+ "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==",
8657+ "license": "MIT"
8658+ },
8659+ "node_modules/smol-toml": {
8660+ "version": "1.9.0",
8661+ "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.9.0.tgz",
8662+ "integrity": "sha512-hpd+HLON7HdZXqYchMM/+LaTTbdK0AU3NngIJ4KVyWbY9bfQqdL9cD+4yf6dUoU2Ap4VsU0JkQi6FxAI1B2mXQ==",
8663+ "license": "BSD-3-Clause",
8664+ "engines": {
8665+ "node": ">= 18"
8666+ },
8667+ "funding": {
8668+ "url": "https://github.com/sponsors/cyyynthia"
8669+ }
8670+ },
66308671 "node_modules/source-map-js": {
66318672 "version": "1.2.2",
66328673 "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz",
66338674 "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==",
6634− "dev": true,
66358675 "license": "BSD-3-Clause",
66368676 "engines": {
66378677 "node": ">=0.10.0"
66928732 "url": "https://github.com/chalk/supports-color?sponsor=1"
66938733 }
66948734 },
8735+ "node_modules/svgo": {
8736+ "version": "4.1.0",
8737+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.1.0.tgz",
8738+ "integrity": "sha512-bkxnTg1kSU0guhIBmibA6UUhrQmPVA1XsQLN+ylCd+UWzbnLkySOcXpyk1mrl05f+pcaCx2eHb+sp6BgMZWX+Q==",
8739+ "license": "MIT",
8740+ "dependencies": {
8741+ "commander": "^11.1.0",
8742+ "css-select": "^6.0.0",
8743+ "css-tree": "^3.0.1",
8744+ "css-what": "^7.0.0",
8745+ "csso": "^5.0.5",
8746+ "picocolors": "^1.1.1",
8747+ "sax": "1.6.1"
8748+ },
8749+ "bin": {
8750+ "svgo": "bin/svgo.js"
8751+ },
8752+ "engines": {
8753+ "node": ">=16"
8754+ },
8755+ "funding": {
8756+ "type": "opencollective",
8757+ "url": "https://opencollective.com/svgo"
8758+ }
8759+ },
66958760 "node_modules/tailwind-merge": {
66968761 "version": "3.7.0",
66978762 "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.7.0.tgz",
67238788 "url": "https://opencollective.com/webpack"
67248789 }
67258790 },
8791+ "node_modules/tiny-inflate": {
8792+ "version": "1.0.3",
8793+ "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
8794+ "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==",
8795+ "license": "MIT"
8796+ },
8797+ "node_modules/tinyclip": {
8798+ "version": "1.0.3",
8799+ "resolved": "https://registry.npmjs.org/tinyclip/-/tinyclip-1.0.3.tgz",
8800+ "integrity": "sha512-nTv2raKFMzGG6JJp0lpNDsRPdfFE6UHlu2rVEjXo8vkx1ZS3LW2CVXqIaLu8xZlu+6tbFs9V58Qc/Jmk/Ii7wA==",
8801+ "license": "MIT",
8802+ "engines": {
8803+ "node": "^16.14.0 || >= 17.3.0"
8804+ }
8805+ },
8806+ "node_modules/tinyexec": {
8807+ "version": "1.3.1",
8808+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.1.tgz",
8809+ "integrity": "sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==",
8810+ "license": "MIT",
8811+ "engines": {
8812+ "node": ">=18"
8813+ }
8814+ },
67268815 "node_modules/tinyglobby": {
67278816 "version": "0.2.17",
67288817 "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
67298818 "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
6730− "dev": true,
67318819 "license": "MIT",
67328820 "dependencies": {
67338821 "fdir": "^6.5.0",
67708858 "version": "5.9.3",
67718859 "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
67728860 "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
6773− "dev": true,
8861+ "devOptional": true,
67748862 "license": "Apache-2.0",
67758863 "bin": {
67768864 "tsc": "bin/tsc",
67808868 "node": ">=14.17"
67818869 }
67828870 },
8871+ "node_modules/ufo": {
8872+ "version": "1.6.4",
8873+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.4.tgz",
8874+ "integrity": "sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==",
8875+ "license": "MIT"
8876+ },
8877+ "node_modules/ultrahtml": {
8878+ "version": "1.7.0",
8879+ "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.7.0.tgz",
8880+ "integrity": "sha512-2xRd0VHoAQE4M+vF/DvFFB7pUV0ZxTW1TLi7lHQWnF/Sb5TPeEUV/l+hxcNnGO00ZXGnR0voCMmYRKQf+rvJ2g==",
8881+ "license": "MIT"
8882+ },
8883+ "node_modules/uncrypto": {
8884+ "version": "0.1.3",
8885+ "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz",
8886+ "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==",
8887+ "license": "MIT"
8888+ },
67838889 "node_modules/undici": {
67848890 "version": "7.29.1",
67858891 "resolved": "https://registry.npmjs.org/undici/-/undici-7.29.1.tgz",
67948900 "version": "6.21.0",
67958901 "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
67968902 "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
6797− "dev": true,
67988903 "license": "MIT"
67998904 },
68008905 "node_modules/unenv": {
68268931 "url": "https://opencollective.com/unified"
68278932 }
68288933 },
8934+ "node_modules/unifont": {
8935+ "version": "0.7.5",
8936+ "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.7.5.tgz",
8937+ "integrity": "sha512-ULe/Cs+ZIsq+dcFofNkhqielCrUJnb5mr+Yc4EBM2VlL+6OZR6+cjtI2mT1bJvRBrVncqHAbLURxmPLcCXzWMg==",
8938+ "license": "MIT",
8939+ "dependencies": {
8940+ "css-tree": "^3.1.0",
8941+ "ohash": "^2.0.11",
8942+ "undici": "^8.0.0"
8943+ }
8944+ },
8945+ "node_modules/unifont/node_modules/undici": {
8946+ "version": "8.11.2",
8947+ "resolved": "https://registry.npmjs.org/undici/-/undici-8.11.2.tgz",
8948+ "integrity": "sha512-u4UB2/IrKdU6lFxumHmmo1a3fCQO5tzQllRorfoRS63txhrB7xTpSn1PftwC4qEHkOaqP95fCWW4lJzwErwzhQ==",
8949+ "license": "MIT",
8950+ "engines": {
8951+ "node": ">=22.19.0"
8952+ }
8953+ },
8954+ "node_modules/unist-util-find-after": {
8955+ "version": "5.0.0",
8956+ "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz",
8957+ "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==",
8958+ "license": "MIT",
8959+ "dependencies": {
8960+ "@types/unist": "^3.0.0",
8961+ "unist-util-is": "^6.0.0"
8962+ },
8963+ "funding": {
8964+ "type": "opencollective",
8965+ "url": "https://opencollective.com/unified"
8966+ }
8967+ },
68298968 "node_modules/unist-util-is": {
68308969 "version": "6.0.1",
68318970 "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz",
68949033 "url": "https://opencollective.com/unified"
68959034 }
68969035 },
9036+ "node_modules/unstorage": {
9037+ "version": "1.17.5",
9038+ "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.5.tgz",
9039+ "integrity": "sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==",
9040+ "license": "MIT",
9041+ "dependencies": {
9042+ "anymatch": "^3.1.3",
9043+ "chokidar": "^5.0.0",
9044+ "destr": "^2.0.5",
9045+ "h3": "^1.15.10",
9046+ "lru-cache": "^11.2.7",
9047+ "node-fetch-native": "^1.6.7",
9048+ "ofetch": "^1.5.1",
9049+ "ufo": "^1.6.3"
9050+ },
9051+ "peerDependencies": {
9052+ "@azure/app-configuration": "^1.8.0",
9053+ "@azure/cosmos": "^4.2.0",
9054+ "@azure/data-tables": "^13.3.0",
9055+ "@azure/identity": "^4.6.0",
9056+ "@azure/keyvault-secrets": "^4.9.0",
9057+ "@azure/storage-blob": "^12.26.0",
9058+ "@capacitor/preferences": "^6 || ^7 || ^8",
9059+ "@deno/kv": ">=0.9.0",
9060+ "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0",
9061+ "@planetscale/database": "^1.19.0",
9062+ "@upstash/redis": "^1.34.3",
9063+ "@vercel/blob": ">=0.27.1",
9064+ "@vercel/functions": "^2.2.12 || ^3.0.0",
9065+ "@vercel/kv": "^1 || ^2 || ^3",
9066+ "aws4fetch": "^1.0.20",
9067+ "db0": ">=0.2.1",
9068+ "idb-keyval": "^6.2.1",
9069+ "ioredis": "^5.4.2",
9070+ "uploadthing": "^7.4.4"
9071+ },
9072+ "peerDependenciesMeta": {
9073+ "@azure/app-configuration": {
9074+ "optional": true
9075+ },
9076+ "@azure/cosmos": {
9077+ "optional": true
9078+ },
9079+ "@azure/data-tables": {
9080+ "optional": true
9081+ },
9082+ "@azure/identity": {
9083+ "optional": true
9084+ },
9085+ "@azure/keyvault-secrets": {
9086+ "optional": true
9087+ },
9088+ "@azure/storage-blob": {
9089+ "optional": true
9090+ },
9091+ "@capacitor/preferences": {
9092+ "optional": true
9093+ },
9094+ "@deno/kv": {
9095+ "optional": true
9096+ },
9097+ "@netlify/blobs": {
9098+ "optional": true
9099+ },
9100+ "@planetscale/database": {
9101+ "optional": true
9102+ },
9103+ "@upstash/redis": {
9104+ "optional": true
9105+ },
9106+ "@vercel/blob": {
9107+ "optional": true
9108+ },
9109+ "@vercel/functions": {
9110+ "optional": true
9111+ },
9112+ "@vercel/kv": {
9113+ "optional": true
9114+ },
9115+ "aws4fetch": {
9116+ "optional": true
9117+ },
9118+ "db0": {
9119+ "optional": true
9120+ },
9121+ "idb-keyval": {
9122+ "optional": true
9123+ },
9124+ "ioredis": {
9125+ "optional": true
9126+ },
9127+ "uploadthing": {
9128+ "optional": true
9129+ }
9130+ }
9131+ },
9132+ "node_modules/unstorage/node_modules/lru-cache": {
9133+ "version": "11.5.3",
9134+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz",
9135+ "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==",
9136+ "license": "BlueOak-1.0.0",
9137+ "engines": {
9138+ "node": "20 || >=22"
9139+ }
9140+ },
68979141 "node_modules/update-browserslist-db": {
68989142 "version": "1.3.3",
68999143 "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.3.tgz",
69259169 "browserslist": ">= 4.21.0"
69269170 }
69279171 },
9172+ "node_modules/url-extras": {
9173+ "version": "0.1.0",
9174+ "resolved": "https://registry.npmjs.org/url-extras/-/url-extras-0.1.0.tgz",
9175+ "integrity": "sha512-8tzwTeXFPuX/5PHuCDQE5Dd9Ts4rwoq2t9aIT+HS4iAVpmj5l4Ao7Q+BuuFjvWRqrLswBhQDk8O96ZicgCqQqw==",
9176+ "license": "MIT",
9177+ "engines": {
9178+ "node": ">=20"
9179+ },
9180+ "funding": {
9181+ "url": "https://github.com/sponsors/sindresorhus"
9182+ }
9183+ },
69289184 "node_modules/use-callback-ref": {
69299185 "version": "1.3.3",
69309186 "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz",
69689224 }
69699225 }
69709226 },
9227+ "node_modules/util-deprecate": {
9228+ "version": "1.0.2",
9229+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
9230+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
9231+ "license": "MIT"
9232+ },
69719233 "node_modules/valibot": {
69729234 "version": "1.5.0",
69739235 "resolved": "https://registry.npmjs.org/valibot/-/valibot-1.5.0.tgz",
69839245 }
69849246 }
69859247 },
9248+ "node_modules/verkit": {
9249+ "version": "0.4.1",
9250+ "resolved": "https://registry.npmjs.org/verkit/-/verkit-0.4.1.tgz",
9251+ "integrity": "sha512-mMVzj0TXExtVdlDEq+Mzp0eyOuyznNpFobNM3uAqe3HVm/Ps2c+u17BligMkZjZCA6EiXpoon8iRTer3iu40SQ==",
9252+ "license": "MIT",
9253+ "engines": {
9254+ "node": ">=18.12.0"
9255+ },
9256+ "funding": {
9257+ "url": "https://github.com/sponsors/sxzz"
9258+ }
9259+ },
69869260 "node_modules/vfile": {
69879261 "version": "6.0.3",
69889262 "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
70159289 "version": "8.3.2",
70169290 "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.2.tgz",
70179291 "integrity": "sha512-SQr1x6W5vVSbROg7vsyXIaxK9b0G7zsT68acdWWRmnBUsgDieLCRG+Rep9WdZgcposvv/GSnr4GUUBqB3vXq6w==",
7018− "dev": true,
70199292 "license": "MIT",
70209293 "dependencies": {
70219294 "lightningcss": "^1.33.0",
70939366 "version": "1.33.0",
70949367 "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz",
70959368 "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==",
7096− "dev": true,
70979369 "license": "MPL-2.0",
70989370 "dependencies": {
70999371 "detect-libc": "^2.0.3"
71269398 "cpu": [
71279399 "arm64"
71289400 ],
7129− "dev": true,
71309401 "license": "MPL-2.0",
71319402 "optional": true,
71329403 "os": [
71479418 "cpu": [
71489419 "arm64"
71499420 ],
7150− "dev": true,
71519421 "license": "MPL-2.0",
71529422 "optional": true,
71539423 "os": [
71689438 "cpu": [
71699439 "x64"
71709440 ],
7171− "dev": true,
71729441 "license": "MPL-2.0",
71739442 "optional": true,
71749443 "os": [
71899458 "cpu": [
71909459 "x64"
71919460 ],
7192− "dev": true,
71939461 "license": "MPL-2.0",
71949462 "optional": true,
71959463 "os": [
72109478 "cpu": [
72119479 "arm"
72129480 ],
7213− "dev": true,
72149481 "license": "MPL-2.0",
72159482 "optional": true,
72169483 "os": [
72319498 "cpu": [
72329499 "arm64"
72339500 ],
7234− "dev": true,
72359501 "libc": [
72369502 "glibc"
72379503 ],
72559521 "cpu": [
72569522 "arm64"
72579523 ],
7258− "dev": true,
72599524 "libc": [
72609525 "musl"
72619526 ],
72799544 "cpu": [
72809545 "x64"
72819546 ],
7282− "dev": true,
72839547 "libc": [
72849548 "glibc"
72859549 ],
73039567 "cpu": [
73049568 "x64"
73059569 ],
7306− "dev": true,
73079570 "libc": [
73089571 "musl"
73099572 ],
73279590 "cpu": [
73289591 "arm64"
73299592 ],
7330− "dev": true,
73319593 "license": "MPL-2.0",
73329594 "optional": true,
73339595 "os": [
73489610 "cpu": [
73499611 "x64"
73509612 ],
7351− "dev": true,
73529613 "license": "MPL-2.0",
73539614 "optional": true,
73549615 "os": [
73629623 "url": "https://opencollective.com/parcel"
73639624 }
73649625 },
9626+ "node_modules/vitefu": {
9627+ "version": "1.1.3",
9628+ "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.3.tgz",
9629+ "integrity": "sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==",
9630+ "license": "MIT",
9631+ "workspaces": [
9632+ "tests/deps/*",
9633+ "tests/projects/*",
9634+ "tests/projects/workspace/packages/*"
9635+ ],
9636+ "peerDependencies": {
9637+ "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0"
9638+ },
9639+ "peerDependenciesMeta": {
9640+ "vite": {
9641+ "optional": true
9642+ }
9643+ }
9644+ },
73659645 "node_modules/workerd": {
73669646 "version": "1.20261001.1",
73679647 "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20261001.1.tgz",
74419721 }
74429722 }
74439723 },
9724+ "node_modules/xxhash-wasm": {
9725+ "version": "1.1.0",
9726+ "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz",
9727+ "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==",
9728+ "license": "MIT"
9729+ },
74449730 "node_modules/yallist": {
74459731 "version": "3.1.1",
74469732 "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
74489734 "dev": true,
74499735 "license": "ISC"
74509736 },
9737+ "node_modules/yargs-parser": {
9738+ "version": "22.0.0",
9739+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz",
9740+ "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==",
9741+ "license": "ISC",
9742+ "engines": {
9743+ "node": "^20.19.0 || ^22.12.0 || >=23"
9744+ }
9745+ },
9746+ "node_modules/yocto-queue": {
9747+ "version": "1.2.2",
9748+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz",
9749+ "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==",
9750+ "license": "MIT",
9751+ "engines": {
9752+ "node": ">=12.20"
9753+ },
9754+ "funding": {
9755+ "url": "https://github.com/sponsors/sindresorhus"
9756+ }
9757+ },
74519758 "node_modules/youch": {
74529759 "version": "4.1.0-beta.10",
74539760 "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.0-beta.10.tgz",
74739780 "error-stack-parser-es": "^1.0.5"
74749781 }
74759782 },
9783+ "node_modules/zod": {
9784+ "version": "4.6.5",
9785+ "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.5.tgz",
9786+ "integrity": "sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==",
9787+ "license": "MIT",
9788+ "funding": {
9789+ "url": "https://github.com/sponsors/colinhacks"
9790+ }
9791+ },
74769792 "node_modules/zwitch": {
74779793 "version": "2.0.4",
74789794 "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
74889804 "version": "0.1.0",
74899805 "license": "MIT"
74909806 },
9807+ "packages/theme": {
9808+ "name": "@g1t/theme",
9809+ "version": "0.1.0",
9810+ "license": "MIT"
9811+ },
74919812 "services/events": {
74929813 "name": "@g1t/events",
74939814 "version": "0.1.0",
+7−0
1+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="none" stroke-width="2.5" stroke-linecap="round">
2+ <rect width="32" height="32" rx="7" fill="#12110d"/>
3+ <path d="M4 7h6c7 0 7 9 14 9" stroke="#8f8c82"/>
4+ <path d="M4 25h6c7 0 7-9 14-9" stroke="#8f8c82"/>
5+ <path d="M4 16h20" stroke="#b6f24a"/>
6+ <circle cx="25" cy="16" r="3.5" fill="#b6f24a"/>
7+</svg>
+6−0
1+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="none" stroke-width="2.5" stroke-linecap="round">
2+ <path d="M4 7h6c7 0 7 9 14 9" stroke="#a09c8f"/>
3+ <path d="M4 25h6c7 0 7-9 14-9" stroke="#a09c8f"/>
4+ <path d="M4 16h20" stroke="#b6f24a"/>
5+ <circle cx="25" cy="16" r="3.5" fill="#b6f24a"/>
6+</svg>
+12−0
1+{
2+ "name": "@g1t/theme",
3+ "version": "0.1.0",
4+ "private": true,
5+ "license": "MIT",
6+ "description": "g1t's design tokens and marks, shared by every public site.",
7+ "exports": {
8+ "./tokens.css": "./tokens.css",
9+ "./mark.svg": "./mark.svg",
10+ "./favicon.svg": "./favicon.svg"
11+ }
12+}
+32−0
1+/*
2+ * g1t's design tokens. Every public site (the app, the docs) takes its
3+ * colours and type from here, so a change lands everywhere at once.
4+ * Each site maps these onto whatever its own framework calls them.
5+ */
6+:root {
7+ --g1t-font-sans: 'Inter', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji',
8+ 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
9+ --g1t-font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
10+
11+ /* Warm near-black, three elevations. */
12+ --g1t-bg: #0e0d0a;
13+ --g1t-surface: #16150f;
14+ --g1t-raised: #1e1c15;
15+ --g1t-line: #2a2820;
16+ --g1t-line-strong: #3a372d;
17+
18+ --g1t-fg: #f0eee6;
19+ --g1t-fg-soft: #e2dfd4;
20+ --g1t-muted: #a09c8f;
21+ --g1t-faint: #6e6a5e;
22+
23+ --g1t-accent: #b6f24a;
24+ --g1t-accent-dim: #7fae2c;
25+ --g1t-accent-low: #26330f;
26+
27+ /* Status colours, used sparingly. */
28+ --g1t-info: #7cc4ff;
29+ --g1t-shipped: #b9a2ff;
30+ --g1t-warn: #f2c14a;
31+ --g1t-danger: #ff7a6b;
32+}