svn-agent-mcp 1.0.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.
Files changed (165) hide show
  1. package/.editorconfig +12 -0
  2. package/.gitattributes +7 -0
  3. package/.github/workflows/ci.yml +39 -0
  4. package/.svn-mcp-policy.json +9 -0
  5. package/CHANGELOG.md +248 -0
  6. package/CONTRIBUTING.md +49 -0
  7. package/LICENSE +201 -0
  8. package/README.md +143 -0
  9. package/SECURITY.md +21 -0
  10. package/THIRD_PARTY_CHECKSUMS.txt +52 -0
  11. package/THIRD_PARTY_NOTICES.md +46 -0
  12. package/bin/SlikSvn-DB44-20-x64.dll +0 -0
  13. package/bin/SlikSvn-libapr-1.dll +0 -0
  14. package/bin/SlikSvn-libaprutil-1.dll +0 -0
  15. package/bin/SlikSvn-libcrypto-3-x64.dll +0 -0
  16. package/bin/SlikSvn-libintl.dll +0 -0
  17. package/bin/SlikSvn-libsasl21.dll +0 -0
  18. package/bin/SlikSvn-libssl-3-x64.dll +0 -0
  19. package/bin/SlikSvn-libsvn_client-1.dll +0 -0
  20. package/bin/SlikSvn-libsvn_delta-1.dll +0 -0
  21. package/bin/SlikSvn-libsvn_diff-1.dll +0 -0
  22. package/bin/SlikSvn-libsvn_fs-1.dll +0 -0
  23. package/bin/SlikSvn-libsvn_fs_base-1.dll +0 -0
  24. package/bin/SlikSvn-libsvn_fs_fs-1.dll +0 -0
  25. package/bin/SlikSvn-libsvn_fs_util-1.dll +0 -0
  26. package/bin/SlikSvn-libsvn_fs_x-1.dll +0 -0
  27. package/bin/SlikSvn-libsvn_ra-1.dll +0 -0
  28. package/bin/SlikSvn-libsvn_repos-1.dll +0 -0
  29. package/bin/SlikSvn-libsvn_subr-1.dll +0 -0
  30. package/bin/SlikSvn-libsvn_wc-1.dll +0 -0
  31. package/bin/System64/concrt140.dll +0 -0
  32. package/bin/System64/msvcp140.dll +0 -0
  33. package/bin/System64/msvcp140_1.dll +0 -0
  34. package/bin/System64/msvcp140_2.dll +0 -0
  35. package/bin/System64/msvcp140_atomic_wait.dll +0 -0
  36. package/bin/System64/msvcp140_codecvt_ids.dll +0 -0
  37. package/bin/System64/vccorlib140.dll +0 -0
  38. package/bin/System64/vcruntime140.dll +0 -0
  39. package/bin/System64/vcruntime140_1.dll +0 -0
  40. package/bin/dos2unix.exe +0 -0
  41. package/bin/engines/capi.dll +0 -0
  42. package/bin/libsvnjavahl-1.dll +0 -0
  43. package/bin/mac2unix.exe +0 -0
  44. package/bin/svn-populate-node-origins-index.exe +0 -0
  45. package/bin/svn.exe +0 -0
  46. package/bin/svnadmin.exe +0 -0
  47. package/bin/svnauthz-validate.exe +0 -0
  48. package/bin/svnauthz.exe +0 -0
  49. package/bin/svnbench.exe +0 -0
  50. package/bin/svndumpfilter.exe +0 -0
  51. package/bin/svnfsfs.exe +0 -0
  52. package/bin/svnlook.exe +0 -0
  53. package/bin/svnmucc.exe +0 -0
  54. package/bin/svnrdump.exe +0 -0
  55. package/bin/svnserve.exe +0 -0
  56. package/bin/svnsync.exe +0 -0
  57. package/bin/svnversion.exe +0 -0
  58. package/bin/unix2dos.exe +0 -0
  59. package/bin/unix2mac.exe +0 -0
  60. package/dist/envelope.d.ts +39 -0
  61. package/dist/envelope.d.ts.map +1 -0
  62. package/dist/envelope.js +137 -0
  63. package/dist/envelope.js.map +1 -0
  64. package/dist/eol.d.ts +15 -0
  65. package/dist/eol.d.ts.map +1 -0
  66. package/dist/eol.js +119 -0
  67. package/dist/eol.js.map +1 -0
  68. package/dist/guards.d.ts +26 -0
  69. package/dist/guards.d.ts.map +1 -0
  70. package/dist/guards.js +306 -0
  71. package/dist/guards.js.map +1 -0
  72. package/dist/index.d.ts +8 -0
  73. package/dist/index.d.ts.map +1 -0
  74. package/dist/index.js +221 -0
  75. package/dist/index.js.map +1 -0
  76. package/dist/parse/commitText.d.ts +2 -0
  77. package/dist/parse/commitText.d.ts.map +1 -0
  78. package/dist/parse/commitText.js +9 -0
  79. package/dist/parse/commitText.js.map +1 -0
  80. package/dist/parse/diffText.d.ts +7 -0
  81. package/dist/parse/diffText.d.ts.map +1 -0
  82. package/dist/parse/diffText.js +55 -0
  83. package/dist/parse/diffText.js.map +1 -0
  84. package/dist/parse/infoXml.d.ts +3 -0
  85. package/dist/parse/infoXml.d.ts.map +1 -0
  86. package/dist/parse/infoXml.js +35 -0
  87. package/dist/parse/infoXml.js.map +1 -0
  88. package/dist/parse/logXml.d.ts +10 -0
  89. package/dist/parse/logXml.d.ts.map +1 -0
  90. package/dist/parse/logXml.js +39 -0
  91. package/dist/parse/logXml.js.map +1 -0
  92. package/dist/parse/statusXml.d.ts +6 -0
  93. package/dist/parse/statusXml.d.ts.map +1 -0
  94. package/dist/parse/statusXml.js +64 -0
  95. package/dist/parse/statusXml.js.map +1 -0
  96. package/dist/parse/updateText.d.ts +6 -0
  97. package/dist/parse/updateText.d.ts.map +1 -0
  98. package/dist/parse/updateText.js +67 -0
  99. package/dist/parse/updateText.js.map +1 -0
  100. package/dist/runner.d.ts +41 -0
  101. package/dist/runner.d.ts.map +1 -0
  102. package/dist/runner.js +270 -0
  103. package/dist/runner.js.map +1 -0
  104. package/dist/tools/composite.d.ts +15 -0
  105. package/dist/tools/composite.d.ts.map +1 -0
  106. package/dist/tools/composite.js +238 -0
  107. package/dist/tools/composite.js.map +1 -0
  108. package/dist/tools/diagnose.d.ts +6 -0
  109. package/dist/tools/diagnose.d.ts.map +1 -0
  110. package/dist/tools/diagnose.js +131 -0
  111. package/dist/tools/diagnose.js.map +1 -0
  112. package/dist/tools/mutating.d.ts +80 -0
  113. package/dist/tools/mutating.d.ts.map +1 -0
  114. package/dist/tools/mutating.js +558 -0
  115. package/dist/tools/mutating.js.map +1 -0
  116. package/dist/tools/readonly.d.ts +52 -0
  117. package/dist/tools/readonly.d.ts.map +1 -0
  118. package/dist/tools/readonly.js +638 -0
  119. package/dist/tools/readonly.js.map +1 -0
  120. package/dist/tools/selfcheck.d.ts +5 -0
  121. package/dist/tools/selfcheck.d.ts.map +1 -0
  122. package/dist/tools/selfcheck.js +91 -0
  123. package/dist/tools/selfcheck.js.map +1 -0
  124. package/dist/types.d.ts +66 -0
  125. package/dist/types.d.ts.map +1 -0
  126. package/dist/types.js +2 -0
  127. package/dist/types.js.map +1 -0
  128. package/docs/README.md +11 -0
  129. package/docs/SPEC.md +964 -0
  130. package/docs/decisions/ADR-001-use-spec-v1-architecture.md +25 -0
  131. package/docs/decisions/ADR-002-use-capability-based-generic-svn-policy.md +31 -0
  132. package/docs/decisions/ADR-003-use-plug-and-play-global-registration.md +39 -0
  133. package/docs/decisions/ADR-004-borrow-diagnostics-not-external-mcp-surface.md +39 -0
  134. package/docs/svnrules.md +84 -0
  135. package/docs/toolrules.md +34 -0
  136. package/jest.config.cjs +14 -0
  137. package/package.json +51 -0
  138. package/scripts/clean.mjs +27 -0
  139. package/scripts/prepare-release.mjs +84 -0
  140. package/src/envelope.ts +182 -0
  141. package/src/eol.ts +137 -0
  142. package/src/guards.ts +362 -0
  143. package/src/index.ts +364 -0
  144. package/src/parse/commitText.ts +9 -0
  145. package/src/parse/diffText.ts +66 -0
  146. package/src/parse/infoXml.ts +51 -0
  147. package/src/parse/logXml.ts +64 -0
  148. package/src/parse/statusXml.ts +87 -0
  149. package/src/parse/updateText.ts +76 -0
  150. package/src/runner.ts +344 -0
  151. package/src/tools/composite.ts +289 -0
  152. package/src/tools/diagnose.ts +150 -0
  153. package/src/tools/mutating.ts +694 -0
  154. package/src/tools/readonly.ts +786 -0
  155. package/src/tools/selfcheck.ts +97 -0
  156. package/src/types.ts +76 -0
  157. package/tests/README.md +9 -0
  158. package/tests/diff-redaction.test.ts +146 -0
  159. package/tests/entrypoint.test.ts +49 -0
  160. package/tests/guards-eol.test.ts +170 -0
  161. package/tests/integration-svn.test.ts +709 -0
  162. package/tests/parsers.test.ts +119 -0
  163. package/tests/runner.test.ts +159 -0
  164. package/tests/selfcheck.test.ts +22 -0
  165. package/tsconfig.json +30 -0
@@ -0,0 +1,131 @@
1
+ import { createEnvelope, failEnvelope, noteFromRun } from "../envelope.js";
2
+ import { resolveCwd, resolveTargetsInsideWc } from "../guards.js";
3
+ import { runSvn, startupProbe } from "../runner.js";
4
+ import { getWcContext } from "./readonly.js";
5
+ export async function svnDiagnose(input) {
6
+ const cwd = resolveCwd(input.cwd);
7
+ const checks = [];
8
+ const suggestions = new Set();
9
+ const probe = await startupProbe(cwd);
10
+ checks.push({
11
+ name: "startup_svn",
12
+ ok: probe.svn.ok,
13
+ command: "startupProbe.svn",
14
+ note: probe.svn.note || probe.svn.version || ""
15
+ });
16
+ if (!probe.svn.ok) {
17
+ suggestions.add("Use the bundled release path or fix the SVN executable before running SVN tools.");
18
+ suggestions.add("Failsafe: for the rest of this session, fall back to scoped raw svn CLI following svnrules (scoped paths, -F message file, ignored-EOL diff, never-commit list); do not use CLI to bypass guard refusals.");
19
+ return {
20
+ ...createEnvelope({
21
+ ok: false,
22
+ command: "svn_diagnose",
23
+ cwd,
24
+ note: "svn unavailable"
25
+ }),
26
+ health: "error",
27
+ svn_available: false,
28
+ working_copy_valid: false,
29
+ remote_accessible: false,
30
+ checks,
31
+ suggestions: [...suggestions]
32
+ };
33
+ }
34
+ const context = await getWcContext(input.cwd, input.paths ?? []);
35
+ if (!context.ok) {
36
+ suggestions.add("Run this against an SVN working copy path, or pass an absolute path inside one.");
37
+ return {
38
+ ...failEnvelope("svn_diagnose", cwd, context.envelope.note || "path is not inside a working copy"),
39
+ health: "error",
40
+ svn_available: true,
41
+ working_copy_valid: false,
42
+ remote_accessible: false,
43
+ checks,
44
+ suggestions: [...suggestions]
45
+ };
46
+ }
47
+ const targets = input.paths && input.paths.length > 0 ? input.paths : [context.cwd];
48
+ const resolved = resolveTargetsInsideWc(context.cwd, context.wcRoot, targets);
49
+ if (!resolved.ok) {
50
+ suggestions.add("Keep diagnostic targets inside one SVN working copy.");
51
+ return {
52
+ ...failEnvelope("svn_diagnose", context.cwd, resolved.note),
53
+ health: "error",
54
+ svn_available: true,
55
+ working_copy_valid: true,
56
+ wc_root: context.wcRoot,
57
+ remote_accessible: false,
58
+ checks,
59
+ suggestions: [...suggestions]
60
+ };
61
+ }
62
+ const [localStatus, remoteStatus, remoteInfo, log] = await Promise.all([
63
+ runDiagnostic("local_status", ["status", "--xml", ...resolved.paths], context.cwd),
64
+ runDiagnostic("remote_status", ["status", "--show-updates", "--xml", ...resolved.paths], context.cwd),
65
+ runDiagnostic("remote_info_head", ["info", "--xml", "-r", "HEAD", ...resolved.paths], context.cwd),
66
+ runDiagnostic("log_latest", ["log", "--xml", "-l", "1", context.cwd], context.cwd)
67
+ ]);
68
+ for (const result of [localStatus, remoteStatus, remoteInfo, log]) {
69
+ checks.push(result.check);
70
+ addSuggestion(result.run, suggestions);
71
+ }
72
+ const localOk = localStatus.check.ok;
73
+ const remoteAccessible = remoteStatus.check.ok || remoteInfo.check.ok || log.check.ok;
74
+ const health = localOk && remoteAccessible
75
+ ? "healthy"
76
+ : localOk
77
+ ? "warning"
78
+ : "error";
79
+ if (!remoteAccessible) {
80
+ suggestions.add("Local SVN works but remote checks failed; verify network access and cached SVN credentials outside the MCP.");
81
+ }
82
+ if (!localOk) {
83
+ suggestions.add("Local status failed; run svn_cleanup if the working copy is locked or damaged.");
84
+ }
85
+ return {
86
+ ...createEnvelope({
87
+ ok: health !== "error",
88
+ command: "svn_diagnose",
89
+ cwd: context.cwd,
90
+ note: health === "healthy" ? "" : health === "warning" ? "remote checks failed" : "local SVN checks failed"
91
+ }),
92
+ health,
93
+ svn_available: true,
94
+ working_copy_valid: true,
95
+ wc_root: context.wcRoot,
96
+ remote_accessible: remoteAccessible,
97
+ checks,
98
+ suggestions: [...suggestions]
99
+ };
100
+ }
101
+ async function runDiagnostic(name, args, cwd) {
102
+ const run = await runSvn(args, cwd);
103
+ return {
104
+ run,
105
+ check: {
106
+ name,
107
+ ok: run.exitCode === 0,
108
+ command: run.command,
109
+ note: run.exitCode === 0 ? "" : noteFromRun(run)
110
+ }
111
+ };
112
+ }
113
+ function addSuggestion(run, suggestions) {
114
+ if (run.exitCode === 0) {
115
+ return;
116
+ }
117
+ const note = noteFromRun(run);
118
+ if (/authentication/i.test(note)) {
119
+ suggestions.add("Fix cached SVN authentication outside the MCP, then retry.");
120
+ }
121
+ else if (/network|connect/i.test(note)) {
122
+ suggestions.add("Check network access and repository URL reachability.");
123
+ }
124
+ else if (/cleanup|locked|database/i.test(note)) {
125
+ suggestions.add("Run svn_cleanup on the working copy before retrying.");
126
+ }
127
+ else if (/working copy|versioned/i.test(note)) {
128
+ suggestions.add("Pass a path inside a valid SVN working copy.");
129
+ }
130
+ }
131
+ //# sourceMappingURL=diagnose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../../src/tools/diagnose.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import fs from "node:fs";
2
+ import type { ToolEnvelope } from "../types.js";
3
+ export declare function svnAdd(input: {
4
+ cwd?: string;
5
+ paths: string[];
6
+ allowRecursive?: boolean;
7
+ }): Promise<ToolEnvelope>;
8
+ export declare function svnCommit(input: {
9
+ cwd?: string;
10
+ paths: string[];
11
+ message: string;
12
+ riskAck?: boolean;
13
+ }): Promise<ToolEnvelope>;
14
+ export declare function svnMove(input: {
15
+ cwd?: string;
16
+ src: string;
17
+ dest: string;
18
+ }): Promise<ToolEnvelope>;
19
+ export declare function svnRename(input: {
20
+ cwd?: string;
21
+ src: string;
22
+ dest: string;
23
+ }): Promise<ToolEnvelope>;
24
+ export declare function svnCopy(input: {
25
+ cwd?: string;
26
+ src: string;
27
+ dest: string;
28
+ }): Promise<ToolEnvelope>;
29
+ export declare function svnUpdate(input: {
30
+ cwd?: string;
31
+ paths?: string[];
32
+ updateAll?: boolean;
33
+ }): Promise<ToolEnvelope>;
34
+ export declare function svnRevert(input: {
35
+ cwd?: string;
36
+ paths: string[];
37
+ allowRecursive?: boolean;
38
+ dryRun?: boolean;
39
+ }): Promise<ToolEnvelope>;
40
+ export declare function svnResolved(input: {
41
+ cwd?: string;
42
+ path: string;
43
+ accept: "working" | "mine-full" | "theirs-full" | "base";
44
+ }): Promise<ToolEnvelope>;
45
+ export declare function svnCleanup(input: {
46
+ cwd?: string;
47
+ path?: string;
48
+ }): Promise<ToolEnvelope>;
49
+ export declare function svnPropsetEolStyle(input: {
50
+ cwd?: string;
51
+ paths: string[];
52
+ style?: "native" | "LF" | "CRLF";
53
+ }): Promise<ToolEnvelope>;
54
+ export declare function svnPropset(input: {
55
+ cwd?: string;
56
+ paths: string[];
57
+ name: string;
58
+ value: string;
59
+ riskAck?: boolean;
60
+ }): Promise<ToolEnvelope>;
61
+ export declare function svnExport(input: {
62
+ cwd?: string;
63
+ src: string;
64
+ dest: string;
65
+ revision?: string;
66
+ }): Promise<ToolEnvelope>;
67
+ export declare function svnImport(input: {
68
+ cwd?: string;
69
+ src: string;
70
+ url: string;
71
+ message: string;
72
+ }): Promise<ToolEnvelope>;
73
+ export declare function statTargetForMutation(commandName: string, cwd: string, target: string): {
74
+ ok: true;
75
+ stat: fs.Stats;
76
+ } | {
77
+ ok: false;
78
+ envelope: ToolEnvelope;
79
+ };
80
+ //# sourceMappingURL=mutating.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutating.d.ts","sourceRoot":"","sources":["../../src/tools/mutating.ts"],"names":[],"mappings":"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"}