-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCHANGELOG.json
More file actions
202 lines (202 loc) · 13.5 KB
/
CHANGELOG.json
File metadata and controls
202 lines (202 loc) · 13.5 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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
{
"irVersion": "1.0",
"project": "omniskill",
"repository": "https://github.com/plexusone/omniskill",
"versioning": "semver",
"commitConvention": "conventional",
"maintainers": ["plexusone"],
"releases": [
{
"version": "v0.7.0",
"date": "2026-04-26",
"highlights": [
{ "description": "New `pack/` package for embedding markdown skill bundles" }
],
"added": [
{ "description": "`pack.SkillPack` interface for embedding markdown skills via go:embed", "commit": "a9198d7" },
{ "description": "`SkillPack.Name()` returns pack identifier (e.g., \"omniagent-skills\")", "commit": "a9198d7" },
{ "description": "`SkillPack.Version()` returns pack version or source commit hash", "commit": "a9198d7" },
{ "description": "`SkillPack.FS()` returns embedded filesystem with skills at `skills/<name>/SKILL.md`", "commit": "a9198d7" }
],
"documentation": [
{ "description": "Package documentation with usage examples", "commit": "a9198d7" }
]
},
{
"version": "v0.6.0",
"date": "2026-04-26",
"highlights": [
{ "description": "Project renamed from MCPKit to OmniSkill" },
{ "description": "New `skill/` package with unified skill infrastructure for AI agents" },
{ "description": "Registry package for skill and tool management" }
],
"breaking": [
{ "description": "Module path changed from `github.com/plexusone/mcpkit` to `github.com/plexusone/omniskill`", "commit": "9251c85" },
{ "description": "MCP packages moved under `mcp/` subpackage: `runtime` → `mcp/runtime`, `oauth2` → `mcp/oauth2`, `client` → `mcp/client`", "commit": "9251c85" }
],
"upgradeGuide": [
{ "description": "Update imports: replace `github.com/plexusone/mcpkit/runtime` with `github.com/plexusone/omniskill/mcp/runtime`" },
{ "description": "Update imports: replace `github.com/plexusone/mcpkit/oauth2` with `github.com/plexusone/omniskill/mcp/oauth2`" },
{ "description": "Update imports: replace `github.com/plexusone/mcpkit/client` with `github.com/plexusone/omniskill/mcp/client`" },
{ "description": "Run `go mod tidy` to update dependencies" }
],
"added": [
{ "description": "`skill.Skill` interface defining `Name()`, `Description()`, `Tools()`, `Init()`, and `Close()` methods", "commit": "475d66f" },
{ "description": "`skill.Tool` interface for callable tools with `Name()`, `Description()`, `Parameters()`, and `Call()` methods", "commit": "475d66f" },
{ "description": "`skill.FuncTool` struct implementing `Tool` interface with function handler", "commit": "475d66f" },
{ "description": "`skill.NewTool()` constructor for creating tools with parameters and handlers", "commit": "475d66f" },
{ "description": "`skill.Parameter` type with JSON Schema-compatible fields (Type, Description, Required, Default, Enum, Items, Properties)", "commit": "475d66f" },
{ "description": "`skill.BaseSkill` helper struct for simple skill implementations", "commit": "475d66f" },
{ "description": "`skill.ParametersToJSONSchema()` for converting parameters to JSON Schema format", "commit": "475d66f" },
{ "description": "`skill.ToJSONSchema()` for generating complete tool JSON Schema for LLM function calling", "commit": "2d3e1be" },
{ "description": "`registry.Registry` for managing skills and discovering tools", "commit": "705bb5e" },
{ "description": "`registry.Register()` and `registry.Unregister()` for skill lifecycle management", "commit": "705bb5e" },
{ "description": "`registry.Get()`, `registry.List()`, `registry.Count()` for skill access", "commit": "705bb5e" },
{ "description": "`registry.GetTool()`, `registry.ListTools()`, `registry.FindTool()` for tool discovery", "commit": "705bb5e" },
{ "description": "`registry.Init()` and `registry.Close()` for batch skill lifecycle", "commit": "705bb5e" },
{ "description": "`mcp/runtime.RegisterSkill()` for exposing skill tools as MCP tools", "commit": "063b657" },
{ "description": "`mcp/runtime.RegisterRegistry()` for auto-registering all skills from a registry", "commit": "0a202c6" },
{ "description": "`mcp/client.Session.AsSkill()` for wrapping MCP sessions as skills", "commit": "b66c5f9" }
],
"documentation": [
{ "description": "MkDocs site with comprehensive documentation", "commit": "7efc6bc" },
{ "description": "Concepts documentation for skills, tools, and registry", "commit": "7efc6bc" },
{ "description": "Release notes reorganized under `docs/releases/`", "commit": "c574834" }
]
},
{
"version": "v0.5.0",
"date": "2026-04-26",
"highlights": [
{ "description": "MCP client package for connecting to external MCP servers" }
],
"added": [
{ "description": "`client/` package for MCP client connections", "commit": "cad03e5" },
{ "description": "`client.New()` constructor with configurable client name and version", "commit": "cad03e5" },
{ "description": "`client.Connect()` for establishing sessions with any MCP transport", "commit": "cad03e5" },
{ "description": "`client.ConnectCommand()` for spawning MCP servers as subprocesses", "commit": "cad03e5" },
{ "description": "`Session.ListTools()` for discovering available tools from MCP server", "commit": "cad03e5" },
{ "description": "`Session.CallTool()` for invoking tools on MCP server", "commit": "cad03e5" },
{ "description": "`Session.MCPSession()` escape hatch for advanced MCP SDK access", "commit": "cad03e5" }
]
},
{
"version": "v0.4.0",
"date": "2026-03-07",
"highlights": [
{ "description": "Organization renamed from agentplexus to plexusone" },
{ "description": "Changelog format updated to camelCase for ecosystem consistency" }
],
"breaking": [
{ "description": "Module path changed from `github.com/agentplexus/mcpkit` to `github.com/plexusone/mcpkit`" }
],
"upgradeGuide": [
{ "description": "Update imports: replace `github.com/agentplexus/mcpkit` with `github.com/plexusone/mcpkit`" },
{ "description": "Run `go mod tidy` to update dependencies" }
],
"changed": [
{ "description": "All package imports updated to `github.com/plexusone/mcpkit`" },
{ "description": "Documentation and badge URLs updated to plexusone organization" },
{ "description": "Changelog JSON format migrated from snake_case to camelCase" }
]
},
{
"version": "v0.3.1",
"date": "2026-01-18",
"highlights": [
{ "description": "Security fix for open URL redirect vulnerability in OAuth2 server" }
],
"security": [
{ "description": "Close open URL redirect vulnerability in `isValidRedirectURI` - wildcards no longer allow arbitrary redirect URIs", "commit": "edac011" }
],
"fixed": [
{ "description": "OAuth2 redirect URI validation now properly parses and validates URIs structurally", "commit": "edac011" }
]
},
{
"version": "v0.3.0",
"date": "2026-01-18",
"highlights": [
{ "description": "Project renamed to MCPKit under github.com/plexusone/mcpkit" },
{ "description": "Restructured into focused subpackages: `runtime/` and `oauth2/`" },
{ "description": "Improved error handling following Go best practices" }
],
"changed": [
{ "description": "Module path changed from `github.com/grokify/mcpruntime` to `github.com/plexusone/mcpkit`", "commit": "692c7c7" },
{ "description": "Core runtime code moved to `runtime/` subpackage - import `github.com/plexusone/mcpkit/runtime`", "commit": "298f19b" },
{ "description": "OAuth2 server moved from `oauth2server/` to `oauth2/` - import `github.com/plexusone/mcpkit/oauth2`", "commit": "298f19b" },
{ "description": "Package references changed from `mcpkit.` to `runtime.` for runtime types", "commit": "298f19b" }
],
"fixed": [
{ "description": "Error handling for `fmt.Fprintf` in OAuth login error page", "commit": "692c7c7" },
{ "description": "Error handling for `resp.Body.Close()` in all test files", "commit": "692c7c7" }
],
"breaking": [
{ "description": "Import path changed: update `github.com/grokify/mcpruntime` to `github.com/plexusone/mcpkit/runtime`", "commit": "298f19b" },
{ "description": "Package name changed: update `mcpruntime.` or `mcpkit.` references to `runtime.`", "commit": "298f19b" },
{ "description": "OAuth2 server import path changed: update `oauth2server` to `github.com/plexusone/mcpkit/oauth2`", "commit": "298f19b" }
]
},
{
"version": "v0.2.0",
"date": "2026-01-11",
"highlights": [
{ "description": "OAuth 2.1 Authorization Code + PKCE support for ChatGPT.com and other MCP clients requiring user authentication" },
{ "description": "HTTP server mode with optional ngrok tunnel for public URL exposure" },
{ "description": "Bearer token authentication for protecting MCP endpoints" }
],
"added": [
{ "description": "`ServeHTTP()` method for HTTP transport with graceful shutdown", "commit": "bb710f5" },
{ "description": "`NgrokOptions` for automatic ngrok tunnel creation with custom domain support", "commit": "bb710f5" },
{ "description": "`OAuth2Options` for OAuth 2.1 Authorization Code + PKCE authentication", "commit": "bb710f5" },
{ "description": "`oauth2server` package implementing RFC 7636 (PKCE), RFC 7591 (DCR), RFC 8414, RFC 9728", "commit": "bb710f5" },
{ "description": "Bearer token authentication middleware for protected MCP endpoints", "commit": "bb710f5" },
{ "description": "`HTTPServerResult` with local and public URLs plus OAuth credentials", "commit": "bb710f5" },
{ "description": "`OnReady` callback in `HTTPServerOptions` for server lifecycle events", "commit": "bb710f5" }
],
"deprecated": [
{ "description": "`OAuthOptions` (client_credentials only) in favor of `OAuth2Options` with full OAuth 2.1 PKCE support", "commit": "bb710f5" }
]
},
{
"version": "v0.1.0",
"date": "2026-01-10",
"highlights": [
{ "description": "Library-first MCP runtime: define tools, prompts, and resources once, invoke them directly as Go functions or expose over MCP transports" },
{ "description": "Zero JSON-RPC overhead in library mode for unit testing, embedding, and serverless use cases" },
{ "description": "Full MCP SDK compatibility with escape hatch for advanced features" }
],
"added": [
{ "description": "`Runtime` type wrapping `mcp.Server` with dual execution modes (library and server)", "commit": "1e973a1" },
{ "description": "`New()` constructor with `Options` for runtime configuration", "commit": "1e973a1" },
{ "description": "`MCPServer()` escape hatch for advanced MCP SDK access", "commit": "1e973a1" },
{ "description": "`Implementation()` getter for server identity", "commit": "1e973a1" },
{ "description": "`AddTool[In, Out]()` generic helper with automatic schema inference", "commit": "f7b0c03" },
{ "description": "`AddToolHandler()` low-level tool registration", "commit": "f7b0c03" },
{ "description": "`CallTool()` for library-mode direct invocation", "commit": "1e973a1" },
{ "description": "`RemoveTools()`, `ListTools()`, `HasTool()`, `ToolCount()` tool management methods", "commit": "1e973a1" },
{ "description": "`AddPrompt()` for prompt registration", "commit": "2f85413" },
{ "description": "`GetPrompt()` for library-mode direct invocation", "commit": "2f85413" },
{ "description": "`RemovePrompts()`, `ListPrompts()`, `HasPrompt()`, `PromptCount()` prompt management methods", "commit": "2f85413" },
{ "description": "`AddResource()` for static resource registration", "commit": "a7e7816" },
{ "description": "`AddResourceTemplate()` for dynamic URI template resources (server mode only)", "commit": "a7e7816" },
{ "description": "`ReadResource()` for library-mode direct invocation", "commit": "a7e7816" },
{ "description": "`RemoveResources()`, `RemoveResourceTemplates()` resource removal methods", "commit": "a7e7816" },
{ "description": "`ListResources()`, `HasResource()`, `ResourceCount()` resource management methods", "commit": "a7e7816" },
{ "description": "`ServeStdio()` for stdio transport (subprocess mode)", "commit": "d9ed342" },
{ "description": "`ServeIO()` for custom IO streams", "commit": "d9ed342" },
{ "description": "`Serve()` for custom MCP transports", "commit": "d9ed342" },
{ "description": "`Connect()` for session-based connections", "commit": "d9ed342" },
{ "description": "`StreamableHTTPHandler()` for HTTP/SSE transport", "commit": "d9ed342" },
{ "description": "`SSEHandler()` for legacy SSE transport", "commit": "d9ed342" },
{ "description": "`InMemorySession()` for testing with full MCP semantics", "commit": "d9ed342" }
],
"documentation": [
{ "description": "Comprehensive README with library and server mode examples", "commit": "9d08047" },
{ "description": "Feature comparison matrix (library vs server mode)", "commit": "9d08047" },
{ "description": "MCP feature adoption guidance", "commit": "9d08047" },
{ "description": "Full API reference documentation", "commit": "9d08047" }
]
}
]
}