matimo 0.1.0-alpha.12.1 → 0.1.0-alpha.13

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.
Files changed (105) hide show
  1. package/README.md +63 -0
  2. package/package.json +3 -3
  3. package/packages/cli/dist/cli.d.ts.map +1 -1
  4. package/packages/cli/dist/cli.js +16 -0
  5. package/packages/cli/dist/cli.js.map +1 -1
  6. package/packages/cli/dist/commands/doctor.d.ts +2 -0
  7. package/packages/cli/dist/commands/doctor.d.ts.map +1 -0
  8. package/packages/cli/dist/commands/doctor.js +174 -0
  9. package/packages/cli/dist/commands/doctor.js.map +1 -0
  10. package/packages/cli/dist/commands/mcp.d.ts +2 -1
  11. package/packages/cli/dist/commands/mcp.d.ts.map +1 -1
  12. package/packages/cli/dist/commands/mcp.js +9 -1
  13. package/packages/cli/dist/commands/mcp.js.map +1 -1
  14. package/packages/cli/dist/commands/review.d.ts +10 -0
  15. package/packages/cli/dist/commands/review.d.ts.map +1 -0
  16. package/packages/cli/dist/commands/review.js +176 -0
  17. package/packages/cli/dist/commands/review.js.map +1 -0
  18. package/packages/core/dist/approval/approval-handler.d.ts +5 -1
  19. package/packages/core/dist/approval/approval-handler.d.ts.map +1 -1
  20. package/packages/core/dist/approval/approval-handler.js +6 -0
  21. package/packages/core/dist/approval/approval-handler.js.map +1 -1
  22. package/packages/core/dist/core/schema.d.ts +29 -8
  23. package/packages/core/dist/core/schema.d.ts.map +1 -1
  24. package/packages/core/dist/core/schema.js +10 -3
  25. package/packages/core/dist/core/schema.js.map +1 -1
  26. package/packages/core/dist/core/skill-content-parser.d.ts +91 -0
  27. package/packages/core/dist/core/skill-content-parser.d.ts.map +1 -0
  28. package/packages/core/dist/core/skill-content-parser.js +248 -0
  29. package/packages/core/dist/core/skill-content-parser.js.map +1 -0
  30. package/packages/core/dist/core/skill-loader.d.ts +46 -0
  31. package/packages/core/dist/core/skill-loader.d.ts.map +1 -0
  32. package/packages/core/dist/core/skill-loader.js +310 -0
  33. package/packages/core/dist/core/skill-loader.js.map +1 -0
  34. package/packages/core/dist/core/skill-registry.d.ts +131 -0
  35. package/packages/core/dist/core/skill-registry.d.ts.map +1 -0
  36. package/packages/core/dist/core/skill-registry.js +316 -0
  37. package/packages/core/dist/core/skill-registry.js.map +1 -0
  38. package/packages/core/dist/core/tfidf-embedding.d.ts +45 -0
  39. package/packages/core/dist/core/tfidf-embedding.d.ts.map +1 -0
  40. package/packages/core/dist/core/tfidf-embedding.js +199 -0
  41. package/packages/core/dist/core/tfidf-embedding.js.map +1 -0
  42. package/packages/core/dist/core/types.d.ts +155 -6
  43. package/packages/core/dist/core/types.d.ts.map +1 -1
  44. package/packages/core/dist/errors/matimo-error.d.ts +3 -1
  45. package/packages/core/dist/errors/matimo-error.d.ts.map +1 -1
  46. package/packages/core/dist/errors/matimo-error.js +2 -0
  47. package/packages/core/dist/errors/matimo-error.js.map +1 -1
  48. package/packages/core/dist/index.d.ts +20 -3
  49. package/packages/core/dist/index.d.ts.map +1 -1
  50. package/packages/core/dist/index.js +14 -1
  51. package/packages/core/dist/index.js.map +1 -1
  52. package/packages/core/dist/integrations/langchain.d.ts +55 -0
  53. package/packages/core/dist/integrations/langchain.d.ts.map +1 -1
  54. package/packages/core/dist/integrations/langchain.js +66 -0
  55. package/packages/core/dist/integrations/langchain.js.map +1 -1
  56. package/packages/core/dist/logging/winston-logger.d.ts.map +1 -1
  57. package/packages/core/dist/logging/winston-logger.js +9 -1
  58. package/packages/core/dist/logging/winston-logger.js.map +1 -1
  59. package/packages/core/dist/matimo-instance.d.ts +171 -6
  60. package/packages/core/dist/matimo-instance.d.ts.map +1 -1
  61. package/packages/core/dist/matimo-instance.js +602 -13
  62. package/packages/core/dist/matimo-instance.js.map +1 -1
  63. package/packages/core/dist/mcp/mcp-server.d.ts +23 -0
  64. package/packages/core/dist/mcp/mcp-server.d.ts.map +1 -1
  65. package/packages/core/dist/mcp/mcp-server.js +119 -8
  66. package/packages/core/dist/mcp/mcp-server.js.map +1 -1
  67. package/packages/core/dist/mcp/tool-converter.d.ts.map +1 -1
  68. package/packages/core/dist/mcp/tool-converter.js +10 -1
  69. package/packages/core/dist/mcp/tool-converter.js.map +1 -1
  70. package/packages/core/dist/policy/approval-manifest.d.ts +74 -0
  71. package/packages/core/dist/policy/approval-manifest.d.ts.map +1 -0
  72. package/packages/core/dist/policy/approval-manifest.js +178 -0
  73. package/packages/core/dist/policy/approval-manifest.js.map +1 -0
  74. package/packages/core/dist/policy/content-validator.d.ts +19 -0
  75. package/packages/core/dist/policy/content-validator.d.ts.map +1 -0
  76. package/packages/core/dist/policy/content-validator.js +196 -0
  77. package/packages/core/dist/policy/content-validator.js.map +1 -0
  78. package/packages/core/dist/policy/default-policy.d.ts +46 -0
  79. package/packages/core/dist/policy/default-policy.d.ts.map +1 -0
  80. package/packages/core/dist/policy/default-policy.js +241 -0
  81. package/packages/core/dist/policy/default-policy.js.map +1 -0
  82. package/packages/core/dist/policy/events.d.ts +71 -0
  83. package/packages/core/dist/policy/events.d.ts.map +1 -0
  84. package/packages/core/dist/policy/events.js +8 -0
  85. package/packages/core/dist/policy/events.js.map +1 -0
  86. package/packages/core/dist/policy/index.d.ts +13 -0
  87. package/packages/core/dist/policy/index.d.ts.map +1 -0
  88. package/packages/core/dist/policy/index.js +9 -0
  89. package/packages/core/dist/policy/index.js.map +1 -0
  90. package/packages/core/dist/policy/integrity-tracker.d.ts +62 -0
  91. package/packages/core/dist/policy/integrity-tracker.d.ts.map +1 -0
  92. package/packages/core/dist/policy/integrity-tracker.js +79 -0
  93. package/packages/core/dist/policy/integrity-tracker.js.map +1 -0
  94. package/packages/core/dist/policy/policy-loader.d.ts +58 -0
  95. package/packages/core/dist/policy/policy-loader.d.ts.map +1 -0
  96. package/packages/core/dist/policy/policy-loader.js +153 -0
  97. package/packages/core/dist/policy/policy-loader.js.map +1 -0
  98. package/packages/core/dist/policy/risk-classifier.d.ts +18 -0
  99. package/packages/core/dist/policy/risk-classifier.d.ts.map +1 -0
  100. package/packages/core/dist/policy/risk-classifier.js +43 -0
  101. package/packages/core/dist/policy/risk-classifier.js.map +1 -0
  102. package/packages/core/dist/policy/types.d.ts +126 -0
  103. package/packages/core/dist/policy/types.d.ts.map +1 -0
  104. package/packages/core/dist/policy/types.js +8 -0
  105. package/packages/core/dist/policy/types.js.map +1 -0
package/README.md CHANGED
@@ -73,6 +73,8 @@ Matimo ships with built-in support for:
73
73
  - **OAuth2 Support**: Provider-agnostic authorization for Slack, Gmail, GitHub, etc.
74
74
  - **Framework Support**: Factory pattern, Decorator pattern, LangChain, CrewAI
75
75
  - **TypeScript SDK**: Full type safety and IDE support
76
+ - **Agent Skills System**: [SKILL.md](https://agentskills.io) knowledge files with semantic search, content chunking, and progressive disclosure
77
+ - **Policy Engine**: 9 security rules, HITL quarantine, hot-reload, SHA-256 integrity tracking, HMAC approvals, audit events
76
78
 
77
79
  ## Why Matimo?
78
80
 
@@ -174,6 +176,64 @@ cd examples/tools && pnpm install && pnpm agent:factory
174
176
 
175
177
  ---
176
178
 
179
+ ## Skills System
180
+
181
+ Matimo supports the [Agent Skills specification](https://agentskills.io) — structured knowledge files (`SKILL.md`) that teach agents domain expertise at runtime.
182
+
183
+ ```typescript
184
+ // Discover available skills (Level 1 — metadata only)
185
+ const skills = matimo.listSkills();
186
+
187
+ // Load a specific skill (Level 2 — full content)
188
+ const skill = matimo.getSkill('slack');
189
+
190
+ // Load only the sections you need (smart context management)
191
+ const content = matimo.getSkillContent('postgres', {
192
+ sections: ['Error Handling', 'Parameterized Queries'],
193
+ maxTokens: 500,
194
+ });
195
+
196
+ // Semantic search across all skills
197
+ const results = await matimo.semanticSearchSkills('How do I handle rate limiting?');
198
+ ```
199
+
200
+ **Each provider ships one skill** with domain knowledge for all its tools. Agents load skills on demand — no context bloat.
201
+
202
+ See [Skills Documentation](./docs/skills/SKILLS.md) for the full guide.
203
+
204
+ ## Policy Engine & HITL
205
+
206
+ Matimo includes a defense-in-depth policy engine for agent tool usage:
207
+
208
+ ```typescript
209
+ const matimo = await MatimoInstance.init({
210
+ toolPaths: ['./tools', './agent-tools'],
211
+ policyFile: './policy.yaml', // 9 security rules, domain allowlists
212
+ untrustedPaths: ['./agent-tools'], // Agent-created tools validated here
213
+ onHITL: async (request) => {
214
+ // Human-in-the-loop quarantine
215
+ console.log(`Approve ${request.toolName}? Risk: ${request.riskLevel}`);
216
+ return promptUser();
217
+ },
218
+ onEvent: (event) => auditLog.push(event),
219
+ });
220
+
221
+ // Hot-reload policy at runtime (no restart needed)
222
+ await matimo.reloadPolicy('./policy-prod.yaml');
223
+ ```
224
+
225
+ **Key features:**
226
+
227
+ - 9 deterministic security rules (SSRF detection, namespace protection, credential allowlists)
228
+ - HITL quarantine — medium-risk tools pause for human approval instead of auto-rejecting
229
+ - Policy hot-reload — swap policies at runtime with automatic tool re-validation
230
+ - SHA-256 integrity tracking + HMAC approval manifest
231
+ - Full audit trail via structured events
232
+
233
+ See [Policy & Lifecycle Docs](./docs/api-reference/POLICY_AND_LIFECYCLE.md) for the complete reference.
234
+
235
+ ---
236
+
177
237
  ## Features **Coming Soon:**
178
238
 
179
239
  - More tool providers (Stripe, Jira, Linear, etc.)
@@ -226,6 +286,9 @@ See [Adding Tools to Matimo](./docs/tool-development/ADDING_TOOLS.md) for the co
226
286
 
227
287
  - [Getting Started](./docs/getting-started/)
228
288
  - [API Reference](./docs/api-reference/SDK.md)
289
+ - [Skills System](./docs/skills/SKILLS.md)
290
+ - [Policy Engine & Tool Lifecycle](./docs/api-reference/POLICY_AND_LIFECYCLE.md)
291
+ - [LangChain Integration](./docs/framework-integrations/LANGCHAIN.md)
229
292
  - [Tool Development](./docs/tool-development/ADDING_TOOLS.md)
230
293
  - [Architecture Overview](./docs/architecture/OVERVIEW.md)
231
294
  - [Contributing](./CONTRIBUTING.md)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "matimo",
3
- "version": "0.1.0-alpha.12.1",
3
+ "version": "0.1.0-alpha.13",
4
4
  "description": "Universal tool provider SDK: Framework-agnostic YAML-driven tool ecosystem for AI agents. Execute a library of pre-built tools (Slack, Gmail, GitHub, AWS, etc.) or define your own in YAML.",
5
5
  "main": "packages/core/dist/index.js",
6
6
  "types": "packages/core/dist/index.d.ts",
@@ -57,8 +57,8 @@
57
57
  "access": "public"
58
58
  },
59
59
  "dependencies": {
60
- "@matimo/cli": "0.1.0-alpha.12.1",
61
- "@matimo/core": "0.1.0-alpha.12.1"
60
+ "@matimo/cli": "0.1.0-alpha.13",
61
+ "@matimo/core": "0.1.0-alpha.13"
62
62
  },
63
63
  "devDependencies": {
64
64
  "@commitlint/cli": "^20.3.1",
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAiBA,wBAAgB,QAAQ,IAAI,IAAI,CA2D/B;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C5D"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAmBA,wBAAgB,QAAQ,IAAI,IAAI,CAmE/B;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiD5D"}
@@ -4,6 +4,8 @@ import { installCommand } from './commands/install.js';
4
4
  import { listCommand } from './commands/list.js';
5
5
  import { searchCommand } from './commands/search.js';
6
6
  import { mcpCommand } from './commands/mcp.js';
7
+ import { doctorCommand } from './commands/doctor.js';
8
+ import { reviewCommand } from './commands/review.js';
7
9
  function getPackageVersion() {
8
10
  try {
9
11
  const pkgPath = join(process.cwd(), 'package.json');
@@ -37,6 +39,14 @@ Commands:
37
39
  mcp setup Generate config for Claude Desktop / Cursor
38
40
  Example: matimo mcp setup
39
41
 
42
+ doctor Diagnose your Matimo setup (env vars, YAML validity, Node version)
43
+ Example: matimo doctor
44
+
45
+ review Review agent-created tools awaiting human approval
46
+ Example: matimo review list
47
+ Example: matimo review approve my_tool
48
+ Example: matimo review reject my_tool
49
+
40
50
  help Show this help message
41
51
 
42
52
  version Show version information
@@ -99,6 +109,12 @@ export async function main(cliArgs) {
99
109
  case 'mcp':
100
110
  await mcpCommand(params);
101
111
  break;
112
+ case 'doctor':
113
+ await doctorCommand();
114
+ break;
115
+ case 'review':
116
+ await reviewCommand(params);
117
+ break;
102
118
  case 'help':
103
119
  case '-h':
104
120
  case '--help':
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function doctorCommand(): Promise<void>;
2
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAmDA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA8JnD"}
@@ -0,0 +1,174 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ const issues = [];
4
+ function check(label, pass, message, severity = 'error') {
5
+ const icon = pass ? '✅' : severity === 'error' ? '❌' : '⚠️ ';
6
+ console.info(` ${icon} ${label}`);
7
+ if (!pass) {
8
+ issues.push({ severity, message });
9
+ console.info(` ${message}`);
10
+ }
11
+ }
12
+ function findNodeModules() {
13
+ let dir = process.cwd();
14
+ for (let i = 0; i < 10; i++) {
15
+ const candidate = path.join(dir, 'node_modules');
16
+ if (fs.existsSync(candidate))
17
+ return candidate;
18
+ const parent = path.dirname(dir);
19
+ if (parent === dir)
20
+ break;
21
+ dir = parent;
22
+ }
23
+ return null;
24
+ }
25
+ async function loadMatimoCoreExport(exportName) {
26
+ try {
27
+ // Dynamic import works in both ESM (built CLI) and CJS (ts-jest test transform)
28
+ const core = (await import('@matimo/core'));
29
+ return core[exportName] ?? null;
30
+ }
31
+ catch {
32
+ return null;
33
+ }
34
+ }
35
+ export async function doctorCommand() {
36
+ // Ensure issues do not accumulate across multiple invocations
37
+ issues.length = 0;
38
+ console.info('\n🩺 Matimo Doctor — Checking your setup...\n');
39
+ // ─── 1. Node.js version ────────────────────────────────────────────────
40
+ console.info('Node.js:');
41
+ const nodeVersion = process.versions.node;
42
+ const [major] = nodeVersion.split('.').map(Number);
43
+ check(`Node.js v${nodeVersion}`, major >= 18, `Node.js 18+ required. You are running ${nodeVersion}. Upgrade: https://nodejs.org`);
44
+ console.info('');
45
+ // ─── 2. @matimo/* packages ─────────────────────────────────────────────
46
+ const nodeModulesPath = findNodeModules();
47
+ console.info('@matimo/* packages:');
48
+ if (!nodeModulesPath) {
49
+ check('node_modules', false, 'node_modules not found. Run "pnpm install" or "npm install".');
50
+ console.info('');
51
+ }
52
+ else {
53
+ const matimoScope = path.join(nodeModulesPath, '@matimo');
54
+ const hasScope = fs.existsSync(matimoScope);
55
+ if (!hasScope) {
56
+ check('@matimo scope', false, 'No @matimo/* packages installed. Run "matimo install slack" to get started.', 'warn');
57
+ }
58
+ else {
59
+ const packages = fs.readdirSync(matimoScope).filter((d) => !d.startsWith('.'));
60
+ if (packages.length === 0) {
61
+ check('@matimo scope', false, 'No @matimo/* packages installed. Run "matimo install slack" to get started.', 'warn');
62
+ }
63
+ else {
64
+ for (const pkg of packages) {
65
+ const pkgDir = path.join(matimoScope, pkg);
66
+ const pkgJsonPath = path.join(pkgDir, 'package.json');
67
+ if (!fs.existsSync(pkgJsonPath))
68
+ continue;
69
+ console.info(` 📦 @matimo/${pkg}`);
70
+ // Check env vars for auth placeholders
71
+ const toolsDir = path.join(pkgDir, 'tools');
72
+ if (fs.existsSync(toolsDir)) {
73
+ const toolDirs = fs.readdirSync(toolsDir).filter((d) => {
74
+ return fs.existsSync(path.join(toolsDir, d, 'definition.yaml'));
75
+ });
76
+ const missingEnv = [];
77
+ const seenVars = new Set();
78
+ for (const toolName of toolDirs) {
79
+ const yamlPath = path.join(toolsDir, toolName, 'definition.yaml');
80
+ const content = fs.readFileSync(yamlPath, 'utf-8');
81
+ // Scan for {ENV_VAR_NAME} placeholders in headers/URLs
82
+ const placeholderRegex = /\{(\w+)\}/g;
83
+ let match;
84
+ while ((match = placeholderRegex.exec(content)) !== null) {
85
+ const name = match[1];
86
+ if (isAuthVar(name) && !seenVars.has(name)) {
87
+ seenVars.add(name);
88
+ if (!process.env[name]) {
89
+ missingEnv.push(name);
90
+ }
91
+ }
92
+ }
93
+ }
94
+ if (missingEnv.length > 0) {
95
+ issues.push({
96
+ severity: 'error',
97
+ message: `@matimo/${pkg}: missing env vars: ${missingEnv.join(', ')}`,
98
+ });
99
+ for (const v of missingEnv) {
100
+ console.info(` ❌ Missing env var: ${v}`);
101
+ }
102
+ }
103
+ else {
104
+ console.info(` ✅ All required env vars are set`);
105
+ }
106
+ // Validate YAML schemas
107
+ let yamlErrors = 0;
108
+ const validateToolDefinition = await loadMatimoCoreExport('validateToolDefinition');
109
+ if (validateToolDefinition) {
110
+ const yaml = await import('js-yaml');
111
+ for (const toolName of toolDirs) {
112
+ const yamlPath = path.join(toolsDir, toolName, 'definition.yaml');
113
+ try {
114
+ const parsed = yaml.load(fs.readFileSync(yamlPath, 'utf-8'));
115
+ validateToolDefinition(parsed);
116
+ }
117
+ catch (err) {
118
+ yamlErrors++;
119
+ issues.push({
120
+ severity: 'error',
121
+ message: `@matimo/${pkg}/${toolName}: YAML invalid — ${err.message}`,
122
+ });
123
+ console.info(` ❌ ${toolName}: invalid YAML`);
124
+ console.info(` ${err.message.split('\n')[0]}`);
125
+ }
126
+ }
127
+ if (yamlErrors === 0 && toolDirs.length > 0) {
128
+ console.info(` ✅ ${toolDirs.length} tool YAML(s) valid`);
129
+ }
130
+ }
131
+ }
132
+ console.info('');
133
+ }
134
+ }
135
+ }
136
+ }
137
+ // ─── 3. MATIMO_APPROVAL_SECRET ─────────────────────────────────────────
138
+ console.info('Policy / Approval:');
139
+ const hasApprovalSecret = !!process.env.MATIMO_APPROVAL_SECRET;
140
+ check('MATIMO_APPROVAL_SECRET', hasApprovalSecret, 'MATIMO_APPROVAL_SECRET is not set. Agent-created tool approvals will use a random secret (not persistent across restarts). Set it in your .env file.', 'warn');
141
+ console.info('');
142
+ // ─── 4. Summary ────────────────────────────────────────────────────────
143
+ const errors = issues.filter((i) => i.severity === 'error');
144
+ const warnings = issues.filter((i) => i.severity === 'warn');
145
+ console.info('─'.repeat(60));
146
+ if (errors.length === 0 && warnings.length === 0) {
147
+ console.info('\n✅ Matimo is ready! No issues found.\n');
148
+ }
149
+ else {
150
+ if (errors.length > 0) {
151
+ console.info(`\n❌ ${errors.length} error(s) found — fix before using Matimo:\n`);
152
+ errors.forEach((e, i) => console.info(` ${i + 1}. ${e.message}`));
153
+ console.info('');
154
+ }
155
+ if (warnings.length > 0) {
156
+ console.info(`⚠️ ${warnings.length} warning(s):\n`);
157
+ warnings.forEach((w, i) => console.info(` ${i + 1}. ${w.message}`));
158
+ console.info('');
159
+ }
160
+ }
161
+ if (errors.length > 0)
162
+ process.exit(1);
163
+ }
164
+ /** Heuristic: is this placeholder likely an auth/secret env var? */
165
+ function isAuthVar(name) {
166
+ const upper = name.toUpperCase();
167
+ return (upper.includes('TOKEN') ||
168
+ upper.includes('SECRET') ||
169
+ upper.includes('KEY') ||
170
+ upper.includes('PASSWORD') ||
171
+ upper.includes('CREDENTIAL') ||
172
+ upper.includes('AUTH'));
173
+ }
174
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAY7B,MAAM,MAAM,GAAY,EAAE,CAAC;AAE3B,SAAS,KAAK,CACZ,KAAa,EACb,IAAa,EACb,OAAe,EACf,WAA6B,OAAO;IAEpC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7D,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACjD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAI,UAAkB;IACvD,IAAI,CAAC;QACH,gFAAgF;QAChF,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,CAA4B,CAAC;QACvE,OAAQ,IAAI,CAAC,UAAU,CAAO,IAAI,IAAI,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,8DAA8D;IAC9D,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAE9D,0EAA0E;IAC1E,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC1C,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnD,KAAK,CACH,YAAY,WAAW,EAAE,EACzB,KAAK,IAAI,EAAE,EACX,yCAAyC,WAAW,+BAA+B,CACpF,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEjB,0EAA0E;IAC1E,MAAM,eAAe,GAAG,eAAe,EAAE,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAEpC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,KAAK,CAAC,cAAc,EAAE,KAAK,EAAE,8DAA8D,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAE5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,KAAK,CACH,eAAe,EACf,KAAK,EACL,6EAA6E,EAC7E,MAAM,CACP,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YAE/E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,KAAK,CACH,eAAe,EACf,KAAK,EACL,6EAA6E,EAC7E,MAAM,CACP,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;oBAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;oBAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;oBAEtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;wBAAE,SAAS;oBAE1C,OAAO,CAAC,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;oBAEpC,uCAAuC;oBACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAC5C,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC5B,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;4BACrD,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC;wBAClE,CAAC,CAAC,CAAC;wBAEH,MAAM,UAAU,GAAa,EAAE,CAAC;wBAChC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;wBAEnC,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;4BAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;4BAClE,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;4BAEnD,uDAAuD;4BACvD,MAAM,gBAAgB,GAAG,YAAY,CAAC;4BACtC,IAAI,KAAK,CAAC;4BACV,OAAO,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gCACzD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gCACtB,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oCAC3C,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oCACnB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wCACvB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oCACxB,CAAC;gCACH,CAAC;4BACH,CAAC;wBACH,CAAC;wBAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC1B,MAAM,CAAC,IAAI,CAAC;gCACV,QAAQ,EAAE,OAAO;gCACjB,OAAO,EAAE,WAAW,GAAG,uBAAuB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;6BACtE,CAAC,CAAC;4BACH,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gCAC3B,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;4BAC/C,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;wBACvD,CAAC;wBAED,wBAAwB;wBACxB,IAAI,UAAU,GAAG,CAAC,CAAC;wBACnB,MAAM,sBAAsB,GAC1B,MAAM,oBAAoB,CAA0B,wBAAwB,CAAC,CAAC;wBAEhF,IAAI,sBAAsB,EAAE,CAAC;4BAC3B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;4BACrC,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;gCAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;gCAClE,IAAI,CAAC;oCACH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;oCAC7D,sBAAsB,CAAC,MAAM,CAAC,CAAC;gCACjC,CAAC;gCAAC,OAAO,GAAG,EAAE,CAAC;oCACb,UAAU,EAAE,CAAC;oCACb,MAAM,CAAC,IAAI,CAAC;wCACV,QAAQ,EAAE,OAAO;wCACjB,OAAO,EAAE,WAAW,GAAG,IAAI,QAAQ,oBAAqB,GAAa,CAAC,OAAO,EAAE;qCAChF,CAAC,CAAC;oCACH,OAAO,CAAC,IAAI,CAAC,UAAU,QAAQ,gBAAgB,CAAC,CAAC;oCACjD,OAAO,CAAC,IAAI,CAAC,WAAY,GAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gCACnE,CAAC;4BACH,CAAC;4BACD,IAAI,UAAU,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCAC5C,OAAO,CAAC,IAAI,CAAC,UAAU,QAAQ,CAAC,MAAM,qBAAqB,CAAC,CAAC;4BAC/D,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACnC,MAAM,iBAAiB,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAC/D,KAAK,CACH,wBAAwB,EACxB,iBAAiB,EACjB,sJAAsJ,EACtJ,MAAM,CACP,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEjB,0EAA0E;IAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;IAE7D,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,MAAM,8CAA8C,CAAC,CAAC;YACjF,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,MAAM,gBAAgB,CAAC,CAAC;YACrD,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,oEAAoE;AACpE,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,CACL,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QACrB,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC1B,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5B,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CACvB,CAAC;AACJ,CAAC"}
@@ -10,7 +10,8 @@
10
10
  * matimo mcp --exclude postgres # exclude these tools
11
11
  * matimo mcp --secrets env,vault # secret resolver chain
12
12
  * matimo mcp --token my-secret # HTTP bearer token
13
- * matimo mcp --tool-paths /path/to/tools # custom tool paths
13
+ * matimo mcp --tool-paths /path/to/tools # custom tool paths
14
+ * matimo mcp --skill-paths /path/to/skills # custom skill paths
14
15
  */
15
16
  export declare function mcpCommand(params: string[]): Promise<void>;
16
17
  //# sourceMappingURL=mcp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAsKH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6FhE"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA8KH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8FhE"}
@@ -10,7 +10,8 @@
10
10
  * matimo mcp --exclude postgres # exclude these tools
11
11
  * matimo mcp --secrets env,vault # secret resolver chain
12
12
  * matimo mcp --token my-secret # HTTP bearer token
13
- * matimo mcp --tool-paths /path/to/tools # custom tool paths
13
+ * matimo mcp --tool-paths /path/to/tools # custom tool paths
14
+ * matimo mcp --skill-paths /path/to/skills # custom skill paths
14
15
  */
15
16
  function parseArgs(params) {
16
17
  const args = {
@@ -89,6 +90,12 @@ function parseArgs(params) {
89
90
  .map((s) => s.trim());
90
91
  i++;
91
92
  break;
93
+ case '--skill-paths':
94
+ args.skillPaths = requireValue('--skill-paths', next)
95
+ .split(',')
96
+ .map((s) => s.trim());
97
+ i++;
98
+ break;
92
99
  case '--https':
93
100
  args.https = true;
94
101
  break;
@@ -156,6 +163,7 @@ export async function mcpCommand(params) {
156
163
  secretResolver: buildResolverConfig(args),
157
164
  mcpToken: args.token,
158
165
  toolPaths: args.toolPaths,
166
+ skillPaths: args.skillPaths,
159
167
  autoDiscover: true,
160
168
  https: args.https,
161
169
  selfSigned: args.selfSigned,
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `matimo review` — Human oversight for agent-created tools.
3
+ *
4
+ * Subcommands:
5
+ * matimo review list Show all tools awaiting approval
6
+ * matimo review approve <name> Approve a pending tool (requires MATIMO_APPROVAL_SECRET)
7
+ * matimo review reject <name> Reject / revoke a tool's approval
8
+ */
9
+ export declare function reviewCommand(args: string[]): Promise<void>;
10
+ //# sourceMappingURL=review.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA+LH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBjE"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * `matimo review` — Human oversight for agent-created tools.
3
+ *
4
+ * Subcommands:
5
+ * matimo review list Show all tools awaiting approval
6
+ * matimo review approve <name> Approve a pending tool (requires MATIMO_APPROVAL_SECRET)
7
+ * matimo review reject <name> Reject / revoke a tool's approval
8
+ */
9
+ import path from 'path';
10
+ import * as YAML from 'yaml';
11
+ function resolveManifestDir() {
12
+ // Look for the approvals file in cwd or the MATIMO_TOOL_DIR env var.
13
+ const toolDir = process.env.MATIMO_TOOL_DIR;
14
+ return toolDir ? path.resolve(toolDir) : process.cwd();
15
+ }
16
+ /** Try to import @matimo/core and return ApprovalManifest, or null if unavailable. */
17
+ async function tryLoadManifest(dir) {
18
+ try {
19
+ // Dynamic import works in both ESM (built CLI) and CJS (ts-jest test transform)
20
+ const core = (await import('@matimo/core'));
21
+ const ApprovalManifest = core['ApprovalManifest'];
22
+ return new ApprovalManifest(dir);
23
+ }
24
+ catch {
25
+ return null;
26
+ }
27
+ }
28
+ function printTable(headers, rows) {
29
+ const cols = headers.length;
30
+ const widths = headers.map((h, i) => Math.max(h.length, ...rows.map((r) => (r[i] ?? '').length)));
31
+ const divider = widths.map((w) => '─'.repeat(w + 2)).join('┼');
32
+ const fmt = (row) => '│ ' + row.map((cell, idx) => cell.padEnd(widths[idx])).join(' │ ') + ' │';
33
+ console.info('┌' + widths.map((w) => '─'.repeat(w + 2)).join('┬') + '┐');
34
+ console.info(fmt(headers));
35
+ console.info('├' + divider + '┤');
36
+ for (const row of rows) {
37
+ console.info(fmt(row.map((c) => c ?? '').slice(0, cols)));
38
+ }
39
+ console.info('└' + widths.map((w) => '─'.repeat(w + 2)).join('┴') + '┘');
40
+ }
41
+ async function listPending(dir) {
42
+ const manifest = await tryLoadManifest(dir);
43
+ if (!manifest) {
44
+ console.error('❌ @matimo/core is not available. Run `pnpm install` first.');
45
+ process.exit(1);
46
+ }
47
+ const pending = manifest.getPendingTools();
48
+ const approved = manifest.listApproved();
49
+ if (pending.length === 0 && approved.length === 0) {
50
+ console.info('ℹ️ No tools are pending or approved.');
51
+ return;
52
+ }
53
+ if (pending.length > 0) {
54
+ console.info('\n⏳ Pending approval:\n');
55
+ const rows = pending.map((name) => [name, 'pending', '—', '—']);
56
+ printTable(['Tool name', 'Status', 'Approved by', 'Approved at'], rows);
57
+ }
58
+ if (approved.length > 0) {
59
+ console.info('\n✅ Approved tools:\n');
60
+ const rows = approved.map((name) => {
61
+ const rec = manifest.getApproval(name);
62
+ return [name, 'approved', rec.approvedBy ?? '—', rec.approvedAt];
63
+ });
64
+ printTable(['Tool name', 'Status', 'Approved by', 'Approved at'], rows);
65
+ }
66
+ if (pending.length > 0) {
67
+ console.info(`\nRun "matimo review approve <tool-name>" to approve, or "matimo review reject <tool-name>" to reject.`);
68
+ }
69
+ }
70
+ async function approveTool(toolName, dir) {
71
+ if (!toolName) {
72
+ console.error('❌ Usage: matimo review approve <tool-name>');
73
+ process.exit(1);
74
+ }
75
+ const manifest = await tryLoadManifest(dir);
76
+ if (!manifest) {
77
+ console.error('❌ @matimo/core is not available. Run `pnpm install` first.');
78
+ process.exit(1);
79
+ }
80
+ const pending = manifest.getPendingTools();
81
+ if (!pending.includes(toolName)) {
82
+ const approved = manifest.listApproved();
83
+ if (approved.includes(toolName)) {
84
+ console.info(`ℹ️ "${toolName}" is already approved.`);
85
+ return;
86
+ }
87
+ console.error(`❌ No pending tool named "${toolName}". Run "matimo review list" to see pending tools.`);
88
+ process.exit(1);
89
+ }
90
+ // Require a human-set approval secret — not the auto-generated one
91
+ const secret = process.env.MATIMO_APPROVAL_SECRET;
92
+ if (!secret) {
93
+ console.error('❌ MATIMO_APPROVAL_SECRET is not set.\n' +
94
+ ' Set it to approve tools: export MATIMO_APPROVAL_SECRET=<your-secret>');
95
+ process.exit(1);
96
+ }
97
+ // Find the definition YAML to hash it
98
+ const fs = await import('fs');
99
+ const toolDir = path.join(dir, toolName);
100
+ const yamlPath = path.join(toolDir, 'definition.yaml');
101
+ if (!fs.existsSync(yamlPath)) {
102
+ console.error(`❌ Cannot find definition.yaml for tool "${toolName}" at:\n ${yamlPath}`);
103
+ process.exit(1);
104
+ }
105
+ const originalYamlContent = fs.readFileSync(yamlPath, 'utf-8');
106
+ let finalYamlContent = originalYamlContent;
107
+ // Promote status in definition.yaml to "approved" so runtime policy sees the approval.
108
+ try {
109
+ const parsed = YAML.parse(originalYamlContent) ?? {};
110
+ if (parsed && typeof parsed === 'object') {
111
+ const currentStatus = parsed.status;
112
+ if (currentStatus !== 'approved') {
113
+ parsed.status = 'approved';
114
+ finalYamlContent = YAML.stringify(parsed);
115
+ // Write atomically using tmp + rename pattern
116
+ const tmpPath = yamlPath + '.tmp';
117
+ fs.writeFileSync(tmpPath, finalYamlContent, 'utf-8');
118
+ fs.renameSync(tmpPath, yamlPath);
119
+ console.info(` 📝 Updated status: draft → approved in definition.yaml`);
120
+ }
121
+ }
122
+ }
123
+ catch {
124
+ console.warn('⚠️ Failed to update status in definition.yaml; proceeding with manifest approval only.');
125
+ }
126
+ const hash = manifest.computeHash(finalYamlContent);
127
+ const approvedBy = process.env.USER ?? process.env.USERNAME ?? 'cli';
128
+ manifest.approve(toolName, hash, approvedBy);
129
+ console.info(`✅ Tool "${toolName}" approved.`);
130
+ }
131
+ async function rejectTool(toolName, dir) {
132
+ if (!toolName) {
133
+ console.error('❌ Usage: matimo review reject <tool-name>');
134
+ process.exit(1);
135
+ }
136
+ const manifest = await tryLoadManifest(dir);
137
+ if (!manifest) {
138
+ console.error('❌ @matimo/core is not available. Run `pnpm install` first.');
139
+ process.exit(1);
140
+ }
141
+ const wasApproved = manifest.revoke(toolName);
142
+ // Remove from pending even if it wasn't in approved set
143
+ // (revoke only removes from approved; pending is cleaned up on next loadFromDisk)
144
+ // Re-save by marking and un-marking is not clean — just confirm action
145
+ const pending = manifest.getPendingTools();
146
+ const wasPending = pending.includes(toolName);
147
+ if (!wasApproved && !wasPending) {
148
+ console.info(`ℹ️ No record of tool "${toolName}". Nothing to reject.`);
149
+ return;
150
+ }
151
+ console.info(`🗑 Tool "${toolName}" has been rejected/revoked.`);
152
+ if (wasApproved) {
153
+ console.info(' (Approval signature removed — the tool will be blocked until re-approved.)');
154
+ }
155
+ }
156
+ export async function reviewCommand(args) {
157
+ const sub = args[0];
158
+ const dir = resolveManifestDir();
159
+ switch (sub) {
160
+ case 'list':
161
+ case undefined:
162
+ await listPending(dir);
163
+ break;
164
+ case 'approve':
165
+ await approveTool(args[1], dir);
166
+ break;
167
+ case 'reject':
168
+ await rejectTool(args[1], dir);
169
+ break;
170
+ default:
171
+ console.error(`❌ Unknown review subcommand: "${sub}"`);
172
+ console.info('Usage: matimo review [list|approve|reject] [tool-name]');
173
+ process.exit(1);
174
+ }
175
+ }
176
+ //# sourceMappingURL=review.js.map