- Add Prometheus metrics for marketplace API throughput and error rates with new dashboard panels - Implement confidential transaction models with encryption support and access control - Add key management system with registration, rotation, and audit logging - Create services and registry routers for service discovery and management - Integrate ZK proof generation for privacy-preserving receipts - Add metrics instru
305 lines
8.2 KiB
YAML
305 lines
8.2 KiB
YAML
# AITBC Extension Manifest
|
|
# This file defines the extension metadata and lifecycle configuration
|
|
|
|
apiVersion: "v1"
|
|
kind: "Extension"
|
|
|
|
# Basic information
|
|
metadata:
|
|
name: "{{ cookiecutter.extension_name }}"
|
|
displayName: "{{ cookiecutter.extension_display_name }}"
|
|
description: "{{ cookiecutter.extension_description }}"
|
|
version: "{{ cookiecutter.version }}"
|
|
author: "{{ cookiecutter.author_name }}"
|
|
email: "{{ cookiecutter.author_email }}"
|
|
license: "{{ cookiecutter.license }}"
|
|
homepage: "https://github.com/{{ cookiecutter.github_username }}/{{ cookiecutter.extension_name }}"
|
|
repository: "https://github.com/{{ cookiecutter.github_username }}/{{ cookiecutter.extension_name }}.git"
|
|
documentation: "https://{{ cookiecutter.extension_name }}.readthedocs.io"
|
|
|
|
# Extension classification
|
|
spec:
|
|
type: "{{ cookiecutter.extension_type }}"
|
|
category:
|
|
{% if cookiecutter.extension_type == "payment" %}
|
|
- "payment-processor"
|
|
{% elif cookiecutter.extension_type == "erp" %}
|
|
- "erp-connector"
|
|
{% elif cookiecutter.extension_type == "analytics" %}
|
|
- "analytics-tool"
|
|
{% else %}
|
|
- "developer-tool"
|
|
{% endif %}
|
|
|
|
# AITBC compatibility
|
|
aitbc:
|
|
minVersion: "1.0.0"
|
|
maxVersion: "2.0.0"
|
|
sdkVersion: "^1.0.0"
|
|
|
|
# Runtime requirements
|
|
runtime:
|
|
python: ">= {{ cookiecutter.python_version }}"
|
|
{% if cookiecutter.use_asyncio %}
|
|
features: ["async"]
|
|
{% endif %}
|
|
|
|
# Dependencies
|
|
dependencies:
|
|
core:
|
|
- "aitbc-enterprise>=1.0.0"
|
|
{% if cookiecutter.extension_type == "payment" %}
|
|
payments:
|
|
- "stripe>=5.0.0"
|
|
{% elif cookiecutter.extension_type == "erp" %}
|
|
erp:
|
|
- "requests>=2.25.0"
|
|
- "pandas>=1.3.0"
|
|
{% elif cookiecutter.extension_type == "analytics" %}
|
|
analytics:
|
|
- "matplotlib>=3.5.0"
|
|
- "plotly>=5.0.0"
|
|
{% else %}
|
|
devtools:
|
|
- "click>=8.0.0"
|
|
{% endif %}
|
|
|
|
# Extension configuration schema
|
|
configSchema:
|
|
type: "object"
|
|
properties:
|
|
{% if cookiecutter.extension_type == "payment" %}
|
|
api_key:
|
|
type: "string"
|
|
description: "API key for the payment service"
|
|
sensitive: true
|
|
webhook_secret:
|
|
type: "string"
|
|
description: "Webhook secret for verification"
|
|
sensitive: true
|
|
sandbox:
|
|
type: "boolean"
|
|
description: "Use sandbox environment"
|
|
default: false
|
|
{% elif cookiecutter.extension_type == "erp" %}
|
|
host:
|
|
type: "string"
|
|
description: "ERP system host"
|
|
format: "hostname"
|
|
port:
|
|
type: "integer"
|
|
description: "ERP system port"
|
|
default: 443
|
|
username:
|
|
type: "string"
|
|
description: "ERP username"
|
|
sensitive: true
|
|
password:
|
|
type: "string"
|
|
description: "ERP password"
|
|
sensitive: true
|
|
database:
|
|
type: "string"
|
|
description: "ERP database name"
|
|
{% elif cookiecutter.extension_type == "analytics" %}
|
|
data_source:
|
|
type: "string"
|
|
description: "Data source URL"
|
|
refresh_interval:
|
|
type: "integer"
|
|
description: "Data refresh interval in seconds"
|
|
default: 300
|
|
retention_days:
|
|
type: "integer"
|
|
description: "Data retention period in days"
|
|
default: 90
|
|
{% else %}
|
|
debug_mode:
|
|
type: "boolean"
|
|
description: "Enable debug logging"
|
|
default: false
|
|
log_level:
|
|
type: "string"
|
|
enum: ["DEBUG", "INFO", "WARNING", "ERROR"]
|
|
default: "INFO"
|
|
{% endif %}
|
|
required:
|
|
{% if cookiecutter.extension_type == "payment" %}
|
|
- "api_key"
|
|
{% elif cookiecutter.extension_type == "erp" %}
|
|
- "host"
|
|
- "username"
|
|
- "password"
|
|
- "database"
|
|
{% elif cookiecutter.extension_type == "analytics" %}
|
|
- "data_source"
|
|
{% endif %}
|
|
|
|
# Health check configuration
|
|
health:
|
|
enabled: true
|
|
endpoint: "/health"
|
|
interval: 30
|
|
timeout: 5
|
|
checks:
|
|
- name: "service_connection"
|
|
type: "external"
|
|
command: "python -c 'import {{ cookiecutter.package_name }}; print(\"OK\")'"
|
|
{% if cookiecutter.extension_type == "payment" %}
|
|
- name: "payment_api"
|
|
type: "http"
|
|
url: "https://api.stripe.com/v1"
|
|
expectedStatus: 200
|
|
{% endif %}
|
|
|
|
# Metrics configuration
|
|
metrics:
|
|
enabled: true
|
|
endpoint: "/metrics"
|
|
format: "prometheus"
|
|
customMetrics:
|
|
{% if cookiecutter.extension_type == "payment" %}
|
|
- name: "payment_operations_total"
|
|
type: "counter"
|
|
help: "Total number of payment operations"
|
|
- name: "payment_amount_sum"
|
|
type: "histogram"
|
|
help: "Payment amount distribution"
|
|
{% elif cookiecutter.extension_type == "erp" %}
|
|
- name: "sync_operations_total"
|
|
type: "counter"
|
|
help: "Total number of sync operations"
|
|
- name: "sync_records_processed"
|
|
type: "counter"
|
|
help: "Total records processed during sync"
|
|
{% elif cookiecutter.extension_type == "analytics" %}
|
|
- name: "analytics_queries_total"
|
|
type: "counter"
|
|
help: "Total number of analytics queries"
|
|
- name: "data_processing_time"
|
|
type: "histogram"
|
|
help: "Time spent processing analytics data"
|
|
{% endif %}
|
|
|
|
# Webhook configuration (if applicable)
|
|
{% if cookiecutter.extension_type == "payment" %}
|
|
webhooks:
|
|
enabled: true
|
|
events:
|
|
- "payment.created"
|
|
- "payment.succeeded"
|
|
- "payment.failed"
|
|
- "refund.created"
|
|
endpoint: "/webhooks"
|
|
secret: "{{ cookiecutter.extension_name }}_webhook"
|
|
retryPolicy:
|
|
maxRetries: 3
|
|
backoff: "exponential"
|
|
{% endif %}
|
|
|
|
# Security configuration
|
|
security:
|
|
{% if cookiecutter.extension_type == "payment" %}
|
|
pciCompliance: true
|
|
dataEncryption: true
|
|
{% elif cookiecutter.extension_type == "erp" %}
|
|
tlsRequired: true
|
|
auditLogging: true
|
|
{% endif %}
|
|
permissions:
|
|
- "read:transactions"
|
|
- "write:transactions"
|
|
{% if cookiecutter.extension_type == "erp" %}
|
|
- "read:customers"
|
|
- "write:customers"
|
|
{% endif %}
|
|
|
|
# Deployment configuration
|
|
deployment:
|
|
type: "docker"
|
|
|
|
# Docker configuration
|
|
docker:
|
|
image: "{{ cookiecutter.github_username }}/{{ cookiecutter.extension_name }}:{{ cookiecutter.version }}"
|
|
ports:
|
|
- "8080:8080"
|
|
environment:
|
|
- "AITBC_ENV=production"
|
|
- "LOG_LEVEL=INFO"
|
|
volumes:
|
|
- "/data/{{ cookiecutter.extension_name }}:/app/data"
|
|
resources:
|
|
limits:
|
|
cpu: "500m"
|
|
memory: "512Mi"
|
|
requests:
|
|
cpu: "100m"
|
|
memory: "128Mi"
|
|
|
|
# Kubernetes configuration (optional)
|
|
kubernetes:
|
|
enabled: false
|
|
replicas: 2
|
|
service:
|
|
type: "ClusterIP"
|
|
port: 80
|
|
ingress:
|
|
enabled: false
|
|
host: "{{ cookiecutter.extension_name }}.aitbc.local"
|
|
|
|
# Scaling configuration
|
|
scaling:
|
|
minReplicas: 1
|
|
maxReplicas: 10
|
|
targetCPUUtilization: 70
|
|
targetMemoryUtilization: 80
|
|
|
|
# Testing configuration
|
|
testing:
|
|
frameworks:
|
|
- "pytest"
|
|
- "pytest-asyncio" # if asyncio enabled
|
|
coverage:
|
|
enabled: true
|
|
threshold: 80
|
|
environments:
|
|
- name: "unit"
|
|
command: "pytest tests/unit/"
|
|
- name: "integration"
|
|
command: "pytest tests/integration/"
|
|
- name: "e2e"
|
|
command: "pytest tests/e2e/"
|
|
|
|
# Documentation
|
|
documentation:
|
|
type: "sphinx"
|
|
theme: "sphinx_rtd_theme"
|
|
build:
|
|
command: "sphinx-build -b html docs docs/_build"
|
|
deploy:
|
|
type: "github-pages"
|
|
branch: "gh-pages"
|
|
|
|
# Release configuration
|
|
release:
|
|
type: "semantic"
|
|
branches:
|
|
main: "main"
|
|
develop: "develop"
|
|
release: "release/*"
|
|
changelog:
|
|
enabled: true
|
|
file: "CHANGELOG.md"
|
|
artifacts:
|
|
- "dist/*.whl"
|
|
- "dist/*.tar.gz"
|
|
|
|
# Support information
|
|
support:
|
|
website: "https://{{ cookiecutter.extension_name }}.aitbc.io"
|
|
documentation: "https://{{ cookiecutter.extension_name }}.readthedocs.io"
|
|
issues: "https://github.com/{{ cookiecutter.github_username }}/{{ cookiecutter.extension_name }}/issues"
|
|
discussions: "https://github.com/{{ cookiecutter.github_username }}/{{ cookiecutter.extension_name }}/discussions"
|
|
email: "{{ cookiecutter.author_email }}"
|
|
slack: "#{{ cookiecutter.extension_name }}-support"
|