@matimo/cli 0.1.0-alpha.10

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 tallclub
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,290 @@
1
+ # Matimo CLI
2
+
3
+ Command-line tool for managing Matimo tool packages and discovering available tools.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -g @matimo/cli
9
+ ```
10
+
11
+ Or use directly with npx:
12
+
13
+ ```bash
14
+ npx @matimo/cli@latest list
15
+ npx @matimo/cli@latest search
16
+ ```
17
+
18
+ ## Commands
19
+
20
+ ### `matimo list`
21
+
22
+ List all installed Matimo tool packages.
23
+
24
+ ```bash
25
+ matimo list
26
+ ```
27
+
28
+ Output:
29
+ ```
30
+ šŸ“¦ Installed Matimo Packages:
31
+
32
+ šŸ“ @matimo/slack
33
+ Slack workspace tools
34
+ Tools: slack-send-message, slack-list-channels, slack-get-messages, ...
35
+
36
+ šŸ“ @matimo/github
37
+ GitHub repository and issue management tools
38
+ Tools: github-create-issue, github-list-repos, github-get-issue, ...
39
+
40
+ šŸ“ @matimo/gmail
41
+ Gmail email tools
42
+ Tools: gmail-send-email, gmail-list-messages, gmail-create-draft, ...
43
+
44
+ Total: 3 packages installed
45
+ ```
46
+
47
+ **Use when:** You want to see all installed tool packages and a preview of available tools.
48
+
49
+ ### `matimo install [package...]`
50
+
51
+ Install one or more tool packages from npm.
52
+
53
+ ```bash
54
+ # Install a single package
55
+ matimo install slack
56
+
57
+ # Install multiple packages
58
+ matimo install github stripe notion
59
+
60
+ # Install specific version
61
+ matimo install slack@1.2.0
62
+ ```
63
+
64
+ The CLI automatically resolves `{package}` to `@matimo/{package}` and installs from npm.
65
+
66
+ **Examples:**
67
+
68
+ ```bash
69
+ # Install Slack tools
70
+ matimo install slack
71
+ # → Installs @matimo/slack
72
+
73
+ # Install GitHub and Stripe
74
+ matimo install github stripe
75
+ # → Installs @matimo/github and @matimo/stripe
76
+
77
+ # See what's available
78
+ matimo search email
79
+ ```
80
+
81
+ **Next Steps:**
82
+
83
+ After installation, you can use auto-discovery in your code:
84
+
85
+ ```typescript
86
+ import { MatimoInstance } from 'matimo';
87
+
88
+ const matimo = await MatimoInstance.init({ autoDiscover: true });
89
+
90
+ // New tools are automatically available!
91
+ const result = await matimo.execute('slack-send-message', {
92
+ channel: '#general',
93
+ text: 'Hello from Matimo!'
94
+ });
95
+ ```
96
+
97
+ ### `matimo search [query]`
98
+
99
+ Search for tools or packages by name.
100
+
101
+ ```bash
102
+ # Search for email tools
103
+ matimo search email
104
+
105
+ # Search for a specific package
106
+ matimo search github
107
+
108
+ # Search for Slack tools
109
+ matimo search slack
110
+ ```
111
+
112
+ Output:
113
+ ```
114
+ Results for "email":
115
+
116
+ šŸ“ @matimo/gmail
117
+ Gmail email tools
118
+ Tools: gmail-send-email, gmail-list-messages, gmail-create-draft, ...
119
+
120
+ šŸ“ @matimo/sendgrid
121
+ SendGrid email tools
122
+ Tools: sendgrid-send-email, sendgrid-list-templates, ...
123
+ ```
124
+
125
+ **Use when:** You want to find tools before installing them, or discover what's available for a specific service.
126
+
127
+ ## Auto-Discovery
128
+
129
+ After installing packages with the CLI, use auto-discovery to automatically load them:
130
+
131
+ ```typescript
132
+ import { MatimoInstance } from 'matimo';
133
+
134
+ // Discovers all installed @matimo/* packages
135
+ const matimo = await MatimoInstance.init({ autoDiscover: true });
136
+
137
+ // List all available tools
138
+ const tools = matimo.listTools();
139
+
140
+ // Execute any tool
141
+ const result = await matimo.execute('github-create-issue', {
142
+ owner: 'tallclub',
143
+ repo: 'matimo',
144
+ title: 'My issue'
145
+ });
146
+ ```
147
+
148
+ **How it works:**
149
+
150
+ 1. CLI installs packages to `node_modules/@matimo/{provider}`
151
+ 2. `MatimoInstance.init({ autoDiscover: true })` scans that directory
152
+ 3. All tool definitions are loaded and registered automatically
153
+ 4. Tools are ready to use via `matimo.execute()`
154
+
155
+ ## Package Ecosystem
156
+
157
+ Matimo packages are published to npm with the `@matimo` scope:
158
+
159
+ - `@matimo/slack` - Slack workspace tools
160
+ - `@matimo/github` - GitHub repository tools
161
+ - `@matimo/gmail` - Gmail email tools
162
+ - `@matimo/stripe` - Stripe payment tools (coming soon)
163
+ - `@matimo/twilio` - Twilio SMS/voice tools (coming soon)
164
+
165
+ [Browse all Matimo packages](https://www.npmjs.com/search?q=%40matimo)
166
+
167
+ ## Creating Tool Packages
168
+
169
+ Want to create your own tools? See the [Adding Tools to Matimo](../../docs/tool-development/ADDING_TOOLS.md) guide.
170
+
171
+ **Summary:** Create a package with YAML tool definitions and publish it to npm as `@matimo/{provider}`.
172
+
173
+ ## Development
174
+
175
+ Build and test the CLI:
176
+
177
+ ```bash
178
+ # Install deps
179
+ pnpm install
180
+
181
+ # Build
182
+ pnpm build
183
+
184
+ # Test
185
+ pnpm test
186
+
187
+ # Link locally for testing
188
+ pnpm link --global packages/cli
189
+ matimo list # Test the command
190
+ ```
191
+
192
+ ## Help
193
+
194
+ Get help for any command:
195
+
196
+ ```bash
197
+ matimo --help
198
+ matimo list --help
199
+ matimo search --help
200
+ ```
201
+
202
+ ## Examples
203
+
204
+ ### Install and Use Slack Tools
205
+
206
+ ```bash
207
+ # 1. Install
208
+ matimo install slack
209
+
210
+ # 2. Use in code
211
+ const { MatimoInstance } = require('matimo');
212
+
213
+ const matimo = await MatimoInstance.init({ autoDiscover: true });
214
+
215
+ const result = await matimo.execute('slack-send-message', {
216
+ channel: '#general',
217
+ text: 'Hello Slack!'
218
+ });
219
+ ```
220
+
221
+ ### Search and Install GitHub Tools
222
+
223
+ ```bash
224
+ # 1. Search for GitHub tools
225
+ matimo search github
226
+
227
+ # 2. Install
228
+ matimo install github
229
+
230
+ # 3. Use
231
+ const matimo = await MatimoInstance.init({ autoDiscover: true });
232
+
233
+ const issue = await matimo.execute('github-create-issue', {
234
+ owner: 'tallclub',
235
+ repo: 'matimo',
236
+ title: 'New feature'
237
+ });
238
+ ```
239
+
240
+ ### Install Multiple Packages
241
+
242
+ ```bash
243
+ matimo install slack github gmail
244
+
245
+ # All three are now installed and auto-discoverable
246
+ const matimo = await MatimoInstance.init({ autoDiscover: true });
247
+
248
+ // Use any tool from any package
249
+ await matimo.execute('slack-send-message', {...});
250
+ await matimo.execute('github-create-issue', {...});
251
+ await matimo.execute('gmail-send-email', {...});
252
+ ```
253
+
254
+ ## Troubleshooting
255
+
256
+ ### "Package not found" error
257
+
258
+ ```bash
259
+ # Verify the package name (should be valid npm package)
260
+ npm search @matimo/slack
261
+
262
+ # Try installing with full name
263
+ npm install @matimo/slack
264
+ ```
265
+
266
+ ### Tools not showing in list
267
+
268
+ ```bash
269
+ # Reinstall packages in current project
270
+ npm install @matimo/slack
271
+
272
+ # Verify they're installed
273
+ npm ls @matimo/slack
274
+
275
+ # Use auto-discovery in code
276
+ const matimo = await MatimoInstance.init({ autoDiscover: true });
277
+ ```
278
+
279
+ ### Need specific version?
280
+
281
+ ```bash
282
+ matimo install slack@1.2.0
283
+ npm install @matimo/slack@1.2.0
284
+ ```
285
+
286
+ ## Support
287
+
288
+ - šŸ“– [Matimo Documentation](../../docs/index.md)
289
+ - šŸ› ļø [Tool Development Guide](../../docs/tool-development/ADDING_TOOLS.md)
290
+ - šŸ’¬ [GitHub Issues](https://github.com/tallclub/matimo/issues)
package/bin/matimo.cjs ADDED
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+
3
+ // Simple CommonJS entry point - avoids ESM/test issues
4
+ const path = require('path');
5
+
6
+ // Check for version flag
7
+ const versionFlags = ['-v', '-V', '--version'];
8
+ if (versionFlags.includes(process.argv[process.argv.length - 1])) {
9
+ try {
10
+ const pkg = require(path.join(__dirname, '../package.json'));
11
+ console.log(`matimo-cli v${pkg.version}`);
12
+ process.exit(0);
13
+ } catch {
14
+ console.log('matimo-cli v unknown');
15
+ process.exit(0);
16
+ }
17
+ }
18
+
19
+ // Import and run the ESM main function
20
+ (async () => {
21
+ const { main } = await import(path.join(__dirname, '../dist/cli.js'));
22
+ await main();
23
+ })().catch((error) => {
24
+ console.error('āŒ Fatal error:', error);
25
+ process.exit(1);
26
+ });
package/dist/cli.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export declare function showHelp(): void;
2
+ /**
3
+ * Main CLI handler - parses commands and routes to appropriate handlers
4
+ */
5
+ export declare function main(cliArgs?: string[]): Promise<void>;
6
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAgBA,wBAAgB,QAAQ,IAAI,IAAI,CAmC/B;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC5D"}
package/dist/cli.js ADDED
@@ -0,0 +1,95 @@
1
+ import { readFileSync } from 'fs';
2
+ import { join } from 'path';
3
+ import { installCommand } from './commands/install.js';
4
+ import { listCommand } from './commands/list.js';
5
+ import { searchCommand } from './commands/search.js';
6
+ function getPackageVersion() {
7
+ try {
8
+ const pkgPath = join(process.cwd(), 'package.json');
9
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
10
+ return pkg.version;
11
+ }
12
+ catch {
13
+ return 'unknown';
14
+ }
15
+ }
16
+ export function showHelp() {
17
+ console.info(`
18
+ šŸ”Ø Matimo CLI - Tool Package Manager
19
+
20
+ Usage: matimo [command] [options]
21
+
22
+ Commands:
23
+ install <tools...> Install tool packages
24
+ Example: matimo install slack gmail
25
+
26
+ list List installed Matimo tools
27
+ Example: matimo list
28
+
29
+ search <query> Search for available tools
30
+ Example: matimo search slack
31
+
32
+ help Show this help message
33
+
34
+ version Show version information
35
+
36
+ Examples:
37
+ # Install new tools
38
+ $ matimo install slack
39
+ $ matimo install gmail stripe
40
+
41
+ # List all installed tools
42
+ $ matimo list
43
+
44
+ # Search for tools
45
+ $ matimo search email
46
+ $ matimo search database
47
+
48
+ Documentation: https://github.com/tallclub/matimo#readme
49
+ Issues: https://github.com/tallclub/matimo/issues
50
+ `);
51
+ }
52
+ /**
53
+ * Main CLI handler - parses commands and routes to appropriate handlers
54
+ */
55
+ export async function main(cliArgs) {
56
+ const args = cliArgs || process.argv.slice(2);
57
+ const command = args[0];
58
+ const params = args.slice(1);
59
+ if (!command) {
60
+ showHelp();
61
+ process.exit(0);
62
+ }
63
+ try {
64
+ switch (command.toLowerCase()) {
65
+ case 'install':
66
+ await installCommand(params);
67
+ break;
68
+ case 'list':
69
+ await listCommand();
70
+ break;
71
+ case 'search':
72
+ await searchCommand(params[0] || '');
73
+ break;
74
+ case 'help':
75
+ case '-h':
76
+ case '--help':
77
+ showHelp();
78
+ break;
79
+ case 'version':
80
+ case '-v':
81
+ case '--version':
82
+ console.info(`matimo-cli v${getPackageVersion()}`);
83
+ break;
84
+ default:
85
+ console.error(`āŒ Unknown command: ${command}`);
86
+ console.info('\nRun "matimo help" for available commands');
87
+ process.exit(1);
88
+ }
89
+ }
90
+ catch (error) {
91
+ console.error('āŒ Error:', error instanceof Error ? error.message : String(error));
92
+ process.exit(1);
93
+ }
94
+ }
95
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCd,CAAC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAkB;IAC3C,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,QAAQ,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,QAAQ,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YAC9B,KAAK,SAAS;gBACZ,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;gBAC7B,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,WAAW,EAAE,CAAC;gBACpB,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACrC,MAAM;YACR,KAAK,MAAM,CAAC;YACZ,KAAK,IAAI,CAAC;YACV,KAAK,QAAQ;gBACX,QAAQ,EAAE,CAAC;gBACX,MAAM;YACR,KAAK,SAAS,CAAC;YACf,KAAK,IAAI,CAAC;YACV,KAAK,WAAW;gBACd,OAAO,CAAC,IAAI,CAAC,eAAe,iBAAiB,EAAE,EAAE,CAAC,CAAC;gBACnD,MAAM;YACR;gBACE,OAAO,CAAC,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;gBAC/C,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;gBAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Install command - Install a specific tool package
3
+ * matimo install slack gmail stripe
4
+ */
5
+ export declare function installCommand(toolNames: string[]): Promise<void>;
6
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CvE"}
@@ -0,0 +1,48 @@
1
+ import { execFileSync } from 'child_process';
2
+ /**
3
+ * Install command - Install a specific tool package
4
+ * matimo install slack gmail stripe
5
+ */
6
+ export async function installCommand(toolNames) {
7
+ if (!toolNames || toolNames.length === 0) {
8
+ console.error('āŒ Error: Please specify at least one tool to install');
9
+ console.info('\nUsage: matimo install [tool1] [tool2] [tool3]...');
10
+ console.info('Example: matimo install slack gmail stripe');
11
+ process.exit(1);
12
+ }
13
+ const packages = toolNames.map((name) => `@matimo/${name}`);
14
+ try {
15
+ console.info(`šŸ“¦ Installing ${packages.join(', ')}...`);
16
+ // Run npm install for the packages without invoking a shell
17
+ execFileSync('npm', ['install', ...packages], { stdio: 'inherit' });
18
+ console.info('\nāœ… Installation complete!');
19
+ console.info('\nNext steps:');
20
+ console.info('1. Import and initialize Matimo with auto-discovery (Recommended):');
21
+ console.info(' const matimo = await MatimoInstance.init({ autoDiscover: true });');
22
+ console.info('\n2. Or explicitly load the tools (ESM):');
23
+ console.info(` import { createRequire } from 'module';
24
+ const require = createRequire(import.meta.url);
25
+ const matimo = await MatimoInstance.init({
26
+ toolPaths: [
27
+ require.resolve('@matimo/slack/tools'),
28
+ require.resolve('@matimo/gmail/tools'),
29
+ ]
30
+ });`);
31
+ console.info('\n3. Or use file URLs (Alternative ESM approach):');
32
+ console.info(` import { fileURLToPath } from 'url';
33
+ import path from 'path';
34
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
35
+ const matimo = await MatimoInstance.init({
36
+ toolPaths: [
37
+ path.join(__dirname, 'node_modules/@matimo/slack/tools'),
38
+ path.join(__dirname, 'node_modules/@matimo/gmail/tools'),
39
+ ]
40
+ });`);
41
+ console.info('\nšŸ“– For more info: https://github.com/tallclub/matimo#readme');
42
+ }
43
+ catch (error) {
44
+ console.error('āŒ Installation failed:', error instanceof Error ? error.message : String(error));
45
+ process.exit(1);
46
+ }
47
+ }
48
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAmB;IACtD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAE5D,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,iBAAiB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAExD,4DAA4D;QAC5D,YAAY,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAEpE,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC;;;;;;;OAOV,CAAC,CAAC;QACL,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC;;;;;;;;OAQV,CAAC,CAAC;QACL,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAChF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,wBAAwB,EACxB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * List command - List all installed Matimo tools
3
+ * matimo list
4
+ */
5
+ export declare function listCommand(): Promise<void>;
6
+ declare function getNodeModulesPath(): string | null;
7
+ export declare const getNodeModulesPathForTesting: typeof getNodeModulesPath;
8
+ export {};
9
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAuDjD;AAED,iBAAS,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAqB3C;AAGD,eAAO,MAAM,4BAA4B,2BAAqB,CAAC"}
@@ -0,0 +1,70 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ /**
4
+ * List command - List all installed Matimo tools
5
+ * matimo list
6
+ */
7
+ export async function listCommand() {
8
+ try {
9
+ const nodeModulesPath = getNodeModulesPath();
10
+ if (!nodeModulesPath) {
11
+ console.info('āŒ Error: node_modules not found');
12
+ process.exit(1);
13
+ }
14
+ const matimoScope = path.join(nodeModulesPath, '@matimo');
15
+ if (!fs.existsSync(matimoScope)) {
16
+ console.info('āš ļø No Matimo tools installed yet');
17
+ console.info('\nInstall some tools:');
18
+ console.info(' matimo install slack gmail stripe');
19
+ return;
20
+ }
21
+ const packages = fs.readdirSync(matimoScope).filter((dir) => !dir.startsWith('.'));
22
+ if (packages.length === 0) {
23
+ console.info('āš ļø No Matimo tools installed yet');
24
+ return;
25
+ }
26
+ console.info('šŸ“¦ Installed Matimo Packages:\n');
27
+ for (const pkg of packages) {
28
+ const pkgJsonPath = path.join(matimoScope, pkg, 'package.json');
29
+ if (fs.existsSync(pkgJsonPath)) {
30
+ const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf-8'));
31
+ const matimo = pkgJson.matimo || {};
32
+ console.info(` šŸ“ @matimo/${pkg}`);
33
+ if (pkgJson.description) {
34
+ console.info(` ${pkgJson.description}`);
35
+ }
36
+ if (matimo.tools && Array.isArray(matimo.tools)) {
37
+ console.info(` Tools: ${matimo.tools.slice(0, 3).join(', ')}${matimo.tools.length > 3 ? ', ...' : ''}`);
38
+ }
39
+ console.info('');
40
+ }
41
+ }
42
+ console.info(`Total: ${packages.length} package${packages.length > 1 ? 's' : ''} installed`);
43
+ }
44
+ catch (error) {
45
+ console.error('āŒ Error listing tools:', error instanceof Error ? error.message : String(error));
46
+ process.exit(1);
47
+ }
48
+ }
49
+ function getNodeModulesPath() {
50
+ // Walk up from current working directory to find node_modules
51
+ // This is the appropriate approach for a CLI tool
52
+ let currentPath = process.cwd();
53
+ const maxLevels = 20; // Prevent infinite loops
54
+ for (let i = 0; i < maxLevels; i++) {
55
+ const nodeModules = path.join(currentPath, 'node_modules');
56
+ if (fs.existsSync(nodeModules) && fs.statSync(nodeModules).isDirectory()) {
57
+ return nodeModules;
58
+ }
59
+ const parent = path.dirname(currentPath);
60
+ if (parent === currentPath) {
61
+ // Reached filesystem root
62
+ break;
63
+ }
64
+ currentPath = parent;
65
+ }
66
+ return null;
67
+ }
68
+ // Export for testing
69
+ export const getNodeModulesPathForTesting = getNodeModulesPath;
70
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function searchCommand(query: string): Promise<void>;
2
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAQA,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmJhE"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Search command - Search for available Matimo packages
3
+ * Works for both end-users (searches installed packages) and contributors (searches repo packages)
4
+ * matimo search slack
5
+ */
6
+ import fs from 'fs';
7
+ import path from 'path';
8
+ export async function searchCommand(query) {
9
+ if (!query) {
10
+ console.error('āŒ Error: Please specify a search query');
11
+ console.info('\nUsage: matimo search <query>');
12
+ console.info('Example: matimo search slack');
13
+ process.exit(1);
14
+ }
15
+ const availablePackages = [];
16
+ // Determine search context: contributor (repo) or end-user (installed)
17
+ // First, check if node_modules/@matimo exists (user project)
18
+ const installedPackagesDir = path.resolve(process.cwd(), 'node_modules/@matimo');
19
+ const hasInstalledPackages = fs.existsSync(installedPackagesDir);
20
+ // Then check if we're in the Matimo repo by looking for pnpm-workspace.yaml
21
+ const repoRoot = findRepoRoot(process.cwd());
22
+ const isInRepo = repoRoot !== null;
23
+ const repoPackagesDir = isInRepo ? path.resolve(repoRoot, 'packages') : null;
24
+ let searchDir;
25
+ let searchContext;
26
+ let skipDirs = [];
27
+ // Priority: if in repo, search repo; else if installed packages exist, search those
28
+ if (isInRepo && repoPackagesDir) {
29
+ searchDir = repoPackagesDir;
30
+ searchContext = 'repository';
31
+ skipDirs = ['core', 'cli'];
32
+ }
33
+ else if (hasInstalledPackages) {
34
+ searchDir = installedPackagesDir;
35
+ searchContext = 'installed';
36
+ }
37
+ else {
38
+ console.error('āŒ Error: No Matimo packages found');
39
+ console.info('Either run this in the Matimo repository or install packages: npm install @matimo/slack');
40
+ process.exit(1);
41
+ }
42
+ try {
43
+ const entries = fs.readdirSync(searchDir);
44
+ for (const entry of entries) {
45
+ // Skip internal packages in repo context
46
+ if (skipDirs.includes(entry))
47
+ continue;
48
+ const packagePath = path.join(searchDir, entry);
49
+ const packageJsonPath = path.join(packagePath, 'package.json');
50
+ if (!fs.existsSync(packageJsonPath))
51
+ continue;
52
+ try {
53
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
54
+ // Count tools in the tools directory
55
+ const toolsDir = path.join(packagePath, 'tools');
56
+ let toolCount = 0;
57
+ if (fs.existsSync(toolsDir)) {
58
+ toolCount = fs.readdirSync(toolsDir).filter((f) => {
59
+ const stat = fs.statSync(path.join(toolsDir, f));
60
+ return stat.isDirectory();
61
+ }).length;
62
+ }
63
+ // Extract package name (remove @matimo/ prefix)
64
+ const pkgName = packageJson.name.replace('@matimo/', '');
65
+ availablePackages.push({
66
+ name: pkgName,
67
+ description: packageJson.description || 'No description available',
68
+ tools: toolCount,
69
+ status: 'available',
70
+ });
71
+ }
72
+ catch {
73
+ // Skip packages with invalid package.json
74
+ continue;
75
+ }
76
+ }
77
+ }
78
+ catch {
79
+ if (searchContext === 'installed') {
80
+ console.error('āŒ Error: Could not discover installed packages');
81
+ console.info('Make sure you have installed Matimo packages in node_modules/@matimo/');
82
+ }
83
+ else {
84
+ console.error('āŒ Error: Could not discover packages in repository');
85
+ console.info('Make sure you have provider packages in packages/ directory');
86
+ }
87
+ process.exit(1);
88
+ }
89
+ // Sort packages by name
90
+ availablePackages.sort((a, b) => a.name.localeCompare(b.name));
91
+ if (availablePackages.length === 0) {
92
+ if (searchContext === 'installed') {
93
+ console.error('āŒ Error: No packages found in node_modules/@matimo/');
94
+ console.info('Install Matimo packages first: npm install @matimo/slack @matimo/gmail');
95
+ }
96
+ else {
97
+ console.error('āŒ Error: No packages found in repository');
98
+ console.info('Make sure you have provider packages in packages/ directory');
99
+ }
100
+ process.exit(1);
101
+ }
102
+ const q = query.toLowerCase();
103
+ const results = availablePackages.filter((pkg) => pkg.name.includes(q) || pkg.description.toLowerCase().includes(q));
104
+ if (results.length === 0) {
105
+ console.info(`āŒ No packages found matching "${query}"`);
106
+ console.info(`\nšŸ“¦ Available Packages (from ${searchContext}):`);
107
+ availablePackages.forEach((pkg) => {
108
+ console.info(` • @matimo/${pkg.name} (${pkg.tools} tools)`);
109
+ });
110
+ return;
111
+ }
112
+ console.info(`šŸ” Search results for "${query}" (${searchContext}):\n`);
113
+ for (const pkg of results) {
114
+ const statusEmoji = pkg.status === 'available' ? 'āœ…' : 'šŸ”œ';
115
+ const statusText = pkg.status === 'available' ? 'Available' : 'Coming Soon';
116
+ console.info(`${statusEmoji} @matimo/${pkg.name} (${statusText})`);
117
+ console.info(` ${pkg.description}`);
118
+ console.info(` Tools: ${pkg.tools}`);
119
+ if (pkg.status === 'available') {
120
+ if (searchContext === 'installed') {
121
+ console.info(` Already installed in your project`);
122
+ }
123
+ else {
124
+ console.info(` Install: matimo install ${pkg.name}`);
125
+ }
126
+ }
127
+ else {
128
+ console.info(` Install: Not yet available`);
129
+ }
130
+ console.info('');
131
+ }
132
+ console.info(`Total: ${results.length} package${results.length > 1 ? 's' : ''} found`);
133
+ }
134
+ /**
135
+ * Find the Matimo repository root by looking for pnpm-workspace.yaml
136
+ */
137
+ function findRepoRoot(startPath) {
138
+ let current = startPath;
139
+ // Safety: don't go above filesystem root
140
+ while (current !== path.dirname(current)) {
141
+ if (fs.existsSync(path.join(current, 'pnpm-workspace.yaml'))) {
142
+ return current;
143
+ }
144
+ current = path.dirname(current);
145
+ }
146
+ return null;
147
+ }
148
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@matimo/cli",
3
+ "version": "0.1.0-alpha.10",
4
+ "description": "CLI tools for managing Matimo tool installations",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "type": "module",
8
+ "bin": {
9
+ "matimo": "bin/matimo.cjs"
10
+ },
11
+ "files": [
12
+ "bin",
13
+ "dist",
14
+ "README.md"
15
+ ],
16
+ "dependencies": {
17
+ "@matimo/core": "0.1.0-alpha.10"
18
+ },
19
+ "devDependencies": {
20
+ "@types/node": "^25.1.0",
21
+ "typescript": "^5.9.3",
22
+ "tsx": "^4.21.0"
23
+ },
24
+ "peerDependencies": {
25
+ "matimo": "0.1.0-alpha.10"
26
+ },
27
+ "scripts": {
28
+ "build": "tsc",
29
+ "watch": "tsc --watch"
30
+ }
31
+ }