Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
252 commits
Select commit Hold shift + click to select a range
21119c1
chore(tinymcp): rename crate from template to tinymcp and update meta…
senamakel Aug 21, 2026
ce4ed4b
chore: files changed Cargo.lock
senamakel Aug 21, 2026
3138aa0
docs(specs): add MCP extraction specification
senamakel Aug 21, 2026
bd19754
docs(plans): add MCP extraction plan
senamakel Aug 21, 2026
af22084
fix(sanitize): handle edge case in input validation
senamakel Aug 21, 2026
cabebbe
fix(sanitize): add test module for sanitization logic
senamakel Aug 21, 2026
a40df36
feat(bus): expose sanitize module publicly
senamakel Aug 21, 2026
1731456
chore(tinymcp-bus): add test module for sanitize
senamakel Aug 21, 2026
b23d6b7
chore: reorder imports and re-export sanitize utilities
senamakel Aug 21, 2026
5b3a6d1
fix(sanitize): correct doc comment formatting and clarify offset shif…
senamakel Aug 21, 2026
c4ef2ae
fix(config): remove unused `ConfigValue` type
senamakel Aug 21, 2026
0a47ad8
fix(config): remove unused import in config module
senamakel Aug 21, 2026
727aa25
fix(config): handle missing config file gracefully
senamakel Aug 21, 2026
f3612b4
feat(tinymcp-bus): add optional schemars dependency for JSON Schema d…
senamakel Aug 21, 2026
c1d2a22
chore(deps): update schemars from 0.8 to 1.2
senamakel Aug 21, 2026
4695dd7
chore: files changed crates/tinymcp-bus/src/config/test.rs
senamakel Aug 21, 2026
d0de535
chore(test): suppress clippy warnings in test modules
senamakel Aug 21, 2026
1bc68dc
fix(transport): handle zero-length messages in transport layer
senamakel Aug 21, 2026
645c846
fix(transport): remove camelCase rename and simplify success error flag
senamakel Aug 21, 2026
747fa72
fix(transport): handle zero-length messages in transport layer
senamakel Aug 21, 2026
63d94ea
fix(transport): correct test assertion for connection timeout
senamakel Aug 21, 2026
4a234af
feat(tinymcp-bus): expose transport module and reformat test assertions
senamakel Aug 21, 2026
af6b7c8
fix: backtick-quote protocol names in doc comments and use const asse…
senamakel Aug 21, 2026
3e9103a
docs(plans): update MCP extraction plan with completed phases
senamakel Aug 21, 2026
c068aa6
Extract MCP sanitize and contract payload types into tinymcp-bus
senamakel Aug 21, 2026
df9471c
fix(registry): handle duplicate service registrations gracefully
senamakel Aug 21, 2026
66b1697
fix(registry): handle duplicate registration gracefully
senamakel Aug 21, 2026
0da600f
fix(registry): correct test assertion for empty topic filter
senamakel Aug 21, 2026
f94a85a
feat(registry): expose registry types and reformat tests
senamakel Aug 21, 2026
0e41f43
refactor: remove `#[non_exhaustive]` from all public structs in tinym…
senamakel Aug 21, 2026
cc53880
docs: backtick-quote code terms in doc comments and test assertions
senamakel Aug 21, 2026
26d2a42
fix: correct serde rename_all attribute syntax in types.rs
senamakel Aug 21, 2026
c70bd26
fix(registry): correct audit event type for resource registration
senamakel Aug 21, 2026
d66c347
feat(audit): add resolved accessors for write-list query fields
senamakel Aug 21, 2026
12ad5ac
fix(audit): handle missing audit log file gracefully
senamakel Aug 21, 2026
3142830
chore(tinymcp-bus): remove unused audit test file
senamakel Aug 21, 2026
d48bba4
fix(bus): handle empty name in name resolution
senamakel Aug 21, 2026
a6f362d
fix(test): correct test assertion for name validation
senamakel Aug 21, 2026
e666ac6
chore: remove unused greeting module
senamakel Aug 21, 2026
b233531
fix(bus): handle empty message payloads gracefully
senamakel Aug 21, 2026
8d328cc
test: reformat assertions in family-naming tests
senamakel Aug 21, 2026
f03361e
fix(example): update doc example to use a realistic fence marker
senamakel Aug 21, 2026
078bbb0
chore(deps): add dependencies for streamable HTTP transport, process …
senamakel Aug 21, 2026
bed1b45
feat(tinymcp): add HTTP client dependencies and TLS feature flags
senamakel Aug 21, 2026
119238c
chore: files changed crates/tinymcp/src/error/mod.rs
senamakel Aug 21, 2026
b56d19c
fix(transport): handle connection reset during read
senamakel Aug 21, 2026
b7d1185
fix(transport): handle SSE connection close on client disconnect
senamakel Aug 21, 2026
78d51b0
fix(http): handle missing Content-Type header in HTTP transport
senamakel Aug 21, 2026
623058b
fix(transport): handle missing Content-Type header gracefully
senamakel Aug 21, 2026
4902fa8
chore: remove example code, greeting module, tinybus adapter, and docs
senamakel Aug 21, 2026
c3b1e1d
fix: handle missing `#[serde(default)]` on `Content` enum
senamakel Aug 21, 2026
ee80333
chore(error): remove redundant error unit tests
senamakel Aug 21, 2026
76f1650
feat(deps): add HTTP client and async runtime dependencies
senamakel Aug 21, 2026
b343ddc
fix(transport): remove unused http transport test module
senamakel Aug 21, 2026
9cbf243
feat(transport): restrict http module visibility to crate
senamakel Aug 21, 2026
f401649
fix(error): strip URL from reqwest error in Transport variant
senamakel Aug 21, 2026
889aea2
fix(transport): correct test assertion for error message
senamakel Aug 21, 2026
44ccc6c
fix(test): correct test assertion for error message
senamakel Aug 21, 2026
5764a21
chore: reformat code for consistent style
senamakel Aug 21, 2026
e00482c
fix(http): strip proxy URL from client build error
senamakel Aug 21, 2026
5661458
fix(http): use clone_from to avoid unnecessary allocations
senamakel Aug 21, 2026
067e269
fix(http): backtick-quote OpenID in doc comment
senamakel Aug 21, 2026
411193b
test(audit): replace mutable struct patterns with struct-literal cons…
senamakel Aug 21, 2026
8c5c93c
Port the MCP registry, audit and HTTP transport into tinymcp
senamakel Aug 21, 2026
166f4d2
chore(deps): update tokio dependency to 1.44.1
senamakel Aug 21, 2026
4a9251b
fix(transport): handle stdin EOF to prevent infinite loop
senamakel Aug 21, 2026
77de743
feat(transport): expose stdio transport and add dirs dependency
senamakel Aug 21, 2026
dc80eb9
fix(transport): handle missing environment variables in spawn_env test
senamakel Aug 21, 2026
496cc19
fix(transport): handle empty input in stdio transport test
senamakel Aug 21, 2026
0632708
chore: reformat code for consistency
senamakel Aug 21, 2026
ba166d4
refactor(stdio): simplify NVM_DIR resolution and use writeln in test …
senamakel Aug 21, 2026
c08420a
Port the stdio transport and its spawn-environment probe
senamakel Aug 21, 2026
47c1b47
fix(config): handle missing server config gracefully
senamakel Aug 21, 2026
01fddc7
fix(config): correct server type field name in config
senamakel Aug 21, 2026
9a38cde
fix(config_servers): correct test assertion for server config parsing
senamakel Aug 21, 2026
03e1b14
feat(crate): expose config server types from the public API
senamakel Aug 21, 2026
4c05548
fix(registry): handle missing store directory on startup
senamakel Aug 21, 2026
4320c8f
fix(registry): correct schema validation for optional fields
senamakel Aug 21, 2026
d993fc5
fix(registry): correct type mismatch in store types
senamakel Aug 21, 2026
cbfe5d0
feat(error, registry): add store error variants and expose registry m…
senamakel Aug 21, 2026
11d86ee
feat(registry): add SQLite-based registry store with rusqlite
senamakel Aug 21, 2026
880c79b
refactor(store): derive all server columns in a single struct
senamakel Aug 21, 2026
267b092
fix(registry): correct test assertion for store initialization
senamakel Aug 21, 2026
635549c
fix(registry): make schema module accessible within crate
senamakel Aug 21, 2026
5f76207
chore(store): reformat test assertions for readability
senamakel Aug 21, 2026
110c907
feat(config): box transport enum arms to reduce memory footprint
senamakel Aug 21, 2026
6be4d2f
fix(registry): handle empty curation list gracefully
senamakel Aug 21, 2026
a78a1ba
feat(registry): add curated package metadata types
senamakel Aug 21, 2026
8d0513f
fix(registry): correct test assertion for curated tool count
senamakel Aug 21, 2026
a5a907e
fix(registry): expose curation module
senamakel Aug 21, 2026
0d61289
chore(audit): add audit module with initial structure
senamakel Aug 21, 2026
76a1303
fix(audit): handle missing audit store directory on startup
senamakel Aug 21, 2026
d12ae00
fix(audit): correct audit store type definition
senamakel Aug 21, 2026
4a7a04b
chore: files changed crates/tinymcp/src/audit/store/test.rs
senamakel Aug 21, 2026
e9385ac
chore(audit): reformat long method chains and expose audit module
senamakel Aug 21, 2026
e7835d4
fix(scope): remove unused audit re-export from public API
senamakel Aug 21, 2026
c2fb893
fix(stdio): normalize broken pipe error message
senamakel Aug 21, 2026
a742f2c
Port catalog curation and the write-audit store
senamakel Aug 21, 2026
e3b82b8
feat(tinymcp): add sha2 dependency for PKCE code challenge hashing
senamakel Aug 21, 2026
b6aaa4f
fix(oauth): remove unused imports from oauth module
senamakel Aug 21, 2026
df3829f
feat(oauth): add OAuth token types and serialization support
senamakel Aug 21, 2026
316325b
fix(oauth): handle missing token file gracefully
senamakel Aug 21, 2026
d762eab
fix(oauth): handle missing state parameter in authorization response
senamakel Aug 21, 2026
0542b8a
feat(registry): add OAuth module for credential-based authentication
senamakel Aug 21, 2026
5e6f065
fix(oauth): fix OAuth token refresh race condition
senamakel Aug 21, 2026
5600be4
feat(oauth): expose internal modules and PKCE helper for testing
senamakel Aug 21, 2026
befdeb6
chore(deps): add axum form feature and its dependencies
senamakel Aug 21, 2026
451f863
fix(registry): handle missing connection on disconnect
senamakel Aug 21, 2026
5e96e56
fix(registry): handle connection dial errors gracefully
senamakel Aug 21, 2026
4538664
fix(registry): handle missing connection status gracefully
senamakel Aug 21, 2026
1fc9129
fix(registry): handle missing connection type in registry lookup
senamakel Aug 21, 2026
1745895
feat(registry): expose connections and OAuth types from the public API
senamakel Aug 21, 2026
6bd5485
feat(connections): handle unknown transport variants
senamakel Aug 21, 2026
31f2fbe
test(connections): add comprehensive unit tests for the live connecti…
senamakel Aug 21, 2026
7a51998
feat(registry): expose Supervisor and SupervisorConfig publicly
senamakel Aug 21, 2026
c848f92
test(supervisor): add comprehensive unit tests for backoff and reconn…
senamakel Aug 21, 2026
d4b28a3
chore: files changed crates/tinymcp/src/lib.rs,crates/tinymcp/src/reg…
senamakel Aug 21, 2026
1ad6700
refactor(oauth): make remote_url a static method and clean up unused …
senamakel Aug 21, 2026
357f8e3
Port OAuth, the connection map, and the reconnect supervisor
senamakel Aug 21, 2026
1ebc35b
feat(registry): expose sources module and its public types
senamakel Aug 21, 2026
14539ca
refactor(registry): extract shared utilities from smithery and offici…
senamakel Aug 21, 2026
dc414f6
test(registry): add comprehensive unit tests for the official registr…
senamakel Aug 21, 2026
23d665c
feat(registry): expose submodules as pub(crate) and add comprehensive…
senamakel Aug 21, 2026
72d8731
chore(registry): reformat long argument lists and method chains
senamakel Aug 21, 2026
d081fed
refactor(registry): simplify cache lookup and improve encoding perfor…
senamakel Aug 21, 2026
35a9e72
fix(test): pass json arguments by reference in test helpers
senamakel Aug 21, 2026
67e25e6
Port the upstream catalog adapters
senamakel Aug 21, 2026
31e9d6f
feat(registry): expose boot module and its public API
senamakel Aug 21, 2026
79a359a
test(boot): add comprehensive unit tests for the startup connect pass
senamakel Aug 21, 2026
4164cd1
feat(registry): expose setup module and its types
senamakel Aug 21, 2026
0d8c417
feat(tinymcp): add unit tests for secret vault setup
senamakel Aug 21, 2026
6e75331
chore(tinymcp): add tokio test-util feature for timeout testing
senamakel Aug 21, 2026
8bb6d8c
fix(registry): trim raw handle before stripping scheme
senamakel Aug 21, 2026
fd8c552
chore(registry): reformat long macro and method calls for readability
senamakel Aug 21, 2026
1039d6c
Port the startup connect pass and the setup secret vault
senamakel Aug 21, 2026
a601d36
feat(tinymcp-bus): expose method module types from crate root
senamakel Aug 21, 2026
e7b1f01
feat(registry): add install operation for registry packages
senamakel Aug 21, 2026
86b6ca6
feat(registry): add types module for registry operations
senamakel Aug 21, 2026
dfa803a
feat(registry): add settings query and official token resolution
senamakel Aug 21, 2026
1b0df15
fix(registry): reorder AuthDetection import to resolve compilation error
senamakel Aug 21, 2026
fa2f831
feat(registry): expose install and types modules as pub(crate)
senamakel Aug 21, 2026
979f616
chore(ops): reformat test assertions and tidy imports
senamakel Aug 21, 2026
203529c
Port the registry operations, completing Phases 2 and 4
senamakel Aug 21, 2026
4555629
feat(registry): wrap auth config in a mutex and add runtime settings …
senamakel Aug 21, 2026
9668321
feat(registry): add guided setup flow for server installation
senamakel Aug 21, 2026
ab01139
fix(registry): expose build_http_auth for reuse in ops
senamakel Aug 21, 2026
1617ea7
feat(types): add Transport to re-exported types
senamakel Aug 21, 2026
ce685ab
feat(tinymcp): add tinybus module with configuration support
senamakel Aug 21, 2026
4c07fcb
feat(lib): expose tinybus_module types publicly
senamakel Aug 21, 2026
034a190
fix(service): correct AuthDetection import location
senamakel Aug 21, 2026
f533578
fix(registry): extract lock-guarded values before await in search and…
senamakel Aug 21, 2026
b56a85e
test(tinybus_module): add unit tests for manifest, config, and service
senamakel Aug 21, 2026
38e8266
feat(tinymcp): expose ServerDetail and rewrite tests to use service i…
senamakel Aug 21, 2026
c511d44
feat(tinymcp): add verify_module example
senamakel Aug 21, 2026
72cbb81
chore(tinymcp): reorder imports and reformat code
senamakel Aug 21, 2026
91dd50e
chore: files changed crates/tinymcp/src/registry/ops/types.rs,crates/…
senamakel Aug 21, 2026
4799d0b
docs(plans/mcp-extraction): mark Phase 5 as complete and update its d…
senamakel Aug 21, 2026
97e9877
feat(tinymcp): make tinybus dependencies optional behind a module fea…
senamakel Aug 21, 2026
aaefd29
feat(tinymcp): gate tinybus_module re-export behind module feature
senamakel Aug 21, 2026
18fe9b0
Re-export the registry facade and secret vault from the crate root
senamakel Aug 21, 2026
f259f09
feat(error): include HTTP 401 status in unauthorized error message
senamakel Aug 21, 2026
1dfdc8a
feat(error): add distinct error variants for not-connected and disabl…
senamakel Aug 21, 2026
ab3a0c9
fix(registry): distinguish missing server from disconnected server
senamakel Aug 21, 2026
dab669f
test(registry): tighten error-variant assertions in connection tests
senamakel Aug 21, 2026
a400f3d
test: add integration test for opening an existing OpenHuman database
senamakel Aug 21, 2026
5edc821
fix(test): update legacy test data to match current command kind
senamakel Aug 21, 2026
c9cfe55
docs: backtick-quote OpenHuman in test doc comments
senamakel Aug 21, 2026
7eaa0c0
Record Phase 6 step one in the plan
senamakel Aug 21, 2026
f53449e
fix: move clippy allow attribute before the interface attribute
senamakel Aug 21, 2026
9eeb795
fix: suppress clippy unused_async warning on registry_settings_get
senamakel Aug 21, 2026
cf8f651
chore(tinymcp): suppress clippy::unused_async for the interface impl
senamakel Aug 21, 2026
8f9a44f
chore(tinymcp): suppress clippy unused_async warning in service module
senamakel Aug 21, 2026
ff7153b
chore(tinymcp): move lint allow to the impl block
senamakel Aug 21, 2026
f503d99
fix: remove redundant clippy allow for unused_async
senamakel Aug 21, 2026
6d681b1
fix: update doc comment to remove stale reference to INSTRUCTION_FENC…
senamakel Aug 21, 2026
7963ca4
fix(docs): correct intra-doc links in three modules
senamakel Aug 21, 2026
415c614
docs: clarify credential merge and module reference
senamakel Aug 21, 2026
58d2c76
ci: rename package from template to tinymcp in workflows
senamakel Aug 21, 2026
2d102a8
fix: remove stale clippy allow attributes and outdated comment in Mcp…
senamakel Aug 21, 2026
eb3dd5e
feat(registry): make Smithery base URL configurable for testing
senamakel Aug 21, 2026
b4a374c
feat(registry): add test module for smithery source
senamakel Aug 21, 2026
294acb5
chore(smithery): move smithery source into a subdirectory
senamakel Aug 21, 2026
be6b4a2
test(registry): add test module for smithery source
senamakel Aug 21, 2026
5b504db
test(smithery): replace default summary with a helper that sets a name
senamakel Aug 21, 2026
68caa2b
test(smithery): add test for foreign object decoding to empty page
senamakel Aug 21, 2026
08061cb
test(registry): add integration tests for cursor-based paging and cac…
senamakel Aug 21, 2026
c190ddd
fix(test): rename variable for clarity in cache-hit test
senamakel Aug 21, 2026
59f1f8d
test(registry): add test for slash-encoded server name in detail path
senamakel Aug 21, 2026
a795173
test(tinymcp): add integration tests for every dispatchable member
senamakel Aug 21, 2026
2d82a11
test(registry): add integration tests for live MCP server interactions
senamakel Aug 21, 2026
97fa918
test(registry): update auth detection assertions to use typed enums
senamakel Aug 21, 2026
e84f891
fix(oauth): re-export AuthKind alongside AuthDetection
senamakel Aug 21, 2026
9cb0c25
feat(registry): export AuthKind from the public API
senamakel Aug 21, 2026
707aa4c
test(ops): tighten auth detection and secret-handle tests
senamakel Aug 21, 2026
2271ec9
test(oauth): add integration tests for the full OAuth flow against a …
senamakel Aug 21, 2026
683f630
test(oauth): consolidate test helpers and reduce duplication
senamakel Aug 21, 2026
539cd7c
fix(test): use reqwest::Url for parsing in authorize_param helper
senamakel Aug 21, 2026
ca4df71
test(oauth): replace GET-only fallback with bare handler in test helpers
senamakel Aug 21, 2026
76e6170
feat(error): include server response body in HTTP error messages
senamakel Aug 21, 2026
c68e660
test(error): add tests for HTTP error body rendering
senamakel Aug 21, 2026
0b55932
test(registry): add end-to-end tests for the guided setup flow
senamakel Aug 21, 2026
0642234
fix(registry): add missing import for SecretRef in test module
senamakel Aug 21, 2026
7d32269
fix(test): correct field access in credential and install tests
senamakel Aug 21, 2026
78392fc
test(http): add unit tests for header parsing and MCP parameter mirro…
senamakel Aug 21, 2026
060ad5c
chore(test): remove unused import in HTTP transport test
senamakel Aug 21, 2026
6d35694
test(http): add SSE body parsing unit tests
senamakel Aug 21, 2026
b37654d
fix(test): remove unused import of first_complete_sse_data
senamakel Aug 21, 2026
02f909a
chore: add coverage.lcov to gitignore
senamakel Aug 21, 2026
57e5bc7
test(audit, oauth): add boundary and serialization tests
senamakel Aug 21, 2026
50597da
test(audit): replace test helpers with shared fixtures
senamakel Aug 21, 2026
b0182f9
test(config_servers): add integration tests for live server registry …
senamakel Aug 21, 2026
64d96b3
fix(test): correct session close test to use client directly
senamakel Aug 21, 2026
9e47679
feat(config_servers): add close_session method to registry
senamakel Aug 21, 2026
81d5b18
test(connections): add subprocess transport and unknown transport tests
senamakel Aug 21, 2026
1f10429
chore(connections): remove test for unknown transport handling
senamakel Aug 21, 2026
f1b4dae
test(connections): update probe test to match new handshake protocol
senamakel Aug 21, 2026
68c1113
test(supervisor): add tests for supervisor loop and tick behaviour
senamakel Aug 21, 2026
c976fba
test: simplify test setup for disabled install
senamakel Aug 21, 2026
e0dc420
test(store): add tests for store open failure and corrupt JSON columns
senamakel Aug 21, 2026
c6009a7
test(registry): add shared helper tests and fix test helper usage
senamakel Aug 21, 2026
ca3a568
chore(coverage): update coverage data after adding new tests
senamakel Aug 21, 2026
b2c591d
test(stdio): add integration tests for working directory, env vars, a…
senamakel Aug 21, 2026
8ebae0c
test(stdio): add tests for banner skipping and malformed reply handling
senamakel Aug 21, 2026
4d0dc0a
test(tinybus_module): add integration tests for module setup on a rea…
senamakel Aug 21, 2026
5b41319
fix(tinymcp): make setup function testable without re-export
senamakel Aug 21, 2026
2d1b374
test(tinybus): keep serving connection alive during test
senamakel Aug 21, 2026
36d80cd
test(supervisor): add tests for supervisor resilience and reconnectio…
senamakel Aug 21, 2026
a909752
test(store): add tests for limit overflow and corrupt argument summary
senamakel Aug 21, 2026
9bf1aaa
test(audit): change absurd limit behaviour from refusal to capping
senamakel Aug 21, 2026
6a4fb3b
test(registry): add facade-path tests for install, credentials, and c…
senamakel Aug 21, 2026
314b2db
test(registry): add vault request and submit to facade test
senamakel Aug 21, 2026
bfef31d
test(registry/ops): tighten assertion in subprocess server test
senamakel Aug 21, 2026
4a7597a
chore: reformat test files and reorder imports for consistency
senamakel Aug 21, 2026
adae79d
refactor(test): reorder function definitions and replace format! with…
senamakel Aug 21, 2026
416b1bd
chore: fix formatting and trailing newline in test shell scripts
senamakel Aug 21, 2026
2c8cc52
test(connections): add missing import for fmt::Write in unix stdio tests
senamakel Aug 21, 2026
224940e
refactor(oauth): extract registration and token endpoints into a help…
senamakel Aug 21, 2026
99105e7
refactor(registry): hoist handler function out of mcp_server closure
senamakel Aug 22, 2026
452c5b4
refactor(test): hoist `envelope` helper out of `catalog` and inline p…
senamakel Aug 22, 2026
a3b37d2
Cover every source file to the 90% gate, and fix what that surfaced
senamakel Aug 22, 2026
90585e2
test: add unit tests for nvm version resolution and extract nvm_dir h…
senamakel Aug 22, 2026
28cfdf5
test(stdio): add tests for write failure error messages
senamakel Aug 22, 2026
6301704
test(stdio): replace script-writing helper with shell_client to avoid…
senamakel Aug 22, 2026
0724f39
fix(test): reformat test helper and inline script path in test
senamakel Aug 22, 2026
ac93b41
refactor(connections): replace script-file approach with inline shell…
senamakel Aug 22, 2026
6586585
chore(tinymcp): remove unused tempdir creation in stdio tests
senamakel Aug 22, 2026
c257d40
fix(test): remove unnecessary reference in shell_client call
senamakel Aug 22, 2026
330e3aa
test(stdio): replace script-writing helper with inline shell commands
senamakel Aug 22, 2026
083ca74
test(stdio): remove unused tempdir from subprocess transport tests
senamakel Aug 22, 2026
3e3b152
fix(test): remove unused tempdir from session termination test
senamakel Aug 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
blank_issues_enabled: true
contact_links:
- name: Security reports
url: https://github.com/tinyhumansai/rust-template/security/policy
url: https://github.com/tinyhumansai/tinymcp/security/policy
about: Please do not report vulnerabilities through public issues.
27 changes: 17 additions & 10 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,28 +53,35 @@ jobs:
- name: Test default features
run: cargo test

# `cargo build --all-targets` only *compiles* an example. `AGENTS.md`
# promises `cargo run -p template --example basic` works, and a compiled
# example can still fail on its first line.
- name: Run the bundled example
run: cargo run -p template --example basic
# `cargo build --all-targets` only *compiles* the cdylib, and a module
# that compiles can still fail to load: a missing ABI export, a member
# list that drifted from the contract, a panic on the first call into it.
# The release workflow runs this same example against every artifact it
# ships; running it here means a break is found on the pull request that
# caused it rather than during a release.
- name: Verify the module loads and serves its interface
run: |
set -euo pipefail
cargo build --all-features --package tinymcp --lib
cargo run --package tinymcp --example verify_module -- \
target/debug/libtinymcp.so

# `crates/template-bus` exists so a host can name the payload types
# `crates/tinymcp-bus` exists so a host can name the payload types
# without compiling the module. That promise is invisible in a diff,
# because a forbidden dependency arrives transitively through a feature
# someone enabled one crate away — so it is asserted rather than
# documented.
#
# The FORWARD form is required. `cargo tree -i <crate> -p template-bus`
# The FORWARD form is required. `cargo tree -i <crate> -p tinymcp-bus`
# discards the `-p` scope, prints the whole-workspace inverse tree, and
# exits 0 looking clean even when this crate is the one at fault.
- name: Assert the contract crate stays transport-free
run: |
set -euo pipefail
forbidden="$(cargo tree -p template-bus -e normal,build --prefix none \
forbidden="$(cargo tree -p tinymcp-bus -e normal,build --prefix none \
| grep -Ei 'tinybus|tokio|reqwest|ureq|hyper|rusqlite|git2' || true)"
if [ -n "$forbidden" ]; then
echo "template-bus pulled in a dependency its manifest forbids:" >&2
echo "tinymcp-bus pulled in a dependency its manifest forbids:" >&2
echo "$forbidden" >&2
echo >&2
echo "The contract is what a host compiles against. It must stay free" >&2
Expand Down Expand Up @@ -128,7 +135,7 @@ jobs:
run: |
set -euo pipefail
msrv="$(cargo metadata --format-version 1 --no-deps \
| jq -r '.packages[] | select(.name == "template") | .rust_version')"
| jq -r '.packages[] | select(.name == "tinymcp") | .rust_version')"
if [[ -z "$msrv" || "$msrv" == "null" ]]; then
echo "workspace.package.rust-version is not set in Cargo.toml" >&2
exit 1
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ permissions:

env:
# The workspace member that ships as the loadable module. Its package name is
# the artifact name and the library name; `crates/template-bus` rides along on
# the artifact name and the library name; `crates/tinymcp-bus` rides along on
# the same inherited version and is not packaged separately.
RELEASE_PACKAGE: template
RELEASE_PACKAGE: tinymcp

jobs:
prepare:
Expand Down Expand Up @@ -259,7 +259,7 @@ jobs:
macOS) module="target/release/lib${library_name}.dylib" ;;
*) echo "unsupported Unix runner: ${RUNNER_OS}" >&2; exit 1 ;;
esac
cargo run --locked --package template --example verify_module -- "$module"
cargo run --locked --package tinymcp --example verify_module -- "$module"

- name: Verify Windows module through TinyBus loader
if: ${{ runner.os == 'Windows' }}
Expand All @@ -270,7 +270,7 @@ jobs:
$ErrorActionPreference = 'Stop'
$libraryName = $env:CRATE_NAME.Replace('-', '_')
$module = "target/release/$libraryName.dll"
$verifyRoot = Join-Path $env:RUNNER_TEMP 'template-module-verify'
$verifyRoot = Join-Path $env:RUNNER_TEMP 'tinymcp-module-verify'
New-Item -ItemType Directory -Force $verifyRoot | Out-Null

$identity = [System.Security.Principal.WindowsIdentity]::GetCurrent()
Expand Down Expand Up @@ -300,7 +300,7 @@ jobs:

$verifiedModule = Join-Path $verifyRoot "$libraryName.dll"
Copy-Item -LiteralPath $module -Destination $verifiedModule
cargo run --locked --package template --example verify_module -- $verifiedModule
cargo run --locked --package tinymcp --example verify_module -- $verifiedModule

- name: Assemble Unix module package
if: ${{ runner.os != 'Windows' }}
Expand Down Expand Up @@ -463,7 +463,7 @@ jobs:
verify_root="/opt/${CRATE_NAME}-module-verify"
install -d -m 700 "$verify_root"
install -m 755 "target/release/lib${library_name}.so" "$verify_root/"
cargo run --locked --package template --example verify_module -- \
cargo run --locked --package tinymcp --example verify_module -- \
"$verify_root/lib${library_name}.so"

- name: Assemble distribution module package
Expand Down Expand Up @@ -587,5 +587,5 @@ jobs:
cargo run --manifest-path vendor/tinybus/Cargo.toml --locked \
--package tinybus --all-features --example github_module_host -- \
"$release_url" "$archive" "$sha256"
cargo run --locked --package template --example verify_github_release -- \
cargo run --locked --package tinymcp --example verify_github_release -- \
"$release_url" "$archive" "$sha256"
34 changes: 17 additions & 17 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,24 @@ Delete guidance that no longer applies rather than leaving it to rot.

Do this once, in a single commit, before writing feature code:

- [ ] Rename `crates/template` and `crates/template-bus` to the project's crate
names, and update `name` in each manifest plus the `template-bus` entry in
- [ ] Rename `crates/tinymcp` and `crates/tinymcp-bus` to the project's crate
names, and update `name` in each manifest plus the `tinymcp-bus` entry in
the root `[workspace.dependencies]`.
- [ ] Set `description`, `keywords`, and `categories` in each manifest, and
`repository` in the root `[workspace.package]`.
- [ ] Rename the crate references in `README.md`, both `src/lib.rs` files,
`crates/template/examples/`, and `crates/template/tests/` (search for
`template` and `template_bus`).
`crates/tinymcp/examples/`, and `crates/tinymcp/tests/` (search for
`template` and `tinymcp_bus`).
- [ ] Replace the placeholder `greeting` module in both crates with the first
real feature area — payload types in the contract crate, behavior in the
module crate — keeping the `mod.rs` / `types.rs` / `test.rs` layout.
- [ ] Confirm `license` and `LICENSE` match the project's intended license.
- [ ] Update the security contact in `SECURITY.md`.
- [ ] Rename the TinyBus interface, object path, and member constants in
`crates/template-bus/src/names/`, and the matching `provides` / `methods`
declarations in `crates/template/src/tinybus_module/`, while keeping
`crates/tinymcp-bus/src/names/`, and the matching `provides` / `methods`
declarations in `crates/tinymcp/src/tinybus_module/`, while keeping
`vendor/tinybus` pinned.
- [ ] Reset `CONTRACT_VERSION` in `crates/template-bus/src/version/` for the new
- [ ] Reset `CONTRACT_VERSION` in `crates/tinymcp-bus/src/version/` for the new
contract.
- [ ] Replace `ROADMAP.md` with the real plan, or delete it.
- [ ] Rewrite the "Project Structure" section below to describe this workspace.
Expand All @@ -39,13 +39,13 @@ Do this once, in a single commit, before writing feature code:
This is a Rust 2024 cargo workspace rooted at a virtual `Cargo.toml`. Every
crate lives under `crates/`, one directory per package, each directory named for
the package it holds. There is no root package: the crate that ships as the
loadable module is `crates/template`, the same as any other member.
loadable module is `crates/tinymcp`, the same as any other member.

```text
Cargo.toml # virtual workspace: members, [workspace.package],
# [workspace.dependencies], [workspace.lints]
crates/
├── template-bus/ # the wire contract: what crosses the bus, nothing else
├── tinymcp-bus/ # the wire contract: what crosses the bus, nothing else
│ ├── README.md # why the contract is its own crate
│ └── src/
│ ├── lib.rs # crate docs + the entire public re-export surface
Expand All @@ -72,12 +72,12 @@ docs/

### The two-crate split

`crates/template-bus` holds every type that crosses the bus and the names of the
`crates/tinymcp-bus` holds every type that crosses the bus and the names of the
members that carry them. It has no transport, no runtime, and no behavior, and
CI asserts it stays that way. A host that only makes calls depends on it alone.

`crates/template` depends on it and re-exports all of it, so
`template::GreetRequest` and `template_bus::GreetRequest` are the *same* type
`crates/tinymcp` depends on it and re-exports all of it, so
`tinymcp::GreetRequest` and `tinymcp_bus::GreetRequest` are the *same* type
rather than structural twins. That direction is load-bearing: a parallel set of
payload types for hosts would mean a conversion at every call site that nothing
checks.
Expand Down Expand Up @@ -114,7 +114,7 @@ broad ones.

Keep public exports centralized in each crate's `src/lib.rs` so downstream users
have one predictable surface. Put shared error variants in
`crates/template/src/error/mod.rs` and return the crate-wide `Result<T>` from
`crates/tinymcp/src/error/mod.rs` and return the crate-wide `Result<T>` from
fallible public APIs.

## Build And Test
Expand All @@ -133,8 +133,8 @@ Supporting commands:

- `cargo fmt --all` — format before committing.
- `cargo test <filter>` — run a focused subset while iterating.
- `cargo test -p template-bus` — run one crate's suite.
- `cargo run -p template --example basic` — run the bundled example.
- `cargo test -p tinymcp-bus` — run one crate's suite.
- `cargo run -p tinymcp --example basic` — run the bundled example.
- `cargo doc --no-deps --all-features` — build the rustdoc CI also builds with
`RUSTDOCFLAGS="-D warnings"`.
- `cargo test --doc` — run doctests alone when editing documentation examples.
Expand Down Expand Up @@ -185,7 +185,7 @@ add one:
- gate anything optional behind a Cargo feature, documented in `Cargo.toml`;
- declare it once in the root `[workspace.dependencies]` when more than one
crate needs it, and take it with `{ workspace = true }`;
- never add one to `crates/template-bus` that pulls in a transport, an async
- never add one to `crates/tinymcp-bus` that pulls in a transport, an async
runtime, an HTTP client, or a native library — CI fails the build if you do;
- leave a comment above the entry explaining *why* the crate is needed and what
uses it — see the existing entries for the expected tone;
Expand Down Expand Up @@ -295,7 +295,7 @@ Releases run from `.github/workflows/release.yml` via a manual
an interrupted release after its version commit and tag exist. The workflow
re-runs the full validation suite, computes the next version, updates
the root `[workspace.package]` version and `Cargo.lock`, commits and tags
`vX.Y.Z`, builds `crates/template` as a TinyBus module for every supported
`vX.Y.Z`, builds `crates/tinymcp` as a TinyBus module for every supported
platform, pushes, and creates an immutable GitHub release with installable
native packages.

Expand Down
Loading