matimo 0.1.0-alpha.1 → 0.1.0-alpha.3
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.
- package/README.md +83 -28
- package/dist/core/schema.d.ts +1 -1
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/schema.js +8 -3
- package/dist/core/schema.js.map +1 -1
- package/dist/core/tool-loader.d.ts.map +1 -1
- package/dist/core/tool-loader.js +15 -4
- package/dist/core/tool-loader.js.map +1 -1
- package/dist/core/tool-registry.d.ts.map +1 -1
- package/dist/core/tool-registry.js +5 -1
- package/dist/core/tool-registry.js.map +1 -1
- package/dist/decorators/tool-decorator.d.ts.map +1 -1
- package/dist/decorators/tool-decorator.js +7 -4
- package/dist/decorators/tool-decorator.js.map +1 -1
- package/dist/encodings/parameter-encoding.d.ts.map +1 -1
- package/dist/encodings/parameter-encoding.js +9 -2
- package/dist/encodings/parameter-encoding.js.map +1 -1
- package/dist/executors/command-executor.d.ts.map +1 -1
- package/dist/executors/command-executor.js +5 -1
- package/dist/executors/command-executor.js.map +1 -1
- package/dist/executors/http-executor.d.ts.map +1 -1
- package/dist/executors/http-executor.js +5 -1
- package/dist/executors/http-executor.js.map +1 -1
- package/package.json +4 -4
- package/tools/calculator/calculator.ts +78 -0
- package/tools/calculator/definition.yaml +71 -0
- package/tools/echo-tool/definition.yaml +35 -0
- package/tools/examples/calculator.yaml +54 -0
- package/tools/examples/echo-tool.yaml +35 -0
- package/tools/examples/http-client.yaml +66 -0
- package/tools/github/definition.yaml +41 -0
- package/tools/gmail/README.md +1189 -0
- package/tools/gmail/create-draft/definition.yaml +99 -0
- package/tools/gmail/definition.yaml +49 -0
- package/tools/gmail/delete-message/definition.yaml +42 -0
- package/tools/gmail/get-message/definition.yaml +89 -0
- package/tools/gmail/list-messages/definition.yaml +84 -0
- package/tools/gmail/send-email/definition.yaml +95 -0
- package/tools/http-client/definition.yaml +73 -0
- package/tools/slack/README.md +200 -0
- package/tools/slack/assets/icon.svg +9 -0
- package/tools/slack/assets/logo-dark.svg +14 -0
- package/tools/slack/assets/logo-light.svg +14 -0
- package/tools/slack/assets/logo.svg +14 -0
- package/tools/slack/definition.yaml +54 -0
- package/tools/slack/get-user/definition.yaml +31 -0
- package/tools/slack/list-channels/definition.yaml +46 -0
- package/tools/slack/send-message/definition.yaml +30 -0
- package/tools/slack/slack_add_reaction/definition.yaml +45 -0
- package/tools/slack/slack_create_channel/definition.yaml +41 -0
- package/tools/slack/slack_get_channel_history/definition.yaml +58 -0
- package/tools/slack/slack_get_reactions/definition.yaml +36 -0
- package/tools/slack/slack_get_thread_replies/definition.yaml +45 -0
- package/tools/slack/slack_get_user_info/definition.yaml +32 -0
- package/tools/slack/slack_join_channel/definition.yaml +35 -0
- package/tools/slack/slack_reply_to_message/definition.yaml +49 -0
- package/tools/slack/slack_search_messages/definition.yaml +46 -0
- package/tools/slack/slack_send_channel_message/definition.yaml +34 -0
- package/tools/slack/slack_send_dm/definition.yaml +37 -0
- package/tools/slack/slack_set_channel_topic/definition.yaml +40 -0
- package/tools/slack/slack_upload_file/definition.yaml +152 -0
- package/docs/Gemfile +0 -5
- package/docs/RELEASES.md +0 -69
- package/docs/ROADMAP.md +0 -138
- package/docs/_config.yml +0 -27
- package/docs/api-reference/ERRORS.md +0 -445
- package/docs/api-reference/SDK.md +0 -582
- package/docs/api-reference/TYPES.md +0 -415
- package/docs/architecture/OAUTH.md +0 -1366
- package/docs/architecture/OVERVIEW.md +0 -564
- package/docs/assets/logo.png +0 -0
- package/docs/community/COMMIT_GUIDELINES.md +0 -552
- package/docs/framework-integrations/LANGCHAIN.md +0 -286
- package/docs/getting-started/QUICK_START.md +0 -211
- package/docs/getting-started/YOUR_FIRST_TOOL.md +0 -217
- package/docs/getting-started/installation.md +0 -124
- package/docs/index.md +0 -288
- package/docs/tool-development/DECORATOR_GUIDE.md +0 -633
- package/docs/tool-development/OAUTH_LINK.md +0 -5
- package/docs/tool-development/PROVIDER_CONFIGURATION.md +0 -458
- package/docs/tool-development/TESTING.md +0 -412
- package/docs/tool-development/TOOL_SPECIFICATION.md +0 -793
- package/docs/tool-development/YAML_TOOLS.md +0 -65
- package/docs/troubleshooting/FAQ.md +0 -391
- package/docs/user-guide/AUTHENTICATION.md +0 -255
- package/docs/user-guide/DEVELOPMENT_STANDARDS.md +0 -698
- package/docs/user-guide/SDK_PATTERNS.md +0 -316
- package/docs/user-guide/TOOL_DISCOVERY.md +0 -209
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
name: slack_join_channel
|
|
2
|
+
description: |-
|
|
3
|
+
Add bot to a channel.
|
|
4
|
+
Uses conversations.join API method.
|
|
5
|
+
Bot must be invited to private channels by an admin first.
|
|
6
|
+
version: '1.0.0'
|
|
7
|
+
parameters:
|
|
8
|
+
channel:
|
|
9
|
+
type: string
|
|
10
|
+
required: true
|
|
11
|
+
description: |-
|
|
12
|
+
Channel ID or name to join.
|
|
13
|
+
Format: C followed by alphanumeric (e.g., C123456)
|
|
14
|
+
execution:
|
|
15
|
+
type: http
|
|
16
|
+
method: POST
|
|
17
|
+
url: 'https://slack.com/api/conversations.join'
|
|
18
|
+
headers:
|
|
19
|
+
Authorization: 'Bearer {SLACK_BOT_TOKEN}'
|
|
20
|
+
Content-Type: application/json
|
|
21
|
+
body:
|
|
22
|
+
channel: '{channel}'
|
|
23
|
+
timeout: 10000
|
|
24
|
+
authentication:
|
|
25
|
+
type: api_key
|
|
26
|
+
location: header
|
|
27
|
+
name: Authorization
|
|
28
|
+
notes:
|
|
29
|
+
env: SLACK_BOT_TOKEN
|
|
30
|
+
scopes: channels:manage
|
|
31
|
+
important: |-
|
|
32
|
+
- Public channels: Bot joins automatically
|
|
33
|
+
- Private channels: Admin must invite bot first
|
|
34
|
+
- Bot cannot join archived channels
|
|
35
|
+
- Use for gaining access before sending messages
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
name: slack_reply_to_message
|
|
2
|
+
description: |-
|
|
3
|
+
Post a reply to a message thread.
|
|
4
|
+
Uses chat.postMessage API method with thread_ts parameter.
|
|
5
|
+
version: '1.0.0'
|
|
6
|
+
parameters:
|
|
7
|
+
channel:
|
|
8
|
+
type: string
|
|
9
|
+
required: true
|
|
10
|
+
description: Channel ID containing the parent message
|
|
11
|
+
thread_ts:
|
|
12
|
+
type: string
|
|
13
|
+
required: true
|
|
14
|
+
description: |-
|
|
15
|
+
Timestamp of the parent message that starts the thread.
|
|
16
|
+
Use parent's ts value, never use a reply's ts value.
|
|
17
|
+
text:
|
|
18
|
+
type: string
|
|
19
|
+
required: false
|
|
20
|
+
description: |-
|
|
21
|
+
Reply text (optional if using blocks for rich formatting).
|
|
22
|
+
Recommended as fallback for notifications and accessibility.
|
|
23
|
+
blocks:
|
|
24
|
+
type: array
|
|
25
|
+
required: false
|
|
26
|
+
description: Block Kit JSON array for rich message formatting
|
|
27
|
+
execution:
|
|
28
|
+
type: http
|
|
29
|
+
method: POST
|
|
30
|
+
url: 'https://slack.com/api/chat.postMessage'
|
|
31
|
+
headers:
|
|
32
|
+
Authorization: 'Bearer {SLACK_BOT_TOKEN}'
|
|
33
|
+
Content-Type: application/json
|
|
34
|
+
body:
|
|
35
|
+
channel: '{channel}'
|
|
36
|
+
text: '{text}'
|
|
37
|
+
thread_ts: '{thread_ts}'
|
|
38
|
+
timeout: 15000
|
|
39
|
+
authentication:
|
|
40
|
+
type: api_key
|
|
41
|
+
location: header
|
|
42
|
+
name: Authorization
|
|
43
|
+
notes:
|
|
44
|
+
env: SLACK_BOT_TOKEN
|
|
45
|
+
scopes: chat:write
|
|
46
|
+
important: |-
|
|
47
|
+
- thread_ts must be parent message timestamp, not a reply
|
|
48
|
+
- Either text or blocks is recommended (both optional)
|
|
49
|
+
- Threads keep conversations organized by topic
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
name: slack_search_messages
|
|
2
|
+
description: |-
|
|
3
|
+
Search across Slack message history.
|
|
4
|
+
Uses search.messages API method.
|
|
5
|
+
Supports filtering by channel, date range, and other criteria.
|
|
6
|
+
version: '1.0.0'
|
|
7
|
+
parameters:
|
|
8
|
+
query:
|
|
9
|
+
type: string
|
|
10
|
+
required: true
|
|
11
|
+
description: |-
|
|
12
|
+
Search query text.
|
|
13
|
+
Supports operators: from:@user, in:#channel, after:YYYY-MM-DD, etc.
|
|
14
|
+
sort:
|
|
15
|
+
type: string
|
|
16
|
+
required: false
|
|
17
|
+
description: |-
|
|
18
|
+
Sort results by: score (relevance, default) or timestamp
|
|
19
|
+
count:
|
|
20
|
+
type: number
|
|
21
|
+
required: false
|
|
22
|
+
description: |-
|
|
23
|
+
Number of results to return.
|
|
24
|
+
Default: 20, Max: 100
|
|
25
|
+
execution:
|
|
26
|
+
type: http
|
|
27
|
+
method: GET
|
|
28
|
+
url: 'https://slack.com/api/search.messages'
|
|
29
|
+
headers:
|
|
30
|
+
Authorization: 'Bearer {SLACK_BOT_TOKEN}'
|
|
31
|
+
query_params:
|
|
32
|
+
query: '{query}'
|
|
33
|
+
sort: '{sort}'
|
|
34
|
+
count: '{count}'
|
|
35
|
+
timeout: 15000
|
|
36
|
+
authentication:
|
|
37
|
+
type: api_key
|
|
38
|
+
location: header
|
|
39
|
+
name: Authorization
|
|
40
|
+
notes:
|
|
41
|
+
env: SLACK_BOT_TOKEN
|
|
42
|
+
scopes: search:read
|
|
43
|
+
important: |-
|
|
44
|
+
- Query supports advanced search operators
|
|
45
|
+
- Example: "from:@alice in:#engineering after:2024-01-01"
|
|
46
|
+
- Default sort is by relevance score
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: slack_send_channel_message
|
|
2
|
+
description: Post a message (text, markdown, blocks) to a public/private Slack channel.
|
|
3
|
+
version: '1.0.0'
|
|
4
|
+
parameters:
|
|
5
|
+
channel:
|
|
6
|
+
type: string
|
|
7
|
+
required: true
|
|
8
|
+
description: Channel ID or name to post the message to
|
|
9
|
+
text:
|
|
10
|
+
type: string
|
|
11
|
+
required: false
|
|
12
|
+
description: Plain-text message (optional if blocks provided, recommended as fallback for accessibility)
|
|
13
|
+
blocks:
|
|
14
|
+
type: array
|
|
15
|
+
required: false
|
|
16
|
+
description: Slack Block Kit JSON blocks (optional, used instead of text for rich formatting)
|
|
17
|
+
execution:
|
|
18
|
+
type: http
|
|
19
|
+
method: POST
|
|
20
|
+
url: 'https://slack.com/api/chat.postMessage'
|
|
21
|
+
headers:
|
|
22
|
+
Authorization: 'Bearer {SLACK_BOT_TOKEN}'
|
|
23
|
+
Content-Type: application/json
|
|
24
|
+
body:
|
|
25
|
+
channel: '{channel}'
|
|
26
|
+
text: '{text}'
|
|
27
|
+
timeout: 15000
|
|
28
|
+
authentication:
|
|
29
|
+
type: api_key
|
|
30
|
+
location: header
|
|
31
|
+
name: Authorization
|
|
32
|
+
notes:
|
|
33
|
+
env: SLACK_BOT_TOKEN
|
|
34
|
+
caution: Ensure `chat:write` scope and bot membership in private channels. Either text or blocks is recommended (not both required). Unresolved placeholders (e.g., {blocks} when not provided) will be sent as literal strings per Slack API contract.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: slack_send_dm
|
|
2
|
+
description: |-
|
|
3
|
+
Open or resume a direct message (DM) or multi-person direct message (MPIM) conversation.
|
|
4
|
+
Uses conversations.open API method.
|
|
5
|
+
After opening, use chat.postMessage to send the actual message.
|
|
6
|
+
version: '1.0.0'
|
|
7
|
+
parameters:
|
|
8
|
+
user:
|
|
9
|
+
type: string
|
|
10
|
+
required: true
|
|
11
|
+
description: |-
|
|
12
|
+
User ID or comma-separated user IDs for multi-person DM.
|
|
13
|
+
- 1 user ID: Creates a 1:1 DM
|
|
14
|
+
- Multiple user IDs (2-8): Creates an MPIM
|
|
15
|
+
Do not include the authenticated bot's user ID.
|
|
16
|
+
execution:
|
|
17
|
+
type: http
|
|
18
|
+
method: POST
|
|
19
|
+
url: 'https://slack.com/api/conversations.open'
|
|
20
|
+
headers:
|
|
21
|
+
Authorization: 'Bearer {SLACK_BOT_TOKEN}'
|
|
22
|
+
Content-Type: application/json
|
|
23
|
+
body:
|
|
24
|
+
users: '{user}'
|
|
25
|
+
timeout: 15000
|
|
26
|
+
authentication:
|
|
27
|
+
type: api_key
|
|
28
|
+
location: header
|
|
29
|
+
name: Authorization
|
|
30
|
+
notes:
|
|
31
|
+
env: SLACK_BOT_TOKEN
|
|
32
|
+
scopes: im:write, mpim:write
|
|
33
|
+
important: |-
|
|
34
|
+
- This method OPENS a conversation, it does not send a message
|
|
35
|
+
- Returns channel ID (D...) to use with chat.postMessage
|
|
36
|
+
- Subsequent calls with same users return existing conversation
|
|
37
|
+
- For 1:1 DMs, use user ID (U...), not DM channel ID (D...)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
name: slack_set_channel_topic
|
|
2
|
+
description: |-
|
|
3
|
+
Set or update the topic (description) for a channel.
|
|
4
|
+
Uses conversations.setTopic API method.
|
|
5
|
+
Topic is displayed below the channel name in Slack UI.
|
|
6
|
+
version: '1.0.0'
|
|
7
|
+
parameters:
|
|
8
|
+
channel:
|
|
9
|
+
type: string
|
|
10
|
+
required: true
|
|
11
|
+
description: Channel ID to update
|
|
12
|
+
topic:
|
|
13
|
+
type: string
|
|
14
|
+
required: true
|
|
15
|
+
description: |-
|
|
16
|
+
New topic text.
|
|
17
|
+
Max 250 characters.
|
|
18
|
+
Supports text formatting (@mentions, links, etc.)
|
|
19
|
+
execution:
|
|
20
|
+
type: http
|
|
21
|
+
method: POST
|
|
22
|
+
url: 'https://slack.com/api/conversations.setTopic'
|
|
23
|
+
headers:
|
|
24
|
+
Authorization: 'Bearer {SLACK_BOT_TOKEN}'
|
|
25
|
+
Content-Type: application/json
|
|
26
|
+
body:
|
|
27
|
+
channel: '{channel}'
|
|
28
|
+
topic: '{topic}'
|
|
29
|
+
timeout: 10000
|
|
30
|
+
authentication:
|
|
31
|
+
type: api_key
|
|
32
|
+
location: header
|
|
33
|
+
name: Authorization
|
|
34
|
+
notes:
|
|
35
|
+
env: SLACK_BOT_TOKEN
|
|
36
|
+
scopes: conversations:manage
|
|
37
|
+
important: |-
|
|
38
|
+
- Bot must be channel member to set topic
|
|
39
|
+
- Topic limited to 250 characters
|
|
40
|
+
- Visible in channel info below channel name
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
name: slack_upload_file
|
|
2
|
+
description: |-
|
|
3
|
+
Upload a file to Slack using the modern files API.
|
|
4
|
+
|
|
5
|
+
This tool provides a simplified interface to upload files to Slack.
|
|
6
|
+
It uses the latest Slack file upload API (files.getUploadURLExternal + files.completeUploadExternal)
|
|
7
|
+
introduced in 2024 as the recommended approach.
|
|
8
|
+
|
|
9
|
+
FEATURES:
|
|
10
|
+
✅ Supports files up to 500MB
|
|
11
|
+
✅ Share directly to channels during upload
|
|
12
|
+
✅ Add file title and initial comment
|
|
13
|
+
✅ Better error handling and retry logic
|
|
14
|
+
✅ Modern, official Slack recommended API
|
|
15
|
+
✅ Future-proof (won't be deprecated)
|
|
16
|
+
|
|
17
|
+
REQUIRED SCOPES:
|
|
18
|
+
• files:write - Required to upload files
|
|
19
|
+
|
|
20
|
+
API REFERENCE:
|
|
21
|
+
https://docs.slack.dev/reference/methods/files.getUploadURLExternal
|
|
22
|
+
https://docs.slack.dev/reference/methods/files.completeUploadExternal
|
|
23
|
+
version: '1.0.0'
|
|
24
|
+
parameters:
|
|
25
|
+
filename:
|
|
26
|
+
type: string
|
|
27
|
+
required: true
|
|
28
|
+
description: |-
|
|
29
|
+
Name of the file (e.g., "report.pdf", "data.json")
|
|
30
|
+
Used as the file name in Slack
|
|
31
|
+
file_size:
|
|
32
|
+
type: number
|
|
33
|
+
required: true
|
|
34
|
+
description: |-
|
|
35
|
+
Size of the file in bytes.
|
|
36
|
+
Maximum 500MB (524,288,000 bytes)
|
|
37
|
+
Must match actual file size for upload
|
|
38
|
+
channel_id:
|
|
39
|
+
type: string
|
|
40
|
+
required: true
|
|
41
|
+
description: |-
|
|
42
|
+
Channel ID to share file with.
|
|
43
|
+
Example: "C024BE91L"
|
|
44
|
+
Bot must be a member of the channel
|
|
45
|
+
title:
|
|
46
|
+
type: string
|
|
47
|
+
required: false
|
|
48
|
+
description: |-
|
|
49
|
+
Title for the file in Slack (separate from filename).
|
|
50
|
+
If not provided, filename is used as title.
|
|
51
|
+
Supports up to 255 characters
|
|
52
|
+
initial_comment:
|
|
53
|
+
type: string
|
|
54
|
+
required: false
|
|
55
|
+
description: |-
|
|
56
|
+
Message text to introduce the file in the channel.
|
|
57
|
+
Example: "Here's the quarterly report PDF"
|
|
58
|
+
Supports markdown formatting
|
|
59
|
+
execution:
|
|
60
|
+
type: http
|
|
61
|
+
method: POST
|
|
62
|
+
url: 'https://slack.com/api/files.getUploadURLExternal'
|
|
63
|
+
headers:
|
|
64
|
+
Authorization: 'Bearer {SLACK_BOT_TOKEN}'
|
|
65
|
+
Content-Type: application/json
|
|
66
|
+
body:
|
|
67
|
+
filename: '{filename}'
|
|
68
|
+
length: '{file_size}'
|
|
69
|
+
timeout: 30000
|
|
70
|
+
authentication:
|
|
71
|
+
type: api_key
|
|
72
|
+
location: header
|
|
73
|
+
name: Authorization
|
|
74
|
+
output_schema:
|
|
75
|
+
type: object
|
|
76
|
+
properties:
|
|
77
|
+
ok:
|
|
78
|
+
type: boolean
|
|
79
|
+
description: Whether the request was successful
|
|
80
|
+
upload_url:
|
|
81
|
+
type: string
|
|
82
|
+
description: URL where to upload the file binary
|
|
83
|
+
file_id:
|
|
84
|
+
type: string
|
|
85
|
+
description: Unique identifier for the uploaded file
|
|
86
|
+
upload_url_expires:
|
|
87
|
+
type: number
|
|
88
|
+
description: Unix timestamp when the upload URL expires
|
|
89
|
+
notes:
|
|
90
|
+
env: SLACK_BOT_TOKEN
|
|
91
|
+
|
|
92
|
+
api_version: |-
|
|
93
|
+
Modern API (Current - Recommended)
|
|
94
|
+
• Uses: files.getUploadURLExternal (get upload URL)
|
|
95
|
+
• Uses: files.completeUploadExternal (complete upload)
|
|
96
|
+
• Introduced: 2024
|
|
97
|
+
• Status: Official Slack recommendation
|
|
98
|
+
• Maintenance: Actively maintained
|
|
99
|
+
|
|
100
|
+
scopes_required: |-
|
|
101
|
+
• files:write - Required to upload files
|
|
102
|
+
• channels:read - Optional, to validate channel IDs
|
|
103
|
+
|
|
104
|
+
usage_pattern: |-
|
|
105
|
+
TWO-STEP PROCESS:
|
|
106
|
+
|
|
107
|
+
1. Get Upload URL (this tool):
|
|
108
|
+
Call with: filename, file_size, channel_id
|
|
109
|
+
Returns: upload_url, file_id, upload_url_expires
|
|
110
|
+
|
|
111
|
+
2. Upload File Binary (manual/SDK):
|
|
112
|
+
Method: HTTP PUT to upload_url
|
|
113
|
+
Headers: Content-Type: application/octet-stream
|
|
114
|
+
Body: Raw file binary content
|
|
115
|
+
|
|
116
|
+
3. Complete Upload (use slack_complete_file_upload):
|
|
117
|
+
Call with: file_id, channel_id, title, initial_comment
|
|
118
|
+
Returns: File object with sharing info
|
|
119
|
+
|
|
120
|
+
important: |-
|
|
121
|
+
• Bot requires files:write scope
|
|
122
|
+
• File size must match file_size parameter exactly
|
|
123
|
+
• Upload URL expires (check upload_url_expires)
|
|
124
|
+
• If URL expires, start over with fresh getUploadURLExternal call
|
|
125
|
+
• Channel ID must be one where bot is a member
|
|
126
|
+
|
|
127
|
+
best_practices: |-
|
|
128
|
+
DO:
|
|
129
|
+
✅ Check upload_url_expires before uploading large files
|
|
130
|
+
✅ Use Content-Type: application/octet-stream for PUT
|
|
131
|
+
✅ Verify file_size matches actual file size
|
|
132
|
+
✅ Include initial_comment for context when sharing
|
|
133
|
+
✅ Validate channel_id exists before uploading
|
|
134
|
+
|
|
135
|
+
DON'T:
|
|
136
|
+
❌ Use channels bot hasn't joined
|
|
137
|
+
❌ Wait too long between getting URL and uploading (URLs expire ~2 hours)
|
|
138
|
+
❌ Forget to call slack_complete_file_upload after upload
|
|
139
|
+
❌ Include sensitive data in initial_comment
|
|
140
|
+
|
|
141
|
+
limitations: |-
|
|
142
|
+
• Maximum file size: 500MB
|
|
143
|
+
• Upload URL valid for approximately 2 hours
|
|
144
|
+
• Bot must be member of channel to share
|
|
145
|
+
• Response format follows Slack Web API standards
|
|
146
|
+
|
|
147
|
+
changelog: |-
|
|
148
|
+
Version 1.0.0 (Feb 2026):
|
|
149
|
+
• Updated to use modern files.getUploadURLExternal API
|
|
150
|
+
• Replaces deprecated files.upload (sunset Nov 12, 2025)
|
|
151
|
+
• Supports up to 500MB files
|
|
152
|
+
• Better error handling
|
package/docs/Gemfile
DELETED
package/docs/RELEASES.md
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
# v0.1.0-alpha.1
|
|
2
|
-
|
|
3
|
-
> First alpha release - Core OAuth2, tool execution, and SDK patterns
|
|
4
|
-
|
|
5
|
-
**Released**: February 3, 2026
|
|
6
|
-
|
|
7
|
-
## What's New
|
|
8
|
-
|
|
9
|
-
### OAuth2 Multi-Provider Support
|
|
10
|
-
- OAuth2 handler with token injection
|
|
11
|
-
- Providers: Google (Gmail), GitHub, Slack
|
|
12
|
-
- Provider YAML configuration
|
|
13
|
-
- Automatic token injection into requests
|
|
14
|
-
|
|
15
|
-
### Tool System
|
|
16
|
-
- YAML/JSON tool definitions with Zod validation
|
|
17
|
-
- Command executor (shell commands with templating)
|
|
18
|
-
- HTTP executor (REST APIs with OAuth2)
|
|
19
|
-
- Provider definition system
|
|
20
|
-
- Tool discovery and filtering
|
|
21
|
-
|
|
22
|
-
### SDK Patterns
|
|
23
|
-
- **Factory pattern**: `const m = await matimo.init('./tools'); m.execute(toolName, params)`
|
|
24
|
-
- **Decorator pattern**: `@tool('calculator')` for class-based usage
|
|
25
|
-
- Tool discovery, filtering, and search
|
|
26
|
-
- Full TypeScript support with strict types
|
|
27
|
-
|
|
28
|
-
### Tools Included
|
|
29
|
-
- **Gmail** (5 tools): send, list, get, draft, delete
|
|
30
|
-
- **Utilities**: calculator, echo, HTTP client
|
|
31
|
-
- **Provider configs**: Google, GitHub, Slack
|
|
32
|
-
|
|
33
|
-
## Installation
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
npm install matimo@0.1.0-alpha.1
|
|
37
|
-
pnpm add matimo@0.1.0-alpha.1
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
## Quick Start
|
|
41
|
-
|
|
42
|
-
```typescript
|
|
43
|
-
import { matimo } from 'matimo';
|
|
44
|
-
|
|
45
|
-
const m = await matimo.init('./tools');
|
|
46
|
-
const result = await m.execute('calculator', {
|
|
47
|
-
operation: 'add', a: 5, b: 3
|
|
48
|
-
});
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
## Documentation
|
|
52
|
-
|
|
53
|
-
- [Installation & Setup](./getting-started/installation.md)
|
|
54
|
-
- [Quick Start](./getting-started/QUICK_START.md)
|
|
55
|
-
- [SDK Patterns](./user-guide/SDK_PATTERNS.md)
|
|
56
|
-
- [OAuth2 Guide](./architecture/OAUTH.md)
|
|
57
|
-
- [API Reference](./api-reference/SDK.md)
|
|
58
|
-
- [Examples](../examples/)
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
## Known Limitations
|
|
62
|
-
|
|
63
|
-
This is an **alpha release**. Not recommended for production without thorough testing.
|
|
64
|
-
|
|
65
|
-
See [Roadmap](./ROADMAP.md) for future features.
|
|
66
|
-
|
|
67
|
-
## Contributing
|
|
68
|
-
|
|
69
|
-
[Contributing Guide](../CONTRIBUTING.md) | [Report Issues](https://github.com/tallclub/matimo/issues)
|
package/docs/ROADMAP.md
DELETED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
# Matimo Roadmap
|
|
2
|
-
|
|
3
|
-
## v0.1.0-alpha.1 (Current Release)
|
|
4
|
-
|
|
5
|
-
### ✅ Core Features Implemented
|
|
6
|
-
|
|
7
|
-
**OAuth2 Authentication**
|
|
8
|
-
- OAuth2 handler with token management
|
|
9
|
-
- Provider-agnostic configuration via YAML
|
|
10
|
-
- Multi-provider support (Google, GitHub, Slack)
|
|
11
|
-
- Token injection system for tools
|
|
12
|
-
|
|
13
|
-
**Tool System**
|
|
14
|
-
- YAML-based tool definitions with Zod validation
|
|
15
|
-
- Tool loader and registry
|
|
16
|
-
- Command executor (shell commands + templating)
|
|
17
|
-
- HTTP executor (REST APIs with OAuth2 support)
|
|
18
|
-
- Parameter encoding utilities
|
|
19
|
-
|
|
20
|
-
**SDK Patterns**
|
|
21
|
-
- Factory pattern (recommended for simple use cases)
|
|
22
|
-
- Decorator pattern (@tool decorators for class-based code)
|
|
23
|
-
- Tool discovery and filtering
|
|
24
|
-
- Full TypeScript type safety (zero `any` types)
|
|
25
|
-
|
|
26
|
-
**Tool Examples**
|
|
27
|
-
- Gmail tools (list, get, send, create-draft, delete)
|
|
28
|
-
- GitHub provider configuration
|
|
29
|
-
- Slack provider configuration
|
|
30
|
-
- Calculator and echo tools (reference implementations)
|
|
31
|
-
|
|
32
|
-
**Quality Assurance**
|
|
33
|
-
- 100% test passing
|
|
34
|
-
- Full TypeScript strict mode enforcement
|
|
35
|
-
- ESLint clean with zero warnings
|
|
36
|
-
- Prettier formatting
|
|
37
|
-
- Zod schema validation for all definitions
|
|
38
|
-
|
|
39
|
-
**Documentation**
|
|
40
|
-
- Quick start guide
|
|
41
|
-
- API reference
|
|
42
|
-
- Tool specification
|
|
43
|
-
- OAuth2 implementation guide
|
|
44
|
-
- Decorator pattern guide
|
|
45
|
-
- Contributing guide
|
|
46
|
-
- Security guidelines
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## Future Release (not in specific order)
|
|
51
|
-
|
|
52
|
-
### 🔜 Planned Features
|
|
53
|
-
|
|
54
|
-
**CLI Tool**
|
|
55
|
-
- `matimo list` - List all tools
|
|
56
|
-
- `matimo execute` - Execute tools from command line
|
|
57
|
-
- `matimo validate` - Validate tool YAML files
|
|
58
|
-
- `matimo test` - Test tool execution locally
|
|
59
|
-
|
|
60
|
-
**MCP (Model Context Protocol) Server**
|
|
61
|
-
- Native MCP server
|
|
62
|
-
- Tool discovery via MCP
|
|
63
|
-
- Automatic tool calling
|
|
64
|
-
- Session management
|
|
65
|
-
|
|
66
|
-
**Framework Integrations**
|
|
67
|
-
- CrewAI integration examples
|
|
68
|
-
- Vercel AI SDK integration
|
|
69
|
-
- Custom framework patterns
|
|
70
|
-
- Framework-specific documentation
|
|
71
|
-
|
|
72
|
-
**Advanced Features**
|
|
73
|
-
- Rate limiting (token bucket algorithm)
|
|
74
|
-
- Health monitoring (API schema drift detection)
|
|
75
|
-
- Token refresh automation
|
|
76
|
-
- Error recovery strategies
|
|
77
|
-
|
|
78
|
-
**REST API Server**
|
|
79
|
-
- HTTP endpoints for tool execution
|
|
80
|
-
- Async job execution
|
|
81
|
-
- Webhook support
|
|
82
|
-
- OpenAPI documentation
|
|
83
|
-
|
|
84
|
-
**Python SDK**
|
|
85
|
-
- Python implementation with same YAML definitions
|
|
86
|
-
- LangChain Python integration
|
|
87
|
-
- CrewAI Python support
|
|
88
|
-
- Feature parity with Node.js SDK
|
|
89
|
-
|
|
90
|
-
**Tool Marketplace**
|
|
91
|
-
- Distributed tool registry
|
|
92
|
-
- Tool publishing and versioning
|
|
93
|
-
- Community tool submissions
|
|
94
|
-
- Tool ratings and reviews
|
|
95
|
-
|
|
96
|
-
**Deployment**
|
|
97
|
-
- Docker images and Dockerfile examples
|
|
98
|
-
- Kubernetes deployment guides
|
|
99
|
-
- CI/CD integration examples
|
|
100
|
-
- Production deployment patterns
|
|
101
|
-
|
|
102
|
-
**Ecosystem Maturity**
|
|
103
|
-
- Automated schema translation (OpenAPI → Matimo YAML)
|
|
104
|
-
- Performance optimizations
|
|
105
|
-
- Enterprise features (audit logs, rate limiting)
|
|
106
|
-
|
|
107
|
-
**Skills/Workflows**
|
|
108
|
-
- Tool composition/chaining
|
|
109
|
-
- Conditional execution
|
|
110
|
-
- Error handling workflows
|
|
111
|
-
- Advanced orchestration
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
## How to Use This Roadmap
|
|
115
|
-
|
|
116
|
-
- **v0.1.0-alpha.1**: Use current implementation for OAuth2, tool execution, and SDK patterns
|
|
117
|
-
- **Future Releases**: These are planned but not yet implemented. Contributions welcome!
|
|
118
|
-
- **Contributing**: See [CONTRIBUTING.md](../CONTRIBUTING.md) for how to help
|
|
119
|
-
|
|
120
|
-
---
|
|
121
|
-
|
|
122
|
-
## Release Thoughts
|
|
123
|
-
|
|
124
|
-
```
|
|
125
|
-
v0.1.0-alpha.1 Feb 2026 (Current)
|
|
126
|
-
↓
|
|
127
|
-
v0.1.0-alpha.2 3rd week Feb 2026.
|
|
128
|
-
↓
|
|
129
|
-
v0.1.0-alpha.3 1st week Mar 2026.
|
|
130
|
-
↓
|
|
131
|
-
v0.1.0 End of March 2026.
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## Contributing to the Roadmap
|
|
137
|
-
|
|
138
|
-
Have ideas? [Open a GitHub Discussion](https://github.com/tallclub/matimo/discussions) to propose features for future releases.
|
package/docs/_config.yml
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
theme: jekyll-theme-slate
|
|
2
|
-
title: Matimo - AI Tools Ecosystem
|
|
3
|
-
description: Define tools once in YAML, use them everywhere
|
|
4
|
-
show_downloads: true
|
|
5
|
-
google_analytics: false
|
|
6
|
-
|
|
7
|
-
# Matimo Documentation
|
|
8
|
-
url: "https://tallclub.github.io"
|
|
9
|
-
baseurl: "/matimo"
|
|
10
|
-
repository: "tallclub/matimo"
|
|
11
|
-
|
|
12
|
-
# Build settings
|
|
13
|
-
markdown: kramdown
|
|
14
|
-
highlighter: rouge
|
|
15
|
-
|
|
16
|
-
# Navigation
|
|
17
|
-
nav:
|
|
18
|
-
- text: "Home"
|
|
19
|
-
url: "/"
|
|
20
|
-
- text: "Getting Started"
|
|
21
|
-
url: "/getting-started/"
|
|
22
|
-
- text: "Documentation"
|
|
23
|
-
url: "/"
|
|
24
|
-
- text: "GitHub"
|
|
25
|
-
url: "https://github.com/tallclub/matimo"
|
|
26
|
-
- text: "npm"
|
|
27
|
-
url: "https://www.npmjs.com/package/matimo"
|