@kaddo/mcp 3.100.0 → 3.102.0
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 +5 -5
- package/dist/index.js +14 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -34,7 +34,7 @@ directory set via the `KADDO_PROJECT_DIR` environment variable).
|
|
|
34
34
|
}
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
`cwd` must point to the project that contains `.kaddo
|
|
37
|
+
`cwd` must point to the project that contains `.kaddo/` and `knowledge/`.
|
|
38
38
|
|
|
39
39
|
## Resources
|
|
40
40
|
|
|
@@ -47,7 +47,7 @@ directory set via the `KADDO_PROJECT_DIR` environment variable).
|
|
|
47
47
|
| `kaddo://graph-hints` | `.kaddo/graph-hints.md` + `.json` | weak/missing relationships |
|
|
48
48
|
| `kaddo://work-items` | `knowledge/delivery/work-items/` | summarized Work Items |
|
|
49
49
|
| `kaddo://roadmap` | `knowledge/delivery/roadmap.md` | delivery roadmap |
|
|
50
|
-
| `kaddo://capsules` | `.kaddo/external.yml` + `external/` | external Knowledge Capsules |
|
|
50
|
+
| `kaddo://capsules` | `.kaddo/external.yml` + `knowledge/external/` | external Knowledge Capsules |
|
|
51
51
|
| `kaddo://agents` | `knowledge/agents/` | installed agent prompts |
|
|
52
52
|
| `kaddo://skills` | `knowledge/skills/` | installed reusable skills (empty if none) |
|
|
53
53
|
| `kaddo://skills/<id>` | `knowledge/skills/<id>/skill.md` | one reusable skill |
|
|
@@ -66,7 +66,7 @@ directory set via the `KADDO_PROJECT_DIR` environment variable).
|
|
|
66
66
|
|
|
67
67
|
When a derived artifact is missing or stale, these tools regenerate it in place using the same core
|
|
68
68
|
logic as the CLI — so the agent never has to leave the flow. They are deterministic (no LLM) and
|
|
69
|
-
**only write under `.kaddo/`**; they never touch `knowledge/`, `src/`,
|
|
69
|
+
**only write under `.kaddo/`**; they never touch `knowledge/`, `src/`,
|
|
70
70
|
`.kaddo/external.yml` or git.
|
|
71
71
|
|
|
72
72
|
| Tool | Writes | CLI equivalent |
|
|
@@ -78,7 +78,7 @@ logic as the CLI — so the agent never has to leave the flow. They are determin
|
|
|
78
78
|
| `kaddo_generate_capsule_draft` | `.kaddo/exports/<project>.capsule.md` + `.json` | `kaddo capsule export` |
|
|
79
79
|
|
|
80
80
|
`kaddo_generate_capsule_draft` writes a **draft only** — it never registers/imports a capsule
|
|
81
|
-
(`external/`, `.kaddo/external.yml` stay untouched; use the CLI `kaddo capsule add` for that).
|
|
81
|
+
(`knowledge/external/`, `.kaddo/external.yml` stay untouched; use the CLI `kaddo capsule add` for that).
|
|
82
82
|
|
|
83
83
|
Each tool returns `{ status, files_written, summary, warnings, next_suggested_resources }`. All
|
|
84
84
|
writes pass through a central allowlist (`assertMcpDerivedWritePath`) that blocks any path outside
|
|
@@ -103,7 +103,7 @@ regenerate artifacts **only under `.kaddo/`**; everything else is read-only.
|
|
|
103
103
|
|
|
104
104
|
## Security
|
|
105
105
|
|
|
106
|
-
The server only reads `.kaddo
|
|
106
|
+
The server only reads `.kaddo/` and `knowledge/`. It never reads `src/`, `.git/`,
|
|
107
107
|
`node_modules/`, `dist/`, `build/` or `coverage/`, blocks path traversal, and never exposes
|
|
108
108
|
secrets, tokens, env values, source code or PII.
|
|
109
109
|
|
package/dist/index.js
CHANGED
|
@@ -96,7 +96,7 @@ import matter from "gray-matter";
|
|
|
96
96
|
import fs from "fs";
|
|
97
97
|
import path from "path";
|
|
98
98
|
import { parse as parseYaml } from "yaml";
|
|
99
|
-
var ALLOWED_ROOTS = [".kaddo", "knowledge"
|
|
99
|
+
var ALLOWED_ROOTS = [".kaddo", "knowledge"];
|
|
100
100
|
var KaddoMcpError = class extends Error {
|
|
101
101
|
};
|
|
102
102
|
function projectRoot() {
|
|
@@ -391,7 +391,7 @@ import matter8 from "gray-matter";
|
|
|
391
391
|
// ../cli/src/core/config.ts
|
|
392
392
|
import { z } from "zod";
|
|
393
393
|
import { parse as parseYaml2 } from "yaml";
|
|
394
|
-
var PROJECT_STATES = ["new", "pre-ai", "legacy"];
|
|
394
|
+
var PROJECT_STATES = ["new", "pre-ai", "legacy", "ai-assisted"];
|
|
395
395
|
var TEAM_SIZES = ["indie", "small", "medium", "enterprise"];
|
|
396
396
|
var REPOSITORY_STRUCTURES = ["monorepo", "multirepo"];
|
|
397
397
|
var PROJECT_LANGUAGES = ["en", "es"];
|
|
@@ -414,7 +414,7 @@ var ConfigError = class extends Error {
|
|
|
414
414
|
this.name = "ConfigError";
|
|
415
415
|
}
|
|
416
416
|
};
|
|
417
|
-
var projectStateSchema = z.enum(["new", "pre-ai", "legacy"], {
|
|
417
|
+
var projectStateSchema = z.enum(["new", "pre-ai", "legacy", "ai-assisted"], {
|
|
418
418
|
errorMap: () => ({
|
|
419
419
|
message: `project.state must be one of: ${PROJECT_STATES.join(", ")}`
|
|
420
420
|
})
|
|
@@ -462,7 +462,10 @@ var configSchema = z.object({
|
|
|
462
462
|
}).passthrough().optional(),
|
|
463
463
|
knowledge: z.unknown().optional(),
|
|
464
464
|
guard: z.unknown().optional(),
|
|
465
|
-
scan: z.unknown().optional()
|
|
465
|
+
scan: z.unknown().optional(),
|
|
466
|
+
telemetry: z.object({
|
|
467
|
+
enabled: z.boolean().default(false)
|
|
468
|
+
}).passthrough().optional()
|
|
466
469
|
}).passthrough();
|
|
467
470
|
function configPathFor(dir) {
|
|
468
471
|
return join(dir, ".kaddo", "config.yml");
|
|
@@ -10498,7 +10501,7 @@ var RESOURCES = [
|
|
|
10498
10501
|
{
|
|
10499
10502
|
uri: "kaddo://capsules",
|
|
10500
10503
|
name: "Kaddo knowledge capsules",
|
|
10501
|
-
description: "External Knowledge Capsules from .kaddo/external.yml and external/.",
|
|
10504
|
+
description: "External Knowledge Capsules from .kaddo/external.yml and knowledge/external/.",
|
|
10502
10505
|
mimeType: "application/json",
|
|
10503
10506
|
read: (root) => [
|
|
10504
10507
|
{
|
|
@@ -10826,7 +10829,7 @@ function isFile2(p2) {
|
|
|
10826
10829
|
function join3(...parts) {
|
|
10827
10830
|
return path3.join(...parts);
|
|
10828
10831
|
}
|
|
10829
|
-
var PROJECT_STATES2 = ["new", "pre-ai", "legacy"];
|
|
10832
|
+
var PROJECT_STATES2 = ["new", "pre-ai", "legacy", "ai-assisted"];
|
|
10830
10833
|
var TEAM_SIZES2 = ["indie", "small", "medium", "enterprise"];
|
|
10831
10834
|
var REPOSITORY_STRUCTURES2 = ["monorepo", "multirepo"];
|
|
10832
10835
|
var PROJECT_LANGUAGES2 = ["en", "es"];
|
|
@@ -10842,7 +10845,7 @@ var ConfigError2 = class extends Error {
|
|
|
10842
10845
|
this.name = "ConfigError";
|
|
10843
10846
|
}
|
|
10844
10847
|
};
|
|
10845
|
-
var projectStateSchema2 = z3.enum(["new", "pre-ai", "legacy"], {
|
|
10848
|
+
var projectStateSchema2 = z3.enum(["new", "pre-ai", "legacy", "ai-assisted"], {
|
|
10846
10849
|
errorMap: () => ({
|
|
10847
10850
|
message: `project.state must be one of: ${PROJECT_STATES2.join(", ")}`
|
|
10848
10851
|
})
|
|
@@ -10890,7 +10893,10 @@ var configSchema2 = z3.object({
|
|
|
10890
10893
|
}).passthrough().optional(),
|
|
10891
10894
|
knowledge: z3.unknown().optional(),
|
|
10892
10895
|
guard: z3.unknown().optional(),
|
|
10893
|
-
scan: z3.unknown().optional()
|
|
10896
|
+
scan: z3.unknown().optional(),
|
|
10897
|
+
telemetry: z3.object({
|
|
10898
|
+
enabled: z3.boolean().default(false)
|
|
10899
|
+
}).passthrough().optional()
|
|
10894
10900
|
}).passthrough();
|
|
10895
10901
|
function configPathFor2(dir) {
|
|
10896
10902
|
return join3(dir, ".kaddo", "config.yml");
|
package/package.json
CHANGED