-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhasna.contract.json
More file actions
90 lines (90 loc) · 2.11 KB
/
Copy pathhasna.contract.json
File metadata and controls
90 lines (90 loc) · 2.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
{
"schema": "hasna.service_contract.v1",
"name": "projects",
"class": "service",
"contractVersion": "v1",
"kitVersion": "0.10.2",
"description": "High-level project/workspace management: CLI, MCP server, HTTP API (projects-serve), and typed SDK. The server uses SQLite by default and PostgreSQL when HASNA_PROJECTS_DATABASE_URL is configured; the serve process reads and writes the selected backend directly.",
"bins": [
"projects",
"projects-mcp",
"projects-serve"
],
"hosting": [
"user-hosted"
],
"serviceSurfaces": [
{
"name": "http-api",
"kind": "api",
"status": "supported",
"bin": "projects-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"
},
{
"name": "typescript-sdk",
"kind": "sdk",
"status": "supported",
"authMode": "api-key",
"exportSubpath": "./sdk",
"generatedFrom": "/openapi.json"
},
{
"name": "mcp",
"kind": "mcp",
"status": "supported",
"mcpBin": "projects-mcp",
"authMode": "local-only"
},
{
"name": "cli",
"kind": "cli",
"status": "supported",
"bin": "projects",
"authMode": "local-only"
}
],
"storage": {
"backend": "sqlite",
"engines": [
"sqlite",
"postgresql"
],
"envPrefix": "HASNA_PROJECTS_",
"aliasEnvPrefix": "PROJECTS_",
"sqlitePath": "~/.hasna/projects/projects.db",
"pgTestGate": {
"envVar": "PROJECTS_TEST_DATABASE_URL",
"command": "bun test"
}
},
"metadata": {
"healthPath": "/health",
"readyPath": "/ready",
"versionPath": "/version",
"apiBasePath": "/v1",
"auth": "api-key",
"authScopes": [
"projects:read",
"projects:write"
],
"openapiPath": "/openapi.json"
}
}