diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8358de45..5f32f662 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,10 +9,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: 20 cache: "npm" @@ -22,3 +22,11 @@ jobs: - name: Run build run: npm run build + + - name: Smoke test built entrypoint + run: | + test -f dist/index.html + if grep -q 'src="/src/main.tsx"' dist/index.html; then + echo "Smoke test failed: dist/index.html still references /src/main.tsx" + exit 1 + fi diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index fab97b00..c8f1d275 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -19,10 +19,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: 20 cache: "npm" @@ -33,8 +33,16 @@ jobs: - name: Build site run: npm run build + - name: Smoke test built entrypoint + run: | + test -f dist/index.html + if grep -q 'src="/src/main.tsx"' dist/index.html; then + echo "Smoke test failed: dist/index.html still references /src/main.tsx" + exit 1 + fi + - name: Upload artifact - uses: actions/upload-pages-artifact@v3 + uses: actions/upload-pages-artifact@v5 with: path: dist @@ -47,4 +55,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v4 + uses: actions/deploy-pages@v5 diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..0ebb44de --- /dev/null +++ b/.gitignore @@ -0,0 +1,28 @@ +node_modules/ + +# Local editor settings +.vscode/ +.idea/ + +# Build output and caches +dist/ +*.tsbuildinfo +coverage/ +.cache/ +.turbo/ + +# Environment and local overrides +.env +.env.* +!.env.example + +# Package manager state +.npm/ +.pnpm-store/ +yarn-error.log* +pnpm-debug.log* +npm-debug.log* + +# Logs and OS files +*.log +.DS_Store diff --git a/PRD.md b/PRD.md index bd3e5569..34be6a89 100644 --- a/PRD.md +++ b/PRD.md @@ -1,86 +1,114 @@ -# init.md — Minimal initialization blueprints for agents +# init.md — General Operational Initialization Protocol PRD -A lightweight, GitHub Pages–friendly repository providing initialization protocols for AI agents to transition from cold start to ready state. +## Product Definition -**Experience Qualities:** -1. **Minimal** — Smallest viable footprint with zero dependencies beyond GitHub Pages -2. **Structured** — Machine-readable protocols that agents can parse and execute systematically -3. **Practical** — Real-world templates that users can immediately clone and adapt +`init.md` is a human- and machine-readable procedure for inspecting a target, determining what it requires, applying the appropriate initialization pattern, validating the result, and reporting its operational state. -**Complexity Level**: Content Showcase (information-focused) -This is primarily a documentation site showcasing initialization protocols and templates, with light interactive features for template browsing. +The repository provides the canonical general protocol, target-specific templates, and a static website for browsing and copying those templates. -## Essential Features +## Scope -**Template Gallery with Interactive Preview** -- Functionality: Carousel showcasing multiple init protocol templates for different contexts -- Purpose: Allow users to quickly compare and select appropriate templates for their systems -- Trigger: User visits landing page or clicks template navigation -- Progression: Browse templates → preview content → copy template → customize for system -- Success criteria: Users can easily identify and copy relevant templates +This version focuses on broad target initialization. A target may be a software project, repository, AI agent, server, service, workspace, research environment, data pipeline, application, tool, local directory, remote environment, or existing system requiring restoration or reconfiguration. -**GitHub Pages Integration** -- Functionality: Automatically deploy documentation site from repository content -- Purpose: Provide human-readable access to init protocols alongside machine-readable files -- Trigger: Repository updates trigger automatic GitHub Pages deployment -- Progression: Code commit → GitHub Actions → Pages deployment → live site update -- Success criteria: Site updates automatically when repository content changes +The project does not provide a backend, database, account system, hosted execution runtime, or automatic target execution in this version. -**Machine-Readable Protocol Structure** -- Functionality: Consistent YAML-like structure that agents can parse and execute -- Purpose: Enable agents to systematically execute initialization sequences -- Trigger: Agent reads init.md file during startup sequence -- Progression: Agent parses structure → validates steps → executes initialization → reports ready state -- Success criteria: Agents can reliably parse and execute protocols without human intervention +## Core Model -## Edge Case Handling +The root protocol determines the initialization process: -- **Missing templates**: Fallback to minimal protocol if specific template unavailable -- **GitHub Pages failures**: Static files remain accessible even if dynamic features break -- **Large repositories**: Templates remain lightweight regardless of hosting repository size -- **Version conflicts**: Templates include version compatibility notes and migration guides +1. Inspect what exists. +2. Determine what is needed. +3. Create what applies. +4. Configure what is required. +5. Validate the result. +6. Report what became operational. -## Design Direction +Templates define concrete initialization patterns for specific targets and modes. Target-specific requirements belong in templates rather than the root protocol. -The design should feel professional and trustworthy while maintaining extreme simplicity — think technical documentation that feels approachable rather than intimidating, with clean typography and generous whitespace that helps users quickly scan and understand complex initialization procedures. +## Template-Driven Specialization -## Color Selection +The repository includes these canonical templates: -Analogous color scheme using cool blues and grays to convey technical reliability and trust, with subtle green accents for success states and completion indicators. +- Minimal initialization. +- Dry-run initialization. +- Development-project initialization. +- Agent initialization. +- Server initialization. -- **Primary Color**: Deep blue (`oklch(0.3 0.15 240)`) — conveys technical authority and reliability -- **Secondary Colors**: Light gray (`oklch(0.95 0.02 240)`) for backgrounds and subtle blue-gray (`oklch(0.7 0.05 240)`) for secondary text -- **Accent Color**: Success green (`oklch(0.65 0.15 140)`) for completion states and positive actions -- **Foreground/Background Pairings**: - - Primary (Deep Blue): White text (`oklch(1 0 0)`) - Ratio 8.2:1 ✓ - - Secondary Gray: Dark gray text (`oklch(0.2 0 0)`) - Ratio 15.1:1 ✓ - - Accent (Success Green): White text (`oklch(1 0 0)`) - Ratio 5.8:1 ✓ - - Background White: Primary blue text - Ratio 8.2:1 ✓ +Templates declare metadata for name, target, purpose, mode, likely created artifacts, configured elements, validation checks, and optional outputs. Metadata describes likely behavior and does not force universal output creation. -## Font Selection +## Conditional Artifact Generation -Typography should emphasize clarity and scannability for technical documentation — Inter for its excellent readability at all sizes and Fira Code for code blocks to ensure perfect monospace alignment. +Generated files are conditional. No output file is universally required except where the selected template or target requires it. -- **Typographic Hierarchy**: - - H1 (Page Title): Inter Bold/32px/tight letter spacing - - H2 (Section Headers): Inter Semibold/24px/normal spacing - - H3 (Subsections): Inter Medium/18px/normal spacing - - Body Text: Inter Regular/16px/relaxed line height (1.6) - - Code Blocks: Fira Code Regular/14px/1.4 line height - - Navigation: Inter Medium/14px/normal spacing +Examples: -## Animations +- Generate a README only when project documentation is missing or inadequate. +- Generate a PRD only when product requirements need to be established. +- Generate `AGENTS.md` only when agent operation applies. +- Generate a snapshot only when a point-in-time record is useful. +- Generate a server report only for server or infrastructure targets. -Subtle functional animations that guide attention without being distracting — think gentle fades for template switching and smooth scrolling for navigation, maintaining a professional tone that doesn't call attention to itself. +## Canonical Markdown Source -- **Purposeful Meaning**: Smooth transitions between templates communicate progression and system responsiveness -- **Hierarchy of Movement**: Template carousel gets priority for animation, while navigation and page transitions use minimal motion +The Markdown files under `templates/` are the canonical source of template content. The website imports those Markdown files directly with Vite raw imports. -## Component Selection +The template browser must: -- **Components**: Cards for template previews, Tabs for template navigation, Code blocks with syntax highlighting, Breadcrumbs for section navigation -- **Customizations**: Custom template carousel component with next/previous navigation, enhanced code blocks with copy-to-clipboard functionality -- **States**: Hover states for templates, active states for navigation, loading states for template content -- **Icon Selection**: Phosphor icons for navigation (CaretLeft/Right for carousel, Copy for clipboard, CheckCircle for completion) -- **Spacing**: Consistent 1rem base spacing with 2rem section gaps and 0.5rem component internal padding -- **Mobile**: Stacked template cards on mobile with swipe navigation, collapsible navigation menu, single-column layout with full-width code blocks \ No newline at end of file +- render content from the canonical Markdown files; +- parse and display template metadata; +- copy root `init.md` as a complete usable procedure; +- copy complete template Markdown bodies without frontmatter metadata; +- avoid storing complete template bodies as TypeScript strings. + +The build runs a template integrity check that verifies the expected template files and metadata fields exist. + +## Website Requirements + +The website is a static Vite and React application deployed through GitHub Pages. It preserves the template browser, copy-to-clipboard behavior, and the Overview, Protocol, Templates, and Guide structure. + +The public interface should communicate: + +- `init.md` is not one fixed scaffold; +- the six-stage initialization process; +- the relationship between the root protocol and templates; +- conditional generated outputs; +- target-specific agent instructions; +- GitHub and BIThub as header and footer destinations, with content reserved for init guidance and copy actions. + +## BITwiki And BIThub Integration + +The visual and editorial system should align with the BITwiki ecosystem through strong black, white, and neutral structure, high-contrast typography, geometric protocol surfaces, restrained accents, and precise technical language. + +Required public links, limited to header and footer: + +- GitHub repository: +- BIThub forum: + +BIThub is presented as the place to discuss the protocol, ask questions, share templates, propose improvements, and report implementation experiences. + +## Deployment + +GitHub Pages remains the public interface. The existing deploy workflow builds the Vite site and uploads the `dist` artifact to Pages. + +## Non-Goals + +- No new framework. +- No backend service. +- No database. +- No account system. +- No hosted execution runtime. +- No universal production server checklist in the root protocol. +- No universal requirement to generate README, PRD, snapshot, context, task, server, or agent files. + +## Acceptance Criteria + +- Root `init.md` is target-neutral and follows Inspect, Determine, Create, Configure, Validate, Report. +- Server-specific checks live in the server template. +- Existing minimal, server, and dry-run template concepts are preserved and corrected. +- Development-project and agent templates exist. +- Templates include metadata and optional outputs. +- The website renders canonical Markdown template files and copies complete usable instruction bodies. +- GitHub and BIThub links are visible in the header and footer only. +- README and PRD describe the corrected model. +- Production build succeeds without adding a backend or execution runtime. \ No newline at end of file diff --git a/README.md b/README.md index 42eeaa33..bea8e580 100644 --- a/README.md +++ b/README.md @@ -1,48 +1,106 @@ -# init.md — Agent initialization blueprints +# init.md -This repository provides minimal, production-friendly initialization protocols for AI agents. It serves both humans (via GitHub Pages) and agents (via machine-readable protocol files). +`init.md` is a human- and machine-readable procedure for inspecting a target, determining what it requires, applying the appropriate initialization pattern, validating the result, and reporting its operational state. -## Structure +It is not one fixed scaffold. The canonical file defines the general initialization procedure. Templates specialize that procedure for specific targets. -- **`init.md`** — The canonical, minimal initialization protocol -- **`templates/`** — Ready-to-copy template variants for different contexts -- **GitHub Pages Site** — Human-readable documentation and template browser +## 1. Definition -## Templates +Use `init.md` when a target needs to become operational. A target may be a software project, repository, AI agent, server, service, workspace, research environment, data pipeline, application, tool, local directory, remote environment, or existing system requiring restoration or reconfiguration. -- **`minimal_init_protocol.md`** — Smallest possible initialization -- **`server_init_protocol.md`** — Production server initialization -- **`dry_run_init_protocol.md`** — Safe rehearsal mode +## 2. How It Works -## Usage +The root protocol stays general. It identifies the target, chooses or adapts an initialization pattern, creates and configures only what applies, validates the intended result, and reports the operational state. -1. **For Agents**: Read and parse `init.md` or template files directly -2. **For Humans**: Visit the GitHub Pages site for documentation and template browser -3. **For Developers**: Copy templates and customize for your specific system architecture +Templates provide concrete patterns for common target categories. They describe likely behavior, not mandatory output bundles. -## GitHub Pages Setup +## 3. Six-Stage Initialization Process -1. Fork this repository -2. Go to Settings → Pages → Source: Deploy from branch -3. Select `main` branch and `/ (root)` folder -4. Your documentation site will be available at `https://yourusername.github.io/init-md/` +1. Inspect what exists. +2. Determine what is needed. +3. Create what applies. +4. Configure what is required. +5. Validate the result. +6. Report what became operational. -## Principles +## 4. General Protocol Versus Templates -- **Lean footprint**: Vite + React build that deploys cleanly to GitHub Pages -- **Structured**: Machine-readable protocols that agents can parse systematically -- **Practical**: Templates are ready to copy into production workflows without extra scaffolding +- `init.md` defines the target-neutral procedure. +- `templates/` contains target-specific initialization patterns. +- Generated outputs are conditional. +- Validation is derived from the target. +- Existing work should be adapted before creating replacements. -## Core dependencies +No output file is universally required except where the selected template or target requires it. -- React 19 and Vite 6 for the static site build -- Tailwind CSS 4 with Radix UI for styling primitives -- `@phosphor-icons/react` and shared UI components for consistent visuals +## 5. Available Templates -## License +- `templates/minimal_init_protocol.md` — smallest reasonable initialization pattern for narrow gaps. +- `templates/dry_run_init_protocol.md` — no-change inspection and proposed initialization plan. +- `templates/development_project_init_protocol.md` — software projects, repositories, apps, packages, CLIs, websites, and monorepos. +- `templates/agent_init_protocol.md` — agent instructions, tools, prompts, state, and startup validation. +- `templates/server_init_protocol.md` — server, service host, infrastructure, and deployment readiness. -MIT License. Adapt freely to your environment and policies. +Each template includes metadata for likely targets, modes, created artifacts, configured elements, validation checks, and optional outputs. -## Credits +## 6. Usage For Agents -Inspired by [openai/agents.md](https://github.com/openai/agents.md), adapted for lightweight GitHub Pages deployment focused on initialization protocols. \ No newline at end of file +Agents can read the root protocol or a selected template directly. During inspection, determine whether agent instructions are applicable. Create `AGENTS.md` only when agent operation applies and valid target-specific instructions do not already exist. + +Different projects should have different `AGENTS.md` files. Different targets should have different `init.md` implementations. + +## 7. Usage For Humans + +1. Identify the target and intended operational result. +2. Choose the closest template. +3. Copy or adapt the template. +4. Run the procedure in active, dry-run, repair, or reinitialize mode. +5. Review the validation result. +6. Keep the resulting target-specific `init.md` with the target. + +Example instructions: + +```text +Initialize this repository using the development-project template. +Inspect this server using the server template in dry-run mode. +Determine what this agent workspace needs to become operational. +Create an AGENTS.md file only if this project would benefit from one. +``` + +## 8. Usage For Developers + +This repository preserves a static Vite and React website for browsing templates and copying canonical Markdown content. + +Common commands: + +```bash +npm install +npm run dev +npm run build +``` + +The build runs `scripts/check-templates.mjs` before compiling the site. That check verifies the expected template files exist and contain the required metadata fields. + +## 9. Website + +The public site is deployed with GitHub Pages from the existing Vite build. It renders the Markdown files under `templates/` as the canonical source and keeps copy-to-clipboard behavior for root `init.md` and complete usable template bodies. + +GitHub Pages must use **Build and deployment > Source: GitHub Actions** for this repository. Do not use **Deploy from a branch > root**, because that serves the unbuilt Vite source files and the browser will try to load `/src/main.tsx` directly. + +Repository: + +## 10. BIThub Discussion + +Use BIThub to discuss the protocol, ask questions, share templates, propose improvements, and report implementation experiences. + +- BIThub forum: + +## 11. Contributing + +Contributions should preserve the distinction between the general protocol and target-specific templates. Avoid adding universal requirements to the root protocol when they belong in a template. + +When updating templates, keep the Markdown files canonical and maintain their metadata fields. + +## 12. License + +MIT License. See `LICENSE`. \ No newline at end of file diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 00000000..2fa88e2b --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,50 @@ +import js from "@eslint/js" +import reactHooks from "eslint-plugin-react-hooks" +import reactRefresh from "eslint-plugin-react-refresh" +import globals from "globals" +import tseslint from "typescript-eslint" + +export default tseslint.config( + { + ignores: ["dist", "node_modules"], + }, + js.configs.recommended, + ...tseslint.configs.recommended, + { + files: ["**/*.{ts,tsx}"], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + "react-hooks": reactHooks, + "react-refresh": reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + "@typescript-eslint/no-explicit-any": "off", + "react-refresh/only-export-components": ["warn", { allowConstantExport: true }], + }, + }, + { + files: ["*.config.js", "scripts/**/*.mjs", "tailwind.config.js"], + languageOptions: { + globals: globals.node, + }, + }, + { + files: ["src/components/ui/**/*.{ts,tsx}"], + rules: { + "@typescript-eslint/no-unused-vars": "off", + "react-hooks/purity": "off", + "react-hooks/set-state-in-effect": "off", + "react-refresh/only-export-components": "off", + }, + }, + { + files: ["src/hooks/use-mobile.ts"], + rules: { + "react-hooks/set-state-in-effect": "off", + }, + }, +) \ No newline at end of file diff --git a/index.html b/index.html index aa47e1aa..322ad6fc 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,12 @@ - Vite React App + + + init.md — General Operational Initialization Protocol
diff --git a/init.md b/init.md index 2e49384a..4f42ea87 100644 --- a/init.md +++ b/init.md @@ -1,187 +1,266 @@ -# init.md — Minimal Initialization Protocol - -**Audience** -- Humans: understand what this is and how to adapt it safely. -- Agents: parse this structure to move from cold start to "READY" with minimal side effects. - -**Conventions** -- `description`: human-readable explanation -- `command`: a safe, minimal shell probe (optional; prefer safer alternatives) -- `action`: a conceptual step the agent performs internally -- `policy`: a guardrail or constraint that must be followed -- `source`: canonical reference for verification or traceability -- `output_path`: target path for generated artifacts (never raw secrets) -- `await_instructions`: whether to pause for operator input - -## INIT_SEQUENCE - -### HOST_PREFLIGHT -Establish a basic understanding of the host and clock alignment without mutating the system. - -**Steps:** -- **Description**: Note OS family and kernel; ensure basic toolchain compatibility. - - **Action**: Read /etc/os-release and os.release() via safe file reads or APIs. - - **Source**: OS_INFO - -- **Description**: Confirm time coherence (NTP/clock drift) for consistent logs and metrics. - - **Action**: Inspect prior timing notes or safe system time APIs (no privileged writes). - - **Source**: SYSTEM_TIME_INFO - -### RESOURCE_BASELINE -Draft a provisional resource profile to guide conservative concurrency. - -**Steps:** -- **Description**: Capture approximate CPU cores, memory, storage headroom. - - **Action**: Gather from safe APIs or cached diagnostics; avoid invasive polling. - - **Source**: SYSTEM_HARDWARE_METRICS - -- **Description**: Flag potential bottlenecks (disk saturation, elevated load). - - **Action**: Set soft thresholds for warnings; do not enforce limits here. - - **Source**: SYSTEM_PERFORMANCE_METRICS - -### TOOL_DISCOVERY_AND_API_POLICY -Enumerate available tools/adapters and state strict routing policies. - -**Steps:** -- **Description**: Load tool registry/capability matrix if present. - - **Action**: Parse a tool schema file into memory (if available). - - **Source**: TOOL_SCHEMA - -- **Description**: Enforce API routing rules to maintain safety and provenance. - - **Policy**: - - Web search must use the designated search adapter. - - REST calls must use approved HTTP clients/infrastructure modules. - - Do not proxy REST via generic web fetchers not designed for it. - - Prefer dedicated file tools for reading large or varied file types. - - **Source**: API_ROUTING_POLICY - -### SECRET_MANAGEMENT -Handle credentials securely; never hardcode secrets or read from arbitrary files. - -**Steps:** -- **Description**: Retrieve credentials via a vault or approved secret manager. - - **Action**: Load secrets into memory only; do not write to disk; no .env mutation at runtime. - - **Source**: SECURE_VAULT - -- **Description**: Confirm private key and secret storage permissions (conceptually if needed). - - **Action**: Validate intended permission posture; log discrepancies for remediation. - - **Source**: SECRET_STORAGE_PERMISSIONS - -### NETWORK_SECURITY -Understand intended firewall posture and scanning plans; avoid active mutations by default. - -**Steps:** -- **Description**: Record which ports/services should be open/closed. - - **Action**: Log planned firewall narrative; do not apply changes here. - - **Source**: FIREWALL_POLICY - -- **Description**: Outline future security scanning cadence and tooling. - - **Action**: Specify scanners (SAST/DAST/dependency audit) and ownership for activation later. - - **Source**: SECURITY_SCANNER_PLAN - -### CONTEXT_LOADING -Prime memory with configuration, docs, and project context. - -**Steps:** -- **Description**: Identify and list context files (md/json/yml) and their purposes. - - **Action**: Build an in-memory index; avoid loading large binaries. - - **Source**: FILE_SYSTEM_SCAN - -- **Description**: Load essential configs/prompts/docs into a fast in-memory map. - - **Action**: Parse select files into a structured cache; skip raw secrets. - - **Source**: PARSED_CONTEXT_FILES - -- **Description**: Persist the context map for quick restoration if permitted. - - **Action**: Serialize context summary (not raw contents) to a snapshot file. - - **Output Path**: ./cache/context.snapshot.json - - **Source**: SERIALIZED_CONTEXT_MAP - -- **Description**: Inventory key scripts/utilities for operational awareness. - - **Action**: List notable scripts and their intended roles. - - **Source**: SCRIPT_INVENTORY - -### CODE_GOVERNANCE_AND_STATE -Reinforce auditability and data hygiene. - -**Steps:** -- **Description**: Capture semantic diffs for any code mutations. - - **Policy**: Append diffs to ./logs/code_history/.patch when changes occur. - - **Source**: VERSION_CONTROL_POLICY - -- **Description**: Protect templates and historical scripts. - - **Policy**: Deletions require an explicit purge flag acknowledged by the operator. - - **Source**: CODE_RETENTION_POLICY - -- **Description**: Plan backup strategy for data directories. - - **Action**: Define sync flow to backup target; defer execution until approved. - - **Source**: BACKUP_STRATEGY - -- **Description**: Plan cache hygiene. - - **Action**: Age-out files older than 7 days; confirm before enabling in production. - - **Source**: CACHE_POLICY - -- **Description**: Plan telemetry/logging fan-out. - - **Action**: Describe how logs will forward to centralized sinks when configured. - - **Source**: CENTRALIZED_LOGGING_PLAN - -### STARTUP_VALIDATION_AND_ROLLBACK -Define diagnostics and READY/ROLLBACK signals. - -**Steps:** -- **Description**: List lint/test/static analysis to run before READY. - - **Action**: Document commands and pass criteria; do not run by default. - - **Source**: DIAGNOSTIC_CHECKLIST - -- **Description**: Define the READY signal and rollback triggers. - - **Action**: Specify log format and any state file changes for READY vs. ROLLBACK. - - **Source**: SYSTEM_READINESS_SIGNAL - -### SELF_PRIMING_AND_CONTEXTUALIZATION -Load core directives, prompts, and recent memory to ground behavior. - -**Steps:** -- **Description**: Read core directives and instance/system prompts. - - **Action**: Load directives and system overview docs into working memory. - - **Source**: CORE_AND_PROMPTS - -- **Description**: Engage cognitive recall of recent, high-salience interactions. - - **Action**: Query memory adapters to assemble a current situational vector. - - **Source**: INTERNAL_MEMORY_RETRIEVAL - -- **Description**: Confirm priming complete and await commands. - - **Action**: Log completion and enter ACCEPTING state. - - **Source**: SELF_PRIMING_STATUS - -## MINIMUM_RUNTIME_CONTEXT_LOAD - -Essential elements that should be present in working memory for baseline operation: - -- Host metadata (CPU cores, RAM, IP, GPU) from cached metrics files if available. -- Tool capability matrix (if applicable). -- Core directives and system prompts. -- Key scripts and docs index (paths + purposes, not raw contents). -- Recent log excerpt or last-run context (if present). -- Version history patches (for auditability). -- Snapshot of context state (sanitized summary). - -## EXECUTION_START - -Produce a concise, machine-readable snapshot and announce readiness. - -**Steps:** -- **Description**: Generate a snapshot with directory overview, metrics table, and context locations. - - **Action**: Create a Markdown file summarizing the environment and context (no raw contents). - - **Output File**: ./INIT_CONTEXT_SNAPSHOT.md - - **Content Structure**: - - Directory tree (depth 3, omit hidden/system dirs) with purposes. - - Metrics table: hostname, uptime, CPU cores, RAM, GPU presence, disk free %, load avg (5m), IP, timezone, last snapshot time. - - Key context locations (what it is, where it lives, where to learn more). - - **Data Principles**: - - Factual, minimal, human- and machine-readable. - - No secrets, no raw file contents. - - **Source**: SYSTEM_READINESS_REPORT - -- **Description**: Announce snapshot path and READY state. - - **Action**: Print a concise message and await further instructions. - - **Source**: SYSTEM_READINESS_REPORT - - **Await Instructions**: true \ No newline at end of file +# init.md - General Operational Initialization Protocol + +`init.md` is a general initialization procedure that inspects a target, determines what it needs to become operational, creates and configures what applies, validates the result, and reports its operational state. + +`init.md` is a target-specific initialization protocol for making a project, agent, service, server, workspace, or other system operational. + +It does not impose one universal scaffold. It first inspects what already exists, identifies the target's purpose and requirements, determines what is missing or misconfigured, and then creates or configures only what applies. + +Depending on the target, this may involve: + +- creating directories or files; +- generating project documentation; +- adding an `AGENTS.md` file; +- configuring dependencies, tools, services, or environments; +- establishing startup procedures; +- creating snapshots or context files; +- defining tests or readiness checks. + +It then validates that the initialized target works as intended and reports: + +- what was inspected; +- what was created or changed; +- what was successfully validated; +- what remains incomplete or blocked; +- whether the target is operational. + +Its core sequence is: + +**Inspect -> Determine -> Create -> Configure -> Validate -> Report** + +Templates provide complete concrete initialization procedures for different kinds of targets, while the canonical `init.md` defines the general method. + +## 1. Purpose + +Use this protocol to determine what a target needs in order to become operational. + +The target may be new, incomplete, misconfigured, inactive, restored from a previous state, or being started in a new environment. Initialization succeeds when the relevant requirements have been inspected, created or configured when applicable, validated, and reported clearly. + +## 2. Target + +Before selecting an initialization pattern, identify the target without prescribing its type. + +Record: + +- what is being initialized; +- its intended function; +- its current location or environment; +- its expected users or operators; +- its desired operational result; +- any explicit constraints supplied by the user, project, or environment. + +Target examples include software projects, repositories, AI agents, servers, services, workspaces, research environments, data pipelines, applications, tools, local directories, remote environments, and existing systems requiring restoration or reconfiguration. + +## 3. Initialization Modes + +Modes describe how the procedure should behave. A template may support one or more modes, and may define additional modes when useful. + +### Active + +Inspect the target and perform applicable initialization work. + +### Dry run + +Inspect the target, determine requirements, and report proposed work without changing the target. + +### Repair + +Inspect an existing target, identify missing or invalid initialization elements, and correct what applies. + +### Reinitialize + +Re-evaluate an already initialized target after substantial changes to its purpose, environment, dependencies, ownership, or operating model. + +## 4. General Procedure + +Follow the same high-level sequence for every target. The implementation details come from the target and selected template. + +### `INSPECT` + +Determine: + +- what exists; +- what the target appears to be; +- what instructions and configuration already exist; +- what is complete; +- what is missing; +- what is contradictory; +- what can be reused. + +Inspection must be relevant to the target. Do not scan unrelated files, directories, systems, or infrastructure without reason. + +### `DETERMINE` + +Determine: + +- the target's operational requirements; +- which initialization pattern applies; +- which files, directories, dependencies, settings, tools, or services are required; +- which existing artifacts should remain unchanged; +- which outputs are useful; +- what validation is possible. + +The procedure may select one template, combine compatible template sections, or create a target-specific initialization plan. + +### `CREATE` + +Create only what applies to the target and selected initialization pattern. + +Possible outputs include: + +- directories; +- configuration files; +- documentation; +- dependency manifests; +- agent instructions; +- project requirements; +- startup scripts; +- environment examples; +- context files; +- snapshots; +- tests; +- task files; +- data structures; +- service definitions. + +These are examples, not universal requirements. + +### `CONFIGURE` + +Configure required elements so they work together. + +Possible configuration includes: + +- paths; +- runtime settings; +- dependencies; +- scripts; +- services; +- tools; +- environment variables; +- agent instructions; +- file relationships; +- permissions; +- integrations. + +Only configure what the selected target and template require. + +### `VALIDATE` + +Validate that the intended result is operational. + +Validation may include: + +- required files exist; +- configuration parses; +- commands execute; +- services start; +- dependencies resolve; +- tests pass; +- instructions are internally consistent; +- expected outputs can be produced; +- required tools are accessible. + +Validation must be derived from the target. Do not require server diagnostics for non-server targets. Do not declare success without a relevant validation step. + +### `REPORT` + +Report: + +- what target was initialized; +- what was inspected; +- what was created; +- what was configured; +- what was validated; +- what remains incomplete; +- what warnings or blockers remain; +- where the important outputs are located; +- whether the target is operational. + +## 5. Result States + +Use this small general vocabulary unless a template needs to extend it: + +- `OPERATIONAL` +- `OPERATIONAL_WITH_WARNINGS` +- `BLOCKED` +- `DRY_RUN_COMPLETE` + +## 6. Conditional Agent Instructions + +During inspection, determine whether the target will be operated or modified by AI agents. + +When agent instructions are applicable: + +- inspect whether an `AGENTS.md` file already exists; +- preserve valid existing instructions; +- create an `AGENTS.md` file when it would materially improve operation and none exists; +- derive its contents from the actual target; +- do not install one generic `AGENTS.md` into every project; +- do not assume different projects require identical agent instructions. + +Different projects should have different `AGENTS.md` files. Different targets should have different `init.md` implementations. + +## 7. Conditional Outputs + +No output file is universally required except where the selected template or target requires it. + +Examples: + +- Generate a PRD only when product requirements need to be established. +- Generate a snapshot only when a resumable environment or system-state record is useful. +- Generate a README only when project documentation is missing or inadequate. +- Generate an `AGENTS.md` file only when agent operation applies. +- Generate a server report only for server or infrastructure targets. +- Generate a context file only when context must be externalized. +- Generate task files only when actionable work remains. + +The operational artifact vocabulary for this phase includes `INIT.md`, `AGENTS.md`, `SELF.md`, `USER.md`, `TOOLS.md`, `STATE.md`, `PLAN.md`, `SNAPSHOT.md`, and project-specific specifications, configuration, indexes, or validation artifacts. Each artifact remains conditional. + +## 8. Existing Work + +Prefer adaptation over unnecessary replacement. + +The procedure should: + +- preserve relevant existing files; +- update incomplete files when appropriate; +- avoid generating duplicates; +- avoid overwriting substantial user-authored work without clear reason; +- identify conflicts before changing them; +- reuse existing project conventions where possible. + +This is not a restrictive safety framework. It is basic initialization correctness. + +## 9. Instruction Vocabulary + +Use a small vocabulary when a step needs structure: + +- `description` — what the step accomplishes; +- `condition` — when the step applies; +- `inspect` — what must be examined; +- `action` — what should be created or configured; +- `output` — any resulting artifact; +- `validation` — how the result is checked; +- `source` — evidence or input used; +- `status` — resulting operational state. + +Do not require every field in every step. Do not make shell commands the default representation. Use commands only when commands are the right validation or configuration tool. + +## 10. Templates + +Templates are complete concrete initialization procedures for target categories, modes, or operating contexts. + +Use a template when it better matches the target than the root procedure alone. A template may be used directly, adapted, or combined with compatible sections from another template when the target requires it. + +Template source files may contain site metadata for indexing and display, but the usable instruction body is the protocol content itself. + +## Final Product Statement + +`init.md` is not one fixed scaffold. + +It is a general procedure for determining what a target needs in order to become operational. + +Templates provide complete concrete initialization procedures for different targets. + +Inspect what exists. Determine what is needed. Create what applies. Configure what is required. Validate the result. Report what became operational. \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 01a835be..84388e26 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,13 @@ { - "name": "spark-template", + "name": "init.md", "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "spark-template", + "name": "init.md", "version": "0.0.0", "dependencies": { - "@github/spark": "^0.46.1", "@heroicons/react": "^2.2.0", "@hookform/resolvers": "^4.1.3", "@octokit/core": "^7.0.6", @@ -17,12 +16,12 @@ "@radix-ui/react-accordion": "^1.2.12", "@radix-ui/react-alert-dialog": "^1.1.15", "@radix-ui/react-aspect-ratio": "^1.1.8", - "@radix-ui/react-avatar": "^1.1.3", + "@radix-ui/react-avatar": "^1.1.11", "@radix-ui/react-checkbox": "^1.3.3", "@radix-ui/react-collapsible": "^1.1.3", "@radix-ui/react-context-menu": "^2.2.16", "@radix-ui/react-dialog": "^1.1.6", - "@radix-ui/react-dropdown-menu": "^2.1.6", + "@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-hover-card": "^1.1.15", "@radix-ui/react-label": "^2.1.8", "@radix-ui/react-menubar": "^1.1.16", @@ -41,7 +40,6 @@ "@radix-ui/react-toggle-group": "^1.1.11", "@radix-ui/react-tooltip": "^1.2.8", "@tailwindcss/container-queries": "^0.1.1", - "@tailwindcss/vite": "^4.2.1", "@tanstack/react-query": "^5.96.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", @@ -55,9 +53,9 @@ "marked": "^18.0.2", "next-themes": "^0.4.6", "octokit": "^5.0.5", - "react": "^19.2.6", + "react": "19.2.7", "react-day-picker": "^10.0.1", - "react-dom": "^19.2.3", + "react-dom": "19.2.7", "react-error-boundary": "^6.1.2", "react-hook-form": "^7.77.0", "react-resizable-panels": "^4.11.2", @@ -73,9 +71,9 @@ "devDependencies": { "@eslint/js": "^10.0.1", "@tailwindcss/postcss": "^4.2.2", + "@tailwindcss/vite": "^4.3.1", "@types/react": "^19.2.15", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^6.0.2", "@vitejs/plugin-react-swc": "^4.3.1", "eslint": "^10.1.0", "eslint-plugin-react-hooks": "^7.1.1", @@ -84,7 +82,7 @@ "tailwindcss": "^4.1.18", "typescript": "~6.0.3", "typescript-eslint": "^8.59.1", - "vite": "^7.3.1" + "vite": "^8.0.16" }, "workspaces": { "packages": [ @@ -349,420 +347,38 @@ "integrity": "sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==", "license": "MIT" }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", - "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", - "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", - "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", - "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", - "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", - "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", - "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", - "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", - "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", - "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", - "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", - "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", - "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", - "cpu": [ - "mips64el" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", - "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", - "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", - "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", - "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", - "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", - "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", - "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", - "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", - "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", - "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", - "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", - "cpu": [ - "arm64" - ], + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", - "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", - "cpu": [ - "ia32" - ], + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", - "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", - "cpu": [ - "x64" - ], + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" + "dependencies": { + "tslib": "^2.4.0" } }, "node_modules/@eslint-community/eslint-utils": { @@ -921,21 +537,6 @@ "version": "0.2.9", "license": "MIT" }, - "node_modules/@github/spark": { - "version": "0.46.1", - "resolved": "https://registry.npmjs.org/@github/spark/-/spark-0.46.1.tgz", - "integrity": "sha512-OZbeyfl3PHZUSMHx5lpKTvUaSUoIQV0NWqMCEeE+s/mjRMhb4HBidHvxMYDB3ChPrMawyRIwaYjNzemITKKKvA==", - "license": "MIT", - "dependencies": { - "body-parser": "^1.20.3", - "express": "^5.2.0", - "octokit": "^5.0.3" - }, - "peerDependencies": { - "react": "^19.0.0", - "vite": "^7.0.0 || ^6.4.1" - } - }, "node_modules/@heroicons/react": { "version": "2.2.0", "license": "MIT", @@ -1013,6 +614,7 @@ "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", @@ -1023,6 +625,7 @@ "version": "2.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -1031,6 +634,7 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", + "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -1040,18 +644,39 @@ "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.31", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.5.tgz", + "integrity": "sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, "node_modules/@octokit/app": { "version": "16.1.2", "resolved": "https://registry.npmjs.org/@octokit/app/-/app-16.1.2.tgz", @@ -1360,6 +985,16 @@ "node": ">= 20" } }, + "node_modules/@oxc-project/types": { + "version": "0.133.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.133.0.tgz", + "integrity": "sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, "node_modules/@phosphor-icons/react": { "version": "2.1.10", "resolved": "https://registry.npmjs.org/@phosphor-icons/react/-/react-2.1.10.tgz", @@ -1761,7 +1396,7 @@ } }, "node_modules/@radix-ui/react-avatar": { - "version": "1.1.3", + "version": "1.1.11", "license": "MIT", "dependencies": { "@radix-ui/react-context": "1.1.1", @@ -3099,7 +2734,7 @@ } }, "node_modules/@radix-ui/react-dropdown-menu": { - "version": "2.1.6", + "version": "2.1.16", "license": "MIT", "dependencies": { "@radix-ui/primitive": "1.1.1", @@ -7316,298 +6951,269 @@ "url": "https://opencollective.com/immer" } }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", - "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.5.tgz", - "integrity": "sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.5.tgz", - "integrity": "sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==", + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.3.tgz", + "integrity": "sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "android" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.5.tgz", - "integrity": "sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==", + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.3.tgz", + "integrity": "sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.5.tgz", - "integrity": "sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==", + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.3.tgz", + "integrity": "sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.5.tgz", - "integrity": "sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==", - "cpu": [ - "arm64" ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.5.tgz", - "integrity": "sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==", + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.3.tgz", + "integrity": "sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.5.tgz", - "integrity": "sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==", - "cpu": [ - "arm" ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.5.tgz", - "integrity": "sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==", + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.3.tgz", + "integrity": "sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==", "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.5.tgz", - "integrity": "sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==", + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.3.tgz", + "integrity": "sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.5.tgz", - "integrity": "sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==", + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.3.tgz", + "integrity": "sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.5.tgz", - "integrity": "sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==", - "cpu": [ - "loong64" ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.5.tgz", - "integrity": "sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==", + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.3.tgz", + "integrity": "sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==", "cpu": [ "ppc64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.5.tgz", - "integrity": "sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.5.tgz", - "integrity": "sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==", - "cpu": [ - "riscv64" ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.5.tgz", - "integrity": "sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==", + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.3.tgz", + "integrity": "sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==", "cpu": [ "s390x" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.5.tgz", - "integrity": "sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==", + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.3.tgz", + "integrity": "sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.5.tgz", - "integrity": "sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==", + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.3.tgz", + "integrity": "sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.5.tgz", - "integrity": "sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==", + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.3.tgz", + "integrity": "sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.5.tgz", - "integrity": "sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==", - "cpu": [ - "arm64" ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.5.tgz", - "integrity": "sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==", + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.3.tgz", + "integrity": "sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==", "cpu": [ - "ia32" + "wasm32" ], + "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.5.tgz", - "integrity": "sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==", + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.3.tgz", + "integrity": "sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==", "cpu": [ - "x64" + "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.5.tgz", - "integrity": "sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==", + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.3.tgz", + "integrity": "sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "dev": true, + "license": "MIT" }, "node_modules/@standard-schema/spec": { "version": "1.1.0", @@ -7853,280 +7459,19 @@ } }, "node_modules/@tailwindcss/node": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.2.tgz", - "integrity": "sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/remapping": "^2.3.5", - "enhanced-resolve": "^5.19.0", - "jiti": "^2.6.1", - "lightningcss": "1.32.0", - "magic-string": "^0.30.21", - "source-map-js": "^1.2.1", - "tailwindcss": "4.2.2" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@tailwindcss/node/node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", - "cpu": [ - "x64" - ], + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.2.tgz", + "integrity": "sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==", "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.19.0", + "jiti": "^2.6.1", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.2.2" } }, "node_modules/@tailwindcss/oxide": { @@ -8449,64 +7794,68 @@ } }, "node_modules/@tailwindcss/vite": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.2.1.tgz", - "integrity": "sha512-TBf2sJjYeb28jD2U/OhwdW0bbOsxkWPwQ7SrqGf9sVcoYwZj7rkXljroBO9wKBut9XnmQLXanuDUeqQK0lGg/w==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.3.1.tgz", + "integrity": "sha512-hItDHuIIlEV61R+faXu66s1K36aTurO/Qw0e45Vskz57gXl9pWOT6eg3zmcEui6CZXddbN7zd41bwmvag4JGwQ==", + "dev": true, "license": "MIT", "dependencies": { - "@tailwindcss/node": "4.2.1", - "@tailwindcss/oxide": "4.2.1", - "tailwindcss": "4.2.1" + "@tailwindcss/node": "4.3.1", + "@tailwindcss/oxide": "4.3.1", + "tailwindcss": "4.3.1" }, "peerDependencies": { - "vite": "^5.2.0 || ^6 || ^7" + "vite": "^5.2.0 || ^6 || ^7 || ^8" } }, "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/node": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.1.tgz", - "integrity": "sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.1.tgz", + "integrity": "sha512-6NDaqRoAMSXD1mr/RXu0HBvNE9a2n5tHPsxu9XHLws8o4Twes5rBM2205SUUiJ9goAtadrN6xTGX0UDEwp/N4A==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/remapping": "^2.3.5", - "enhanced-resolve": "^5.19.0", - "jiti": "^2.6.1", - "lightningcss": "1.31.1", + "enhanced-resolve": "5.21.6", + "jiti": "^2.7.0", + "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", - "tailwindcss": "4.2.1" + "tailwindcss": "4.3.1" } }, "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.1.tgz", - "integrity": "sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.1.tgz", + "integrity": "sha512-yVPyo8RNkabVr3O2EhHEE0Rewu7YKzc1DhIqfL46LKveFrmu9XbDazNOJY7/GRuvw1h6u3utWnR29H/p5JPlgA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 20" }, "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.2.1", - "@tailwindcss/oxide-darwin-arm64": "4.2.1", - "@tailwindcss/oxide-darwin-x64": "4.2.1", - "@tailwindcss/oxide-freebsd-x64": "4.2.1", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.1", - "@tailwindcss/oxide-linux-arm64-gnu": "4.2.1", - "@tailwindcss/oxide-linux-arm64-musl": "4.2.1", - "@tailwindcss/oxide-linux-x64-gnu": "4.2.1", - "@tailwindcss/oxide-linux-x64-musl": "4.2.1", - "@tailwindcss/oxide-wasm32-wasi": "4.2.1", - "@tailwindcss/oxide-win32-arm64-msvc": "4.2.1", - "@tailwindcss/oxide-win32-x64-msvc": "4.2.1" + "@tailwindcss/oxide-android-arm64": "4.3.1", + "@tailwindcss/oxide-darwin-arm64": "4.3.1", + "@tailwindcss/oxide-darwin-x64": "4.3.1", + "@tailwindcss/oxide-freebsd-x64": "4.3.1", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.1", + "@tailwindcss/oxide-linux-arm64-gnu": "4.3.1", + "@tailwindcss/oxide-linux-arm64-musl": "4.3.1", + "@tailwindcss/oxide-linux-x64-gnu": "4.3.1", + "@tailwindcss/oxide-linux-x64-musl": "4.3.1", + "@tailwindcss/oxide-wasm32-wasi": "4.3.1", + "@tailwindcss/oxide-win32-arm64-msvc": "4.3.1", + "@tailwindcss/oxide-win32-x64-msvc": "4.3.1" } }, "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.1.tgz", - "integrity": "sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.1.tgz", + "integrity": "sha512-SVlyf61g374l5cHyg8x9kf5xmLcOaxvOTsbsqDnSsDJaKOEFZ7GCvi84VAVGpxojYOs1+3K6M0UjXfqPU8vmOQ==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -8517,12 +7866,13 @@ } }, "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.1.tgz", - "integrity": "sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.1.tgz", + "integrity": "sha512-hVnWLwv+e/l7c4WKyVtHVrIPvYdqWHjRB3MDIqARynzFtnQg85kmQEFCbV9Ja0VVx4xXTIiDWY60Y7iz/iNoDA==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -8533,12 +7883,13 @@ } }, "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.1.tgz", - "integrity": "sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.1.tgz", + "integrity": "sha512-Cf7abu0WVgbhU7ANgPUnSAvm7nCvMweusHb8FnaHlLfv/Caq4GYaEZg7ZImzzmjx4lIAfuS8q+eLIS7A7IzxIg==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -8549,12 +7900,13 @@ } }, "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.1.tgz", - "integrity": "sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.1.tgz", + "integrity": "sha512-ZZqzX2Y+GXtXXfqSfpJhDm60OoZfvLHLCgm+J7NVqgHHJjG/m9ugZI77RwTsVd4fnBJuCFP6Ae6kTJb71UdS8g==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -8565,12 +7917,13 @@ } }, "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.1.tgz", - "integrity": "sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.1.tgz", + "integrity": "sha512-/Ah/xik0LaMYfv9DZ0S/t4pBlBNYOcqtRwusjgovHkvT8ixueWCLyJjsaF5kQIckjb4IT8Q6K6p/iPmZMixYgg==", "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -8581,12 +7934,13 @@ } }, "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.1.tgz", - "integrity": "sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.1.tgz", + "integrity": "sha512-gqdFoVJlw444GvpnheZLHmvTzSxI/cOUUh2KSNejQjTcYkW062SVD+En0rUgD+QV91bz1XGIGtt1HJd48xUGbQ==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -8597,12 +7951,13 @@ } }, "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.1.tgz", - "integrity": "sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.1.tgz", + "integrity": "sha512-Bwv9KwOvE0VKa86xPFif9b9c3Y1NxOV1P0gLti/IYaWEsQYZXDlxfGEtA8mdDZ7SG3wyNXAWYT5SIn3giL57oA==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -8613,12 +7968,13 @@ } }, "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.1.tgz", - "integrity": "sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.1.tgz", + "integrity": "sha512-Ymi8O8T15HYQdOUWUtTI6ldN0neHP85FC+Qz32xTcZ7iJXtem/x8ITev0o1e9e5rkqj4lONZfTRLvkmin1+tKg==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -8629,12 +7985,13 @@ } }, "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.1.tgz", - "integrity": "sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.1.tgz", + "integrity": "sha512-M+P/91qJ6uILLw4k2G93GMDRAXj61SMvFQYt39AqvUqYgExXpLL5aepfns7sj4HiAQeolirQF9E0lzRvdf4zPQ==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -8645,9 +8002,9 @@ } }, "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.1.tgz", - "integrity": "sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.1.tgz", + "integrity": "sha512-zsM8uOeqvVGHsAXsJxsT28ttosFahLJKCLOTUBqRAtKnVgGSRitds9T432QiT8b77Yga7JIBkulIRRlJPtYhRA==", "bundleDependencies": [ "@napi-rs/wasm-runtime", "@emnapi/core", @@ -8659,85 +8016,29 @@ "cpu": [ "wasm32" ], + "dev": true, "license": "MIT", "optional": true, "dependencies": { - "@emnapi/core": "^1.8.1", - "@emnapi/runtime": "^1.8.1", - "@emnapi/wasi-threads": "^1.1.0", - "@napi-rs/wasm-runtime": "^1.1.1", - "@tybys/wasm-util": "^0.10.1", + "@emnapi/core": "^1.10.0", + "@emnapi/runtime": "^1.10.0", + "@emnapi/wasi-threads": "^1.2.1", + "@napi-rs/wasm-runtime": "^1.1.4", + "@tybys/wasm-util": "^0.10.2", "tslib": "^2.8.1" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/core": { - "version": "1.8.1", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.1.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/runtime": { - "version": "1.8.1", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.1", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1", - "@tybys/wasm-util": "^0.10.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - } - }, - "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/tslib": { - "version": "2.8.1", - "inBundle": true, - "license": "0BSD", - "optional": true - }, "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.1.tgz", - "integrity": "sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.1.tgz", + "integrity": "sha512-aiNvSq9BsVk8V513lDKlrCFAgf8qBMPZTpgEhInL+NwQqs97mYmupVMrPrgBBSL8Pv/0zXu9MrMF9rMun1ZeNg==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -8748,12 +8049,13 @@ } }, "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.1.tgz", - "integrity": "sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.1.tgz", + "integrity": "sha512-xDEyu1rg290472FEGaKHnzyDyh5QH+AlWvsU5hMoMtPpzmKlRI0jaYKCgSHDYtaQWZOYbMaduSyCwFwY4n1HmA==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -8764,9 +8066,10 @@ } }, "node_modules/@tailwindcss/vite/node_modules/tailwindcss": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.1.tgz", - "integrity": "sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.1.tgz", + "integrity": "sha512-hk+TB1m+K8CYNrP6rjQaq/Y+4Zylwpa87mLYBKCunwnnQ9p+fHb7kmSfGqyEJoxF/O6CDyABWVFEafNSYKll+Q==", + "dev": true, "license": "MIT" }, "node_modules/@tanstack/query-core": { @@ -8795,6 +8098,17 @@ "react": "^18 || ^19" } }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", + "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/aws-lambda": { "version": "8.10.157", "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.157.tgz", @@ -8872,9 +8186,10 @@ "license": "MIT" }, "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, "license": "MIT" }, "node_modules/@types/json-schema": { @@ -9153,32 +8468,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@vitejs/plugin-react": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.2.tgz", - "integrity": "sha512-DlSMqo4WhThw4vB8Mpn0Woe9J+Jfq1geJ61AKW0QEgLzGMNwtIMdxbDUzLxcun8W7NbJO0e2Jg/Nxm3cCSVzzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rolldown/pluginutils": "^1.0.0" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "peerDependencies": { - "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", - "babel-plugin-react-compiler": "^1.0.0", - "vite": "^8.0.0" - }, - "peerDependenciesMeta": { - "@rolldown/plugin-babel": { - "optional": true - }, - "babel-plugin-react-compiler": { - "optional": true - } - } - }, "node_modules/@vitejs/plugin-react-swc": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-4.3.1.tgz", @@ -9196,19 +8485,6 @@ "vite": "^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { "version": "8.16.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", @@ -9278,57 +8554,6 @@ "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==", "license": "Apache-2.0" }, - "node_modules/body-parser": { - "version": "1.20.5", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz", - "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==", - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "~1.2.0", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "on-finished": "~2.4.1", - "qs": "~6.15.1", - "raw-body": "~2.5.3", - "type-is": "~1.6.18", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, "node_modules/bottleneck": { "version": "2.19.5", "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", @@ -9336,9 +8561,9 @@ "license": "MIT" }, "node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", "dev": true, "license": "MIT", "dependencies": { @@ -9392,44 +8617,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/caniuse-lite": { "version": "1.0.30001775", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001775.tgz", @@ -9489,28 +8676,6 @@ "node": ">= 10" } }, - "node_modules/content-disposition": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", - "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -9518,24 +8683,6 @@ "dev": true, "license": "MIT" }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, "node_modules/cross-spawn": { "version": "7.0.6", "dev": true, @@ -9909,6 +9056,7 @@ "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -9940,27 +9088,9 @@ "robust-predicates": "^3.0.2" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/detect-libc": { "version": "2.0.4", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=8" @@ -9970,26 +9100,6 @@ "version": "1.1.0", "license": "MIT" }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" - }, "node_modules/electron-to-chromium": { "version": "1.5.302", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz", @@ -10021,60 +9131,22 @@ "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.6.0.tgz", "integrity": "sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==", "license": "MIT", - "peerDependencies": { - "embla-carousel": "8.6.0" - } - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", - "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.3.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "embla-carousel": "8.6.0" } }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "node_modules/enhanced-resolve": { + "version": "5.21.6", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.6.tgz", + "integrity": "sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ==", + "dev": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0" + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" }, "engines": { - "node": ">= 0.4" + "node": ">=10.13.0" } }, "node_modules/es-toolkit": { @@ -10087,47 +9159,6 @@ "benchmarks" ] }, - "node_modules/esbuild": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", - "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.2", - "@esbuild/android-arm": "0.27.2", - "@esbuild/android-arm64": "0.27.2", - "@esbuild/android-x64": "0.27.2", - "@esbuild/darwin-arm64": "0.27.2", - "@esbuild/darwin-x64": "0.27.2", - "@esbuild/freebsd-arm64": "0.27.2", - "@esbuild/freebsd-x64": "0.27.2", - "@esbuild/linux-arm": "0.27.2", - "@esbuild/linux-arm64": "0.27.2", - "@esbuild/linux-ia32": "0.27.2", - "@esbuild/linux-loong64": "0.27.2", - "@esbuild/linux-mips64el": "0.27.2", - "@esbuild/linux-ppc64": "0.27.2", - "@esbuild/linux-riscv64": "0.27.2", - "@esbuild/linux-s390x": "0.27.2", - "@esbuild/linux-x64": "0.27.2", - "@esbuild/netbsd-arm64": "0.27.2", - "@esbuild/netbsd-x64": "0.27.2", - "@esbuild/openbsd-arm64": "0.27.2", - "@esbuild/openbsd-x64": "0.27.2", - "@esbuild/openharmony-arm64": "0.27.2", - "@esbuild/sunos-x64": "0.27.2", - "@esbuild/win32-arm64": "0.27.2", - "@esbuild/win32-ia32": "0.27.2", - "@esbuild/win32-x64": "0.27.2" - } - }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -10138,12 +9169,6 @@ "node": ">=6" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, "node_modules/escape-string-regexp": { "version": "4.0.0", "dev": true, @@ -10335,142 +9360,12 @@ "node": ">=0.10.0" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "license": "MIT" }, - "node_modules/express": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "depd": "^2.0.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/body-parser": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", - "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", - "on-finished": "^2.4.1", - "qs": "^6.14.1", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/raw-body": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", - "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.7.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/express/node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/fast-content-type-parse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz", @@ -10517,27 +9412,6 @@ "node": ">=16.0.0" } }, - "node_modules/finalhandler": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", - "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/find-up": { "version": "5.0.0", "dev": true, @@ -10566,19 +9440,12 @@ } }, "node_modules/flatted": { - "version": "3.3.3", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/framer-motion": { "version": "12.6.3", "license": "MIT", @@ -10604,19 +9471,11 @@ } } }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -10627,15 +9486,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -10646,30 +9496,6 @@ "node": ">=6.9.0" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/get-nonce": { "version": "1.0.1", "license": "MIT", @@ -10677,19 +9503,6 @@ "node": ">=6" } }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/glob-parent": { "version": "6.0.2", "dev": true, @@ -10714,46 +9527,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", + "dev": true, "license": "ISC" }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", - "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/hermes-estree": { "version": "0.25.1", "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", @@ -10771,26 +9549,6 @@ "hermes-estree": "0.25.1" } }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/iconv-lite": { "version": "0.6.3", "license": "MIT", @@ -10829,12 +9587,6 @@ "node": ">=0.8.19" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, "node_modules/input-otp": { "version": "1.4.2", "license": "MIT", @@ -10850,15 +9602,6 @@ "node": ">=12" } }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "dev": true, @@ -10878,21 +9621,16 @@ "node": ">=0.10.0" } }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, "node_modules/isexe": { "version": "2.0.0", "dev": true, "license": "ISC" }, "node_modules/jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "dev": true, "license": "MIT", "bin": { "jiti": "lib/jiti-cli.mjs" @@ -10969,9 +9707,10 @@ } }, "node_modules/lightningcss": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz", - "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, "license": "MPL-2.0", "dependencies": { "detect-libc": "^2.0.3" @@ -10984,26 +9723,27 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-android-arm64": "1.31.1", - "lightningcss-darwin-arm64": "1.31.1", - "lightningcss-darwin-x64": "1.31.1", - "lightningcss-freebsd-x64": "1.31.1", - "lightningcss-linux-arm-gnueabihf": "1.31.1", - "lightningcss-linux-arm64-gnu": "1.31.1", - "lightningcss-linux-arm64-musl": "1.31.1", - "lightningcss-linux-x64-gnu": "1.31.1", - "lightningcss-linux-x64-musl": "1.31.1", - "lightningcss-win32-arm64-msvc": "1.31.1", - "lightningcss-win32-x64-msvc": "1.31.1" + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" } }, "node_modules/lightningcss-android-arm64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz", - "integrity": "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", "cpu": [ "arm64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -11018,12 +9758,13 @@ } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", - "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", "cpu": [ "arm64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -11038,12 +9779,13 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", - "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", "cpu": [ "x64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -11058,12 +9800,13 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", - "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", "cpu": [ "x64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -11078,12 +9821,13 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", - "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", "cpu": [ "arm" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -11098,12 +9842,13 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", - "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", "cpu": [ "arm64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -11118,12 +9863,13 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", - "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", "cpu": [ "arm64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -11138,12 +9884,13 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", - "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", "cpu": [ "x64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -11158,12 +9905,13 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", - "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", "cpu": [ "x64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -11178,12 +9926,13 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", - "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", "cpu": [ "arm64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -11198,12 +9947,13 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", - "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", "cpu": [ "x64" ], + "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -11243,87 +9993,33 @@ }, "node_modules/lucide-react": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.7.0.tgz", - "integrity": "sha512-yI7BeItCLZJTXikmK4KNUGCKoGzSvbKlfCvw44bU4fXAL6v3gYS4uHD1jzsLkfwODYwI6Drw5Tu9Z5ulDe0TSg==", - "license": "ISC", - "peerDependencies": { - "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/marked": { - "version": "18.0.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-18.0.2.tgz", - "integrity": "sha512-NsmlUYBS/Zg57rgDWMYdnre6OTj4e+qq/JS2ot3KrYLSoHLw+sDu0Nm1ZGpRgYAq6c+b1ekaY5NzVchMCQnzcg==", - "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.7.0.tgz", + "integrity": "sha512-yI7BeItCLZJTXikmK4KNUGCKoGzSvbKlfCvw44bU4fXAL6v3gYS4uHD1jzsLkfwODYwI6Drw5Tu9Z5ulDe0TSg==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.6" + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "node_modules/marked": { + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-18.0.2.tgz", + "integrity": "sha512-NsmlUYBS/Zg57rgDWMYdnre6OTj4e+qq/JS2ot3KrYLSoHLw+sDu0Nm1ZGpRgYAq6c+b1ekaY5NzVchMCQnzcg==", "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" + "bin": { + "marked": "bin/marked.js" }, "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": ">= 20" } }, "node_modules/minimatch": { @@ -11355,12 +10051,14 @@ }, "node_modules/ms": { "version": "2.1.3", + "dev": true, "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", + "dev": true, "funding": [ { "type": "github", @@ -11380,15 +10078,6 @@ "dev": true, "license": "MIT" }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/next-themes": { "version": "0.4.6", "license": "MIT", @@ -11404,18 +10093,6 @@ "dev": true, "license": "MIT" }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/octokit": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/octokit/-/octokit-5.0.5.tgz", @@ -11471,27 +10148,6 @@ "@octokit/core": "^7.0.0" } }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, "node_modules/optionator": { "version": "0.9.4", "dev": true, @@ -11536,15 +10192,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/path-exists": { "version": "4.0.0", "dev": true, @@ -11561,24 +10208,29 @@ "node": ">=8" } }, - "node_modules/path-to-regexp": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", - "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/picocolors": { "version": "1.1.1", + "dev": true, "license": "ISC" }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", + "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", + "dev": true, "funding": [ { "type": "opencollective", @@ -11595,7 +10247,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.11", + "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -11611,19 +10263,6 @@ "node": ">= 0.8.0" } }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -11634,61 +10273,10 @@ "node": ">=6" } }, - "node_modules/qs": { - "version": "6.15.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", - "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", - "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react": { - "version": "19.2.6", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", - "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==", + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.7.tgz", + "integrity": "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11721,15 +10309,15 @@ } }, "node_modules/react-dom": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", - "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.7.tgz", + "integrity": "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==", "license": "MIT", "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.2.3" + "react": "^19.2.7" } }, "node_modules/react-error-boundary": { @@ -11758,7 +10346,9 @@ } }, "node_modules/react-is": { - "version": "18.3.1", + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.7.tgz", + "integrity": "sha512-kZFnouyVv7eP/Phmrlo9FK+zcAdriZJvzxXHF1Sl1P377WSGe2G/JxVolhTrB/jeV47lKImhNUsijjHAAbcl/A==", "license": "MIT", "peer": true }, @@ -11913,61 +10503,38 @@ "version": "3.0.2", "license": "Unlicense" }, - "node_modules/rollup": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz", - "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==", + "node_modules/rolldown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.3.tgz", + "integrity": "sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==", + "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.8" + "@oxc-project/types": "=0.133.0", + "@rolldown/pluginutils": "^1.0.0" }, "bin": { - "rollup": "dist/bin/rollup" + "rolldown": "bin/cli.mjs" }, "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.52.5", - "@rollup/rollup-android-arm64": "4.52.5", - "@rollup/rollup-darwin-arm64": "4.52.5", - "@rollup/rollup-darwin-x64": "4.52.5", - "@rollup/rollup-freebsd-arm64": "4.52.5", - "@rollup/rollup-freebsd-x64": "4.52.5", - "@rollup/rollup-linux-arm-gnueabihf": "4.52.5", - "@rollup/rollup-linux-arm-musleabihf": "4.52.5", - "@rollup/rollup-linux-arm64-gnu": "4.52.5", - "@rollup/rollup-linux-arm64-musl": "4.52.5", - "@rollup/rollup-linux-loong64-gnu": "4.52.5", - "@rollup/rollup-linux-ppc64-gnu": "4.52.5", - "@rollup/rollup-linux-riscv64-gnu": "4.52.5", - "@rollup/rollup-linux-riscv64-musl": "4.52.5", - "@rollup/rollup-linux-s390x-gnu": "4.52.5", - "@rollup/rollup-linux-x64-gnu": "4.52.5", - "@rollup/rollup-linux-x64-musl": "4.52.5", - "@rollup/rollup-openharmony-arm64": "4.52.5", - "@rollup/rollup-win32-arm64-msvc": "4.52.5", - "@rollup/rollup-win32-ia32-msvc": "4.52.5", - "@rollup/rollup-win32-x64-gnu": "4.52.5", - "@rollup/rollup-win32-x64-msvc": "4.52.5", - "fsevents": "~2.3.2" - } - }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" + "@rolldown/binding-android-arm64": "1.0.3", + "@rolldown/binding-darwin-arm64": "1.0.3", + "@rolldown/binding-darwin-x64": "1.0.3", + "@rolldown/binding-freebsd-x64": "1.0.3", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.3", + "@rolldown/binding-linux-arm64-gnu": "1.0.3", + "@rolldown/binding-linux-arm64-musl": "1.0.3", + "@rolldown/binding-linux-ppc64-gnu": "1.0.3", + "@rolldown/binding-linux-s390x-gnu": "1.0.3", + "@rolldown/binding-linux-x64-gnu": "1.0.3", + "@rolldown/binding-linux-x64-musl": "1.0.3", + "@rolldown/binding-openharmony-arm64": "1.0.3", + "@rolldown/binding-wasm32-wasi": "1.0.3", + "@rolldown/binding-win32-arm64-msvc": "1.0.3", + "@rolldown/binding-win32-x64-msvc": "1.0.3" } }, "node_modules/rw": { @@ -11994,57 +10561,6 @@ "semver": "bin/semver.js" } }, - "node_modules/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", - "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.3", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.1", - "mime-types": "^3.0.2", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/serve-static": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", - "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, "node_modules/shebang-command": { "version": "2.0.0", "dev": true, @@ -12064,78 +10580,6 @@ "node": ">=8" } }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", - "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/sonner": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/sonner/-/sonner-2.0.7.tgz", @@ -12148,20 +10592,12 @@ }, "node_modules/source-map-js": { "version": "1.2.1", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/tailwind-merge": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.5.0.tgz", @@ -12179,9 +10615,10 @@ "license": "MIT" }, "node_modules/tapable": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", - "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -12202,13 +10639,14 @@ "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" @@ -12221,6 +10659,7 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -12234,18 +10673,6 @@ } } }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/toad-cache": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz", @@ -12255,15 +10682,6 @@ "node": ">=12" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, "node_modules/ts-api-utils": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", @@ -12301,40 +10719,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/type-is/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/type-is/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/typescript": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", @@ -12383,15 +10767,6 @@ "version": "7.0.2", "license": "ISC" }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/update-browserslist-db": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", @@ -12494,15 +10869,6 @@ "uuid": "dist-node/bin/uuid" } }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/vaul": { "version": "1.1.2", "license": "MIT", @@ -12537,17 +10903,17 @@ } }, "node_modules/vite": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", - "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "version": "8.0.16", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.16.tgz", + "integrity": "sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==", + "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.27.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.15", + "rolldown": "1.0.3", + "tinyglobby": "^0.2.17" }, "bin": { "vite": "bin/vite.js" @@ -12563,9 +10929,10 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.1.18", + "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", - "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", @@ -12578,13 +10945,16 @@ "@types/node": { "optional": true }, - "jiti": { + "@vitejs/devtools": { "optional": true }, - "less": { + "esbuild": { + "optional": true + }, + "jiti": { "optional": true }, - "lightningcss": { + "less": { "optional": true }, "sass": { @@ -12610,35 +10980,6 @@ } } }, - "node_modules/vite/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/which": { "version": "2.0.2", "dev": true, @@ -12661,12 +11002,6 @@ "node": ">=0.10.0" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", diff --git a/package.json b/package.json index 5d4690e3..97eaa708 100644 --- a/package.json +++ b/package.json @@ -1,18 +1,18 @@ { - "name": "spark-template", + "name": "init.md", "private": true, "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "kill": "fuser -k 5000/tcp", - "build": "tsc -b --noCheck && vite build", + "check:templates": "node scripts/check-templates.mjs", + "build": "npm run check:templates && tsc -b --noCheck && vite build", "lint": "eslint .", "optimize": "vite optimize", "preview": "vite preview" }, "dependencies": { - "@github/spark": "^0.46.1", "@heroicons/react": "^2.2.0", "@hookform/resolvers": "^4.1.3", "@octokit/core": "^7.0.6", @@ -21,12 +21,12 @@ "@radix-ui/react-accordion": "^1.2.12", "@radix-ui/react-alert-dialog": "^1.1.15", "@radix-ui/react-aspect-ratio": "^1.1.8", - "@radix-ui/react-avatar": "^1.1.3", + "@radix-ui/react-avatar": "^1.1.11", "@radix-ui/react-checkbox": "^1.3.3", "@radix-ui/react-collapsible": "^1.1.3", "@radix-ui/react-context-menu": "^2.2.16", "@radix-ui/react-dialog": "^1.1.6", - "@radix-ui/react-dropdown-menu": "^2.1.6", + "@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-hover-card": "^1.1.15", "@radix-ui/react-label": "^2.1.8", "@radix-ui/react-menubar": "^1.1.16", @@ -45,7 +45,6 @@ "@radix-ui/react-toggle-group": "^1.1.11", "@radix-ui/react-tooltip": "^1.2.8", "@tailwindcss/container-queries": "^0.1.1", - "@tailwindcss/vite": "^4.2.1", "@tanstack/react-query": "^5.96.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", @@ -59,9 +58,9 @@ "marked": "^18.0.2", "next-themes": "^0.4.6", "octokit": "^5.0.5", - "react": "^19.2.6", + "react": "19.2.7", "react-day-picker": "^10.0.1", - "react-dom": "^19.2.3", + "react-dom": "19.2.7", "react-error-boundary": "^6.1.2", "react-hook-form": "^7.77.0", "react-resizable-panels": "^4.11.2", @@ -77,9 +76,9 @@ "devDependencies": { "@eslint/js": "^10.0.1", "@tailwindcss/postcss": "^4.2.2", + "@tailwindcss/vite": "^4.3.1", "@types/react": "^19.2.15", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^6.0.2", "@vitejs/plugin-react-swc": "^4.3.1", "eslint": "^10.1.0", "eslint-plugin-react-hooks": "^7.1.1", @@ -88,7 +87,7 @@ "tailwindcss": "^4.1.18", "typescript": "~6.0.3", "typescript-eslint": "^8.59.1", - "vite": "^7.3.1" + "vite": "^8.0.16" }, "workspaces": { "packages": [ diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 00000000..ad368635 --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/scripts/check-templates.mjs b/scripts/check-templates.mjs new file mode 100644 index 00000000..92feed7e --- /dev/null +++ b/scripts/check-templates.mjs @@ -0,0 +1,61 @@ +import fs from "node:fs" +import path from "node:path" +import process from "node:process" + +const root = process.cwd() +const templateDir = path.join(root, "templates") + +const expectedTemplates = [ + "minimal_init_protocol.md", + "server_init_protocol.md", + "dry_run_init_protocol.md", + "development_project_init_protocol.md", + "agent_init_protocol.md", +] + +const requiredFields = [ + "name", + "target", + "purpose", + "mode", + "creates", + "configures", + "validates", + "optional_outputs", +] + +let hasError = false + +for (const fileName of expectedTemplates) { + const filePath = path.join(templateDir, fileName) + + if (!fs.existsSync(filePath)) { + console.error(`Missing template file: templates/${fileName}`) + hasError = true + continue + } + + const content = fs.readFileSync(filePath, "utf8") + const frontmatter = content.match(/^---\n([\s\S]*?)\n---/) + + if (!frontmatter) { + console.error(`Missing metadata frontmatter: templates/${fileName}`) + hasError = true + continue + } + + for (const field of requiredFields) { + const hasField = new RegExp(`(^|\\n)${field}:`, "m").test(frontmatter[1]) + + if (!hasField) { + console.error(`Missing metadata field "${field}": templates/${fileName}`) + hasError = true + } + } +} + +if (hasError) { + process.exit(1) +} + +console.log(`Validated ${expectedTemplates.length} canonical template files.`) \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx index 9684c2fc..6bc072eb 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -3,6 +3,7 @@ * What: Orchestrates the init.md landing experience and coordinates tab routing across sections. * How: Uses feature components for each section and tab to stay maintainable, testable, and reusable. */ +import { useState } from "react" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { AppHeader } from "@/components/layout/AppHeader" import { HeroSection } from "@/components/sections/HeroSection" @@ -10,21 +11,24 @@ import { OverviewTab } from "@/components/tabs/OverviewTab" import { ContextTab } from "@/components/tabs/ContextTab" import { TemplatesTab } from "@/components/tabs/TemplatesTab" import { GuideTab } from "@/components/tabs/GuideTab" +import { Toaster } from "@/components/ui/sonner" function App() { + const [activeTab, setActiveTab] = useState("overview") + return ( -
- - +
+ +
- - + + Overview - Context + Protocol Templates @@ -52,13 +56,25 @@ function App() {
-
-
-
-

Licensed under MIT. Adapt to your environment and policies.

+
+
+
+

init.md

+

+ Copy init.md or an init template. Keep only what applies to the target. +

+
+
-
+
) } diff --git a/src/ErrorFallback.tsx b/src/ErrorFallback.tsx index adb6a634..368fba9e 100644 --- a/src/ErrorFallback.tsx +++ b/src/ErrorFallback.tsx @@ -13,9 +13,9 @@ export const ErrorFallback = ({ error, resetErrorBoundary }) => {
- This spark has encountered a runtime error + init.md has encountered a runtime error - Something unexpected happened while running the application. The error details are shown below. Contact the spark author and let them know about this issue. + Something unexpected happened while running the application. The error details are shown below so the issue can be reported with context. diff --git a/src/components/layout/AppHeader.tsx b/src/components/layout/AppHeader.tsx index 4e790fc0..3b757edd 100644 --- a/src/components/layout/AppHeader.tsx +++ b/src/components/layout/AppHeader.tsx @@ -1,24 +1,43 @@ -/** - * Why: Split the page header out of `App` so it can be reused across protocol views. - * What: Renders the init.md title block and version badge defined by the canonical protocol docs. - * How: Composes design system primitives to stay consistent with the guidance in `init.md`. - */ -import { Badge } from "@/components/ui/badge" +import { ChatsCircle, GithubLogo, Stack } from "@phosphor-icons/react" +import { Button } from "@/components/ui/button" -export function AppHeader() { +interface AppHeaderProps { + onSelectTab: (tab: string) => void +} + +export function AppHeader({ onSelectTab }: AppHeaderProps) { return ( -
-
-
+
+
+
+
+ init +
-

init.md

-

Boot AI agents with precision

+

init.md

+

Copy init instructions and templates

- - v1.0.0 -
+ +
) -} +} \ No newline at end of file diff --git a/src/components/sections/HeroSection.tsx b/src/components/sections/HeroSection.tsx index e0d55164..bd3f7574 100644 --- a/src/components/sections/HeroSection.tsx +++ b/src/components/sections/HeroSection.tsx @@ -1,38 +1,59 @@ -/** - * Why: Isolate the hero copy to highlight the init.md mission without bloating the main `App` component. - * What: Displays the positioning statement, value badges, and inspiration references for the protocol catalogue. - * How: Uses the shared UI tokens so future pages can reuse the same introductory treatment. - */ -import { Badge } from "@/components/ui/badge" +import { ArrowRight, BookOpen } from "@phosphor-icons/react" +import { Button } from "@/components/ui/button" -export function HeroSection() { +const stages = ["Inspect", "Determine", "Create", "Configure", "Validate", "Report"] + +interface HeroSectionProps { + onSelectTab: (tab: string) => void +} + +export function HeroSection({ onSelectTab }: HeroSectionProps) { return ( -
-
-

From cold start to ready state

-

- Define how your AI agents wake up, validate their environment, and generate essential project files. - Battle-tested initialization protocols eliminate guesswork, establish operational context, and ensure - consistent agent behavior through comprehensive documentation generation. -

-
- - Context engineering - - - Memory priming - - - Auto documentation - - - Production ready - -
-
-

Inspired by Unix init, Python __init__.py, and modern agent architecture patterns

+
+
+
+
+

+ BITwiki open protocol +

+

+ Make the target operational. +

+

+ init.md inspects a target, determines what it needs, creates and configures what applies, validates the + result, and reports its operational state. +

+
+ + +
+
+ +
+
+ {stages.map((stage, index) => ( +
+
+ {String(index + 1).padStart(2, "0")} +
+
+

{stage}

+
+
+ ))} +
+

+ The core sequence is Inspect, Determine, Create, Configure, Validate, Report. +

+
) -} +} \ No newline at end of file diff --git a/src/components/tabs/ContextTab.tsx b/src/components/tabs/ContextTab.tsx index fd58cabb..1870e505 100644 --- a/src/components/tabs/ContextTab.tsx +++ b/src/components/tabs/ContextTab.tsx @@ -1,448 +1,130 @@ -/** - * Why: Keep context architecture guidance cohesive while letting `App` focus on layout. - * What: Details how agents combine tools, memory, and orchestration layers alongside complementary artefacts. - * How: Reuses card primitives so future pages or CLIs can surface the same educational content consistently. - */ +import { CheckCircle, GitBranch, Stack } from "@phosphor-icons/react" +import { Badge } from "@/components/ui/badge" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" -import { CheckCircle, Code } from "@phosphor-icons/react" + +const relationships = [ + { + title: "Root protocol", + body: "Copy init.md when you need the complete general method: inspect, determine, create, configure, validate, report.", + }, + { + title: "Template", + body: "Copy a complete template when the target is a project, agent, server, dry run, or small scoped gap.", + }, + { + title: "Generated output", + body: "Create output only when the selected init path requires it. No output file is universal.", + }, + { + title: "Validation result", + body: "Report whether the target is ready, ready with warnings, blocked, or complete as a dry run.", + }, +] + +const conditionalOutputs = [ + "README.md when project documentation is missing or inadequate", + "PRD.md when product requirements need to be established", + "AGENTS.md when agent operation applies", + "SNAPSHOT.md when a point-in-time record is useful", + "Server report only for server or infrastructure targets", + "Task files only when actionable work remains", +] export function ContextTab() { return (
- + - Agent Architecture & Memory Systems - How modern AI agents handle context, memory, and orchestration + The target determines the work + + init.md is the method. Templates are complete target-specific procedures. Neither one forces universal files. + - -

- Modern AI agents operate in layered architectures with three critical components: Tools (capabilities), - Memory (persistent context), and Orchestration (workflow management). The init.md protocol addresses the - foundational layer that enables all three. -

- -
-
-
-
-

Tools Layer

-
-

- Code execution, API calls, file operations, and external integrations. Requires environment context to - function safely. -

-
- -
-
-
-

Memory Layer

-
-

- Retains context from past interactions, user instructions, and task state. Enables agents to resume work - across sessions. -

-
- -
-
-
-

Orchestration Layer

-
-

- Manages complex workflows, tracks task state, and ensures continuity even after system restarts. -

+ + {relationships.map((item) => ( +
+
+ + {item.title} +
+

{item.body}

-
- -
-

Where init.md Fits

-

- The initialization protocol primes all three layers: it establishes tool safety through environment - validation, populates memory with project context and history, and sets up orchestration through clear - state management and rollback procedures. -

-
+ ))} - - - Complementary systems & briefings - How init.md works alongside other agent-facing artefacts - - -
-

AGENTS.md (project briefing)

+
+ + + Adapt before creating + Existing systems are inspected before anything is generated. + +

- Once initialization is complete, contributors and coding agents turn to{" "} - - AGENTS.md - - {" "} - for build, run, and test instructions. It assumes the baseline artefacts and context snapshot already - exist. + Keep valid existing files. Update incomplete files when useful. Avoid duplicates and identify conflicts + before changing them.

-
-
-

Config-driven kits (e.g., Google ADK)

- Static YAML like{" "} - - root_agent.yaml - - {" "} - defines agent identity and available tools, but it does not inspect the live repository. init.md bridges - that gap with runtime observations and artefact generation. + Do not replace a useful README with a template. Preserve valid agent instructions. Let local conventions + shape any new init output.

-
-
-

Orchestration platforms

+ + + + + + Validation defines completion + Operational status comes from target-relevant evidence. + +

- Systems like{" "} - - AWS Bedrock AgentCore - - {" "} - coordinate multi-agent lifecycles after launch. They expect each agent to enter with a primed memory and - clearly logged READY/ROLLBACK signals—exactly what init.md supplies. + A project might validate with a build, lint, test, or command review. A server may validate service status + and network readiness. An agent may validate instructions, tools, and startup expectations.

-
- - +

Do not declare success without a validation step connected to the target.

+ + +
- + - Framework Comparison - How init.md compares to other agent initialization approaches + Conditional outputs + Create these only when the selected init path calls for them. -
-
-
-

Config-Driven Agents

-
-

root_agent.yaml

-
-name: assistant_agent
-model: gemini-2.5-flash
-description: Helper agent
-instruction: Answer questions
-                  
-
-

- Static YAML configs define agent identity and tools but don't probe the environment or generate - dynamic documentation. -

+
+ {conditionalOutputs.map((output) => ( +
+ + {output}
- -
-

Multi-Agent Orchestration

-
-

AWS Deep Agents

-

Research Agent → Critique Agent → Orchestrator

-

Uses LangGraph state management and virtual file systems

-
-

- Powerful coordination between running agents but assumes all agents are already initialized and - operational. -

-
-
- -
-

The init.md Difference

-

- While other frameworks focus on agent coordination or static configuration, init.md addresses the - bootstrapping phase itself: probing the host, populating context, checking resources, and - generating documentation before the agent begins any tasks. -

-
+ ))}
- + - CLI-first agent adoption - Terminal agents that benefit directly from a deterministic init sequence + + + Agent instructions are conditional + + AGENTS.md matters for agent-operated targets, but it is not installed everywhere. - -
-
-
- - Claude Code -
-

- Terminal coder with MCP support. Deterministic preflights and READY/ROLLBACK signals plug straight into - its plan → act → react loop. -

- - github.com/anthropics/claude-code - -
-
-
- - Gemini CLI & Qwen Code -
-

- ReAct-style terminal agents with MCP servers. Tool-routing policies in init.md keep adapter usage - consistent across environments. -

- -
-
-
- - GitHub Copilot CLI & Continue -
-

- Both lean on repeatable workspace scaffolds. Pre-declared artefact locations (README, TODO, snapshots) - keep IDE and headless usage aligned. -

- -
-
-
- - Aider, Open Interpreter, OpenHands, Cline -
-

- Local-first or open-source agents that execute shell commands benefit from the context map and - READY/ROLLBACK cues when resuming sessions. -

- -
-
-
-

Why it lands

-

- CLI agents parse init.md once, load the context snapshot, honour the encoded tool-routing policies, and - then loop through actions with reliable READY/ROLLBACK semantics. -

-
-
-
- - - - Startup Sequence & Context Loading - The critical steps that transform a cold agent into an operational system - - -
-
-
-
- 1 -
-

System Probe

-

OS detection, resource baseline, time coherence

-
- -
-
- 2 -
-

Context Load

-

File tree scan, dependency mapping, configuration discovery

-
- -
-
- 3 -
-

Memory Prime

-

Recent logs, core directives, historical context

-
- -
-
- 4 -
-

Generate Docs

-

README, TODO, CONTEXT, operational files

-
-
- -
-

Result: Full Environment Awareness

-

- By indexing key docs and configs into memory at startup, the agent obtains comprehensive knowledge of its - operating environment. This eliminates the need for repeated discovery and ensures consistent behavior - across sessions. -

-
-
-
-
- - - - Production Readiness - From prototype to production: ensuring agents are deployment-ready - - -
-
-

Validation & Rollback

-

- Production agents need clear success/failure signals and recovery procedures. -

-
-
- - READY signal after successful initialization -
-
- - ROLLBACK procedures for failed validation -
-
- - State snapshots for resumption -
-
-
- -
-

Operational Documentation

-

- Comprehensive docs enable team collaboration and incident response. -

-
-
- - Auto-generated runbooks and procedures -
-
- - Architecture and dependency mapping -
-
- - Machine-readable status reports -
-
-
-
- -
-

Enterprise Example: Kimera Protocol

-

- The Kimera project demonstrated real-world value by implementing a formal initialization sequence that - generated comprehensive system documentation and explicit readiness signals. Teams could immediately - identify missing docs, test gaps, and optimization opportunities—see the - {" "} - - readiness summary - - {" "} - and - {" "} - - follow-up checklist - - {" "} - for concrete outputs. -

+ +

+ During inspection, decide whether agents will operate on the target. If agent guidance is useful and absent, + derive `AGENTS.md` from the target. Different projects may need different instructions. +

+
+ {['OPERATIONAL', 'OPERATIONAL_WITH_WARNINGS', 'BLOCKED', 'DRY_RUN_COMPLETE'].map((state) => ( + + {state} + + ))}
) -} +} \ No newline at end of file diff --git a/src/components/tabs/GuideTab.tsx b/src/components/tabs/GuideTab.tsx index 6c9e4f02..c66be2f4 100644 --- a/src/components/tabs/GuideTab.tsx +++ b/src/components/tabs/GuideTab.tsx @@ -1,216 +1,135 @@ -/** - * Why: Separate the implementation guide so onboarding flows can embed it without inheriting the full page shell. - * What: Outlines the step-by-step instructions and selection matrix for protocol adoption. - * How: Wraps the existing content in a dedicated component for reuse and easier maintenance. - */ +import { CheckCircle, Copy } from "@phosphor-icons/react" +import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" -import { Desktop, FileText, TestTube } from "@phosphor-icons/react" +import { toast } from "sonner" + +const workflow = [ + { + title: "Identify the target", + body: "Name what init.md is being used on, where it lives, and what ready means for that target.", + }, + { + title: "Choose init.md or a template", + body: "Use init.md for the general method. Use a complete template when the target has a clear type.", + }, + { + title: "Copy the usable body", + body: "Copy buttons paste the complete Markdown instructions, not the label data used by this page.", + }, + { + title: "Run the init procedure", + body: "Inspect what exists, decide what is missing, create or configure only what applies, then validate it.", + }, + { + title: "Review validation", + body: "Use checks that match the target: commands, configuration, service health, or instruction consistency.", + }, + { + title: "Keep the init result specific", + body: "The final instructions should explain this target, not a generic checklist copied forward forever.", + }, +] + +const examples = [ + "Use the complete init.md procedure to inspect this target, initialize what applies, validate it, and report status.", + "Use the complete development project init template to initialize this repository and validate the developer workflow.", + "Use the complete dry-run init template to inspect this target and report proposed init work without changing files.", + "Use the complete agent init template only if this target needs agent instructions, tools, prompts, or state.", +] export function GuideTab() { + const copyExample = async (example: string) => { + try { + await navigator.clipboard.writeText(example) + toast.success("Example copied") + } catch { + toast.error("Failed to copy example") + } + } + return (
- + - Implementation Guide - How to define your project scope, systems, and execution parameters + Use init.md directly + + Start with the target. Copy init.md or a complete template, then run the procedure against that target. + - -
-
-
- 1 -
-
-

Define Project Scope

-

- Identify what your agent needs to know about your project and environment -

-
-

- Ask yourself: What files matter most? What technologies are in use? What documentation - should exist but doesn't? -

-
-
-
- -
-
- 2 -
-
-

Map Your System Architecture

-

- Document services, dependencies, and infrastructure components -

-
-

- Consider: Databases, APIs, scheduled jobs, external services, deployment targets, and - monitoring systems. -

-
-
-
- -
-
- 3 -
-
-

Customize Template Parameters

-

- Adapt the protocol to your specific tools, policies, and constraints -

-
-

- Modify: File output locations, probe safety levels, documentation depth, and execution - timeouts. -

+ +
+ {workflow.map((step, index) => ( +
+
+ {index + 1}
-
-
- -
-
- 4 -
-
-

Execute and Validate

-

- Run the protocol and verify generated documentation accuracy -

-
-

- Verify: File trees are complete, configurations are accurate, and documentation reflects - current system state. -

+
+

{step.title}

+

{step.body}

-
+ ))}
- - - Template Selection Guide - Choose the right initialization approach for your environment - - -
-
-
-
- -

Minimal

-
-
-

- Use when: Personal projects, prototypes, development environments -

-

- Generates: Essential README, TODO, and CONTEXT files -

-
-
+
+ + + Template selection + Choose the init pattern that matches the target. + + +

+ Use minimal for one clear gap, dry run for no-change planning, development project for codebases, agent + for agent instructions, and server for host or deployment readiness. +

+

+ If no template fits, copy init.md and write a short target-specific init plan before making changes. +

+
+
-
-
- -

Server

-
-
-

- Use when: Production systems, team projects, complex infrastructure -

-

- Generates: Complete operational suite including RUNBOOK and AGENTS -

-
+ + + Example instructions + Copy one when asking someone or an agent to run init.md. + + + {examples.map((example) => ( +
+ {example} +
+ ))} +
+
+
-
-
- -

Dry-Run

-
-
-

- Use when: Testing, validation, security-conscious environments -

-

- Generates: Documentation blueprints without system changes -

-
-
-
-
- - - - + - Common Implementation Patterns - Proven approaches for different project types and environments + Completion review + Before calling the target operational, check that the report answers these questions. - -
-
-

For Web Applications

-
-
-

Frontend Projects

-

- Focus on package.json, build tools, component architecture, and deployment pipelines -

-
-
-

Full-Stack Apps

-

- Map both client and server, database schemas, API endpoints, and environment configs -

-
-
-
- -
-

For Infrastructure Projects

-
-
-

Container Deployments

-

- Document Dockerfiles, compose files, orchestration configs, and service dependencies -

-
-
-

Cloud Infrastructure

-

- Catalog terraform files, cloud resources, networking, and monitoring configurations -

-
-
+ + {[ + "What target was initialized?", + "What was inspected?", + "What was created or configured?", + "What validation was run?", + "What remains incomplete or blocked?", + "Where are the important outputs?", + ].map((question) => ( +
+ + {question}
- -
-

For Data Projects

-
-
-

Analytics Pipelines

-

- Map data sources, transformation scripts, scheduling, and output destinations -

-
-
-

ML/AI Systems

-

- Document models, training data, inference endpoints, and monitoring systems -

-
-
-
-
+ ))}
) -} +} \ No newline at end of file diff --git a/src/components/tabs/OverviewTab.tsx b/src/components/tabs/OverviewTab.tsx index b006af5c..01ff4952 100644 --- a/src/components/tabs/OverviewTab.tsx +++ b/src/components/tabs/OverviewTab.tsx @@ -1,320 +1,119 @@ -/** - * Why: Encapsulate the overview storytelling for reuse across surfaces that need the init.md primer. - * What: Renders contextual cards explaining definitions, evolution, and guardrails for initialization protocols. - * How: Leverages shared UI components to keep the narrative consistent with the canonical `init.md` guidance. - */ -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" +import { CheckCircle, Files, ListChecks } from "@phosphor-icons/react" import { Badge } from "@/components/ui/badge" -import { CheckCircle } from "@phosphor-icons/react" +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" + +const processStages = [ + { + title: "Inspect", + description: "Read the target that exists: files, configuration, instructions, constraints, and reusable work.", + }, + { + title: "Determine", + description: "Decide what the target requires, which template applies, and which outputs would be useful.", + }, + { + title: "Create", + description: "Create only the artifacts that apply to this target, not a universal bundle of files.", + }, + { + title: "Configure", + description: "Connect required paths, settings, dependencies, tools, services, or instructions so they work together.", + }, + { + title: "Validate", + description: "Run or define a relevant check proving the intended operational result is actually reachable.", + }, + { + title: "Report", + description: "State what became operational, what changed, what was validated, and what remains blocked or incomplete.", + }, +] + +const targetExamples = [ + "software project", + "repository", + "AI agent", + "server", + "service", + "workspace", + "research environment", + "data pipeline", + "application", + "tool", +] export function OverviewTab() { return (
-
- - - What is "init"? - - -

- Traditionally, "init" is the Unix process that initializes the system during boot. -

-

- For agents, "init" defines the procedural scope and instruction sets to transition from cold start to - ready state. It establishes context, validates systems, and generates essential project documentation - automatically. -

-
-
- - - - Implementation Principles - - -
    -
  • - - Safe system probes with minimal side effects -
  • -
  • - - Structured execution steps and clear policies -
  • -
  • - - Automated file tree and context generation -
  • -
  • - - Project documentation suite generation -
  • -
-
-
- - - - Definition & scope - The runbook that carries an agent from cold start to READY - - -

- init.md captures the safe preflights, context loads, and artefact generation an agent needs before doing - work. It embraces the idea of "context engineering"—preparing prompts, memory, tools, and data ahead of - time so behaviour is predictable. -

-

- Learn more from{" "} - - Anthropic’s context engineering guidance - - . -

-
-
- - - - Why it matters - - -
    -
  • - - Runbooks stay fixed while prompts can vary, enabling repeatable results across sessions. -
  • -
  • - - Early environment validation mirrors real production boot sequences and avoids surprises. -
  • -
  • - - Documented outputs make it easy for humans to audit, resume, or hand off work. -
  • -
-
-
-
- - + - The Evolution of Initialization - How initialization patterns have shaped software development + What init.md is + + A target-specific initialization protocol for making a project, agent, service, server, workspace, or other + system operational. + - -
-
-

Unix systemd

-

- Process ID 1 brings up userspace services in a deterministic order, ensuring the operating system is - stable before workloads launch. -

-
- -
-

Kubernetes init containers

-

- One-shot containers finish migrations or checks before the main pod runs, guaranteeing a predictable - environment for application code. -

-
- -
-

Python __init__.py

-

- Marks a directory as a package and primes imports so modules expose the right interfaces and - dependencies. -

-
- -
-

JavaScript init helpers

-

- Setup functions consolidate configuration, dependency wiring, and boot logic before a runtime executes - business code. -

-
-
- -
-

The Pattern

-

- Every successful initialization system follows the same principle: establish context, validate - environment, and prepare for operation. The init.md protocol applies this battle-tested pattern to - AI agent bootstrapping. + +

+

+ It does not impose one universal scaffold. It inspects what exists, identifies the target's purpose and + requirements, determines what is missing or misconfigured, then creates or configures only what applies. +

+

+ Templates are complete concrete procedures for common targets. Use the root protocol for the general + method, or copy the template that matches the target.

- - - - - - Context Engineering in AI Agents - Why proper initialization is critical for autonomous systems - - -

- Context engineering emphasizes providing an AI agent with all relevant information and structure up front, - not just one-off prompts. Instead of improvising each interaction, we prepare the agent's environment and - instructions in advance through a stable "runbook" of steps and policies. -

- -
-
-

Without Proper Init

-
    -
  • • Agent starts with minimal context
  • -
  • • Repeated environment discovery
  • -
  • • Inconsistent behavior across sessions
  • -
  • • Missing documentation and structure
  • -
+
+
+ + Targets
- -
-

With init.md Protocol

-
    -
  • • Comprehensive environment awareness
  • -
  • • Consistent baseline across sessions
  • -
  • • Automated documentation generation
  • -
  • • Clear operational procedures
  • -
+
+ {targetExamples.map((target) => ( + + {target} + + ))}
- -
-

Key Insight

-

- A good runbook "is the key to a well-functioning AI agent" — it contains clear, step-by-step - instructions that remain constant across sessions, ensuring the agent always begins with the same - baseline knowledge and capabilities. -

-
- - - Generated Documentation Suite - Recommended starter artefacts teams often emit during initialization - - -
-
-
-
- README.md +
+ {processStages.map((stage, index) => ( + + +
+ {index + 1}
-

- Suggested overview covering detected stack, dependencies, and architecture notes -

-
- -
-
-
- TODO.md -
-

- Recommended backlog capturing gaps, doc debt, and optimization opportunities surfaced during init -

-
- -
-
-
- PRD.md -
-

- Product requirements outline capturing goals, stakeholders, and success metrics for the project -

-
- -
-
-
- CONTEXT.md -
-

- Baseline context index (file tree, env metadata, inventory) to accelerate later tasks -

-
- -
-
-
- AGENTS.md -
-

- Optional agent briefing summarizing build/run/test expectations once init is complete -

-
- -
-
-
- RUNBOOK.md -
-

- When production-ready, a lightweight runbook outlining incident, maintenance, and on-call paths -

-
- -
-
-
- INIT_CONTEXT_SNAPSHOT.md -
-

- Machine-readable snapshot (directory tree, host metrics, quick links) useful for auditing runs -

-
-
- -
-

Blueprinted scripts (operator-triggered)

-
    -
  • - scripts/init-checks.sh — lint and static analysis preflight -
  • -
  • - scripts/prepare-context.sh — rebuild context snapshots on demand -
  • -
  • - scripts/ready.sh — emit READY banner with artefact paths -
  • -
-

Documented for teams to run intentionally; never executed automatically during bootstrap.

-

- Treat this suite as a starter kit—swap in project-specific artefacts where they deliver more value. -

-
- - + {stage.title} + + +

{stage.description}

+
+ + ))} +
- + - Execution flow - The sequence that turns a cold agent into a READY signal + + + Operational means validated + - -
    -
  1. - Parse init.md into structured steps with descriptions, actions, and guardrails. -
  2. -
  3. Perform host preflights and resource baselines without privileged mutations.
  4. -
  5. Build a context index covering key docs, configs, scripts, and version control state.
  6. -
  7. Emit documentation, snapshots, and policy logs so humans can audit the start state.
  8. -
  9. Publish READY or ROLLBACK signals and await operator guidance.
  10. -
+ +
+ +

Success requires a validation step tied to the target's intended operation.

+
+
+ +

No output file is universal. README, PRD, snapshot, server report, and AGENTS.md are conditional.

+
-
) -} +} \ No newline at end of file diff --git a/src/components/tabs/TemplatesTab.tsx b/src/components/tabs/TemplatesTab.tsx index 3768d463..c9b24225 100644 --- a/src/components/tabs/TemplatesTab.tsx +++ b/src/components/tabs/TemplatesTab.tsx @@ -1,124 +1,244 @@ -/** - * Why: Own the template carousel logic separately so future pages or CLIs can reuse the same data contract. - * What: Presents gallery controls, active template content, and clipboard helpers for protocol snippets. - * How: Consumes the shared template definitions and keeps clipboard state locally for clarity. - */ -import { createElement, useCallback, useState } from "react" -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" -import { Button } from "@/components/ui/button" -import { Badge } from "@/components/ui/badge" -import { CaretLeft, CaretRight, CheckCircle, Copy } from "@phosphor-icons/react" +import { createElement, useCallback, useMemo, useState } from "react" +import { marked } from "marked" import { toast } from "sonner" +import { CaretLeft, CaretRight, CheckCircle, Copy, FileText } from "@phosphor-icons/react" +import { Badge } from "@/components/ui/badge" +import { Button } from "@/components/ui/button" +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { templates } from "@/data/templates" +import rootProtocolContent from "../../../init.md?raw" + +function stripFrontmatter(content: string) { + return content.replace(/^---\n[\s\S]*?\n---\n?/, "") +} + +function MetadataList({ title, items }: { title: string; items: string[] }) { + return ( +
+
{title}
+
    + {items.map((item) => ( +
  • + + {item} +
  • + ))} +
+
+ ) +} export function TemplatesTab() { - const [activeTemplate, setActiveTemplate] = useState(0) + const [activeTargetId, setActiveTargetId] = useState("development-project") const [copiedStates, setCopiedStates] = useState>({}) - const copyToClipboard = useCallback(async (content: string, id: string) => { + const copiedRootContent = rootProtocolContent.trim() + const copyTargets = useMemo( + () => [ + { + id: "root-protocol", + title: "init.md", + heading: "init.md", + eyebrow: "Root", + summary: "General initialization method.", + description: + "Copy the complete root procedure when no specific template is the better fit. It covers inspect, determine, create, configure, validate, and report.", + content: copiedRootContent, + icon: FileText, + badges: ["Root"], + copyLabel: "init.md", + copyButtonLabel: "Copy init.md", + template: null, + }, + ...templates.map((item) => ({ + id: item.id, + title: item.title, + heading: item.metadata.name, + eyebrow: item.category, + summary: item.summary, + description: `${item.description} Copying gives the complete usable template body without page label data.`, + content: stripFrontmatter(item.content).trim(), + icon: item.icon, + badges: [item.category, ...item.metadata.mode], + copyLabel: item.metadata.name, + copyButtonLabel: "Copy complete template", + template: item, + })), + ], + [copiedRootContent], + ) + + const activeTargetIndex = Math.max( + copyTargets.findIndex((target) => target.id === activeTargetId), + 0, + ) + const activeTarget = copyTargets[activeTargetIndex] + const activeTemplate = activeTarget.template + const renderedActiveContent = useMemo( + () => marked.parse(activeTarget.content, { async: false }) as string, + [activeTarget.content], + ) + + const copyToClipboard = useCallback(async (content: string, id: string, label: string) => { try { await navigator.clipboard.writeText(content) setCopiedStates((prev) => ({ ...prev, [id]: true })) - toast.success("Template copied to clipboard!") + toast.success(`${label} copied`) setTimeout(() => { setCopiedStates((prev) => ({ ...prev, [id]: false })) }, 2000) - } catch (error) { - toast.error("Failed to copy to clipboard") + } catch { + toast.error(`Failed to copy ${label}`) } }, []) - const nextTemplate = () => { - setActiveTemplate((prev) => (prev + 1) % templates.length) + const nextTarget = () => { + setActiveTargetId(copyTargets[(activeTargetIndex + 1) % copyTargets.length].id) } - const prevTemplate = () => { - setActiveTemplate((prev) => (prev - 1 + templates.length) % templates.length) + const prevTarget = () => { + setActiveTargetId(copyTargets[(activeTargetIndex - 1 + copyTargets.length) % copyTargets.length].id) } return (
-
-

Template Gallery

+
+
+

Choose what to copy

+

+ Pick the root procedure or a complete target-specific template. The detail pane shows exactly what the copy + button will place on the clipboard. +

+
- - - {activeTemplate + 1} of {templates.length} + + {activeTargetIndex + 1} of {copyTargets.length} -
- +
+ {copyTargets.map((target) => ( + + ))} +
+ + -
-
- {createElement(templates[activeTemplate].icon, { - size: 24, - className: "text-primary flex-shrink-0 mt-0.5", +
+
+ {createElement(activeTarget.icon, { + size: 28, + className: "mt-1 shrink-0 text-primary", })} -
- {templates[activeTemplate].title} -

- {templates[activeTemplate].subtitle} -

- - {templates[activeTemplate].description} +
+
+ {activeTarget.badges.map((badge, index) => ( + + {badge} + + ))} +
+ {activeTarget.heading} + {activeTemplate ? ( +

Target: {activeTemplate.metadata.target}

+ ) : null} + + {activeTarget.description}
- -
-
- {templates[activeTemplate].features.map((feature) => ( - - {feature} - - ))} +
+ +
+ {activeTemplate ? ( +
+ {activeTemplate.features.map((feature) => ( + + {feature} + + ))} +
+ ) : null} - -
-
-              {templates[activeTemplate].content}
-            
+ + + {activeTemplate ? ( + <> +
+ + + +
+ +
+
+ Optional outputs +
+
+ {activeTemplate.metadata.optional_outputs.map((output) => ( +
+ {output} +
+ ))} +
+
+ + ) : null} + + {!activeTemplate ? ( +
+ {[ + "Use when the target needs the general init method.", + "Switch to a template when the target clearly matches one.", + ].map((item) => ( +
+ {item} +
+ ))} +
+ ) : null} + +
+

Copied content preview

+

+ This is the complete Markdown copied by the button above. +

+
+
+
- -
- {templates.map((template, index) => ( - setActiveTemplate(index)} - > - -
- {createElement(template.icon, { size: 18, className: "text-primary flex-shrink-0" })} -

{template.title}

-
-

{template.subtitle}

-
-
- ))} -
) } diff --git a/src/data/templates.ts b/src/data/templates.ts index 6d8106d9..855ad07c 100644 --- a/src/data/templates.ts +++ b/src/data/templates.ts @@ -1,182 +1,162 @@ -/** - * Why: Centralize template metadata to keep `App` composable and align with the protocol catalogue in `init.md`. - * What: Provides strongly-typed template definitions for the gallery and clipboard actions. - * How: Exports the template array and contract so UI sections can consume it without duplicating state. - */ import type { ComponentType } from "react" -import { FileText, Desktop, TestTube } from "@phosphor-icons/react" +import { Code, Desktop, FileText, Robot, TestTube } from "@phosphor-icons/react" + +import agentContent from "../../templates/agent_init_protocol.md?raw" +import developmentProjectContent from "../../templates/development_project_init_protocol.md?raw" +import dryRunContent from "../../templates/dry_run_init_protocol.md?raw" +import minimalContent from "../../templates/minimal_init_protocol.md?raw" +import serverContent from "../../templates/server_init_protocol.md?raw" + +type TemplateMetadataValue = string | string[] + +export interface TemplateMetadata { + name: string + target: string + purpose: string + mode: string[] + creates: string[] + configures: string[] + validates: string[] + optional_outputs: string[] +} export interface TemplateDefinition { id: string title: string - subtitle: string + summary: string description: string + category: "General" | "Target-specific" + sourcePath: string + sourceUrl: string icon: ComponentType<{ size?: number; className?: string }> features: string[] content: string + metadata: TemplateMetadata +} + +const repositoryUrl = "https://github.com/bitwikiorg/init.md" + +function parseTemplateMetadata(content: string): TemplateMetadata { + const frontmatter = content.match(/^---\n([\s\S]*?)\n---/) + + if (!frontmatter) { + throw new Error("Template is missing frontmatter metadata") + } + + const parsed: Record = {} + let activeKey = "" + + for (const line of frontmatter[1].split("\n")) { + const listItem = line.match(/^\s+-\s+(.*)$/) + + if (listItem && activeKey) { + const current = parsed[activeKey] + parsed[activeKey] = Array.isArray(current) ? [...current, listItem[1]] : [listItem[1]] + continue + } + + const keyValue = line.match(/^([A-Za-z_]+):\s*(.*)$/) + + if (keyValue) { + activeKey = keyValue[1] + parsed[activeKey] = keyValue[2] ? keyValue[2] : [] + } + } + + return { + name: asString(parsed.name), + target: asString(parsed.target), + purpose: asString(parsed.purpose), + mode: asList(parsed.mode), + creates: asList(parsed.creates), + configures: asList(parsed.configures), + validates: asList(parsed.validates), + optional_outputs: asList(parsed.optional_outputs), + } +} + +function asString(value: TemplateMetadataValue | undefined) { + return typeof value === "string" ? value : "" +} + +function asList(value: TemplateMetadataValue | undefined) { + if (Array.isArray(value)) return value + return value ? [value] : [] +} + +function sourceUrl(sourcePath: string) { + return `${repositoryUrl}/blob/main/${sourcePath}` } export const templates: TemplateDefinition[] = [ { id: "minimal", - title: "Minimal Init Protocol", - subtitle: - "Perfect for simple projects and development environments where you need basic context without overhead.", + title: "Minimal", + summary: "Complete init procedure for one clear gap.", description: - "Start small with essential system awareness and foundational documentation. This template performs safe, non-invasive probes to understand your environment and generates core project files. Ideal for personal projects, prototypes, or when working in constrained environments where minimal footprint is crucial.", + "A complete procedure for inspecting a small target, adding only the missing requirement, validating it, and reporting status.", + category: "General", + sourcePath: "templates/minimal_init_protocol.md", + sourceUrl: sourceUrl("templates/minimal_init_protocol.md"), icon: FileText, - features: ["Essential probes only", "Zero secret exposure", "File generation"], - content: `# Minimal Init Protocol (Template) - -**Intent** -- Lightweight initialization protocol for agents requiring essential system awareness. -- Safe-by-default: essential probes, limited scope, zero secret exposure. -- Generates foundational project files for immediate productivity. - -## INIT_SEQUENCE - -### HOST_PREFLIGHT -Establish basic system awareness and time coherence. - -**Steps:** -- **Description**: Capture OS family and version via safe reads. - - **Action**: Read /etc/os-release if present; avoid privileged actions. - - **Source**: OS_INFO - -### RESOURCE_BASELINE -Conservative resource awareness for planning. - -**Steps:** -- **Description**: Record CPU cores and memory estimate. - - **Action**: Use safe system APIs or cached metrics. - - **Source**: SYSTEM_HARDWARE_METRICS - -### PROJECT_FOUNDATION -Generate essential project files with current context. - -**Steps:** -- **Description**: Create foundational documentation and task files. - - **Action**: Generate file tree, initialize project structure. - - **Output Files**: - - ./README.md (project overview with auto-detected stack) - - ./TODO.md (startup tasks and next steps) - - ./PRD.md (lightweight product requirements summary) - - ./CONTEXT.md (current file tree and environment summary) - -### EXECUTION_START -Create a snapshot and announce READY. - -**Steps:** -- **Description**: Generate INIT_CONTEXT_SNAPSHOT.md (summary only). - - **Action**: Write directory overview + metrics headings. - - **Output File**: ./INIT_CONTEXT_SNAPSHOT.md` + features: ["Small scope", "Conditional output", "Minimum validation"], + content: minimalContent, + metadata: parseTemplateMetadata(minimalContent), }, { - id: "server", - title: "Server Init Protocol", - subtitle: "Built for production environments requiring comprehensive system validation and operational documentation.", + id: "dry-run", + title: "Dry Run", + summary: "Complete no-change init planning procedure.", description: - "Deploy with confidence using extensive documentation generation and architectural awareness. This template validates system compatibility, documents service dependencies, and creates a complete operational handbook. Essential for production deployments, team collaboration, and maintaining complex infrastructures.", - icon: Desktop, - features: ["Production-ready", "Full documentation suite", "Operational blueprints"], - content: `# Server Init Protocol (Template) - -**Intent** -- Production-oriented initialization with comprehensive system validation. -- Emphasizes precise execution rules, architectural context, and operational policies. -- Generates complete operational documentation suite. - -## INIT_SEQUENCE - -### HOST_PREFLIGHT -Verify OS/kernel compatibility and time alignment. - -**Steps:** -- **Description**: Note OS family and kernel. - - **Action**: Use safe reads; prefer APIs to shell. - - **Source**: OS_INFO - -### ARCHITECTURE_AND_TOOLS -Ground execution rules in actual system design. - -**Steps:** -- **Description**: Document services, runtimes, and schedulers in use. - - **Action**: Summarize architecture: containers, queues, cron, orchestrators. - - **Source**: SYSTEM_ARCHITECTURE_DOCS - -### OPERATIONAL_DOCUMENTATION -Generate comprehensive operational files for production readiness. - -**Steps:** -- **Description**: Create full documentation suite with system context. - - **Action**: Generate operational files with detected configurations. - - **Output Files**: - - ./README.md (comprehensive project documentation) - - ./PRD.md (product requirements and success criteria) - - ./SERVER.md (infrastructure, services, deployment notes) - - ./AGENTS.md (agent configurations, schedules, and policies) - - ./TODO.md (prioritized operational tasks) - - ./RUNBOOK.md (incident response and maintenance procedures) - - ./CONTEXT.md (complete system inventory and file tree) - -### EXECUTION_START -**Steps:** -- **Description**: Generate INIT_CONTEXT_SNAPSHOT.md (detailed summary). - - **Action**: Create directory tree (depth 3), metrics table, key locations. - - **Output File**: ./INIT_CONTEXT_SNAPSHOT.md` + "A complete procedure for inspecting the target, listing required work, and reporting what would become operational without changes.", + category: "General", + sourcePath: "templates/dry_run_init_protocol.md", + sourceUrl: sourceUrl("templates/dry_run_init_protocol.md"), + icon: TestTube, + features: ["No mutation", "Any target", "Proposed validation"], + content: dryRunContent, + metadata: parseTemplateMetadata(dryRunContent), }, { - id: "dry-run", - title: "Dry-Run Init Protocol", - subtitle: "Risk-free rehearsal mode for testing and validation without making any system changes.", + id: "development-project", + title: "Development Project", + summary: "Complete init procedure for software projects.", description: - "Practice and validate your initialization sequence safely before production deployment. This template creates documentation blueprints and command playbooks without touching your system. Perfect for security-conscious environments, testing scenarios, or when you need to validate approaches before implementation.", - icon: TestTube, - features: ["No mutations", "Documentation blueprints", "Pre-production safe"], - content: `# Dry-Run Init Protocol (Template) - -**Intent** -- Rehearsal-only initialization: no mutations, no enforcement. -- Perfect for pre-production validation and command playbooks. -- Creates documentation blueprints without system changes. - -## INIT_SEQUENCE - -### HOST_PREFLIGHT -Mentally confirm OS/time alignment without probing. - -**Steps:** -- **Description**: OS family and kernel fit expectations. - - **Action**: Reference prior inventories; note discrepancies. - - **Source**: OS_INFO - -### RESOURCE_BASELINE -Notional compute/storage profile. - -**Steps:** -- **Description**: CPU/memory/storage expectations. - - **Action**: Use container defaults or prior notes; set soft limits. - - **Source**: SYSTEM_HARDWARE_METRICS - -### DOCUMENTATION_BLUEPRINT -Plan documentation suite without file creation. - -**Steps:** -- **Description**: Design intended documentation structure. - - **Action**: Map file relationships, define content templates. - - **Planned Files**: - - README.md (project overview template) - - TODO.md (development roadmap template) - - PRD.md (product requirements outline) - - CONTEXT.md (environment inventory template) - - AGENTS.md (agent configuration template) - -### EXECUTION_START -Conclude rehearsal with a blueprint. - -**Steps:** -- **Description**: Draft the intended INIT_CONTEXT_SNAPSHOT.md. - - **Action**: Define directory tree, metrics headings, and context catalog. - ` - } -] + "A complete procedure for inspecting project shape, choosing artifacts and commands, and validating development readiness.", + category: "Target-specific", + sourcePath: "templates/development_project_init_protocol.md", + sourceUrl: sourceUrl("templates/development_project_init_protocol.md"), + icon: Code, + features: ["Project workflow", "Optional AGENTS.md", "Build/test validation"], + content: developmentProjectContent, + metadata: parseTemplateMetadata(developmentProjectContent), + }, + { + id: "agent", + title: "Agent", + summary: "Complete init procedure for agent targets.", + description: + "A complete procedure for defining what the agent target needs, preserving valid instructions, adding missing parts, and validating readiness.", + category: "Target-specific", + sourcePath: "templates/agent_init_protocol.md", + sourceUrl: sourceUrl("templates/agent_init_protocol.md"), + icon: Robot, + features: ["Target-specific guidance", "Tool boundaries", "Startup validation"], + content: agentContent, + metadata: parseTemplateMetadata(agentContent), + }, + { + id: "server", + title: "Server", + summary: "Complete init procedure for server readiness.", + description: + "A complete procedure for host checks, services, networking, and deployment validation in a server-specific flow.", + category: "Target-specific", + sourcePath: "templates/server_init_protocol.md", + sourceUrl: sourceUrl("templates/server_init_protocol.md"), + icon: Desktop, + features: ["Host inspection", "Service configuration", "Readiness checks"], + content: serverContent, + metadata: parseTemplateMetadata(serverContent), + }, +] \ No newline at end of file diff --git a/src/index.css b/src/index.css index f666dad3..05d8b9df 100644 --- a/src/index.css +++ b/src/index.css @@ -17,28 +17,125 @@ } :root { - --background: oklch(1 0 0); - --foreground: oklch(0.2 0 0); - --card: oklch(0.98 0.01 240); - --card-foreground: oklch(0.2 0 0); + --background: oklch(0.985 0 0); + --foreground: oklch(0.13 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.13 0 0); --popover: oklch(1 0 0); - --popover-foreground: oklch(0.2 0 0); - --primary: oklch(0.3 0.15 240); - --primary-foreground: oklch(1 0 0); - --secondary: oklch(0.95 0.02 240); - --secondary-foreground: oklch(0.2 0 0); - --muted: oklch(0.97 0.01 240); - --muted-foreground: oklch(0.7 0.05 240); - --accent: oklch(0.65 0.15 140); - --accent-foreground: oklch(1 0 0); + --popover-foreground: oklch(0.13 0 0); + --primary: oklch(0.13 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.93 0 0); + --secondary-foreground: oklch(0.13 0 0); + --muted: oklch(0.95 0 0); + --muted-foreground: oklch(0.42 0 0); + --accent: oklch(0.56 0.16 28); + --accent-foreground: oklch(0.985 0 0); --destructive: oklch(0.577 0.245 27.325); - --destructive-foreground: oklch(1 0 0); - --border: oklch(0.9 0.02 240); - --input: oklch(0.9 0.02 240); - --ring: oklch(0.3 0.15 240); + --destructive-foreground: oklch(0.985 0 0); + --border: oklch(0.82 0 0); + --input: oklch(0.82 0 0); + --ring: oklch(0.13 0 0); --radius: 0.5rem; } +html { + scroll-behavior: smooth; +} + +body { + background: + linear-gradient(90deg, oklch(0.92 0 0 / 0.35) 1px, transparent 1px), + linear-gradient(0deg, oklch(0.92 0 0 / 0.35) 1px, transparent 1px), + var(--background); + background-size: 28px 28px; +} + +.protocol-grid { + background: + linear-gradient(90deg, oklch(0.13 0 0 / 0.08) 1px, transparent 1px), + linear-gradient(0deg, oklch(0.13 0 0 / 0.08) 1px, transparent 1px); + background-size: 32px 32px; +} + +.markdown-surface { + color: var(--foreground); + font-size: 0.9375rem; + line-height: 1.7; +} + +.markdown-surface > * + * { + margin-top: 1rem; +} + +.markdown-surface h1, +.markdown-surface h2, +.markdown-surface h3 { + color: var(--foreground); + font-weight: 800; + line-height: 1.2; +} + +.markdown-surface h1 { + font-size: 1.75rem; +} + +.markdown-surface h2 { + margin-top: 1.75rem; + border-top: 1px solid var(--border); + padding-top: 1rem; + font-size: 1.35rem; +} + +.markdown-surface h3 { + margin-top: 1.25rem; + font-size: 1.05rem; +} + +.markdown-surface ul, +.markdown-surface ol { + padding-left: 1.25rem; +} + +.markdown-surface ul { + list-style: disc; +} + +.markdown-surface ol { + list-style: decimal; +} + +.markdown-surface code { + border: 1px solid var(--border); + background: var(--muted); + padding: 0.1rem 0.3rem; + border-radius: 0.25rem; + font-family: var(--font-mono); + font-size: 0.875em; +} + +.markdown-surface pre { + overflow-x: auto; + border: 1px solid var(--border); + background: var(--foreground); + color: var(--background); + padding: 1rem; + border-radius: 0.375rem; +} + +.markdown-surface pre code { + border: 0; + background: transparent; + color: inherit; + padding: 0; +} + +.markdown-surface blockquote { + border-left: 4px solid var(--foreground); + padding-left: 1rem; + color: var(--muted-foreground); +} + @theme { --color-background: var(--background); --color-foreground: var(--foreground); diff --git a/src/main.tsx b/src/main.tsx index de0ac2eb..0b56023e 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,6 +1,5 @@ import { createRoot } from 'react-dom/client' import { ErrorBoundary } from "react-error-boundary"; -import "@github/spark/spark" import App from './App.tsx' import { ErrorFallback } from './ErrorFallback.tsx' diff --git a/src/prd.md b/src/prd.md index d3ef8dcd..e136f664 100644 --- a/src/prd.md +++ b/src/prd.md @@ -1,111 +1,38 @@ -# Product Requirements Document: init.md - AI Agent Initialization Templates +# init.md — Product Requirements Summary -## Core Purpose & Success -- **Mission Statement**: Provide structured initialization templates that help AI agents bootstrap themselves with essential project context and documentation generation capabilities. -- **Success Indicators**: Users can quickly select appropriate templates, understand implementation approaches, and successfully generate project documentation using their AI agents. -- **Experience Qualities**: Professional, efficient, educational +## Definition -## Project Classification & Approach -- **Complexity Level**: Light Application (multiple features with basic state) -- **Primary User Activity**: Acting (copying templates, implementing protocols) +`init.md` is a general initialization procedure that inspects a target, determines what it needs to become operational, creates and configures what applies, validates the result, and reports its operational state. -## Thought Process for Feature Selection -- **Core Problem Analysis**: AI agents need structured ways to initialize themselves and understand project contexts, but current approaches are ad-hoc and inconsistent. -- **User Context**: Developers and DevOps professionals working with AI agents in various environments from personal projects to production systems. -- **Critical Path**: Template selection → customization understanding → implementation → validation -- **Key Moments**: Template comparison, content copying, implementation guidance +## Core Model -## Essential Features +The root protocol remains general: -### Template Gallery with Navigation -- **What it does**: Displays three initialization templates (Minimal, Server, Dry-Run) with detailed descriptions and navigation controls -- **Why it matters**: Allows users to understand different approaches and select the most appropriate template for their needs -- **Success criteria**: Users can easily browse templates and understand their differences +1. Inspect what exists. +2. Determine what is needed. +3. Create what applies. +4. Configure what is required. +5. Validate the result. +6. Report what became operational. -### Template Content Display and Copying -- **What it does**: Shows full template content in readable format with one-click copying functionality -- **Why it matters**: Enables immediate implementation without manual transcription errors -- **Success criteria**: Content is readable on all devices and copying works reliably +Templates define complete concrete initialization procedures for specific targets. -### Implementation Guide -- **What it does**: Provides step-by-step guidance on how to define project scope, map systems, and customize templates -- **Why it matters**: Bridges the gap between template selection and successful implementation -- **Success criteria**: Users understand how to adapt templates to their specific environments +## Current Implementation -### Responsive Design -- **What it does**: Ensures optimal viewing and interaction across desktop, tablet, and mobile devices -- **Why it matters**: Users access documentation on various devices and need consistent experience -- **Success criteria**: All content is accessible and functional on screens from 320px to 1920px+ width +- Static Vite and React website. +- GitHub Pages deployment. +- Root init.md and template browser with copy-to-clipboard behavior. +- Canonical Markdown files under `templates/` imported with Vite raw imports. +- Template metadata parsed from Markdown frontmatter. +- Copy buttons copy complete usable instruction bodies, not frontmatter metadata. +- Build-time template metadata check. +- GitHub and BIThub links limited to header and footer. -## Design Direction +## Non-Goals -### Visual Tone & Identity -- **Emotional Response**: Professional confidence with approachable clarity -- **Design Personality**: Technical precision meets modern simplicity - like high-quality developer tools -- **Visual Metaphors**: Clean code aesthetics, system architecture diagrams, terminal interfaces -- **Simplicity Spectrum**: Minimal interface that lets content shine, with purposeful visual hierarchy - -### Color Strategy -- **Color Scheme Type**: Monochromatic with strategic accent -- **Primary Color**: Deep blue (oklch(0.3 0.15 240)) - conveys technical expertise and reliability -- **Secondary Colors**: Light blue-grays for cards and supporting elements -- **Accent Color**: Green (oklch(0.65 0.15 140)) - for success states and interactive elements -- **Color Psychology**: Blue establishes trust and technical competence, while green provides positive feedback -- **Color Accessibility**: All pairings meet WCAG AA contrast requirements (4.5:1 minimum) -- **Foreground/Background Pairings**: - - Background (white) + Foreground (near-black): 15.2:1 ratio - - Primary (deep blue) + Primary-foreground (white): 8.7:1 ratio - - Card (light blue-gray) + Card-foreground (near-black): 14.8:1 ratio - -### Typography System -- **Font Pairing Strategy**: Inter for UI (clean, modern sans-serif) paired with Fira Code for code blocks (monospace clarity) -- **Typographic Hierarchy**: Clear scaling from 2xl headers down to xs helper text with consistent weight progression -- **Font Personality**: Inter conveys modern professionalism while Fira Code ensures code readability -- **Readability Focus**: 1.5x line height for body text, generous spacing between sections -- **Typography Consistency**: Semantic heading structure (h1-h4) with consistent color and weight application -- **Which fonts**: Inter (weights 400, 500, 600, 700) and Fira Code (weight 400) from Google Fonts -- **Legibility Check**: Both fonts tested for clarity at small sizes and on various backgrounds - -### Visual Hierarchy & Layout -- **Attention Direction**: Primary content in center column with secondary navigation elements on periphery -- **White Space Philosophy**: Generous padding and margins create breathing room and focus attention -- **Grid System**: Responsive grid using CSS Grid and Flexbox for complex layouts -- **Responsive Approach**: Mobile-first design that progressively enhances for larger screens -- **Content Density**: Balanced information density that avoids overwhelming while providing comprehensive details - -### Animations -- **Purposeful Meaning**: Subtle hover states and transitions reinforce interactivity without distraction -- **Hierarchy of Movement**: Button hovers, tab transitions, and template navigation use consistent timing -- **Contextual Appropriateness**: Minimal, functional animations that support rather than showcase - -### UI Elements & Component Selection -- **Component Usage**: shadcn/ui components for consistency and accessibility (Cards, Tabs, Buttons, Badges) -- **Component Customization**: Tailwind utilities for spacing, colors, and responsive behavior -- **Component States**: Clear hover, active, and focus states for all interactive elements -- **Icon Selection**: Phosphor icons for consistent visual language (outlined style) -- **Component Hierarchy**: Primary actions (Copy buttons), secondary navigation (Template arrows), tertiary information (Badges) -- **Spacing System**: Consistent 4px grid system using Tailwind's spacing scale -- **Mobile Adaptation**: Stacked layouts for small screens, side-by-side for larger screens - -### Visual Consistency Framework -- **Design System Approach**: Component-based design with consistent props and styling patterns -- **Style Guide Elements**: Color variables, typography scale, spacing system, component variants -- **Visual Rhythm**: Consistent card styling, button treatments, and spacing patterns -- **Brand Alignment**: Technical aesthetic that reinforces tool quality and reliability - -### Accessibility & Readability -- **Contrast Goal**: WCAG AA compliance achieved across all text and meaningful non-text elements -- **Additional Considerations**: Keyboard navigation, semantic HTML structure, screen reader compatibility - -## Edge Cases & Problem Scenarios -- **Potential Obstacles**: Users may not understand which template fits their specific use case -- **Edge Case Handling**: Clear template selection guide with specific use cases and examples -- **Technical Constraints**: Must work across various screen sizes and devices - -## Implementation Considerations -- **Scalability Needs**: Template content may expand, interface should accommodate additional templates -- **Testing Focus**: Template copying functionality, responsive behavior, content readability -- **Critical Questions**: Are the templates comprehensive enough? Is the guidance actionable? - -## Reflection -This approach uniquely combines technical precision with educational clarity, making complex initialization concepts accessible while maintaining professional standards. The focus on practical implementation bridges the gap between template selection and successful deployment. \ No newline at end of file +- No backend. +- No database. +- No account system. +- No execution runtime in this version. +- No fixed scaffold imposed on every target. +- No universal requirement to generate README, PRD, snapshot, context, server, task, or agent files. \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js index fa573188..8b9009d6 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -18,11 +18,6 @@ const defaultTheme = { padding: "2rem", }, extend: { - screens: { - coarse: { raw: "(pointer: coarse)" }, - fine: { raw: "(pointer: fine)" }, - pwa: { raw: "(display-mode: standalone)" }, - }, fontSize: { xs: ["0.875rem", { lineHeight: "1.5" }], }, diff --git a/templates/agent_init_protocol.md b/templates/agent_init_protocol.md new file mode 100644 index 00000000..43eb4a4f --- /dev/null +++ b/templates/agent_init_protocol.md @@ -0,0 +1,126 @@ +--- +name: Agent Init Protocol +target: AI agent, agent workspace, agent-enabled repository, automation worker, or tool-using assistant environment +purpose: Inspect what an agent requires to operate in a specific target, create or configure only applicable instructions, tools, prompts, state, and validation checks, and report agent readiness. +mode: + - active + - dry run + - repair + - reinitialize +creates: + - AGENTS.md when agent operation applies and valid instructions are absent + - SELF.md when identity, role, capabilities, or boundaries must be explicit + - USER.md when operator context is required for correct interaction + - TOOLS.md when tool availability, permissions, or invocation rules must be documented + - STATE.md or PLAN.md when current condition or pending work must be externalized +configures: + - Agent instructions + - Model or provider settings when applicable + - Tool definitions + - Prompt files + - Workspace directories + - State or context references + - Expected inputs and outputs +validates: + - Instructions are target-specific and internally consistent + - Required tools or providers are accessible where validation is permitted + - Startup path, prompts, and expected outputs are clear + - Existing instructions are preserved or repaired without unnecessary replacement +optional_outputs: + - AGENTS.md + - SELF.md + - USER.md + - TOOLS.md + - STATE.md + - PLAN.md + - SNAPSHOT.md + - Prompt files + - Tool registry + - Startup validation report +--- + +# Agent Init Protocol + +Use this template when the target will be operated, modified, or assisted by an AI agent. The template does not prescribe one universal agent file tree. It determines what this specific agent target requires. + +## Target Fit + +Use this template when the target is an AI agent, agent workspace, agent-enabled repository, automation worker, tool-using assistant environment, or system whose operation depends on agent instructions. + +Do not create generic agent files in every project. Agent artifacts are useful only when they materially improve operation. + +## Procedure + +### `INSPECT` + +- `description`: Identify the agent's intended role and the target it operates on. +- `inspect`: Existing `AGENTS.md` files, prompts, tool definitions, provider or model configuration, workspace directories, state files, context files, schedules, expected inputs and outputs, permissions, and operator constraints. +- `condition`: Preserve valid existing instructions. Respect nested instruction scopes when they exist. +- `source`: Existing agent files, project docs, tool schemas, prompt files, configuration, and user instructions. + +### `DETERMINE` + +- `description`: Decide what the agent needs to become operational in this target. +- `action`: Identify required instructions, tool access, prompt structure, provider configuration, state representation, context handoff, validation checks, and boundaries. +- `output`: A target-specific agent initialization plan. + +Possible decisions include: + +- create `AGENTS.md` only when agent operation applies and no valid instruction file exists; +- create `SELF.md` only when identity, role, capabilities, or boundaries need to be explicit; +- create `USER.md` only when operator context materially affects operation; +- create `TOOLS.md` only when tool permissions or invocation rules need durable documentation; +- create `STATE.md` or `PLAN.md` only when current condition or pending work must be externalized; +- create `SNAPSHOT.md` only when a point-in-time state record is useful. + +Continuity artifacts such as durable memory or heartbeat instructions may exist in some systems, but this template does not prescribe them as normative outputs for this phase. + +### `CREATE` + +Create only applicable artifacts. Possible outputs include: + +- `AGENTS.md`; +- `SELF.md`; +- `USER.md`; +- `TOOLS.md`; +- `STATE.md`; +- `PLAN.md`; +- `SNAPSHOT.md`; +- prompt files; +- tool registry files; +- startup validation reports; +- workspace directories. + +Every artifact must be derived from the target. Do not install a reusable generic instruction file without adaptation. + +### `CONFIGURE` + +- `description`: Make the agent artifacts usable together. +- `action`: Configure instruction precedence, model or provider settings, tool permissions, prompt references, state locations, input and output conventions, schedules when applicable, and validation commands. +- `condition`: Configure only what is required for this agent target. + +### `VALIDATE` + +- `description`: Confirm the agent can operate with the initialized instructions and tools. +- `validation`: Check instruction consistency, required files, tool availability, provider configuration, prompt references, expected input and output paths, state handoff, and any startup or dry-run command the target supports. +- `status`: Use `OPERATIONAL`, `OPERATIONAL_WITH_WARNINGS`, `BLOCKED`, or `DRY_RUN_COMPLETE`. + +### `REPORT` + +Report: + +- agent target identified; +- role, boundaries, and operating context; +- inspected instructions, prompts, tools, and state; +- created or updated artifacts; +- configuration performed; +- validation result; +- warnings, missing access, or blockers; +- final status. + +## Agent-Specific Notes + +- Different targets should have different agent instructions. +- Nested projects may require nested `AGENTS.md` files. +- Tool access must reflect real permissions and limitations. +- Agent readiness is validated by the target's required startup path, not by a generic checklist. \ No newline at end of file diff --git a/templates/development_project_init_protocol.md b/templates/development_project_init_protocol.md new file mode 100644 index 00000000..06a1b585 --- /dev/null +++ b/templates/development_project_init_protocol.md @@ -0,0 +1,124 @@ +--- +name: Development Project Init Protocol +target: Software development project, repository, application, library, CLI, website, or monorepo +purpose: Inspect a development target, determine the project-specific artifacts and commands required for productive operation, configure what applies, validate the developer workflow, and report readiness. +mode: + - active + - dry run + - repair + - reinitialize +creates: + - README.md when missing or inadequate + - AGENTS.md when agent contributors will operate in the project and no valid guidance exists + - PRD.md or specification files when product requirements must be established + - Source, test, task, or configuration files only when required by the project +configures: + - Package or dependency manifests + - Development scripts + - Linting and formatting + - Test commands + - Build and preview commands + - Environment examples +validates: + - Required commands run or are documented as unavailable + - Manifests parse + - Dependencies resolve where installation is in scope + - Tests, lint, type checks, or builds pass when applicable +optional_outputs: + - README.md + - AGENTS.md + - PRD.md + - .env.example + - PLAN.md + - task or issue files + - source directories + - tests + - validation report +--- + +# Development Project Init Protocol + +Use this template for software development projects. A small library, a website, a CLI, and a monorepo should not receive identical output. The target determines which artifacts and commands apply. + +## Target Fit + +Use this template when the target is a codebase, repository, application, package, library, website, CLI, tool, or monorepo. + +Do not assume every development project needs a PRD, `AGENTS.md`, tests, a package manager, a `src` directory, or the same build commands. + +## Procedure + +### `INSPECT` + +- `description`: Understand the project as it exists. +- `inspect`: Repository files, README, license, package or dependency manifests, source layout, tests, scripts, build config, deployment config, environment examples, issue or task files, existing specs, existing agent instructions, and user constraints. +- `condition`: Preserve local conventions and avoid unrelated cleanup. +- `source`: Files in the project, package scripts, framework configuration, docs, and operator instructions. + +### `DETERMINE` + +- `description`: Decide what the project requires to become operational for development. +- `action`: Identify project type, expected developer workflow, missing documentation, missing manifests, dependency setup, command surface, environment requirements, validation checks, and optional agent guidance. +- `output`: A project-specific initialization plan. + +Possible decisions include: + +- create or update `README.md` only when entry-point documentation is missing or misleading; +- create `AGENTS.md` only when agent contribution or operation applies; +- create `PRD.md` only when product requirements need to be established; +- add `.env.example` only when environment variables are required; +- add or repair package scripts only when the project has a compatible package system; +- add tests only when there is a clear test surface and project convention; +- add source directories only when the project lacks an expected implementation location. + +### `CREATE` + +Create only applicable artifacts. Possible outputs include: + +- `README.md`; +- `AGENTS.md`; +- `PRD.md` or another specification file; +- package or dependency manifests; +- source directories; +- test files; +- lint or formatting configuration; +- `.env.example`; +- development scripts; +- task or issue files; +- validation reports. + +When an existing file is substantial and mostly correct, update it instead of replacing it. + +### `CONFIGURE` + +- `description`: Make the selected development artifacts work together. +- `action`: Configure dependency manifests, package scripts, build commands, test commands, linting, formatting, environment examples, deployment settings, agent instructions, file references, and documentation links. +- `condition`: Match the project's existing framework and style. + +### `VALIDATE` + +- `description`: Confirm the developer workflow is operational. +- `validation`: Use relevant checks such as manifest parsing, dependency installation when permitted, lint, type check, tests, build, preview, executable CLI command, documentation link review, or agent instruction consistency. +- `status`: Use `OPERATIONAL`, `OPERATIONAL_WITH_WARNINGS`, `BLOCKED`, or `DRY_RUN_COMPLETE`. + +Do not declare a development project operational without a validation step tied to its real workflow. + +### `REPORT` + +Report: + +- project identified; +- project type and operational goal; +- inspected files and commands; +- created or updated artifacts; +- configuration changes; +- validation commands or reviews; +- remaining warnings, blockers, or deferred work; +- final status. + +## Project-Specific Examples + +- A small library may need accurate package metadata, a README usage example, and a test command. +- A website may need build and preview commands plus deployment notes. +- A CLI may need executable configuration, command examples, and smoke tests. +- A monorepo may need workspace discovery, package-specific commands, and scoped agent instructions. \ No newline at end of file diff --git a/templates/dry_run_init_protocol.md b/templates/dry_run_init_protocol.md index d16bd66c..b1332d16 100644 --- a/templates/dry_run_init_protocol.md +++ b/templates/dry_run_init_protocol.md @@ -1,107 +1,91 @@ -# Dry-Run Init Protocol (Template) +--- +name: Dry-Run Init Protocol +target: Any target that needs proposed initialization work without mutation +purpose: Inspect the target, determine requirements, produce an initialization plan, and report what would become operational without changing files, services, or state. +mode: + - dry run +creates: + - No target artifacts +configures: + - No target settings +validates: + - Proposed checks are identified and checked for feasibility where possible without mutation +optional_outputs: + - Dry-run report outside the target when the operator requests one + - Proposed PLAN.md content when actionable work remains + - Proposed validation checklist +--- -**Intent** -- Rehearsal-only initialization: no mutation, no enforcement. -- Ideal for pre-production mental models and command playbooks. +# Dry-Run Init Protocol -## INIT_SEQUENCE +Use this template to rehearse initialization without changing the target. The dry run may inspect and reason about requirements, but it must not create, configure, delete, install, migrate, start, stop, or overwrite anything in the target. -### HOST_PREFLIGHT -Mentally confirm OS/time alignment without probing. +## Target Fit -**Steps:** -- **Description**: OS family and kernel fit expectations. - - **Action**: Reference prior inventories; note discrepancies. - - **Source**: OS_INFO +Use this template when: -- **Description**: Clock alignment acknowledged. - - **Action**: Note any drift assumptions for later remediation. - - **Source**: SYSTEM_TIME_INFO +- the operator wants to understand impact before active initialization; +- the target is sensitive, remote, production-like, or shared; +- access is read-only; +- the correct template is unknown; +- proposed outputs need review before creation. -### RESOURCE_BASELINE -Notional compute/storage profile. +This template works for any target type. Server checks appear only when the target is actually a server or infrastructure environment. -**Steps:** -- **Description**: CPU/memory/storage expectations. - - **Action**: Use container defaults or prior notes; set soft limits. - - **Source**: SYSTEM_HARDWARE_METRICS +## Procedure -- **Description**: Hypothetical bottlenecks. - - **Action**: Define alert thresholds for future activation. - - **Source**: SYSTEM_PERFORMANCE_METRICS +### `INSPECT` -### TOOL_DISCOVERY_AND_API_POLICY -Reiterate approved routes and adapters. +- `description`: Inspect enough to understand the target and its likely operational requirements. +- `inspect`: Existing files, configuration, docs, service descriptions, tool definitions, manifests, environment notes, or user-provided constraints that are relevant to the target. +- `condition`: Do not mutate. Do not broaden inspection beyond the target without reason. +- `source`: Read-only evidence. -**Steps:** -- **Description**: Command registry and features. - - **Action**: Summarize available entry points and controllers. - - **Source**: COMMAND_AND_FEATURE_INDEX +### `DETERMINE` -- **Description**: Routing rules. - - **Policy**: - - Use designated search adapter in role-play. - - Use approved HTTP clients; no ad hoc fetch. - - Prefer file utilities for content inspection. - - **Source**: API_ROUTING_POLICY +- `description`: Select the closest initialization pattern or combine compatible pattern sections. +- `action`: Identify what would need to be created, configured, preserved, updated, or validated in an active run. +- `output`: A proposed initialization plan with conditions. -### SECRET_MANAGEMENT -Validate credential flow assumptions. +The plan should distinguish: -**Steps:** -- **Description**: Bootstrap with test doubles or in-memory mocks. - - **Action**: Exercise encryption/decryption pathways conceptually. - - **Source**: VAULT_FLOW_NOTES +- required work; +- optional work; +- artifacts that should not be changed; +- questions or permissions needed before active mode; +- validation steps that would prove operation. -- **Description**: Target permission posture for storage. - - **Action**: Record intended fs permissions; defer checks. - - **Source**: STORAGE_PERMISSIONS_PLAN +### `CREATE` -### CONTEXT_LOADING -Curate rehearsal knowledge. +- `description`: Do not create target artifacts. +- `action`: If a report is requested, place it only where the operator explicitly permits. Otherwise keep the dry-run report in the response or calling system. +- `output`: Proposed content or artifact names, not actual target files. -**Steps:** -- **Description**: Catalog guides/prompts/configs by listing only. - - **Action**: Assemble notes linking assets to roles. - - **Source**: FILE_SYSTEM_SCAN +### `CONFIGURE` -- **Description**: Sketch context snapshot shape. - - **Action**: Define future ./cache/context.snapshot.json fields (no writes). - - **Source**: SERIALIZED_CONTEXT_MAP +- `description`: Do not configure the target. +- `action`: Describe configuration that would be required in active mode, including paths, dependencies, services, tools, environment variables, agent instructions, or integrations. -### CODE_GOVERNANCE_AND_STATE -Plan governance; avoid state writes. +### `VALIDATE` -**Steps:** -- **Description**: Diffs on mutation. - - **Policy**: Append to ./logs/code_history/.patch in active mode. - - **Source**: VERSION_CONTROL_POLICY +- `description`: Validate the plan, not the initialized result. +- `validation`: Confirm the proposed work is internally consistent, target-relevant, and has a plausible validation method. Where read-only checks are available, use them to reduce uncertainty. +- `status`: Use `DRY_RUN_COMPLETE` when the plan is complete, or `BLOCKED` when the plan cannot be formed from available evidence. -- **Description**: Backup and cache routines, later. - - **Action**: Document sync and purge cadence for go-live. - - **Source**: BACKUP_AND_CACHE_PLANS +### `REPORT` -### STARTUP_VALIDATION_AND_ROLLBACK -Define checks and signals for future runs. +Report: -**Steps:** -- **Description**: Lint/tests/static analysis plan. - - **Action**: List commands and pass criteria. - - **Source**: DIAGNOSTIC_CHECKLIST +- target identified; +- evidence inspected; +- selected template or pattern; +- work that would be created; +- work that would be configured; +- validation that would be run; +- artifacts that would remain untouched; +- warnings, unknowns, permissions, or blockers; +- whether the target would likely become operational after active initialization. -- **Description**: READY announcement format. - - **Action**: Define summary message structure (metrics + snapshot path). - - **Source**: SYSTEM_READINESS_SIGNAL +## Non-Mutation Rule -## EXECUTION_START - -Conclude rehearsal with a blueprint. - -**Steps:** -- **Description**: Draft the intended INIT_CONTEXT_SNAPSHOT.md (on paper/notes). - - **Action**: Define directory tree, metrics headings, and context catalog for future real runs. - - **Output File**: ./INIT_CONTEXT_SNAPSHOT.md - -- **Description**: Define short READY summary format for future active runs. - - **Action**: Record message template and fields. - - **Await Instructions**: true \ No newline at end of file +A dry run makes no target changes. Proposed files such as `README.md`, `AGENTS.md`, `SNAPSHOT.md`, server reports, task files, or configuration examples are only proposed unless the operator switches to active mode. \ No newline at end of file diff --git a/templates/minimal_init_protocol.md b/templates/minimal_init_protocol.md index 3edbb28b..a243a0de 100644 --- a/templates/minimal_init_protocol.md +++ b/templates/minimal_init_protocol.md @@ -1,83 +1,90 @@ -# Minimal Init Protocol (Template) +--- +name: Minimal Init Protocol +target: Any small target with a narrow operational gap +purpose: Identify the least work required for the target to become operational, apply only that work, validate it, and report the result. +mode: + - active + - repair + - reinitialize +creates: + - The smallest missing artifact or structure that the target actually needs +configures: + - Only relationships, settings, or instructions required by that artifact +validates: + - The minimum relevant check proving the target can operate as intended +optional_outputs: + - README.md when human-facing documentation is missing or inadequate + - AGENTS.md when agent operation applies and no valid instruction file exists + - INIT.md or init.md when the target needs a local initialization procedure + - PLAN.md when unresolved work remains +--- -**Intent** -- A smallest-possible initialization blueprint for agents. -- Safe-by-default: conceptual steps, strictly limited probes, zero secret exposure. +# Minimal Init Protocol -## INIT_SEQUENCE +Use this template when a target needs the smallest reasonable initialization pass. The goal is not to create a standard project layout. The goal is to discover the minimum missing requirement, apply it when appropriate, validate it, and report the state. -### HOST_PREFLIGHT -Lightweight awareness of OS and time coherence. +## Target Fit -**Steps:** -- **Description**: Capture OS family and version via safe reads. - - **Action**: Read /etc/os-release if present; avoid privileged actions. - - **Source**: OS_INFO +Use this template when: -- **Description**: Note current timezone and time source. - - **Action**: Use safe APIs; do not adjust system time. - - **Source**: SYSTEM_TIME_INFO +- the target is small, local, or clearly scoped; +- the operator wants a low-change initialization; +- one missing artifact, setting, or instruction may be enough; +- broad infrastructure, product, or agent setup would be excessive. -### RESOURCE_BASELINE -Conservative resource awareness for planning. +Do not assume server access, production infrastructure, package manifests, snapshots, PRDs, or agent instructions. -**Steps:** -- **Description**: Record CPU cores and memory estimate. - - **Action**: Use safe system APIs or cached metrics. - - **Source**: SYSTEM_HARDWARE_METRICS +## Procedure -### TOOL_DISCOVERY_AND_API_POLICY -Route through approved adapters only. +### `INSPECT` -**Steps:** -- **Description**: Load tool registry if present. - - **Action**: Parse tool schema (optional). - - **Source**: TOOL_SCHEMA +- `description`: Identify what the target is and what already exists. +- `inspect`: The target location, visible files or configuration, existing instructions, obvious entry points, and operator constraints. +- `condition`: Stay within the target boundary unless another location is directly referenced. +- `source`: Existing files, directory names, user-provided constraints, or environment metadata that is directly relevant. -- **Description**: Enforce routing rules. - - **Policy**: - - Use designated search adapter. - - Use approved HTTP clients for REST. - - Prefer dedicated file tools for reading content. - - **Source**: API_ROUTING_POLICY +### `DETERMINE` -### SECRET_MANAGEMENT -Never hardcode; load from vault only. +- `description`: Decide the minimum requirement that blocks operation. +- `action`: Choose the smallest applicable initialization step. +- `condition`: If no change is needed, move directly to validation and report. +- `output`: A short statement of the selected requirement and why it applies. -**Steps:** -- **Description**: Retrieve secrets via approved manager. - - **Action**: Load into memory; avoid disk writes. - - **Source**: SECURE_VAULT +Possible minimum requirements include one missing instruction file, one directory, one configuration value, one dependency manifest, one validation command, or one documentation update. These are examples, not defaults. -### CONTEXT_LOADING -Index key docs and scripts; avoid raw loads. +### `CREATE` -**Steps:** -- **Description**: Build index of md/json/yml files (paths + purpose). - - **Action**: Summarize without storing raw content. - - **Source**: FILE_SYSTEM_SCAN +- `description`: Create only the selected missing artifact or structure. +- `condition`: Skip creation when the target already contains a usable equivalent. +- `action`: Preserve existing work and avoid duplicates. +- `output`: The created or updated artifact, if any. -### STARTUP_VALIDATION_AND_ROLLBACK -Define pass criteria and READY signal. +### `CONFIGURE` -**Steps:** -- **Description**: List diagnostics to run when enabled. - - **Action**: Document commands; skip execution by default. - - **Source**: DIAGNOSTIC_CHECKLIST +- `description`: Connect the created or existing artifact to the target. +- `condition`: Configure only what is required for the selected minimum step. +- `action`: Update paths, references, scripts, permissions, or instructions when they are directly necessary. -- **Description**: Announce READY upon criteria met. - - **Action**: Print concise readiness message. - - **Source**: SYSTEM_READINESS_SIGNAL +### `VALIDATE` -## EXECUTION_START +- `description`: Prove the target can perform its intended minimum operation. +- `validation`: Use the cheapest relevant check available, such as file existence, parseability, a documented command, a link between files, or a simple manual review. +- `status`: Use `OPERATIONAL`, `OPERATIONAL_WITH_WARNINGS`, or `BLOCKED`. -Create a tiny snapshot and announce READY. +### `REPORT` -**Steps:** -- **Description**: Generate INIT_CONTEXT_SNAPSHOT.md (summary only). - - **Action**: Write directory overview + metrics headings. - - **Output File**: ./INIT_CONTEXT_SNAPSHOT.md +Report: -- **Description**: Print READY + snapshot path. - - **Action**: Log summary and await instructions. - - **Await Instructions**: true \ No newline at end of file +- target identified; +- requirement selected; +- artifacts created or updated; +- configuration performed; +- validation result; +- remaining warnings or blockers; +- final status. + +## Example Outcomes + +- A local directory with no documentation receives a concise `README.md`, then validates that the file identifies the target and next action. +- A small code project with adequate documentation but no agent instructions receives an `AGENTS.md` only if agents will operate in it. +- A target with all required artifacts receives no new files and reports `OPERATIONAL` after validation. \ No newline at end of file diff --git a/templates/server_init_protocol.md b/templates/server_init_protocol.md index 304de022..4ece9e61 100644 --- a/templates/server_init_protocol.md +++ b/templates/server_init_protocol.md @@ -1,168 +1,109 @@ -# Server Init Protocol (Template) - -**Intent** -- Production-oriented initialization with clear, safe probes. -- Emphasizes precise execution rules, architectural context, and tool policies. - -## INIT_SEQUENCE - -### HOST_PREFLIGHT -Verify OS/kernel compatibility and time alignment (read-only by default). - -**Steps:** -- **Description**: Note OS family and kernel. - - **Action**: Use safe reads; prefer APIs to shell. - - **Source**: OS_INFO - -- **Description**: Verify NTP/time coherence. - - **Action**: Read time settings; report drift; no mutation. - - **Source**: SYSTEM_TIME_INFO - -### RESOURCE_BASELINE -Capture compute/storage baseline to size workloads. - -**Steps:** -- **Description**: CPU, RAM, GPU presence (if applicable), disk free. - - **Action**: Prefer safe APIs and cached metrics. - - **Source**: SYSTEM_HARDWARE_METRICS - -- **Description**: Load average and thresholds. - - **Action**: Read load metrics; set warning thresholds. - - **Source**: SYSTEM_PERFORMANCE_METRICS - -### ARCHITECTURE_AND_TOOLS -Ground execution rules in actual system design. - -**Steps:** -- **Description**: Document services, runtimes, and schedulers in use. - - **Action**: Summarize architecture: containers, queues, cron, orchestrators. - - **Source**: SYSTEM_ARCHITECTURE_DOCS - -- **Description**: Declare toolchain versions and paths. - - **Action**: Pin required CLIs and SDKs; define PATH expectations. - - **Source**: TOOLCHAIN_POLICY - -### TOOL_DISCOVERY_AND_API_POLICY -Define exact routing for external services. - -**Steps:** -- **Description**: Load capability matrix (if present). - - **Action**: Parse and validate schemas. - - **Source**: TOOL_SCHEMA - -- **Description**: Enforce API routing rules. - - **Policy**: - - Use approved HTTP clients/infrastructure modules. - - Do not proxy REST via generic fetchers. - - File access via dedicated file tools; stream large files. - - **Source**: API_ROUTING_POLICY - -### SECRET_MANAGEMENT -Strict credential handling and permissions. - -**Steps:** -- **Description**: Pull secrets from vault into memory only. - - **Action**: No disk writes; short-lived tokens preferred. - - **Source**: SECURE_VAULT - -- **Description**: Validate permissions on secret dirs/keys. - - **Action**: Confirm intended permission posture. - - **Source**: SECRET_STORAGE_PERMISSIONS - -### NETWORK_SECURITY -Confirm firewall posture and scanning plan. - -**Steps:** -- **Description**: Authorized ports/services only. - - **Action**: Document intended ufw/security-group state. - - **Source**: FIREWALL_POLICY - -- **Description**: Scanning cadence (SAST/DAST/deps). - - **Action**: Define cadence, owners, and thresholds. - - **Source**: SECURITY_SCANNER_PLAN - -### CONTEXT_LOADING -Load environment, docs, and schedules. - -**Steps:** -- **Description**: Index configs and docs. - - **Action**: Build in-memory map of paths and purposes. - - **Source**: FILE_SYSTEM_SCAN - -- **Description**: Inventory cron manifests. - - **Action**: List active schedules and owners. - - **Source**: PROJECT_CRON_MANIFESTS - -- **Description**: Persist sanitized context snapshot. - - **Action**: Serialize a summary (no raw content) to disk. - - **Output Path**: ./cache/context.snapshot.json - - **Source**: SERIALIZED_CONTEXT_MAP - -### CODE_GOVERNANCE_AND_STATE -Auditability, backups, caches, telemetry. - -**Steps:** -- **Description**: Semantic diffs for changes. - - **Policy**: Append to ./logs/code_history/.patch - - **Source**: VERSION_CONTROL_POLICY - -- **Description**: Backup strategy (data dirs). - - **Action**: Define rsync/remote storage targets; defer execution. - - **Source**: BACKUP_STRATEGY - -- **Description**: Cache hygiene. - - **Action**: Expire >7d files when enabled; configurable. - - **Source**: CACHE_POLICY - -- **Description**: Logging fan-out. - - **Action**: Plan forwarding to centralized sinks. - - **Source**: CENTRALIZED_LOGGING_PLAN - -### STARTUP_VALIDATION_AND_ROLLBACK -Diagnostics, readiness, and rollback. - -**Steps:** -- **Description**: Lint/tests/static analysis. - - **Action**: List commands and pass criteria. - - **Source**: DIAGNOSTIC_CHECKLIST - -- **Description**: READY signal and rollback triggers. - - **Action**: Define log format and state change; specify when to roll back. - - **Source**: SYSTEM_READINESS_SIGNAL - -### SELF_PRIMING_AND_CONTEXTUALIZATION -Load directives/prompts and recent context. - -**Steps:** -- **Description**: Core directives and system prompts. - - **Action**: Load into working memory. - - **Source**: CORE_AND_PROMPTS - -- **Description**: Memory recall of salient events. - - **Action**: Query memory adapters; assemble situational vector. - - **Source**: INTERNAL_MEMORY_RETRIEVAL - -- **Description**: Enter ACCEPTING state. - - **Action**: Log completion and await commands. - - **Source**: SELF_PRIMING_STATUS - -## MINIMUM_RUNTIME_CONTEXT_LOAD - -Essential elements: -- Host metadata (from cached metrics) -- Tool capability matrix (if present) -- Core directives/prompts -- Cron manifests and script inventory -- Recent logs (sanitized) and version patches -- Context snapshot (sanitized summary) - -## EXECUTION_START - -**Steps:** -- **Description**: Generate INIT_CONTEXT_SNAPSHOT.md (summaries only). - - **Action**: Create directory tree (depth 3), metrics table, key locations. - - **Output File**: ./INIT_CONTEXT_SNAPSHOT.md - -- **Description**: Print READY + snapshot path. - - **Action**: Log concise summary; await instructions. - - **Await Instructions**: true \ No newline at end of file +--- +name: Server Init Protocol +target: Server, service host, production infrastructure, or deployment environment +purpose: Inspect server-specific operational requirements, configure what applies, validate readiness, and report deployment state. +mode: + - active + - dry run + - repair + - reinitialize +creates: + - Server report when host state must be recorded + - Service definitions or startup scripts when required + - Environment examples when configuration must be documented without secrets + - Runbook or validation report when operations need handoff material +configures: + - Operating system prerequisites + - Runtime settings + - Services + - Networking and firewall policy + - Secret references + - Logging, backups, and deployment checks +validates: + - Required services start or are already running + - Dependencies and ports are available + - Configuration parses + - Resource, storage, time, and security checks pass or produce warnings +optional_outputs: + - SERVER.md + - RUNBOOK.md + - SNAPSHOT.md + - INIT_CONTEXT_SNAPSHOT.md + - .env.example + - health check or readiness report +--- + +# Server Init Protocol + +Use this template for servers, service hosts, production infrastructure, or deployment environments. Server-specific checks belong here, not in the general root protocol. + +## Target Fit + +Use this template when the target's operation depends on host state, services, network posture, secrets, storage, startup behavior, or deployment readiness. + +Do not use this template for a non-server target unless server infrastructure is actually part of its operation. + +## Procedure + +### `INSPECT` + +- `description`: Build a relevant picture of the host and service environment. +- `inspect`: Operating system, kernel, clock and time source, CPU, RAM, storage, load, users or service accounts, runtime versions, service manager, container or orchestrator state, network interfaces, listening ports, firewall policy, secret locations by reference, logging destinations, backup expectations, and existing runbooks. +- `condition`: Use read-only inspection first. Avoid privileged or destructive actions unless the operator explicitly authorizes them. +- `source`: Host files, service definitions, package manifests, deployment docs, cloud or container metadata, monitoring notes, and operator constraints. + +### `DETERMINE` + +- `description`: Decide what the server needs to become operational. +- `action`: Identify required packages, services, ports, environment variables, secret references, storage paths, permissions, startup order, deployment commands, monitoring hooks, backup strategy, and rollback expectations. +- `condition`: Treat every output as conditional. A snapshot, server report, or runbook is useful only when it helps operation, handoff, audit, or recovery. +- `output`: A server-specific initialization plan. + +### `CREATE` + +Create only artifacts required by the server target. Possible outputs include: + +- service definitions; +- startup scripts; +- `.env.example` without secrets; +- `SERVER.md`; +- `RUNBOOK.md`; +- `SNAPSHOT.md` or `INIT_CONTEXT_SNAPSHOT.md` when a point-in-time record is useful; +- readiness or health-check scripts; +- deployment notes; +- backup or restore instructions. + +Do not write raw secrets to disk. Do not create unrelated project files because this is a server template. + +### `CONFIGURE` + +- `description`: Configure the server elements required for operation. +- `action`: Set or document runtime paths, service units, container settings, scheduler entries, firewall rules, reverse proxy routes, TLS expectations, secret references, permissions, log locations, backup targets, and deployment commands. +- `condition`: Make active changes only in active or repair mode and only with appropriate access. + +### `VALIDATE` + +- `description`: Confirm the server can perform its intended role. +- `validation`: Use relevant checks such as configuration parsing, service status, startup commands, port availability, dependency resolution, disk headroom, clock coherence, firewall review, secret reference availability, log writeability, backup path accessibility, and health endpoint response. +- `status`: Use `OPERATIONAL`, `OPERATIONAL_WITH_WARNINGS`, `BLOCKED`, or `DRY_RUN_COMPLETE`. + +Do not declare a server operational if required services cannot start, required configuration cannot parse, or required secrets are unavailable. + +### `REPORT` + +Report: + +- target host or environment; +- inspected host, service, network, secret, logging, and backup areas; +- created or updated artifacts; +- configured services or settings; +- validation checks and outcomes; +- warnings, missing access, or blockers; +- final operational state. + +## Server-Specific Notes + +- Host operating-system checks are server concerns. +- Clock, NTP, CPU, RAM, storage, and load metrics are server concerns. +- Firewall, secret handling, security scanners, backups, cache expiration, centralized logging, and generated environment snapshots are server concerns when they apply. +- These concerns must not be imposed on unrelated targets by the root protocol. \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index 269a3d72..11c6767c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,9 +1,6 @@ import tailwindcss from "@tailwindcss/vite"; import react from "@vitejs/plugin-react-swc"; -import { defineConfig, PluginOption } from "vite"; - -import sparkPlugin from "@github/spark/spark-vite-plugin"; -import createIconImportProxy from "@github/spark/vitePhosphorIconProxyPlugin"; +import { defineConfig } from "vite"; import { resolve } from 'path' const projectRoot = process.env.PROJECT_ROOT || import.meta.dirname @@ -17,9 +14,6 @@ export default defineConfig(({ command }) => ({ plugins: [ react(), tailwindcss(), - // DO NOT REMOVE - createIconImportProxy() as PluginOption, - sparkPlugin() as PluginOption, ], resolve: { alias: {