{
  "schema": "hasna.service_contract.v1",
  "name": "todos",
  "class": "cli-with-store",
  "contractVersion": "v1",
  "kitVersion": "0.6.0",
  "description": "Universal task management for AI coding agents.",
  "bins": [
    "todos",
    "todos-mcp",
    "todos-serve"
  ],
  "hosting": [
    "user-hosted",
    "hasna-saas"
  ],
  "serviceSurfaces": [
    {
      "name": "http-api",
      "kind": "api",
      "status": "supported",
      "bin": "todos-serve",
      "authMode": "api-key",
      "health": {
        "method": "GET",
        "path": "/health",
        "public": true
      },
      "readiness": {
        "method": "GET",
        "path": "/ready",
        "public": false
      },
      "version": {
        "method": "GET",
        "path": "/version",
        "public": true
      },
      "apiBasePath": "/v1",
      "openApiPath": "/openapi.json",
      "readinessGates": [
        {
          "id": "auth-negative-smoke",
          "kind": "auth",
          "required": true,
          "command": "todos serve --port 0 && curl /v1/tasks",
          "status": "pending",
          "summary": "Unauthenticated non-health routes must fail closed before server readiness."
        },
        {
          "id": "redacted-output-scan",
          "kind": "redaction",
          "required": true,
          "status": "pending",
          "summary": "Health, readiness, logs, and CLI JSON must not expose credential values."
        }
      ]
    },
    {
      "name": "typescript-sdk",
      "kind": "sdk",
      "status": "supported",
      "authMode": "api-key",
      "exportSubpath": "./sdk",
      "generatedFrom": "/openapi.json",
      "clientClassName": "TodosClient"
    },
    {
      "name": "mcp",
      "kind": "mcp",
      "status": "supported",
      "mcpBin": "todos-mcp",
      "authMode": "api-key"
    },
    {
      "name": "cli",
      "kind": "cli",
      "status": "supported",
      "bin": "todos",
      "authMode": "local-only"
    }
  ],
  "storage": {
    "backend": "sqlite",
    "engines": [
      "sqlite",
      "postgresql"
    ],
    "envPrefix": "HASNA_TODOS_",
    "aliasEnvPrefix": "TODOS_",
    "sqlitePath": "~/.hasna/todos/todos.db",
    "pgTestGate": {
      "envVar": "TODOS_TEST_DATABASE_URL",
      "command": "bun test tests/postgres-storage.test.ts"
    }
  }
}
