@pulsemcp/air-core 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,135 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/pulsemcp/air/main/schemas/mcp.schema.json",
4
+ "title": "AIR MCP Servers Configuration",
5
+ "description": "Configuration file defining MCP (Model Context Protocol) servers. Follows the mcp.json open standard — a flat map of server names to fully-resolved connection configurations.",
6
+ "type": "object",
7
+ "properties": {
8
+ "$schema": {
9
+ "type": "string",
10
+ "description": "JSON Schema reference for validation."
11
+ }
12
+ },
13
+ "additionalProperties": {
14
+ "$ref": "#/$defs/ServerConfiguration"
15
+ },
16
+ "propertyNames": {
17
+ "pattern": "^[$a-zA-Z0-9_\\[\\]-]+$",
18
+ "description": "Server name (identifier key). Must be alphanumeric with hyphens, underscores, or brackets allowed."
19
+ },
20
+ "$defs": {
21
+ "OAuthConfiguration": {
22
+ "type": "object",
23
+ "description": "OAuth configuration for remote servers using OAuth authorization.",
24
+ "properties": {
25
+ "clientId": {
26
+ "type": "string",
27
+ "description": "OAuth client ID. If omitted, the client uses Dynamic Client Registration (DCR) or discovery."
28
+ },
29
+ "scopes": {
30
+ "type": "array",
31
+ "items": {
32
+ "type": "string",
33
+ "minLength": 1
34
+ },
35
+ "description": "OAuth scopes to request in the authorization request. Passed as the scope parameter (RFC 6749 §3.3)."
36
+ },
37
+ "redirectUri": {
38
+ "type": "string",
39
+ "format": "uri",
40
+ "description": "Redirect URI for the OAuth callback. For CLI/desktop clients this is typically http://localhost:{port}/callback (RFC 8252)."
41
+ }
42
+ },
43
+ "additionalProperties": false
44
+ },
45
+ "ServerConfiguration": {
46
+ "type": "object",
47
+ "description": "Configuration for a single MCP server.",
48
+ "properties": {
49
+ "title": {
50
+ "type": "string",
51
+ "minLength": 1,
52
+ "maxLength": 100,
53
+ "description": "Human-readable display name for the server."
54
+ },
55
+ "description": {
56
+ "type": "string",
57
+ "maxLength": 500,
58
+ "description": "Human-readable description of what the server provides."
59
+ },
60
+ "type": {
61
+ "type": "string",
62
+ "enum": ["stdio", "sse", "streamable-http"],
63
+ "description": "Transport type. 'stdio' for local process servers, 'sse' for Server-Sent Events, 'streamable-http' for HTTP streaming."
64
+ },
65
+ "command": {
66
+ "type": "string",
67
+ "description": "Executable command to run for stdio servers. Supports ${ENV_VAR} interpolation."
68
+ },
69
+ "args": {
70
+ "type": "array",
71
+ "items": {
72
+ "type": "string"
73
+ },
74
+ "description": "Command-line arguments for stdio servers. Supports ${ENV_VAR} interpolation."
75
+ },
76
+ "env": {
77
+ "type": "object",
78
+ "additionalProperties": {
79
+ "type": "string"
80
+ },
81
+ "description": "Environment variables for the server process. Values support ${ENV_VAR} interpolation."
82
+ },
83
+ "url": {
84
+ "type": "string",
85
+ "format": "uri",
86
+ "description": "Endpoint URL for sse or streamable-http servers. Supports ${ENV_VAR} interpolation."
87
+ },
88
+ "headers": {
89
+ "type": "object",
90
+ "additionalProperties": {
91
+ "type": "string"
92
+ },
93
+ "description": "HTTP headers for remote servers. Values support ${ENV_VAR} interpolation."
94
+ },
95
+ "oauth": {
96
+ "$ref": "#/$defs/OAuthConfiguration"
97
+ }
98
+ },
99
+ "required": ["type"],
100
+ "allOf": [
101
+ {
102
+ "if": {
103
+ "properties": {
104
+ "type": { "const": "stdio" }
105
+ },
106
+ "required": ["type"]
107
+ },
108
+ "then": {
109
+ "required": ["command"],
110
+ "properties": {
111
+ "url": false,
112
+ "headers": false,
113
+ "oauth": false
114
+ }
115
+ }
116
+ },
117
+ {
118
+ "if": {
119
+ "properties": {
120
+ "type": { "enum": ["sse", "streamable-http"] }
121
+ },
122
+ "required": ["type"]
123
+ },
124
+ "then": {
125
+ "required": ["url"],
126
+ "properties": {
127
+ "command": false,
128
+ "args": false
129
+ }
130
+ }
131
+ }
132
+ ]
133
+ }
134
+ }
135
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/pulsemcp/air/main/schemas/plugins.schema.json",
4
+ "title": "AIR Plugins Index",
5
+ "description": "Index of agent plugins available in this AIR configuration. Plugins extend agent capabilities beyond what MCP servers and skills provide. AIR plugins are agent-agnostic and translated to agent-specific formats at session start time.",
6
+ "type": "object",
7
+ "properties": {
8
+ "$schema": {
9
+ "type": "string",
10
+ "description": "JSON Schema reference for validation."
11
+ }
12
+ },
13
+ "additionalProperties": {
14
+ "$ref": "#/$defs/Plugin"
15
+ },
16
+ "propertyNames": {
17
+ "pattern": "^[$a-zA-Z0-9_-]+$",
18
+ "description": "Plugin identifier key. Must be alphanumeric with hyphens or underscores."
19
+ },
20
+ "$defs": {
21
+ "Plugin": {
22
+ "type": "object",
23
+ "description": "An agent plugin that extends capabilities via external commands.",
24
+ "properties": {
25
+ "id": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "pattern": "^[a-zA-Z0-9_-]+$",
29
+ "description": "Unique identifier for this plugin. Must match the key in the parent object."
30
+ },
31
+ "title": {
32
+ "type": "string",
33
+ "minLength": 1,
34
+ "maxLength": 100,
35
+ "description": "Human-readable display name for the plugin."
36
+ },
37
+ "description": {
38
+ "type": "string",
39
+ "minLength": 1,
40
+ "maxLength": 500,
41
+ "description": "Concise description of what this plugin does."
42
+ },
43
+ "type": {
44
+ "type": "string",
45
+ "enum": ["command"],
46
+ "description": "Plugin type. Currently only 'command' is supported."
47
+ },
48
+ "command": {
49
+ "type": "string",
50
+ "description": "Executable command to run for this plugin."
51
+ },
52
+ "args": {
53
+ "type": "array",
54
+ "items": {
55
+ "type": "string"
56
+ },
57
+ "description": "Command-line arguments for the plugin command."
58
+ },
59
+ "env": {
60
+ "type": "object",
61
+ "additionalProperties": {
62
+ "type": "string"
63
+ },
64
+ "description": "Environment variables for the plugin process. Values support ${ENV_VAR} interpolation."
65
+ },
66
+ "timeout_seconds": {
67
+ "type": "number",
68
+ "minimum": 1,
69
+ "description": "Maximum execution time in seconds before the plugin is killed."
70
+ }
71
+ },
72
+ "required": ["id", "description", "type", "command"],
73
+ "additionalProperties": false
74
+ }
75
+ }
76
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/pulsemcp/air/main/schemas/references.schema.json",
4
+ "title": "AIR References Index",
5
+ "description": "Index of reference documents shared across skills and agents. References are broken out from skills to keep documentation DRY — a single reference can be used by multiple skills.",
6
+ "type": "object",
7
+ "properties": {
8
+ "$schema": {
9
+ "type": "string",
10
+ "description": "JSON Schema reference for validation."
11
+ }
12
+ },
13
+ "additionalProperties": {
14
+ "$ref": "#/$defs/Reference"
15
+ },
16
+ "propertyNames": {
17
+ "pattern": "^[$a-zA-Z0-9_-]+$",
18
+ "description": "Reference identifier key. Must be alphanumeric with hyphens or underscores."
19
+ },
20
+ "$defs": {
21
+ "Reference": {
22
+ "type": "object",
23
+ "description": "A shared reference document that can be attached to multiple skills.",
24
+ "properties": {
25
+ "id": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "pattern": "^[a-zA-Z0-9_-]+$",
29
+ "description": "Unique identifier for this reference. Must match the key in the parent object."
30
+ },
31
+ "title": {
32
+ "type": "string",
33
+ "minLength": 1,
34
+ "maxLength": 100,
35
+ "description": "Human-readable display name for the reference."
36
+ },
37
+ "description": {
38
+ "type": "string",
39
+ "minLength": 1,
40
+ "maxLength": 500,
41
+ "description": "Concise description of what knowledge this reference contains."
42
+ },
43
+ "file": {
44
+ "type": "string",
45
+ "description": "Relative path to the reference document file (typically Markdown)."
46
+ }
47
+ },
48
+ "required": ["id", "description", "file"],
49
+ "additionalProperties": false
50
+ }
51
+ }
52
+ }
@@ -0,0 +1,97 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/pulsemcp/air/main/schemas/roots.schema.json",
4
+ "title": "AIR Roots Index",
5
+ "description": "Index of agent root configurations. A root is a self-contained agent workspace — a git repository (or subdirectory within one) that contains everything an agent needs to operate in a specific domain.",
6
+ "type": "object",
7
+ "properties": {
8
+ "$schema": {
9
+ "type": "string",
10
+ "description": "JSON Schema reference for validation."
11
+ }
12
+ },
13
+ "additionalProperties": {
14
+ "$ref": "#/$defs/Root"
15
+ },
16
+ "propertyNames": {
17
+ "pattern": "^[$a-zA-Z0-9_-]+$",
18
+ "description": "Root identifier key. Must be alphanumeric with hyphens or underscores."
19
+ },
20
+ "$defs": {
21
+ "Root": {
22
+ "type": "object",
23
+ "description": "An agent root — a self-contained workspace for a specific domain.",
24
+ "properties": {
25
+ "name": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "pattern": "^[a-zA-Z0-9_-]+$",
29
+ "description": "Unique identifier for this root. Must match the key in the parent object."
30
+ },
31
+ "display_name": {
32
+ "type": "string",
33
+ "minLength": 1,
34
+ "maxLength": 100,
35
+ "description": "Human-readable display name."
36
+ },
37
+ "description": {
38
+ "type": "string",
39
+ "minLength": 1,
40
+ "maxLength": 500,
41
+ "description": "What this agent root is for. Should be clear to anyone in the organization."
42
+ },
43
+ "url": {
44
+ "type": "string",
45
+ "description": "Git repository URL for this root."
46
+ },
47
+ "default_branch": {
48
+ "type": "string",
49
+ "description": "Default branch to use when cloning (defaults to 'main')."
50
+ },
51
+ "subdirectory": {
52
+ "type": "string",
53
+ "description": "Path within the repository to the root directory (for monorepo setups)."
54
+ },
55
+ "default_mcp_servers": {
56
+ "type": "array",
57
+ "items": {
58
+ "type": "string"
59
+ },
60
+ "description": "IDs of MCP servers to activate by default for sessions using this root."
61
+ },
62
+ "default_skills": {
63
+ "type": "array",
64
+ "items": {
65
+ "type": "string"
66
+ },
67
+ "description": "IDs of skills to make available by default for sessions using this root."
68
+ },
69
+ "default_plugins": {
70
+ "type": "array",
71
+ "items": {
72
+ "type": "string"
73
+ },
74
+ "description": "IDs of plugins to activate by default for sessions using this root."
75
+ },
76
+ "default_hooks": {
77
+ "type": "array",
78
+ "items": {
79
+ "type": "string"
80
+ },
81
+ "description": "IDs of hooks to activate by default for sessions using this root."
82
+ },
83
+ "user_invocable": {
84
+ "type": "boolean",
85
+ "description": "Whether this root can be directly invoked by users to start a session.",
86
+ "default": true
87
+ },
88
+ "default_stop_condition": {
89
+ "type": "string",
90
+ "description": "Default condition that signals the agent should hand back control (e.g., 'open-reviewed-green-pr')."
91
+ }
92
+ },
93
+ "required": ["name", "description"],
94
+ "additionalProperties": false
95
+ }
96
+ }
97
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/pulsemcp/air/main/schemas/skills.schema.json",
4
+ "title": "AIR Skills Index",
5
+ "description": "Index of reusable skills available in this AIR configuration. Each skill is a self-contained, invocable unit of work defined by a SKILL.md file.",
6
+ "type": "object",
7
+ "properties": {
8
+ "$schema": {
9
+ "type": "string",
10
+ "description": "JSON Schema reference for validation."
11
+ }
12
+ },
13
+ "additionalProperties": {
14
+ "$ref": "#/$defs/Skill"
15
+ },
16
+ "propertyNames": {
17
+ "pattern": "^[$a-zA-Z0-9_-]+$",
18
+ "description": "Skill identifier key. Must be alphanumeric with hyphens or underscores."
19
+ },
20
+ "$defs": {
21
+ "Skill": {
22
+ "type": "object",
23
+ "description": "A reusable, invocable unit of work for an AI agent.",
24
+ "properties": {
25
+ "id": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "pattern": "^[a-zA-Z0-9_-]+$",
29
+ "description": "Unique identifier for this skill. Must match the key in the parent object."
30
+ },
31
+ "title": {
32
+ "type": "string",
33
+ "minLength": 1,
34
+ "maxLength": 100,
35
+ "description": "Human-readable display name for the skill."
36
+ },
37
+ "description": {
38
+ "type": "string",
39
+ "minLength": 1,
40
+ "maxLength": 500,
41
+ "description": "Concise description of what this skill does. Should be clear enough that anyone in the organization can understand its purpose."
42
+ },
43
+ "path": {
44
+ "type": "string",
45
+ "description": "Relative path to the skill directory containing SKILL.md."
46
+ },
47
+ "references": {
48
+ "type": "array",
49
+ "items": {
50
+ "type": "string"
51
+ },
52
+ "description": "IDs of reference documents this skill depends on. Keeps references DRY across skills."
53
+ }
54
+ },
55
+ "required": ["id", "description", "path"],
56
+ "additionalProperties": false
57
+ }
58
+ }
59
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/pulsemcp/air/main/schemas/skills.schema.json",
4
+ "title": "AIR Skills Index",
5
+ "description": "Index of reusable skills available in this AIR configuration. Each skill is a self-contained, invocable unit of work defined by a SKILL.md file.",
6
+ "type": "object",
7
+ "properties": {
8
+ "$schema": {
9
+ "type": "string",
10
+ "description": "JSON Schema reference for validation."
11
+ }
12
+ },
13
+ "additionalProperties": {
14
+ "$ref": "#/$defs/Skill"
15
+ },
16
+ "propertyNames": {
17
+ "pattern": "^[$a-zA-Z0-9_-]+$",
18
+ "description": "Skill identifier key. Must be alphanumeric with hyphens or underscores."
19
+ },
20
+ "$defs": {
21
+ "Skill": {
22
+ "type": "object",
23
+ "description": "A reusable, invocable unit of work for an AI agent.",
24
+ "properties": {
25
+ "id": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "pattern": "^[a-zA-Z0-9_-]+$",
29
+ "description": "Unique identifier for this skill. Must match the key in the parent object."
30
+ },
31
+ "title": {
32
+ "type": "string",
33
+ "minLength": 1,
34
+ "maxLength": 100,
35
+ "description": "Human-readable display name for the skill."
36
+ },
37
+ "description": {
38
+ "type": "string",
39
+ "minLength": 1,
40
+ "maxLength": 500,
41
+ "description": "Concise description of what this skill does. Should be clear enough that anyone in the organization can understand its purpose."
42
+ },
43
+ "path": {
44
+ "type": "string",
45
+ "description": "Relative path to the skill directory containing SKILL.md."
46
+ },
47
+ "references": {
48
+ "type": "array",
49
+ "items": {
50
+ "type": "string"
51
+ },
52
+ "description": "IDs of reference documents this skill depends on. Keeps references DRY across skills."
53
+ }
54
+ },
55
+ "required": ["id", "description", "path"],
56
+ "additionalProperties": false
57
+ }
58
+ }
59
+ }