From 158c7e564c8299e74a363b7b9f41a14c6ccdd137 Mon Sep 17 00:00:00 2001 From: Nicolai Ommer Date: Mon, 2 Feb 2026 12:55:09 +0100 Subject: [PATCH 1/2] refactor: Merge documentation repo with playbook --- .github/workflows/build-antora.yml | 42 +--- .../{deploy-docs.yml => publish.yml} | 0 .gitignore | 8 +- README.md | 113 +---------- antora-playbook.yml | 11 +- architecture/docs/antora.yml | 6 + architecture/docs/modules/ROOT/nav.adoc | 1 + .../docs/modules/ROOT/pages/index.adoc | 3 + .../ROOT/partials/architecture-contents.adoc | 12 ++ .../modules/building-blocks/pages/index.adoc | 169 ++++++++++++++++ .../docs/modules/constraints/pages/index.adoc | 3 + .../docs/modules/context/pages/index.adoc | 85 ++++++++ .../modules/crosscutting/pages/index.adoc | 93 +++++++++ .../docs/modules/decisions/pages/index.adoc | 3 + .../docs/modules/deployment/pages/index.adoc | 3 + .../docs/modules/glossary/pages/index.adoc | 89 +++++++++ .../assets/images/agentic-layer.jpg | Bin 0 -> 120034 bytes .../modules/introduction/pages/index.adoc | 111 ++++++++++ .../docs/modules/quality/pages/index.adoc | 3 + .../docs/modules/risks/pages/index.adoc | 3 + .../docs/modules/runtime/pages/index.adoc | 3 + .../solution-strategy/pages/index.adoc | 37 ++++ compose.yaml | 11 + home/docs/antora.yml | 6 + home/docs/modules/ROOT/nav.adoc | 18 ++ home/docs/modules/ROOT/pages/index.adoc | 57 ++++++ .../tutorials/pages/showcase-news.adoc | 1 + package-lock.json | 189 +++++++++++++++++- package.json | 8 +- 29 files changed, 936 insertions(+), 152 deletions(-) rename .github/workflows/{deploy-docs.yml => publish.yml} (100%) create mode 100644 architecture/docs/antora.yml create mode 100644 architecture/docs/modules/ROOT/nav.adoc create mode 100644 architecture/docs/modules/ROOT/pages/index.adoc create mode 100644 architecture/docs/modules/ROOT/partials/architecture-contents.adoc create mode 100644 architecture/docs/modules/building-blocks/pages/index.adoc create mode 100644 architecture/docs/modules/constraints/pages/index.adoc create mode 100644 architecture/docs/modules/context/pages/index.adoc create mode 100644 architecture/docs/modules/crosscutting/pages/index.adoc create mode 100644 architecture/docs/modules/decisions/pages/index.adoc create mode 100644 architecture/docs/modules/deployment/pages/index.adoc create mode 100644 architecture/docs/modules/glossary/pages/index.adoc create mode 100644 architecture/docs/modules/introduction/assets/images/agentic-layer.jpg create mode 100644 architecture/docs/modules/introduction/pages/index.adoc create mode 100644 architecture/docs/modules/quality/pages/index.adoc create mode 100644 architecture/docs/modules/risks/pages/index.adoc create mode 100644 architecture/docs/modules/runtime/pages/index.adoc create mode 100644 architecture/docs/modules/solution-strategy/pages/index.adoc create mode 100644 compose.yaml create mode 100644 home/docs/antora.yml create mode 100644 home/docs/modules/ROOT/nav.adoc create mode 100644 home/docs/modules/ROOT/pages/index.adoc create mode 100644 home/docs/modules/tutorials/pages/showcase-news.adoc diff --git a/.github/workflows/build-antora.yml b/.github/workflows/build-antora.yml index 84a4c1f..3321842 100644 --- a/.github/workflows/build-antora.yml +++ b/.github/workflows/build-antora.yml @@ -1,48 +1,15 @@ # Reusable Workflow: Build Antora Documentation Site # This workflow can be called from other workflows to build the Antora site. -# Includes Kroki/Mermaid services for diagram rendering. name: Build Antora Site on: - workflow_call: - inputs: - node-version: - description: 'Node.js version to use' - required: false - type: string - default: '24.3.0' - playbook-file: - description: 'Path to Antora playbook file' - required: false - type: string - default: 'antora-playbook.yml' - outputs: - build-path: - description: 'Path to the built site directory' - value: 'build/site' + workflow_call: {} jobs: build: runs-on: ubuntu-latest - services: - mermaid: - image: yuzutech/kroki-mermaid:latest - ports: - - 8002:8002 - kroki: - image: yuzutech/kroki:latest - env: - KROKI_MERMAID_HOST: mermaid - ports: - - 8000:8000 - options: >- - --health-cmd "curl -f http://localhost:8000/health || exit 1" - --health-interval 10s - --health-timeout 5s - --health-retries 5 - steps: - name: Checkout playbook source uses: actions/checkout@v6 @@ -50,13 +17,16 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v6 with: - node-version: ${{ inputs.node-version }} + node-version: 24 - name: Install Antora and Dependencies run: npm install + - name: Run docker compose + uses: hoverkraft-tech/compose-action@05da55b2bb8a5a759d1c4732095044bd9018c050 # v2.4.3 + - name: Generate Site - run: npx antora generate --log-failure-level warn ${{ inputs.playbook-file }} + run: npm run build - name: Upload built site uses: actions/upload-artifact@v6 diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/publish.yml similarity index 100% rename from .github/workflows/deploy-docs.yml rename to .github/workflows/publish.yml diff --git a/.gitignore b/.gitignore index 28307a2..43cb219 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -/build/ -.cache/ -.idea/ -/node_modules/ +.idea +build +node_modules +.cache diff --git a/README.md b/README.md index 98e3e99..ce30fa2 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,25 @@ -# Antora Playbook +# Agentic Layer Documentation -A documentation site generator configuration that aggregates and publishes documentation from multiple Git repositories into a unified, searchable documentation website for the Agentic Layer ecosystem. - ----- - -## Table of Contents - -- [Getting Started](#getting-started) -- [Configuration](#configuration) -- [Publishing](#publishing) -- [Contributing](#contributing) - ----- +Documentation of the Agentic Layer ecosystem, built with Antora by aggregating content from multiple Git repositories. ## Getting Started -### Installation - Install all required dependencies: -```bash +```shell npm install ``` -### Starting the Documentation Build +Start kroki backend for diagram generation: + +```shell +docker compose up -d +``` Generate the documentation site: -```bash -npx antora antora-playbook.yml +```shell +npm run build ``` After successful completion, the generated documentation site will be available in the `build/site` directory. @@ -37,86 +28,4 @@ Troubleshooting tips: - Ensure all referenced Git repositories and branches are accessible. - Clear the cache if you encounter issues: `rm -rf .cache/antora` -## Configuration - -The project is configured through the `antora-playbook.yml` file, which defines: - -### Site Configuration -- **Title**: Agentic Layer Documentation -- **URL**: https://docs.agentic-layer.ai -- **Start Page**: home::index.adoc - -### Content Sources -Source repositories are defined in `content.sources` array of `antora-playbook.yml`. - -### UI Configuration -- Uses the default Antora UI theme from GitLab -- Custom UI overrides are stored in `supplemental-ui/` directory -- Navigation includes links to source Git repositories - -### Output Configuration -- Generated site output: `build/site/` -- Cache directory: `.cache/antora/` (for performance optimization) - -## Publishing -The playbook is set up for GitHub Pages deployment defined in `./.github/workflows/deploy-docs.yml`. - -## Contributing - -### Adding New GitHub Repositories - -To add a new GitHub repository as a documentation source to the antora-playbook: - -1. **Repository Requirements** - - Set up the following documentation structure in your new source repository `root`: - ``` - docs - ├── antora.yml - └── modules - └── ROOT - ├── nav.adoc - ├── pages - │   └── index.adoc - └── partials - ├── explanation.adoc - ├── how-to-guides.adoc - ├── reference.adoc - └── tutorials.adoc - - ``` - - - `antora.yml` describes the component. Example: - ```yaml - name: - title: - version: main # or your versioning scheme - start_page: ROOT:index.adoc - nav: - - modules/ROOT/nav.adoc - ``` - -2. **Update antora-playbook.yml** - - Add a new entry to the `content.sources` array - - Specify the GitHub repository URL - - Define which branches to include (use `['feature/*']` for development, `[main]` for production) - - Set the `start_path` if documentation is not in the root (typically `docs`) - - Example: - ```yaml - - url: https://github.com/agentic-layer/your-new-repo.git - branches: ['feature/*'] # Change to [main] when production-ready - start_path: docs - ``` - -3. **Test the Configuration** - - Run `npx antora antora-playbook.yml` locally to verify the build works - - Check that the new documentation appears correctly in the generated site - - Ensure all links and cross-references function properly - - -### Development Guidelines - -- Follow the existing Antora playbook configuration patterns -- Test documentation builds locally before pushing changes -- Ensure all referenced Git repositories and branches are accessible; i.e. verfy repository access and that branches exist -- Update branch references from `feature/*` to `main` when components are production-ready \ No newline at end of file +The project is configured through the `antora-playbook.yml` file. diff --git a/antora-playbook.yml b/antora-playbook.yml index e39e73a..0bea632 100644 --- a/antora-playbook.yml +++ b/antora-playbook.yml @@ -9,12 +9,11 @@ site: content: edit_url: false # Disable "Edit this page" links sources: - - url: https://github.com/agentic-layer/documentation.git - branches: [main] - start_path: home/docs - - url: https://github.com/agentic-layer/documentation.git - branches: [main] - start_path: architecture/docs + - url: ./ + branches: HEAD + start_paths: + - home/docs + - architecture/docs - url: https://github.com/agentic-layer/agent-runtime-operator.git branches: [main] start_path: docs diff --git a/architecture/docs/antora.yml b/architecture/docs/antora.yml new file mode 100644 index 0000000..42d6d09 --- /dev/null +++ b/architecture/docs/antora.yml @@ -0,0 +1,6 @@ +name: architecture +title: Agentic Layer Architecture +version: main +start_page: ROOT:index.adoc +nav: +- modules/ROOT/nav.adoc \ No newline at end of file diff --git a/architecture/docs/modules/ROOT/nav.adoc b/architecture/docs/modules/ROOT/nav.adoc new file mode 100644 index 0000000..cc89fd1 --- /dev/null +++ b/architecture/docs/modules/ROOT/nav.adoc @@ -0,0 +1 @@ +include::architecture:ROOT:partial$architecture-contents.adoc[] \ No newline at end of file diff --git a/architecture/docs/modules/ROOT/pages/index.adoc b/architecture/docs/modules/ROOT/pages/index.adoc new file mode 100644 index 0000000..b4b3d67 --- /dev/null +++ b/architecture/docs/modules/ROOT/pages/index.adoc @@ -0,0 +1,3 @@ += Agentic Layer Architecture + +include::architecture:ROOT:partial$architecture-contents.adoc[] \ No newline at end of file diff --git a/architecture/docs/modules/ROOT/partials/architecture-contents.adoc b/architecture/docs/modules/ROOT/partials/architecture-contents.adoc new file mode 100644 index 0000000..c26b334 --- /dev/null +++ b/architecture/docs/modules/ROOT/partials/architecture-contents.adoc @@ -0,0 +1,12 @@ +** xref:architecture:introduction:index.adoc[Introduction and Goals] +// ** xref:architecture:constraints:index.adoc[Architecture Constraints] +** xref:architecture:context:index.adoc[System Scope and Context] +// ** xref:architecture:solution-strategy:index.adoc[Solution Strategy] +** xref:architecture:building-blocks:index.adoc[Building Block View] +// ** xref:architecture:runtime:index.adoc[Runtime View] +// ** xref:architecture:deployment:index.adoc[Deployment View] +** xref:architecture:crosscutting:index.adoc[Cross-cutting Concepts] +// ** xref:architecture:decisions:index.adoc[Architecture Decisions] +// ** xref:architecture:quality:index.adoc[Quality Requirements] +// ** xref:architecture:risks:index.adoc[Risks and Technical Debts] +** xref:architecture:glossary:index.adoc[Glossary] \ No newline at end of file diff --git a/architecture/docs/modules/building-blocks/pages/index.adoc b/architecture/docs/modules/building-blocks/pages/index.adoc new file mode 100644 index 0000000..f6b8204 --- /dev/null +++ b/architecture/docs/modules/building-blocks/pages/index.adoc @@ -0,0 +1,169 @@ += Building Block View + +== Overview + +The Agentic Layer architecture currently consists of three building blocks that work together to provide AI orchestration capabilities: + +* **Agent Runtime**: The execution environment for AI agents, including the Agent Gateway for request routing and the Agent Runtime Operator for lifecycle management +* **AI Gateway**: The abstraction layer for LLM provider interactions, providing unified access, security, and intelligent routing +* **Observability Dashboard**: A simple dashboard that visualizes the interaction between agents and tools in real time + +Over time, more and more building blocks are going to be added. + +== Overall Request Flow + +The following diagram shows how these building blocks interact during typical request processing: + +[plantuml, core-request-flow, format="svg", link="self", window="_blank"] +.... +@startuml +!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml +left to right direction + +System_Ext(extFrontends, "External Frontends", "User interfaces") +System_Ext(extAgents, "External Agents", "Third-party AI agents") + +Container_Boundary(k8sCluster, "Kubernetes Cluster") { + Container(agentGateway, "Agent Gateway", "API Gateway", "Routes requests to appropriate agents") + Container(agents, "AI Agents", "Agent Runtime", "Business logic and AI orchestration") + Container(aiGateway, "AI Gateway", "LLM Proxy", "Manages LLM provider interactions") + Container(obsDashboard, "Observability Dashboard", "Monitoring", "Real time visualization of agent interactions") +} + +System_Ext(llmProviders, "LLM Providers", "External AI services") + +' Request flow +Rel(extFrontends, agentGateway, "Sends requests", "HTTPS/API") +Rel(extAgents, agentGateway, "Agent requests", "HTTPS/API") +Rel(agentGateway, agents, "Routes to agent", "Internal") +Rel(agents, aiGateway, "LLM requests", "Internal") +Rel(aiGateway, llmProviders, "API calls", "HTTPS") +Rel(agentGateway, obsDashboard, "Send Traces", "HTTPS") +Rel(aiGateway, obsDashboard, "Send Traces", "HTTPS") +Rel(agents, obsDashboard, "Send Traces", "HTTPS") + +LAYOUT_WITH_LEGEND() +@enduml +.... + +This flow demonstrates the request processing pipeline: + +1. **External systems** (Frontends and Agents) send requests via HTTPS/API +2. **Agent Gateway** receives and routes requests to appropriate agents +3. **AI Agents** process business logic and make LLM requests +4. **AI Gateway** handles LLM provider interactions with security and routing +5. **Observability Dashboard** collects telemetry and provides real-time visualization +6. **LLM Providers** process AI requests and return results + +== Agent Runtime + +The Agent Runtime building block provides the execution environment and management infrastructure for AI agents within the Kubernetes cluster. + +=== Components + +* **Agent Runtime Operator**: Kubernetes operator that manages agent lifecycles, configurations, and deployments +* **Agent Gateway**: API gateway that routes incoming requests to agents and maps external APIs to internal agent interfaces +* **AI Agents**: Individual agent instances that execute business logic and orchestrate AI operations + +=== Agent Runtime Architecture +[plantuml, agent-runtime-view, format="svg", link="self", window="_blank"] +.... +@startuml +!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml +left to right direction + +Container_Boundary(k8sCluster, "Kubernetes Cluster") { + Container(agentOperator, "Agent Runtime Operator", "K8s Operator", "Manages agent gateway lifecycle") + Container(agentGateway, "Agent Gateway", "API Gateway", "Routes requests to appropriate agents, maps APIs") + Container(agents, "AI Agents", "Agent Runtime", "Business logic and AI orchestration") +} + +' Management relationships +Rel(agentOperator, agentGateway, "Registers agents", "K8s API") +Rel(agentOperator, agents, "Configure agents", "K8s API") +Rel(agentGateway, agents, "Routes to agent", "Internal") + +LAYOUT_WITH_LEGEND() +@enduml +.... + +=== Agent Runtime Responsibilities + +**Agent Runtime Operator** serves as the control plane for agent management: + +- Registers and configures agents with the Agent Gateway +- Manages agent lifecycles, scaling, and resource allocation +- Provides Kubernetes-native deployment and operational patterns + +**Agent Gateway** acts as the request entry point: + +- Routes requests to appropriate agents based on capabilities and load +- Maps external APIs to internal agent interfaces +- Provides load balancing and health checking for agent instances + +**AI Agents** execute the core business logic: + +- Process domain-specific workflows and business rules +- Orchestrate interactions with external systems and services +- Make intelligent decisions about when and how to use LLM capabilities + +== AI Gateway + +The AI Gateway building block abstracts interactions with multiple LLM providers, providing a unified interface with built-in security, monitoring, and intelligent routing capabilities. + +=== AI Gateway Architecture +[plantuml, ai-gateway-view, format="svg", link="self", window="_blank"] +.... +@startuml +!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml +left to right direction + +Container(agents, "AI Agents", "Agent Runtime", "Business logic and AI orchestration") + +Container_Boundary(aiGateway, "AI Gateway") { + Component(modelRouter, "Model Router", "Router", "Routes requests to appropriate LLM providers") + Component(guardrails, "Guardrails", "Security Layer", "Content filtering and safety checks") + Component(metrics, "Metrics", "Telemetry", "Collects and exports usage metrics") + Component(tokenMgmt, "Access Token Management", "Auth", "Manages API keys and authentication") +} + +System_Ext(llmProviders, "LLM Providers", "External AI services") + +' AI Gateway flow +Rel(agents, aiGateway, "LLM requests", "HTTPS/API") +Rel(aiGateway, tokenMgmt, "Authenticates request", "Internal") +Rel(tokenMgmt, guardrails, "Authenticated request", "Internal") +Rel(guardrails, metrics, "Validated request", "Internal") +Rel(metrics, modelRouter, "Tracked request", "Internal") +Rel(modelRouter, llmProviders, "API calls", "HTTPS") + +LAYOUT_WITH_LEGEND() +@enduml +.... + +=== AI Gateway Components and Flow + +The AI Gateway processes requests through a secure, monitored pipeline: + +**Access Token Management** handles authentication: + +- Manages API keys and authentication tokens for different LLM providers +- Provides secure credential storage and rotation capabilities +- Ensures proper authentication for all external AI service calls + +**AI Guardrails** provides security and safety controls: + +- Content filtering and safety checks for both input and output +- Policy enforcement based on organizational security requirements +- Prevents malicious or inappropriate content from reaching LLM providers + +**Metrics** component enables comprehensive monitoring: + +- Collects usage statistics, performance metrics, and cost tracking +- Exports telemetry data to observability infrastructure +- Provides insights into AI usage patterns and provider performance + +**Model Router** manages intelligent LLM routing: + +- Routes requests to appropriate LLM providers based on capabilities, cost, and availability +- Provides failover and load balancing across multiple providers diff --git a/architecture/docs/modules/constraints/pages/index.adoc b/architecture/docs/modules/constraints/pages/index.adoc new file mode 100644 index 0000000..657e40b --- /dev/null +++ b/architecture/docs/modules/constraints/pages/index.adoc @@ -0,0 +1,3 @@ += Architecture Constraints + +TBD diff --git a/architecture/docs/modules/context/pages/index.adoc b/architecture/docs/modules/context/pages/index.adoc new file mode 100644 index 0000000..4331e30 --- /dev/null +++ b/architecture/docs/modules/context/pages/index.adoc @@ -0,0 +1,85 @@ += System Scope and Context + +== Business Context + +The Agentic Layer operates within a broader enterprise ecosystem, serving as a control plane that coordinates AI agents and manages their interactions with external systems. The system is designed to integrate into existing enterprise infrastructure rather than to replace it, providing AI orchestration capabilities while maintaining organizational sovereignty over data and operations. + +=== System Boundary + +The Agentic Layer Platform Boundary defines the scope of components under direct control of the AI orchestration system. This includes all Kubernetes-native components for agent management, AI gateway services, governance tools, and operational interfaces. External systems maintain their independence while benefiting from standardized AI integration patterns. + +== System Context Overview + +[plantuml, system-context, format="svg", link="self", window="_blank"] +.... +@startuml +!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml + +Person_Ext(users, "Users", "End users") +System_Ext(frontends, "External Frontends", "Web/mobile/other UI interacting with users") +System_Ext(extAgents, "External Agents", "Agents running outside the platform") +System(agentic, "Agentic Layer", "Orchestrates AI interactions and external integrations") +System_Ext(llm, "LLM Provider", "External Large Language Model Providers (e.g., OpenAI, Gemini)") +System_Ext(obs, "Observability Stack", "Monitoring & logging") +System_Ext(audit, "Audit Trail", "Stores audit records") + +Rel(users, frontends, "Uses") +Rel(users, extAgents, "Uses") +Rel(frontends, agentic, "Connects to") +Rel(extAgents, agentic, "Connects to") +Rel(agentic, llm, "Sends prompt/receives result") +Rel_Down(agentic, obs, "Sends telemetry") +Rel_Down(agentic, audit, "Sends audit events") + +LAYOUT_WITH_LEGEND() +@enduml +.... + +== External Actors and Systems + +=== Users +**End users** who interact with AI-powered applications and services. These users may access AI capabilities through various interfaces including web applications, mobile apps, or direct API integrations. + +=== External Frontends +**Web, mobile, and other user interfaces** that provide user-facing applications leveraging AI capabilities. These frontends connect to the Agentic Layer to access coordinated AI services while maintaining their own user experience and business logic. + +=== External Agents +**AI agents running outside the platform** that need to integrate with or leverage the centralized AI orchestration capabilities. These may include existing AI systems, specialized agents, or third-party AI services that benefit from the governance and routing provided by the Agentic Layer. + +=== LLM Providers +**External Large Language Model providers** such as OpenAI, Google Gemini, Anthropic Claude, and other AI service providers. The Agentic Layer abstracts differences between these providers through the AI Gateway/Model Router component. + +=== Observability Stack +**External monitoring and logging infrastructure** that receives telemetry data from the Agentic Layer. This typically includes enterprise monitoring solutions, log aggregation systems, and performance monitoring tools. + +=== Audit Trail +**External audit and compliance systems** that store audit records for regulatory compliance, security monitoring, and governance requirements. This ensures audit data is preserved independently of the operational platform. + +== System Interactions + +=== User Interactions +Users interact with the system through two primary paths: + +- **Via External Frontends**: Users access AI capabilities through web applications, mobile apps, or other user interfaces that connect to the Agentic Layer +- **Via External Agents**: Users may work with external AI agents that leverage the Agentic Layer's orchestration capabilities + +=== AI Service Integration +The **Agentic Layer orchestrates AI interactions** by: + +- Sending prompts and receiving results from LLM providers through the AI Gateway/Model Router +- Providing unified access to multiple AI service providers with intelligent routing and failover +- Managing authentication, rate limiting, and usage tracking across providers + +=== Operational Data Flows +The system maintains operational transparency through: + +- **Telemetry Data**: Comprehensive metrics, performance data, and system health information sent to observability infrastructure +- **Audit Events**: Complete records of AI operations, decisions, and access patterns sent to audit systems for compliance and security monitoring + +== Technical Context + +The Agentic Layer serves as an **integration hub** rather than a data repository. It orchestrates interactions between various systems while maintaining clear separation of concerns: + +- **Stateless Operations**: The platform focuses on coordination and routing rather than data storage +- **API-First Integration**: All interactions occur through well-defined APIs and standard protocols +- **Kubernetes-Native Deployment**: All components leverage Kubernetes primitives for scaling, service discovery, and operational management diff --git a/architecture/docs/modules/crosscutting/pages/index.adoc b/architecture/docs/modules/crosscutting/pages/index.adoc new file mode 100644 index 0000000..1478c99 --- /dev/null +++ b/architecture/docs/modules/crosscutting/pages/index.adoc @@ -0,0 +1,93 @@ += Cross-cutting Concepts + +== Capabilities and Plugins Principle + +The Agentic Layer architecture embraces a fundamental design principle of **capabilities and plugins** that enables flexible switching of implementations for various system aspects. This approach promotes modularity, extensibility, and vendor independence across all major components. + +=== Core Principle + +The capabilities and plugins pattern allows the system to define stable interfaces while supporting multiple implementations. Each capability represents a well-defined set of functionality that can be fulfilled by different plugins, enabling runtime or deployment-time selection of the most appropriate implementation. + +[plantuml, capabilities-plugins-principle, format="svg", link="self", window="_blank"] +.... +@startuml +!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml + +Container_Boundary(system, "Agentic Layer System") { + Component(capability, "Capability Interface", "Contract", "Defines required functionality") + Component(plugin1, "Plugin A", "Implementation", "First implementation option") + Component(plugin2, "Plugin B", "Implementation", "Alternative implementation") + Component(plugin3, "Plugin C", "Implementation", "Third-party implementation") +} + +Rel(capability, plugin1, "implements", "") +Rel(capability, plugin2, "implements", "") +Rel(capability, plugin3, "implements", "") + +note right of capability : Stable interface\nallows switching\nbetween implementations + +@enduml +.... + +=== Key Benefits + +**Implementation Independence**: Components depend on capabilities rather than specific implementations, reducing coupling and increasing flexibility. + +**Vendor Neutrality**: Avoid vendor lock-in by supporting multiple implementations of the same capability. + +**Runtime Flexibility**: Switch between implementations based on operational requirements, performance characteristics, or cost considerations. + +**Extensibility**: Add new implementations without modifying existing code or disrupting running systems. + +**Testing and Development**: Use different implementations for testing, development, and production environments. + +=== Application Areas + +==== Exemplary Agent Gateway Implementations + +The Agent or AI Gateway capability could support multiple reverse proxy and API gateway implementations: + +* **Nginx**: Traditional reverse proxy for high-performance routing +* **Envoy**: Modern service mesh proxy with advanced traffic management +* **Kong**: API gateway with rich plugin ecosystem +* **Istio Gateway**: Kubernetes-native gateway with service mesh integration + +[plantuml, agent-gateway-plugins, format="svg", link="self", window="_blank"] +.... +@startuml +!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml + +Container_Boundary(agentRuntime, "Agent Runtime") { + Component(gatewayCapability, "Gateway Capability", "Interface", "Request routing and load balancing") + Component(nginxPlugin, "Nginx Plugin", "Implementation", "Traditional reverse proxy") + Component(envoyPlugin, "Envoy Plugin", "Implementation", "Service mesh proxy") + Component(kongPlugin, "Kong Plugin", "Implementation", "API gateway with plugins") + Component(istioPlugin, "Istio Plugin", "Implementation", "K8s-native gateway") +} + +Rel(gatewayCapability, nginxPlugin, "implements", "") +Rel(gatewayCapability, envoyPlugin, "implements", "") +Rel(gatewayCapability, kongPlugin, "implements", "") +Rel(gatewayCapability, istioPlugin, "implements", "") + +@enduml +.... + + +=== Implementation Guidelines + +==== Kubernetes-Native Capabilities + +The Agentic Layer leverages **Kubernetes Custom Resource Definitions (CRDs)** as the interface definition mechanism for capabilities. Each capability is defined as a CRD that establishes the contract and configuration schema. + +==== Plugin Definition through Custom Resources + +Plugins are defined and configured using **Custom Resources (CRs)** that correspond to their capability CRDs. This approach provides: + +* **Declarative Configuration**: Plugin instances are declared through Kubernetes manifests +* **Kubernetes-Native Management**: Leverage kubectl, operators, and existing K8s tooling +* **Version Control**: Plugin configurations are stored as code alongside infrastructure definitions + +==== Standard Transport APIs + +At the transport layer, the system uses **standard APIs** to ensure broad compatibility and interoperability. diff --git a/architecture/docs/modules/decisions/pages/index.adoc b/architecture/docs/modules/decisions/pages/index.adoc new file mode 100644 index 0000000..b0822b1 --- /dev/null +++ b/architecture/docs/modules/decisions/pages/index.adoc @@ -0,0 +1,3 @@ += Architecture Decisions + +TBD diff --git a/architecture/docs/modules/deployment/pages/index.adoc b/architecture/docs/modules/deployment/pages/index.adoc new file mode 100644 index 0000000..f6b4cd5 --- /dev/null +++ b/architecture/docs/modules/deployment/pages/index.adoc @@ -0,0 +1,3 @@ += Deployment View + +TBD diff --git a/architecture/docs/modules/glossary/pages/index.adoc b/architecture/docs/modules/glossary/pages/index.adoc new file mode 100644 index 0000000..69c892f --- /dev/null +++ b/architecture/docs/modules/glossary/pages/index.adoc @@ -0,0 +1,89 @@ += Glossary + +This glossary defines the key terms and concepts used throughout the Agentic Layer architecture documentation. + +== A + +**Agent Catalog**:: +Centralized registry and management system for discovering, versioning, and managing the lifecycle of AI agents within the platform. Provides metadata, documentation, and operational status for all registered agents. + +**Agent Gateway**:: +Entry point and routing component that handles incoming requests and distributes them to appropriate AI agents based on capabilities, availability, and load balancing policies. + +**Agent Runtime / Agent Orchestration**:: +Kubernetes-native execution environment that manages the lifecycle, scaling, and resource allocation of AI agents. Provides automated deployment, scaling, and monitoring of agent instances. + +**Agentic Layer**:: +Core platform layer containing the foundational components for AI agent orchestration, including AI Gateway, Agent Runtime, Connectors & Tools, and governance components. Built on Kubernetes infrastructure. + +**Agentic Workforce Management**:: +Component responsible for coordinating and orchestrating complex AI workflows across multiple agents and organizational boundaries. Manages task distribution, workflow execution, and inter-agent communication. + +**Agentic Workforces**:: +Application-level implementations of AI agent systems designed for specific enterprise use cases, such as Insurance Claims Processing, Healthcare Operations, or Procurement workflows. + +**AI Gateway / Model Router**:: +Unified interface component that abstracts interactions with multiple Large Language Model (LLM) providers. Provides intelligent routing, failover capabilities, and consistent API interfaces across different AI service providers. + +**AI Guardrails**:: +Security and safety component that implements content filtering, safety checks, access controls, and policy enforcement for AI interactions to ensure compliant and secure operations. + +**Audit Trail**:: +Comprehensive logging and tracking system that records all AI operations, decisions, and interactions for regulatory compliance, security monitoring, and operational transparency. + +== B + +**BYOC (Bring Your Own Cloud)**:: +Deployment model that allows organizations to run the Agentic Layer components within their own cloud infrastructure, maintaining full control over data, security, and compliance requirements. + +== C + +**Cloud-Native Architecture**:: +Design approach leveraging cloud computing principles, including containerization, microservices, dynamic orchestration, and declarative APIs. Built specifically for cloud environments with Kubernetes as the foundation. + +**Compliance Dashboard**:: +Management interface providing real-time monitoring and reporting for regulatory compliance requirements including EU AI Act, GDPR, and industry-specific standards. + +**Connectors & Tools**:: +Integration components that enable seamless connectivity between the Agentic Layer and external systems, databases, APIs, and third-party services. + +**Control Plane for Intelligent Workloads**:: +The Agentic Layer's primary function as a management and orchestration system for AI-driven processes and autonomous agents within enterprise environments. + +== D + +**Data Sovereignty**:: +The concept of maintaining complete control and governance over data location, processing, and access within defined jurisdictional and organizational boundaries. + +== K + +**Kubernetes Platform**:: +The foundational infrastructure layer providing container orchestration, scaling, resource management, and service discovery for all Agentic Layer components. + +**Kubernetes-Native**:: +Architecture and components designed specifically to leverage Kubernetes primitives, APIs, and operational patterns for deployment, scaling, and management. + +== L + +**LLM (Large Language Model)**:: +AI models trained on vast amounts of text data to understand and generate human-like text. Examples include GPT, Gemini, Claude, and other foundation models accessed through the AI Gateway. + +== M + +**Multi-Framework Runtime**:: +Execution environment that supports agents built with different AI frameworks and technologies while providing consistent operational characteristics and management interfaces. + +== O + +**Observability Dashboard**:: +Operational interface providing comprehensive monitoring, metrics visualization, distributed tracing, and system health information for the entire Agentic Layer platform. + +== T + +**Testbench**:: +Integrated testing framework providing automated validation, performance testing, and quality assurance capabilities for AI agents before production deployment. + +== V + +**Vendor Lock-in**:: +Dependency on a specific vendor's proprietary technologies that makes switching to alternatives difficult or costly. The Agentic Layer's open-source and agnostic design prevents vendor lock-in. diff --git a/architecture/docs/modules/introduction/assets/images/agentic-layer.jpg b/architecture/docs/modules/introduction/assets/images/agentic-layer.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bd3e757a2f35311e30dc11d8711f2389355dca65 GIT binary patch literal 120034 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ðyyDC{#ER`8+3!;_6xQwP|eatCW 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

FTF?xwPMH0PC^334EsoOIAWTO6L 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

U$; zEGQtrQ{A#P14QFBrXiYxkBO8#9hblkdQ{-5=+LdF!s#y3#%gJPCFfm5l^PZ*;o7{~ z<^<=oG{K-uk`tAYk4tT?t%D+@dR+tyE0uXejCFN~vm>_GCP}#N{$7$NP^bIxl4^{n zf3FE8q6!(xhLKmV7yptWl)iW@sD84X>L%!yNU1b&?6AF~;Z0am}gQtT+rg zG!vok;GK>7+O2?&tEgcLT*Rr_<+`cS$!h~sazr5M)6?_V2XauJByk}*K@D1ht#ngf z$tBKn+5DBBQdwd*=i?vTq27fEGJT92Y_YYZ0T%J9=^_Ce&a{kceDfcuJw?kuyffOO+W$NsacYctR7%0f>V0*ZB!qdl` z#=tgP3nwA#Kdi=IB>MWS!3AM@#i)nNzF6v>hb22W+>@I!c%v+|eJ_!cSIAlJh58zs z8Q7++;?i-WC=<>8yg}e6v$Pu@E0gfrh9wSen|ztA3x1ev8!2TFrh zQ7MUWDu;XL8Qacy1~9Ldrzt;Pmw!AZU4&e*H5!Js\DEQ@2R&XYXj9dGwgVKPM! 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


~IQTIJhBYP; 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.11" @@ -52,6 +58,7 @@ "version": "3.1.14", "resolved": "https://registry.npmjs.org/@antora/cli/-/cli-3.1.14.tgz", "integrity": "sha512-I6WcygMU2bFInjdURJjkYjo7K5M8B3lBB53v9OO0IcY0LhEY8Wa7IlZ7wVinf5qEjHvaYzRGTZVl6RsJtVt7Sw==", + "dev": true, "license": "MPL-2.0", "dependencies": { "@antora/logger": "3.1.14", @@ -70,6 +77,7 @@ "version": "3.1.14", "resolved": "https://registry.npmjs.org/@antora/content-aggregator/-/content-aggregator-3.1.14.tgz", "integrity": "sha512-FVuBgnrGPiktYqK1WHbGF8O8l4m5KHlkxoJumrbacgFo8SKuiRFEo31zalxrCUsv8QM3UBEgX+LdHrve/9CGLg==", + "dev": true, "license": "MPL-2.0", "dependencies": { "@antora/expand-path-helper": "~3.0", @@ -96,6 +104,7 @@ "version": "3.1.14", "resolved": "https://registry.npmjs.org/@antora/content-classifier/-/content-classifier-3.1.14.tgz", "integrity": "sha512-y8Fk+KU1lqD3aawOu3ZFK92YfOZ1k3YBJhLI9QIFM6Ck4STPnf7AwYbhfOtjODlwer5/OhFmfhjUB2hn7onGnA==", + "dev": true, "license": "MPL-2.0", "dependencies": { "@antora/asciidoc-loader": "3.1.14", @@ -111,6 +120,7 @@ "version": "3.1.14", "resolved": "https://registry.npmjs.org/@antora/document-converter/-/document-converter-3.1.14.tgz", "integrity": "sha512-f6wFnL+489DI0ZDgoxYWzbxxWqPviRiJ56OHS1NixEfvJ7OpRBDPEbX1xnsIeiyFBgqX4+nY92MsCWKTa+Gf3w==", + "dev": true, "license": "MPL-2.0", "dependencies": { "@antora/asciidoc-loader": "3.1.14" @@ -123,6 +133,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-3.0.0.tgz", "integrity": "sha512-7PdEIhk97v85/CSm3HynCsX14TR6oIVz1s233nNLsiWubE8tTnpPt4sNRJR+hpmIZ6Bx9c6QDp3XIoiyu/WYYA==", + "dev": true, "license": "MPL-2.0", "engines": { "node": ">=16.0.0" @@ -132,6 +143,7 @@ "version": "3.1.14", "resolved": "https://registry.npmjs.org/@antora/file-publisher/-/file-publisher-3.1.14.tgz", "integrity": "sha512-fTaAnkyKSOlsxQM1TBFCAmiERA6Q67XleDCD2bMPVgfcENmo0Xfx59KwCHaA92IcRSmMftydlXHPaFxNh0UVsg==", + "dev": true, "license": "MPL-2.0", "dependencies": { "@antora/expand-path-helper": "~3.0", @@ -147,6 +159,7 @@ "version": "3.1.14", "resolved": "https://registry.npmjs.org/@antora/logger/-/logger-3.1.14.tgz", "integrity": "sha512-kVEeGqZbXR903hPIm+BlN97fLdQ3LoUzE/BOPZ6vRp9m9Mmbnm67Kg7fSYkfTMLB0S2UWpAPFg22RdsU5ZoAzA==", + "dev": true, "license": "MPL-2.0", "dependencies": { "@antora/expand-path-helper": "~3.0", @@ -162,6 +175,7 @@ "version": "3.1.14", "resolved": "https://registry.npmjs.org/@antora/navigation-builder/-/navigation-builder-3.1.14.tgz", "integrity": "sha512-/637YLGD7oUHGSfEfszXkk4ASfIhDAg5Xs9035J1dV07XYRlGqmtUb15rtapbcECpcQFjCyM5jFQYSNNvLrGcQ==", + "dev": true, "license": "MPL-2.0", "dependencies": { "@antora/asciidoc-loader": "3.1.14" @@ -174,6 +188,7 @@ "version": "3.1.14", "resolved": "https://registry.npmjs.org/@antora/page-composer/-/page-composer-3.1.14.tgz", "integrity": "sha512-RfA+67TxCqUPrQbZdrfjgLpHh8MR2z2du7cyF3HGX4N6DpqEBvz81NHHl3rA3fj6BQZPQbGm2OYAMU6wzJ6Pog==", + "dev": true, "license": "MPL-2.0", "dependencies": { "@antora/logger": "3.1.14", @@ -188,6 +203,7 @@ "version": "3.1.14", "resolved": "https://registry.npmjs.org/@antora/playbook-builder/-/playbook-builder-3.1.14.tgz", "integrity": "sha512-Ss2r7In00u/n9Da+JOxEqIE8NeRosf+f+agzH3Te09JV/mpgZKxEOE5V/VuP+TNNq4ww1eu5aOS8DiU2PYwj4Q==", + "dev": true, "license": "MPL-2.0", "dependencies": { "@iarna/toml": "~2.2", @@ -203,6 +219,7 @@ "version": "3.1.14", "resolved": "https://registry.npmjs.org/@antora/redirect-producer/-/redirect-producer-3.1.14.tgz", "integrity": "sha512-5koAwRk1cZrvE/qfOWKXqb3jtxrZbWA5EYHYGFEoato5By3cbC42blH4Bre9/48pjyS6znFpbZhYUBpT7PRhZA==", + "dev": true, "license": "MPL-2.0", "dependencies": { "vinyl": "~3.0" @@ -215,6 +232,7 @@ "version": "3.1.14", "resolved": "https://registry.npmjs.org/@antora/site-generator/-/site-generator-3.1.14.tgz", "integrity": "sha512-hQIUVtM9+xwleYWc4fIRZmiKl2p+ItOJuUm2+Hkdh07BZsySxkMOxxCyZsvTn9rc+4R94CYqDQCYElwFwdB2WA==", + "dev": true, "license": "MPL-2.0", "dependencies": { "@antora/asciidoc-loader": "3.1.14", @@ -240,6 +258,7 @@ "version": "3.1.14", "resolved": "https://registry.npmjs.org/@antora/site-mapper/-/site-mapper-3.1.14.tgz", "integrity": "sha512-3qbETtwadl+fWREjzrBUxPUorMcMiZ+hdkB1El9z7it9KzKh0Yp7Je0+2uTxGX+Lov9uik48dZJ9e/mr5PeaRQ==", + "dev": true, "license": "MPL-2.0", "dependencies": { "@antora/content-classifier": "3.1.14", @@ -253,6 +272,7 @@ "version": "3.1.14", "resolved": "https://registry.npmjs.org/@antora/site-publisher/-/site-publisher-3.1.14.tgz", "integrity": "sha512-8apyEmgepUc7ms9CTEIPwN3tGtWwLqR6fbLMLs7hibqmOSR880Ut/4GRGb97sqcGQXSHdIyWK2oJKzRl1Akb6Q==", + "dev": true, "license": "MPL-2.0", "dependencies": { "@antora/file-publisher": "3.1.14" @@ -265,6 +285,7 @@ "version": "3.1.14", "resolved": "https://registry.npmjs.org/@antora/ui-loader/-/ui-loader-3.1.14.tgz", "integrity": "sha512-LVvTdKQOB44CmJ1JQDu8sJf6rrLZMxPAWWackdg2JtGyGHHpd80/MBcv4BSFk7//cJQ13Oqm/7JCbhD51KAFjg==", + "dev": true, "license": "MPL-2.0", "dependencies": { "@antora/expand-path-helper": "~3.0", @@ -287,6 +308,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@antora/user-require-helper/-/user-require-helper-3.0.0.tgz", "integrity": "sha512-KIXb8WYhnrnwH7Jj21l1w+et9k5GvcgcqvLOwxqWLEd0uVZOiMFdqFjqbVm3M+zcrs1JXWMeh2LLvxBbQs3q/Q==", + "dev": true, "license": "MPL-2.0", "dependencies": { "@antora/expand-path-helper": "~3.0" @@ -299,6 +321,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@asciidoctor/core/-/core-3.0.4.tgz", "integrity": "sha512-41SDMi7iRRBViPe0L6VWFTe55bv6HEOJeRqMj5+E5wB1YPdUPuTucL4UAESPZM6OWmn4t/5qM5LusXomFUVwVQ==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { @@ -314,7 +337,9 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@asciidoctor/opal-runtime/-/opal-runtime-3.0.1.tgz", "integrity": "sha512-iW7ACahOG0zZft4A/4CqDcc7JX+fWRNjV5tFAVkNCzwZD+EnFolPaUOPYt8jzadc0+Bgd80cQTtRMQnaaV1kkg==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "glob": "8.1.0", "unxhr": "1.2.0" @@ -327,12 +352,14 @@ "version": "2.2.5", "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true, "license": "ISC" }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -346,6 +373,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -355,6 +383,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -368,6 +397,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, "license": "MIT", "dependencies": { "event-target-shim": "^5.0.0" @@ -380,12 +410,14 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, "license": "Python-2.0" }, "node_modules/asciidoctor-kroki": { "version": "0.18.1", "resolved": "https://registry.npmjs.org/asciidoctor-kroki/-/asciidoctor-kroki-0.18.1.tgz", "integrity": "sha512-eQxbBCaPTbyNoJtk62Gp+6h4LlJp2147g7eS0QIVjqaLpFa8sseH0BlMiBoATrJUYv1w3nR+FTzvloBJ/MioYg==", + "dev": true, "license": "MIT", "dependencies": { "json5": "2.2.3", @@ -405,6 +437,7 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/asciidoctor-opal-runtime/-/asciidoctor-opal-runtime-0.3.3.tgz", "integrity": "sha512-/CEVNiOia8E5BMO9FLooo+Kv18K4+4JBFRJp8vUy/N5dMRAg+fRNV4HA+o6aoSC79jVU/aT5XvUpxSxSsTS8FQ==", + "dev": true, "license": "MIT", "dependencies": { "glob": "7.1.3", @@ -418,6 +451,7 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -429,6 +463,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -446,6 +481,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -458,6 +494,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.0.1.tgz", "integrity": "sha512-MAhukhVHyaLGDjyDYhy8gVjWJyhTECCdNsLwlMoGFoNJ3o79fpQhtQuzmAE4IxCMDwraF4cW8ZjpAV0m9CRQbg==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.11" @@ -467,12 +504,14 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz", "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==", + "dev": true, "license": "MIT" }, "node_modules/atomic-sleep": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.0.0" @@ -482,6 +521,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" @@ -497,6 +537,7 @@ "version": "1.7.3", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", + "dev": true, "license": "Apache-2.0", "peerDependencies": { "react-native-b4a": "*" @@ -511,12 +552,14 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, "license": "MIT" }, "node_modules/bare-events": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "dev": true, "license": "Apache-2.0", "peerDependencies": { "bare-abort-controller": "*" @@ -531,6 +574,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, "funding": [ { "type": "github", @@ -551,7 +595,9 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -560,6 +606,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -572,6 +619,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, "funding": [ { "type": "github", @@ -596,6 +644,7 @@ "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, "license": "MIT", "engines": { "node": "*" @@ -605,6 +654,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/cache-directory/-/cache-directory-2.0.0.tgz", "integrity": "sha512-7YKEapH+2Uikde8hySyfobXBqPKULDyHNl/lhKm7cKf/GJFdG/tU/WpLrOg2y9aUrQrWUilYqawFIiGJPS6gDA==", + "dev": true, "license": "LGPL-3.0+", "dependencies": { "xdg-basedir": "^3.0.0" @@ -617,6 +667,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.0", @@ -635,6 +686,7 @@ "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==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -648,6 +700,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -664,12 +717,14 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/clean-git-ref/-/clean-git-ref-2.0.1.tgz", "integrity": "sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw==", + "dev": true, "license": "Apache-2.0" }, "node_modules/clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.8" @@ -679,12 +734,14 @@ "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, "license": "MIT" }, "node_modules/commander": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=16" @@ -694,12 +751,14 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, "license": "MIT" }, "node_modules/convict": { "version": "6.2.4", "resolved": "https://registry.npmjs.org/convict/-/convict-6.2.4.tgz", "integrity": "sha512-qN60BAwdMVdofckX7AlohVJ2x9UvjTNoKVXCL2LxFk1l7757EJqf1nySdMkPQer0bt8kQ5lQiyZ9/2NvrFBuwQ==", + "dev": true, "license": "Apache-2.0", "dependencies": { "lodash.clonedeep": "^4.5.0", @@ -713,6 +772,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, "license": "Apache-2.0", "bin": { "crc32": "bin/crc32.njs" @@ -725,6 +785,7 @@ "version": "4.6.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "dev": true, "license": "MIT", "engines": { "node": "*" @@ -734,6 +795,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" @@ -749,6 +811,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", @@ -766,12 +829,14 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/diff3/-/diff3-0.0.3.tgz", "integrity": "sha512-iSq8ngPOt0K53A6eVr4d5Kn6GNrM2nQZtC740pzIriHtn4pOQ2lyzEXQMBeVcWERN0ye7fhBsk9PbLLQOnUx/g==", + "dev": true, "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==", + "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", @@ -786,6 +851,7 @@ "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, "license": "MIT", "dependencies": { "once": "^1.4.0" @@ -795,6 +861,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -804,6 +871,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -813,6 +881,7 @@ "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==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -825,6 +894,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -834,6 +904,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.8.x" @@ -843,6 +914,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "dev": true, "license": "Apache-2.0", "dependencies": { "bare-events": "^2.7.0" @@ -852,18 +924,21 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==", + "dev": true, "license": "MIT" }, "node_modules/fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -880,6 +955,7 @@ "version": "3.5.0", "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -889,12 +965,14 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true, "license": "MIT" }, "node_modules/fastq": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -904,6 +982,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -916,6 +995,7 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, "license": "MIT", "dependencies": { "is-callable": "^1.2.7" @@ -931,12 +1011,14 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, "license": "ISC" }, "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==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -946,6 +1028,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -970,6 +1053,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -984,7 +1068,9 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "license": "ISC", + "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1003,6 +1089,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -1015,6 +1102,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -1027,6 +1115,7 @@ "version": "4.7.8", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, "license": "MIT", "dependencies": { "minimist": "^1.2.5", @@ -1048,6 +1137,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" @@ -1060,6 +1150,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -1072,6 +1163,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -1087,6 +1179,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -1099,12 +1192,14 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", + "dev": true, "license": "MIT" }, "node_modules/hpagent": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz", "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==", + "dev": true, "license": "MIT", "engines": { "node": ">=14" @@ -1114,6 +1209,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, "funding": [ { "type": "github", @@ -1134,6 +1230,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -1144,6 +1241,7 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -1154,12 +1252,14 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, "license": "ISC" }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -1172,6 +1272,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -1181,6 +1282,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -1193,6 +1295,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -1202,6 +1305,7 @@ "version": "1.1.15", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, "license": "MIT", "dependencies": { "which-typed-array": "^1.1.16" @@ -1217,12 +1321,14 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, "license": "MIT" }, "node_modules/isomorphic-git": { "version": "1.25.10", "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.25.10.tgz", "integrity": "sha512-IxGiaKBwAdcgBXwIcxJU6rHLk+NrzYaaPKXXQffcA0GW3IUrQXdUPDXDo+hkGVcYruuz/7JlGBiuaeTCgIgivQ==", + "dev": true, "license": "MIT", "dependencies": { "async-lock": "^1.4.1", @@ -1248,12 +1354,14 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true, "license": "(MIT AND Zlib)" }, "node_modules/joycon": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -1263,6 +1371,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -1275,6 +1384,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, "license": "MIT", "bin": { "json5": "lib/cli.js" @@ -1287,12 +1397,14 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true, "license": "MIT" }, "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==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -1302,6 +1414,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -1311,6 +1424,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -1324,6 +1438,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -1336,6 +1451,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -1345,6 +1461,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -1357,6 +1474,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -1369,7 +1487,9 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, "license": "ISC", + "peer": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1381,6 +1501,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1390,6 +1511,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/minimisted/-/minimisted-2.0.1.tgz", "integrity": "sha512-1oPjfuLQa2caorJUM8HV8lGgWCc0qqAO1MNv/k05G4qslmsndV/5WdNZrqCiyqiz3wohia2Ij2B7w2Dr7/IyrA==", + "dev": true, "license": "MIT", "dependencies": { "minimist": "^1.2.5" @@ -1399,6 +1521,7 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.3.tgz", "integrity": "sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==", + "dev": true, "license": "MIT", "bin": { "mkdirp": "dist/cjs/src/bin.js" @@ -1414,6 +1537,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/multi-progress/-/multi-progress-4.0.0.tgz", "integrity": "sha512-9zcjyOou3FFCKPXsmkbC3ethv51SFPoA4dJD6TscIp2pUmy26kBDZW6h9XofPELrzseSkuD7r0V+emGEeo39Pg==", + "dev": true, "license": "MIT", "peerDependencies": { "progress": "^2.0.0" @@ -1423,12 +1547,14 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, "license": "MIT" }, "node_modules/on-exit-leak-free": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "dev": true, "license": "MIT", "engines": { "node": ">=14.0.0" @@ -1438,6 +1564,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -1447,12 +1574,14 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "dev": true, "license": "(MIT AND Zlib)" }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -1462,12 +1591,14 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, "license": "MIT" }, "node_modules/picomatch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -1480,6 +1611,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -1489,6 +1621,7 @@ "version": "9.2.0", "resolved": "https://registry.npmjs.org/pino/-/pino-9.2.0.tgz", "integrity": "sha512-g3/hpwfujK5a4oVbaefoJxezLzsDgLcNJeITvC6yrfwYeT9la+edCK42j5QpEQSQCZgTKapXvnQIdgZwvRaZug==", + "dev": true, "license": "MIT", "dependencies": { "atomic-sleep": "^1.0.0", @@ -1511,6 +1644,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz", "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", + "dev": true, "license": "MIT", "dependencies": { "readable-stream": "^4.0.0", @@ -1521,6 +1655,7 @@ "version": "4.7.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "dev": true, "license": "MIT", "dependencies": { "abort-controller": "^3.0.0", @@ -1537,6 +1672,7 @@ "version": "11.2.2", "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-11.2.2.tgz", "integrity": "sha512-2FnyGir8nAJAqD3srROdrF1J5BIcMT4nwj7hHSc60El6Uxlym00UbCCd8pYIterstVBFlMyF1yFV8XdGIPbj4A==", + "dev": true, "license": "MIT", "dependencies": { "colorette": "^2.0.7", @@ -1562,6 +1698,7 @@ "version": "4.7.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "dev": true, "license": "MIT", "dependencies": { "abort-controller": "^3.0.0", @@ -1578,12 +1715,14 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.1.0.tgz", "integrity": "sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==", + "dev": true, "license": "MIT" }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -1593,6 +1732,7 @@ "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6.0" @@ -1602,14 +1742,15 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", + "dev": true, "license": "MIT" }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.4.0" } @@ -1618,6 +1759,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "dev": true, "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", @@ -1628,6 +1770,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, "funding": [ { "type": "github", @@ -1648,12 +1791,14 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "dev": true, "license": "MIT" }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -1668,6 +1813,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 12.13.0" @@ -1677,12 +1823,14 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true, "license": "ISC" }, "node_modules/replace-ext": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", + "dev": true, "license": "MIT", "engines": { "node": ">= 10" @@ -1692,6 +1840,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -1701,6 +1850,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -1711,6 +1861,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, "funding": [ { "type": "github", @@ -1734,12 +1885,14 @@ "version": "0.8.14", "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.14.tgz", "integrity": "sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==", + "dev": true, "license": "MIT" }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, "funding": [ { "type": "github", @@ -1760,6 +1913,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -1769,12 +1923,14 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", + "dev": true, "license": "BSD-3-Clause" }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -1792,6 +1948,7 @@ "version": "2.4.12", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "dev": true, "license": "(MIT AND BSD-3-Clause)", "dependencies": { "inherits": "^2.0.4", @@ -1812,12 +1969,14 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/should-proxy/-/should-proxy-1.0.4.tgz", "integrity": "sha512-RPQhIndEIVUCjkfkQ6rs6sOR6pkxJWCNdxtfG5pP0RVgUYbK5911kLTF0TNcCC0G3YCGd492rMollFT2aTd9iQ==", + "dev": true, "license": "MIT" }, "node_modules/simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, "funding": [ { "type": "github", @@ -1838,6 +1997,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, "funding": [ { "type": "github", @@ -1863,6 +2023,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.0.1.tgz", "integrity": "sha512-hTSD/6JMLyT4r9zeof6UtuBDpjJ9sO08/nmS5djaA9eozT9oOlNdpXSnzcgj4FTqpk3nkLrs61l4gip9r1HCrQ==", + "dev": true, "license": "MIT", "dependencies": { "atomic-sleep": "^1.0.0" @@ -1872,6 +2033,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -1881,6 +2043,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true, "license": "ISC", "engines": { "node": ">= 10.x" @@ -1890,6 +2053,7 @@ "version": "2.23.0", "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "dev": true, "license": "MIT", "dependencies": { "events-universal": "^1.0.0", @@ -1901,6 +2065,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" @@ -1910,6 +2075,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -1922,6 +2088,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "dev": true, "license": "MIT", "dependencies": { "streamx": "^2.12.5" @@ -1931,6 +2098,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "dev": true, "license": "Apache-2.0", "dependencies": { "b4a": "^1.6.4" @@ -1940,6 +2108,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", + "dev": true, "license": "MIT", "dependencies": { "real-require": "^0.2.0" @@ -1949,6 +2118,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "dev": true, "license": "MIT", "dependencies": { "isarray": "^2.0.5", @@ -1963,6 +2133,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -1975,6 +2146,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -1989,6 +2161,7 @@ "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, "license": "BSD-2-Clause", "optional": true, "bin": { @@ -2002,6 +2175,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.2.0.tgz", "integrity": "sha512-6cGpm8NFXPD9QbSNx0cD2giy7teZ6xOkCUH3U89WKVkL9N9rBrWjlCwhR94Re18ZlAop4MOc3WU1M3Hv/bgpIw==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.11" @@ -2011,12 +2185,14 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, "license": "MIT" }, "node_modules/vinyl": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.1.tgz", "integrity": "sha512-0QwqXteBNXgnLCdWdvPQBX6FXRHtIH3VhJPTd5Lwn28tJXc34YqSCWUmkOvtJHBmB3gGoPtrOKk3Ts8/kEZ9aA==", + "dev": true, "license": "MIT", "dependencies": { "clone": "^2.1.2", @@ -2032,6 +2208,7 @@ "version": "1.1.20", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -2053,18 +2230,21 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, "license": "MIT" }, "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==", + "dev": true, "license": "ISC" }, "node_modules/xdg-basedir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", "integrity": "sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -2074,6 +2254,7 @@ "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, "license": "ISC", "engines": { "node": ">=10" @@ -2083,6 +2264,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.1.3.tgz", "integrity": "sha512-JCCdmlJJWv7L0q/KylOekyRaUrdEoUxWkWVcgorosTROCFWiS9p2NNPE9Yb91ak7b1N5SxAZEliWpspbZccivw==", + "dev": true, "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", @@ -2096,6 +2278,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3" diff --git a/package.json b/package.json index 9556266..6fa5e61 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,11 @@ { - "dependencies": { + "name": "agentic-layer-docs", + "version": "1.0.0", + "description": "Agentic Layer Documentation", + "scripts": { + "build": "antora generate --log-failure-level warn antora-playbook.yml" + }, + "devDependencies": { "@antora/cli": "^3.1.12", "@antora/site-generator": "^3.1.12", "asciidoctor-kroki": "^0.18.1" From ba9c2638e175bdd0992bc7312ce731b574e2d5f3 Mon Sep 17 00:00:00 2001 From: Nicolai Ommer Date: Mon, 2 Feb 2026 12:57:01 +0100 Subject: [PATCH 2/2] refactor: Merge documentation repo with playbook --- .github/workflows/build-antora.yml | 2 ++ compose.yaml => compose.yml | 0 2 files changed, 2 insertions(+) rename compose.yaml => compose.yml (100%) diff --git a/.github/workflows/build-antora.yml b/.github/workflows/build-antora.yml index 3321842..592cf41 100644 --- a/.github/workflows/build-antora.yml +++ b/.github/workflows/build-antora.yml @@ -24,6 +24,8 @@ jobs: - name: Run docker compose uses: hoverkraft-tech/compose-action@05da55b2bb8a5a759d1c4732095044bd9018c050 # v2.4.3 + with: + compose-file: './compose.yml' - name: Generate Site run: npm run build diff --git a/compose.yaml b/compose.yml similarity index 100% rename from compose.yaml rename to compose.yml