zizou-ai 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dockerignore +8 -0
- package/.vscode/settings.json +4 -0
- package/Dockerfile +33 -0
- package/README.md +175 -0
- package/build.ts +31 -0
- package/bun.lock +238 -0
- package/context.md +286 -0
- package/dist/cli.js +2254 -0
- package/index.html +1 -0
- package/main.html +25 -0
- package/package.json +34 -0
- package/powershell.cmd +1 -0
- package/src/agent/run-turn.ts +601 -0
- package/src/cli.tsx +25 -0
- package/src/commands/index.ts +356 -0
- package/src/config/api-keys.ts +166 -0
- package/src/config/index.ts +57 -0
- package/src/context/build-system-prompt.ts +126 -0
- package/src/context/repo-map.ts +182 -0
- package/src/provider/index.ts +61 -0
- package/src/provider/resolve-model.ts +102 -0
- package/src/tools/add-context.ts +24 -0
- package/src/tools/edit-file.test-manual.ts +48 -0
- package/src/tools/edit-file.ts +77 -0
- package/src/tools/glob.ts +56 -0
- package/src/tools/grep.ts +35 -0
- package/src/tools/index.ts +23 -0
- package/src/tools/list-dir.ts +60 -0
- package/src/tools/open-file.ts +81 -0
- package/src/tools/read-file.ts +63 -0
- package/src/tools/run-bash.ts +84 -0
- package/src/tools/types.ts +16 -0
- package/src/tools/write-file.ts +43 -0
- package/src/ui/ApiKeySetup.tsx +254 -0
- package/src/ui/App.tsx +51 -0
- package/src/ui/Chat.tsx +585 -0
- package/src/ui/Figurine.tsx +450 -0
- package/test-output.txt +0 -0
- package/tictactoe.html +109 -0
- package/todo.css +108 -0
- package/todo.js +83 -0
- package/tsconfig.json +20 -0
package/.dockerignore
ADDED
package/Dockerfile
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Use the official Bun image
|
|
2
|
+
# see all versions at https://hub.docker.com/r/oven/bun/tags
|
|
3
|
+
FROM oven/bun:1 AS base
|
|
4
|
+
WORKDIR /usr/src/app
|
|
5
|
+
|
|
6
|
+
# install dependencies into temp directory
|
|
7
|
+
# this will cache them and speed up future builds
|
|
8
|
+
FROM base AS install
|
|
9
|
+
RUN mkdir -p /temp/dev
|
|
10
|
+
COPY package.json bun.lock /temp/dev/
|
|
11
|
+
RUN cd /temp/dev && bun install --frozen-lockfile
|
|
12
|
+
|
|
13
|
+
# install with --production (exclude devDependencies)
|
|
14
|
+
RUN mkdir -p /temp/prod
|
|
15
|
+
COPY package.json bun.lock /temp/prod/
|
|
16
|
+
RUN cd /temp/prod && bun install --frozen-lockfile --production
|
|
17
|
+
|
|
18
|
+
# copy node_modules from temp directory
|
|
19
|
+
# then copy all (non-ignored) project files into the image
|
|
20
|
+
FROM base AS prerelease
|
|
21
|
+
COPY --from=install /temp/dev/node_modules node_modules
|
|
22
|
+
COPY . .
|
|
23
|
+
|
|
24
|
+
# [optional] build step could go here if needed
|
|
25
|
+
|
|
26
|
+
# copy production dependencies and source code into final image
|
|
27
|
+
FROM base AS release
|
|
28
|
+
COPY --from=install /temp/prod/node_modules node_modules
|
|
29
|
+
COPY . .
|
|
30
|
+
|
|
31
|
+
# run the app as non-root user
|
|
32
|
+
USER bun
|
|
33
|
+
ENTRYPOINT [ "bun", "run", "src/cli.tsx" ]
|
package/README.md
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# Zizou - AI Coding Agent CLI (Phase 1)
|
|
2
|
+
|
|
3
|
+
Zizou is an open-source AI coding agent CLI tool built with TypeScript, React (Ink), and the Vercel AI SDK. It allows you to chat with Claude 3.5 Sonnet or GPT-4o directly in your terminal, and grants the AI the ability to read files, edit files (safely), and run sandboxed terminal commands with your explicit approval.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Ensure you have [Bun](https://bun.sh) installed.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Clone the repository
|
|
11
|
+
git clone https://github.com/arnvG17/zizou.git
|
|
12
|
+
cd zizou
|
|
13
|
+
|
|
14
|
+
# Install dependencies
|
|
15
|
+
bun install
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Running Zizou
|
|
19
|
+
|
|
20
|
+
You can run Zizou directly using Bun:
|
|
21
|
+
```bash
|
|
22
|
+
bun run src/cli.tsx
|
|
23
|
+
```
|
|
24
|
+
*(On first run, the CLI will present a setup screen asking you to select a provider and input an API key).*
|
|
25
|
+
|
|
26
|
+
## Core Features & Slash Commands
|
|
27
|
+
|
|
28
|
+
Zizou comes with several built-in slash commands you can use in the chat bar to configure your agent on the fly:
|
|
29
|
+
|
|
30
|
+
- **/keys**: Opens an interactive setup screen allowing you to switch AI providers (e.g., from Groq to Anthropic) and enter or update your API keys.
|
|
31
|
+
- **/models**: Allows you to override the default model for a given provider (e.g., switching from `claude-3-5-sonnet-20240620` to an older or newer model).
|
|
32
|
+
- **/context**: Displays a panel showing you exactly what files the AI currently has in its context window, helping you manage context bloat.
|
|
33
|
+
|
|
34
|
+
## LLM Compatibility & Connection
|
|
35
|
+
|
|
36
|
+
Zizou (Phase 1) is built on top of the Vercel AI SDK, meaning it is provider-agnostic. Out of the box, it supports:
|
|
37
|
+
|
|
38
|
+
- **Anthropic**: High-quality reasoning (Claude 3.5 Sonnet). Requires an API key.
|
|
39
|
+
- **OpenAI**: GPT-4o capabilities. Requires an API key.
|
|
40
|
+
- **Groq**: Extremely fast inference for Llama 3 models. Requires an API key.
|
|
41
|
+
- **Google**: Gemini capabilities. Requires an API key.
|
|
42
|
+
- **OpenRouter**: Access to a massive ecosystem of models through a single API key.
|
|
43
|
+
- **Ollama**: 100% free, local execution. Ollama exposes an OpenAI-compatible API on `http://localhost:11434/v1`. By selecting Ollama, you can run models like `llama3` locally without needing a real API key.
|
|
44
|
+
|
|
45
|
+
To connect to any of these, simply run `/keys` inside the CLI or provide an environment variable (e.g., `export ANTHROPIC_API_KEY="..."`).
|
|
46
|
+
|
|
47
|
+
## File Structure & Layering
|
|
48
|
+
|
|
49
|
+
The codebase strictly adheres to a layered architecture. Higher layers may import from lower layers, but never vice-versa.
|
|
50
|
+
|
|
51
|
+
> [!NOTE]
|
|
52
|
+
> **Inline Documentation & Reasoning:** The codebase is designed to be highly educational and is heavily documented inline. If you open any file (especially in `src/tools/` or `src/agent/`), you will find detailed block comments explaining not just *what* the code does, but the *reasoning* behind why it was built that way, why certain design decisions were made over alternatives, and how the data flows end-to-end.
|
|
53
|
+
|
|
54
|
+
1. **`ui/`** (`App.tsx`, `Chat.tsx`, `ApiKeySetup.tsx`)
|
|
55
|
+
- The React/Ink terminal interface. Responsible *only* for rendering state and handling user input.
|
|
56
|
+
2. **`agent/`** (`run-turn.ts`)
|
|
57
|
+
- The core AI loop. Uses `streamText` to communicate with the model, execute tools, and yield incremental events (text deltas, tool calls) back to the UI.
|
|
58
|
+
3. **`provider/`** (`resolve-model.ts`)
|
|
59
|
+
- Responsible for instantiating the correct `LanguageModel` via `@ai-sdk/anthropic` or `@ai-sdk/openai`, dynamically injecting API keys.
|
|
60
|
+
4. **`tools/`** (`read-file.ts`, `edit-file.ts`, `run-bash.ts`, etc.)
|
|
61
|
+
- Pure functions that define the capabilities of the agent. They return deterministic JSON payloads (never throwing errors). `runBash` strictly relies on an injected `ConfirmFn` callback to ask the user for permission.
|
|
62
|
+
5. **`config/`** (`api-keys.ts`)
|
|
63
|
+
- The base layer handling persistent local storage using `conf`.
|
|
64
|
+
|
|
65
|
+
## Security & API Key Storage
|
|
66
|
+
|
|
67
|
+
**🚨 IMPORTANT:** API keys entered via the initial setup screen are stored in **plain text** within a JSON file in your OS's default configuration directory (e.g., `~/.config/zizou/config.json`). They are **NOT encrypted**.
|
|
68
|
+
|
|
69
|
+
To avoid writing your key to disk entirely, you can provide it via environment variables instead, which will always take precedence:
|
|
70
|
+
```bash
|
|
71
|
+
export ANTHROPIC_API_KEY="sk-ant-..."
|
|
72
|
+
# or
|
|
73
|
+
export OPENAI_API_KEY="sk-proj-..."
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Known Limitations (Future Work)
|
|
77
|
+
- **No File Indexing:** Zizou currently cannot index or search across the entire repository (no tree-sitter integration).
|
|
78
|
+
- **No Session Persistence:** Chat history is lost when you exit the CLI.
|
|
79
|
+
- **No Keychain Storage:** API keys are stored in unencrypted plain text.
|
|
80
|
+
- **No Cost Tracking:** Token usage and cost tracking are not yet displayed in the UI.
|
|
81
|
+
|
|
82
|
+
## Architecture Deep Dive: The Agent Loop
|
|
83
|
+
|
|
84
|
+
The core architecture of Zizou is built around real-time streaming and automatic tool execution. Here is a detailed breakdown of how the UI communicates with the LLM through `runTurn` and `streamText`.
|
|
85
|
+
|
|
86
|
+
### High-Level Flow Diagram
|
|
87
|
+
|
|
88
|
+
```mermaid
|
|
89
|
+
sequenceDiagram
|
|
90
|
+
participant UI as Chat UI (React/Ink)
|
|
91
|
+
participant Agent as runTurn (Agent Loop)
|
|
92
|
+
participant Provider as resolveModel (Config)
|
|
93
|
+
participant SDK as streamText (AI SDK)
|
|
94
|
+
participant LLM as Provider API (Groq/Anthropic)
|
|
95
|
+
|
|
96
|
+
UI->>Agent: Hit Enter (User Message)
|
|
97
|
+
Agent->>Provider: resolveModel(providerChoice)
|
|
98
|
+
Provider-->>Agent: Returns configured LanguageModel (API Key injected)
|
|
99
|
+
Agent->>SDK: streamText({ model, tools, messages })
|
|
100
|
+
|
|
101
|
+
rect rgb(30, 30, 30)
|
|
102
|
+
Note right of SDK: Automatic Streaming & Tool Loop
|
|
103
|
+
SDK->>LLM: HTTP Request (System Prompt, History, Tool Schemas)
|
|
104
|
+
LLM-->>SDK: Streams Text Chunks
|
|
105
|
+
SDK-->>Agent: Yields text-delta events
|
|
106
|
+
Agent-->>UI: Updates screen token-by-token
|
|
107
|
+
|
|
108
|
+
LLM-->>SDK: Streams Tool Call JSON (e.g. readFile)
|
|
109
|
+
SDK->>SDK: Pauses stream, validates JSON schema
|
|
110
|
+
SDK->>SDK: Runs local execute() function for the tool
|
|
111
|
+
SDK->>LLM: HTTP Request with Tool Result
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
SDK-->>Agent: fullStream finishes
|
|
115
|
+
Agent-->>UI: turn-complete
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### 1. Model Configuration (`resolveModel`)
|
|
119
|
+
Before any chatting begins, the system must set up the connection to the requested AI provider (e.g., Groq, Anthropic, or a local Ollama instance). This happens in `src/provider/resolve-model.ts`.
|
|
120
|
+
|
|
121
|
+
It fetches the API key from local storage, instantiates the Vercel AI SDK provider factory (like `createGroq`), and returns a ready-to-use `LanguageModel`.
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
// src/provider/resolve-model.ts
|
|
125
|
+
export function resolveModel(provider: ProviderChoice): LanguageModel {
|
|
126
|
+
if (provider === "groq") {
|
|
127
|
+
const apiKey = getApiKey("groq");
|
|
128
|
+
if (!apiKey) throw new Error("No API key for Groq.");
|
|
129
|
+
const groq = createGroq({ apiKey });
|
|
130
|
+
// Returns the active Groq model (e.g., llama3-70b-8192)
|
|
131
|
+
return groq(getActiveModelId("groq"));
|
|
132
|
+
}
|
|
133
|
+
// ... handles other providers (anthropic, openai, ollama)
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### 2. Why Streaming?
|
|
138
|
+
When an LLM writes code, the response can be thousands of tokens long. If we waited for the entire HTTP request to finish, the user would stare at a frozen terminal for 20-30 seconds.
|
|
139
|
+
|
|
140
|
+
**Streaming** solves this. The API sends the response back chunk-by-chunk (sometimes word-by-word) as it's being generated on the server. The `streamText` function reads this stream in real time.
|
|
141
|
+
|
|
142
|
+
### 3. The `streamText` Engine & Tool Execution
|
|
143
|
+
The `streamText` function (from the `ai` package) is the heavy lifter. You give it the model, the conversation history, and an object containing all available tools.
|
|
144
|
+
|
|
145
|
+
```typescript
|
|
146
|
+
const tools = { readFile, writeFile, runBash };
|
|
147
|
+
const result = streamText({ model, tools, messages });
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
When the LLM decides it needs to use a tool, it stops generating plain text and outputs a hidden JSON payload like `{"tool": "readFile", "arguments": {"path": "main.ts"}}`.
|
|
151
|
+
`streamText` manages the entire execution lifecycle automatically:
|
|
152
|
+
1. It intercepts the JSON payload.
|
|
153
|
+
2. It validates the arguments against the Zod `inputSchema`.
|
|
154
|
+
3. It literally calls the JavaScript `execute` function for `readFile`.
|
|
155
|
+
4. It packages the file contents into a "tool result" message and sends a *second* network request back to the LLM to continue the thought process.
|
|
156
|
+
|
|
157
|
+
### 4. The Interception Loop (`runTurn`)
|
|
158
|
+
While `streamText` is handling the network and executing tools, the terminal UI needs to know what is happening so it can draw text or display loading badges.
|
|
159
|
+
|
|
160
|
+
This is the job of `runTurn`. It acts as a wrapper around `streamText`, iterating over the `result.fullStream` in real-time, translating the raw AI SDK stream parts into clean `AgentEvent` objects for the React UI.
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
// Inside src/agent/run-turn.ts
|
|
164
|
+
for await (const part of result.fullStream) {
|
|
165
|
+
if (part.type === "text-delta") {
|
|
166
|
+
// LLM spoke a word. Yield it immediately to the UI so it appears on screen.
|
|
167
|
+
yield { kind: "text-delta", text: part.text };
|
|
168
|
+
}
|
|
169
|
+
else if (part.type === "tool-call") {
|
|
170
|
+
// LLM requested a tool. `streamText` is currently running it in the background.
|
|
171
|
+
// Yield this so the UI can draw a spinning loading badge.
|
|
172
|
+
yield { kind: "tool-call", toolName: part.toolName };
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
```
|
package/build.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as esbuild from 'esbuild';
|
|
2
|
+
import { chmodSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
|
|
5
|
+
async function build() {
|
|
6
|
+
console.log('Building Zizou CLI for Node.js...');
|
|
7
|
+
|
|
8
|
+
await esbuild.build({
|
|
9
|
+
entryPoints: ['src/cli.tsx'],
|
|
10
|
+
bundle: true,
|
|
11
|
+
platform: 'node',
|
|
12
|
+
target: 'node18',
|
|
13
|
+
outfile: 'dist/cli.js',
|
|
14
|
+
format: 'esm',
|
|
15
|
+
packages: 'external', // Keeps node_modules as external dependencies
|
|
16
|
+
banner: {
|
|
17
|
+
js: '#!/usr/bin/env node\n',
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
// Make the output file executable
|
|
22
|
+
const outFile = join(process.cwd(), 'dist/cli.js');
|
|
23
|
+
chmodSync(outFile, 0o755);
|
|
24
|
+
|
|
25
|
+
console.log('Build complete: dist/cli.js is ready.');
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
build().catch((err) => {
|
|
29
|
+
console.error(err);
|
|
30
|
+
process.exit(1);
|
|
31
|
+
});
|
package/bun.lock
ADDED
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lockfileVersion": 1,
|
|
3
|
+
"configVersion": 0,
|
|
4
|
+
"workspaces": {
|
|
5
|
+
"": {
|
|
6
|
+
"name": "zizou",
|
|
7
|
+
"dependencies": {
|
|
8
|
+
"@ai-sdk/anthropic": "^4.0.0",
|
|
9
|
+
"@ai-sdk/google": "^4.0.0",
|
|
10
|
+
"@ai-sdk/groq": "^4.0.0",
|
|
11
|
+
"@ai-sdk/openai": "^4.0.0",
|
|
12
|
+
"ai": "^7.0.0",
|
|
13
|
+
"conf": "^12.0.0",
|
|
14
|
+
"esbuild": "^0.28.1",
|
|
15
|
+
"ink": "^7.1.0",
|
|
16
|
+
"ink-text-input": "^6.0.0",
|
|
17
|
+
"react": "^19.2.7",
|
|
18
|
+
"zod": "^3.24.0",
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@types/node": "^22.0.0",
|
|
22
|
+
"@types/react": "^19.2.17",
|
|
23
|
+
"typescript": "^6.0.3",
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
"packages": {
|
|
28
|
+
"@ai-sdk/anthropic": ["@ai-sdk/anthropic@4.0.0", "", { "dependencies": { "@ai-sdk/provider": "4.0.0", "@ai-sdk/provider-utils": "5.0.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-N0lT1g6/5DEIZvalpkpwYRCdu7n5qb8qPN3PcTem6k4VkPBLC2+T2LAAyx1GS0eNOxavVa0CP7n2kCiye0yyfw=="],
|
|
29
|
+
|
|
30
|
+
"@ai-sdk/gateway": ["@ai-sdk/gateway@4.0.2", "", { "dependencies": { "@ai-sdk/provider": "4.0.0", "@ai-sdk/provider-utils": "5.0.0", "@vercel/oidc": "3.2.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-Jz1BiiTSvhDsCBJrkFRSqLHDRMVjFtYk9GdbSi3UOqY+/epza+oIESMDzfN4m+YHT/1IYmNEmxaMfjXOvxKDjQ=="],
|
|
31
|
+
|
|
32
|
+
"@ai-sdk/google": ["@ai-sdk/google@4.0.0", "", { "dependencies": { "@ai-sdk/provider": "4.0.0", "@ai-sdk/provider-utils": "5.0.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-UXGGmsYmeJ8VEfFenETFd2SN5tGSU+g2yrLrCuL8uqUkDFpNqV9a9MSKdshh6EXQs8e+2PUELJwqe7qQO3UnSw=="],
|
|
33
|
+
|
|
34
|
+
"@ai-sdk/groq": ["@ai-sdk/groq@4.0.0", "", { "dependencies": { "@ai-sdk/provider": "4.0.0", "@ai-sdk/provider-utils": "5.0.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-QjhpyudO8eGi+C/kjVzSKfVFsLcuXi4smOez8njQITrV+5wZlKJ1xvoHyQom1FlgC9PsR4Ee6icGIqogoSb1Vg=="],
|
|
35
|
+
|
|
36
|
+
"@ai-sdk/openai": ["@ai-sdk/openai@4.0.0", "", { "dependencies": { "@ai-sdk/provider": "4.0.0", "@ai-sdk/provider-utils": "5.0.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-XcI/bJEG+Ymx8ZwQMY9GE9waHdEcSzT6wn2o+YW80hOQPf8IAGQvdNWKaD0mxLi6AmOM0L01y/p626w7rImblQ=="],
|
|
37
|
+
|
|
38
|
+
"@ai-sdk/provider": ["@ai-sdk/provider@4.0.0", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-fr9Gs89prDWiuox/T+kCA+i2cJkHpxU5S+tr4megjTzRC27ZsvFhwjU/+XrqqMbvBUlfmXxTOYWy8ng45dsjIg=="],
|
|
39
|
+
|
|
40
|
+
"@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@5.0.0", "", { "dependencies": { "@ai-sdk/provider": "4.0.0", "@standard-schema/spec": "^1.1.0", "@workflow/serde": "4.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-zj66M02jc6ASYwIgWZowsooDUwaVngeNZQ3H10GwcPMZ+KR6gHMhcUuKl6tkai+JPXTKDyHY1pnszuxRtw2D4A=="],
|
|
41
|
+
|
|
42
|
+
"@alcalzone/ansi-tokenize": ["@alcalzone/ansi-tokenize@0.3.0", "", { "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" } }, "sha512-p+CMKJ93HFmLkjXKlXiVGlMQEuRb6H0MokBSwUsX+S6BRX8eV5naFZpQJFfJHjRZY0Hmnqy1/r6UWl3x+19zYA=="],
|
|
43
|
+
|
|
44
|
+
"@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="],
|
|
45
|
+
|
|
46
|
+
"@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="],
|
|
47
|
+
|
|
48
|
+
"@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="],
|
|
49
|
+
|
|
50
|
+
"@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="],
|
|
51
|
+
|
|
52
|
+
"@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="],
|
|
53
|
+
|
|
54
|
+
"@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="],
|
|
55
|
+
|
|
56
|
+
"@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="],
|
|
57
|
+
|
|
58
|
+
"@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="],
|
|
59
|
+
|
|
60
|
+
"@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="],
|
|
61
|
+
|
|
62
|
+
"@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="],
|
|
63
|
+
|
|
64
|
+
"@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="],
|
|
65
|
+
|
|
66
|
+
"@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="],
|
|
67
|
+
|
|
68
|
+
"@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="],
|
|
69
|
+
|
|
70
|
+
"@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="],
|
|
71
|
+
|
|
72
|
+
"@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="],
|
|
73
|
+
|
|
74
|
+
"@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="],
|
|
75
|
+
|
|
76
|
+
"@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="],
|
|
77
|
+
|
|
78
|
+
"@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="],
|
|
79
|
+
|
|
80
|
+
"@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="],
|
|
81
|
+
|
|
82
|
+
"@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="],
|
|
83
|
+
|
|
84
|
+
"@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="],
|
|
85
|
+
|
|
86
|
+
"@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="],
|
|
87
|
+
|
|
88
|
+
"@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="],
|
|
89
|
+
|
|
90
|
+
"@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="],
|
|
91
|
+
|
|
92
|
+
"@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="],
|
|
93
|
+
|
|
94
|
+
"@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="],
|
|
95
|
+
|
|
96
|
+
"@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="],
|
|
97
|
+
|
|
98
|
+
"@types/node": ["@types/node@22.20.0", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-QWlFW2wf3nTjC13/DqRnBpR4ZO36VJH/JVBkA/vcnmbTBNQIlnObqyqZE1tUR7+Ni23Lda8R1BxMfbXRpCUx5g=="],
|
|
99
|
+
|
|
100
|
+
"@types/react": ["@types/react@19.2.17", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw=="],
|
|
101
|
+
|
|
102
|
+
"@vercel/oidc": ["@vercel/oidc@3.2.0", "", {}, "sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug=="],
|
|
103
|
+
|
|
104
|
+
"@workflow/serde": ["@workflow/serde@4.1.0", "", {}, "sha512-pav4F2BoirECWR7Nf1TKt+2eETcBj7jj4cBefQ8VXQCA6NPkaKeLfj/zMgi+3zYV5ZIBT4GuUiphsj0/b9hPQQ=="],
|
|
105
|
+
|
|
106
|
+
"ai": ["ai@7.0.2", "", { "dependencies": { "@ai-sdk/gateway": "4.0.2", "@ai-sdk/provider": "4.0.0", "@ai-sdk/provider-utils": "5.0.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-VMU08jHIDJnnKDrbC9AFa5ZsPpOTfAPRLvTRHtJk4FGAoeldmJROMxvZ2ak5lCjEJ2GP2OLPQbMRyEK8w0+S4A=="],
|
|
107
|
+
|
|
108
|
+
"ajv": ["ajv@8.20.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="],
|
|
109
|
+
|
|
110
|
+
"ajv-formats": ["ajv-formats@2.1.1", "", { "dependencies": { "ajv": "^8.0.0" }, "peerDependencies": { "ajv": "^8.0.0" } }, "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA=="],
|
|
111
|
+
|
|
112
|
+
"ansi-escapes": ["ansi-escapes@7.3.0", "", { "dependencies": { "environment": "^1.0.0" } }, "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg=="],
|
|
113
|
+
|
|
114
|
+
"ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="],
|
|
115
|
+
|
|
116
|
+
"ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="],
|
|
117
|
+
|
|
118
|
+
"atomically": ["atomically@2.1.1", "", { "dependencies": { "stubborn-fs": "^2.0.0", "when-exit": "^2.1.4" } }, "sha512-P4w9o2dqARji6P7MHprklbfiArZAWvo07yW7qs3pdljb3BWr12FIB7W+p0zJiuiVsUpRO0iZn1kFFcpPegg0tQ=="],
|
|
119
|
+
|
|
120
|
+
"auto-bind": ["auto-bind@5.0.1", "", {}, "sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg=="],
|
|
121
|
+
|
|
122
|
+
"chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
|
|
123
|
+
|
|
124
|
+
"cli-boxes": ["cli-boxes@4.0.1", "", {}, "sha512-5IOn+jcCEHEraYolBPs/sT4BxYCe2nHg374OPiItB1O96KZFseS2gthU4twyYzeDcFew4DaUM/xwc5BQf08JJw=="],
|
|
125
|
+
|
|
126
|
+
"cli-cursor": ["cli-cursor@4.0.0", "", { "dependencies": { "restore-cursor": "^4.0.0" } }, "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg=="],
|
|
127
|
+
|
|
128
|
+
"cli-truncate": ["cli-truncate@6.0.1", "", { "dependencies": { "slice-ansi": "^9.0.0", "string-width": "^8.2.0" } }, "sha512-2FPVnc3JxdRLONB/9edO1RwuUFFPJ3U2c6XvyccEhjqV5xw6mS22aH27OFdD1u4IYQOEUzXsT6ZU06d1VCSu+Q=="],
|
|
129
|
+
|
|
130
|
+
"code-excerpt": ["code-excerpt@4.0.0", "", { "dependencies": { "convert-to-spaces": "^2.0.1" } }, "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA=="],
|
|
131
|
+
|
|
132
|
+
"conf": ["conf@12.0.0", "", { "dependencies": { "ajv": "^8.12.0", "ajv-formats": "^2.1.1", "atomically": "^2.0.2", "debounce-fn": "^5.1.2", "dot-prop": "^8.0.2", "env-paths": "^3.0.0", "json-schema-typed": "^8.0.1", "semver": "^7.5.4", "uint8array-extras": "^0.3.0" } }, "sha512-fIWyWUXrJ45cHCIQX+Ck1hrZDIf/9DR0P0Zewn3uNht28hbt5OfGUq8rRWsxi96pZWPyBEd0eY9ama01JTaknA=="],
|
|
133
|
+
|
|
134
|
+
"convert-to-spaces": ["convert-to-spaces@2.0.1", "", {}, "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ=="],
|
|
135
|
+
|
|
136
|
+
"csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="],
|
|
137
|
+
|
|
138
|
+
"debounce-fn": ["debounce-fn@5.1.2", "", { "dependencies": { "mimic-fn": "^4.0.0" } }, "sha512-Sr4SdOZ4vw6eQDvPYNxHogvrxmCIld/VenC5JbNrFwMiwd7lY/Z18ZFfo+EWNG4DD9nFlAujWAo/wGuOPHmy5A=="],
|
|
139
|
+
|
|
140
|
+
"dot-prop": ["dot-prop@8.0.2", "", { "dependencies": { "type-fest": "^3.8.0" } }, "sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ=="],
|
|
141
|
+
|
|
142
|
+
"env-paths": ["env-paths@3.0.0", "", {}, "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A=="],
|
|
143
|
+
|
|
144
|
+
"environment": ["environment@1.1.0", "", {}, "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q=="],
|
|
145
|
+
|
|
146
|
+
"es-toolkit": ["es-toolkit@1.49.0", "", {}, "sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g=="],
|
|
147
|
+
|
|
148
|
+
"esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="],
|
|
149
|
+
|
|
150
|
+
"escape-string-regexp": ["escape-string-regexp@2.0.0", "", {}, "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="],
|
|
151
|
+
|
|
152
|
+
"eventsource-parser": ["eventsource-parser@3.1.0", "", {}, "sha512-kJezFj9YFAMLeORyi7aCLxLbD5/qWMQnoMVlVPyHIll7lgRJCc3JVln9Vgl9nwQi0YkMnhdGTMNn7CkRRAptMg=="],
|
|
153
|
+
|
|
154
|
+
"fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
|
|
155
|
+
|
|
156
|
+
"fast-uri": ["fast-uri@3.1.2", "", {}, "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ=="],
|
|
157
|
+
|
|
158
|
+
"get-east-asian-width": ["get-east-asian-width@1.6.0", "", {}, "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA=="],
|
|
159
|
+
|
|
160
|
+
"indent-string": ["indent-string@5.0.0", "", {}, "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg=="],
|
|
161
|
+
|
|
162
|
+
"ink": ["ink@7.1.0", "", { "dependencies": { "@alcalzone/ansi-tokenize": "^0.3.0", "ansi-escapes": "^7.3.0", "ansi-styles": "^6.2.3", "auto-bind": "^5.0.1", "chalk": "^5.6.2", "cli-boxes": "^4.0.1", "cli-cursor": "^4.0.0", "cli-truncate": "^6.0.0", "code-excerpt": "^4.0.0", "es-toolkit": "^1.45.1", "indent-string": "^5.0.0", "is-in-ci": "^2.0.0", "patch-console": "^2.0.0", "react-reconciler": "^0.33.0", "scheduler": "^0.27.0", "signal-exit": "^3.0.7", "slice-ansi": "^9.0.0", "stack-utils": "^2.0.6", "string-width": "^8.2.0", "terminal-size": "^4.0.1", "type-fest": "^5.5.0", "widest-line": "^6.0.0", "wrap-ansi": "^10.0.0", "ws": "^8.20.0", "yoga-layout": "~3.2.1" }, "peerDependencies": { "@types/react": ">=19.2.0", "react": ">=19.2.0", "react-devtools-core": ">=6.1.2" }, "optionalPeers": ["@types/react", "react-devtools-core"] }, "sha512-VWE6/yeLtFCJBNLflyI2OSylyXK1Rc24LuXup8Qt+icwkmmycFNdbn8IkSp6Frc0h1iA0NOvvi1ajW44U/w3Qg=="],
|
|
163
|
+
|
|
164
|
+
"ink-text-input": ["ink-text-input@6.0.0", "", { "dependencies": { "chalk": "^5.3.0", "type-fest": "^4.18.2" }, "peerDependencies": { "ink": ">=5", "react": ">=18" } }, "sha512-Fw64n7Yha5deb1rHY137zHTAbSTNelUKuB5Kkk2HACXEtwIHBCf9OH2tP/LQ9fRYTl1F0dZgbW0zPnZk6FA9Lw=="],
|
|
165
|
+
|
|
166
|
+
"is-fullwidth-code-point": ["is-fullwidth-code-point@5.1.0", "", { "dependencies": { "get-east-asian-width": "^1.3.1" } }, "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ=="],
|
|
167
|
+
|
|
168
|
+
"is-in-ci": ["is-in-ci@2.0.0", "", { "bin": { "is-in-ci": "cli.js" } }, "sha512-cFeerHriAnhrQSbpAxL37W1wcJKUUX07HyLWZCW1URJT/ra3GyUTzBgUnh24TMVfNTV2Hij2HLxkPHFZfOZy5w=="],
|
|
169
|
+
|
|
170
|
+
"json-schema": ["json-schema@0.4.0", "", {}, "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="],
|
|
171
|
+
|
|
172
|
+
"json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="],
|
|
173
|
+
|
|
174
|
+
"json-schema-typed": ["json-schema-typed@8.0.2", "", {}, "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA=="],
|
|
175
|
+
|
|
176
|
+
"mimic-fn": ["mimic-fn@4.0.0", "", {}, "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw=="],
|
|
177
|
+
|
|
178
|
+
"onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="],
|
|
179
|
+
|
|
180
|
+
"patch-console": ["patch-console@2.0.0", "", {}, "sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA=="],
|
|
181
|
+
|
|
182
|
+
"react": ["react@19.2.7", "", {}, "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ=="],
|
|
183
|
+
|
|
184
|
+
"react-reconciler": ["react-reconciler@0.33.0", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.0" } }, "sha512-KetWRytFv1epdpJc3J4G75I4WrplZE5jOL7Yq0p34+OVOKF4Se7WrdIdVC45XsSSmUTlht2FM/fM1FZb1mfQeA=="],
|
|
185
|
+
|
|
186
|
+
"require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="],
|
|
187
|
+
|
|
188
|
+
"restore-cursor": ["restore-cursor@4.0.0", "", { "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg=="],
|
|
189
|
+
|
|
190
|
+
"scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="],
|
|
191
|
+
|
|
192
|
+
"semver": ["semver@7.8.5", "", { "bin": "bin/semver.js" }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="],
|
|
193
|
+
|
|
194
|
+
"signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="],
|
|
195
|
+
|
|
196
|
+
"slice-ansi": ["slice-ansi@9.0.0", "", { "dependencies": { "ansi-styles": "^6.2.3", "is-fullwidth-code-point": "^5.1.0" } }, "sha512-SO/3iYL5S3W57LLEniscOGPZgOqZUPCx6d3dB+52B80yJ0XstzsC/eV8gnA4tM3MHDrKz+OCFSLNjswdSC+/bA=="],
|
|
197
|
+
|
|
198
|
+
"stack-utils": ["stack-utils@2.0.6", "", { "dependencies": { "escape-string-regexp": "^2.0.0" } }, "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ=="],
|
|
199
|
+
|
|
200
|
+
"string-width": ["string-width@8.2.1", "", { "dependencies": { "get-east-asian-width": "^1.5.0", "strip-ansi": "^7.1.2" } }, "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA=="],
|
|
201
|
+
|
|
202
|
+
"strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="],
|
|
203
|
+
|
|
204
|
+
"stubborn-fs": ["stubborn-fs@2.0.0", "", { "dependencies": { "stubborn-utils": "^1.0.1" } }, "sha512-Y0AvSwDw8y+nlSNFXMm2g6L51rBGdAQT20J3YSOqxC53Lo3bjWRtr2BKcfYoAf352WYpsZSTURrA0tqhfgudPA=="],
|
|
205
|
+
|
|
206
|
+
"stubborn-utils": ["stubborn-utils@1.0.2", "", {}, "sha512-zOh9jPYI+xrNOyisSelgym4tolKTJCQd5GBhK0+0xJvcYDcwlOoxF/rnFKQ2KRZknXSG9jWAp66fwP6AxN9STg=="],
|
|
207
|
+
|
|
208
|
+
"tagged-tag": ["tagged-tag@1.0.0", "", {}, "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng=="],
|
|
209
|
+
|
|
210
|
+
"terminal-size": ["terminal-size@4.0.1", "", {}, "sha512-avMLDQpUI9I5XFrklECw1ZEUPJhqzcwSWsyyI8blhRLT+8N1jLJWLWWYQpB2q2xthq8xDvjZPISVh53T/+CLYQ=="],
|
|
211
|
+
|
|
212
|
+
"type-fest": ["type-fest@5.7.0", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-1URUxUqfHFM1c+zfSPsa3gnkO7Aq21qyH75SIduNYz4SzY964rn1X2vCMQaHSHhktiw+0kPa2iyb6PUpXqB6Vg=="],
|
|
213
|
+
|
|
214
|
+
"typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="],
|
|
215
|
+
|
|
216
|
+
"uint8array-extras": ["uint8array-extras@0.3.0", "", {}, "sha512-erJsJwQ0tKdwuqI0359U8ijkFmfiTcq25JvvzRVc1VP+2son1NJRXhxcAKJmAW3ajM8JSGAfsAXye8g4s+znxA=="],
|
|
217
|
+
|
|
218
|
+
"undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
|
|
219
|
+
|
|
220
|
+
"when-exit": ["when-exit@2.1.5", "", {}, "sha512-VGkKJ564kzt6Ms1dbgPP/yuIoQCrsFAnRbptpC5wOEsDaNsbCB2bnfnaA8i/vRs5tjUSEOtIuvl9/MyVsvQZCg=="],
|
|
221
|
+
|
|
222
|
+
"widest-line": ["widest-line@6.0.0", "", { "dependencies": { "string-width": "^8.1.0" } }, "sha512-U89AsyEeAsyoF0zVJBkG9zBgekjgjK7yk9sje3F4IQpXBJ10TF6ByLlIfjMhcmHMJgHZI4KHt4rdNfktzxIAMA=="],
|
|
223
|
+
|
|
224
|
+
"wrap-ansi": ["wrap-ansi@10.0.0", "", { "dependencies": { "ansi-styles": "^6.2.3", "string-width": "^8.2.0", "strip-ansi": "^7.1.2" } }, "sha512-SGcvg80f0wUy2/fXES19feHMz8E0JoXv2uNgHOu4Dgi2OrCy1lqwFYEJz1BLbDI0exjPMe/ZdzZ/YpGECBG/aQ=="],
|
|
225
|
+
|
|
226
|
+
"ws": ["ws@8.21.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g=="],
|
|
227
|
+
|
|
228
|
+
"yoga-layout": ["yoga-layout@3.2.1", "", {}, "sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ=="],
|
|
229
|
+
|
|
230
|
+
"zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
|
|
231
|
+
|
|
232
|
+
"dot-prop/type-fest": ["type-fest@3.13.1", "", {}, "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g=="],
|
|
233
|
+
|
|
234
|
+
"ink-text-input/type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="],
|
|
235
|
+
|
|
236
|
+
"onetime/mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="],
|
|
237
|
+
}
|
|
238
|
+
}
|