@praneeth_54/agentdoctor 2.0.0 → 2.1.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 (168) hide show
  1. package/CHANGELOG.md +141 -4
  2. package/README.md +329 -153
  3. package/dist/agent/approvals.d.ts +24 -0
  4. package/dist/agent/approvals.js +64 -0
  5. package/dist/agent/chat/index.d.ts +7 -0
  6. package/dist/agent/chat/index.js +5 -0
  7. package/dist/agent/chat/memory.d.ts +44 -0
  8. package/dist/agent/chat/memory.js +103 -0
  9. package/dist/agent/chat/project-summary.d.ts +16 -0
  10. package/dist/agent/chat/project-summary.js +70 -0
  11. package/dist/agent/chat/prompts.d.ts +6 -0
  12. package/dist/agent/chat/prompts.js +39 -0
  13. package/dist/agent/chat/response.d.ts +19 -0
  14. package/dist/agent/chat/response.js +109 -0
  15. package/dist/agent/chat/service.d.ts +42 -0
  16. package/dist/agent/chat/service.js +252 -0
  17. package/dist/agent/chat/types.d.ts +48 -0
  18. package/dist/agent/chat/types.js +1 -0
  19. package/dist/agent/context/retrieve.d.ts +21 -0
  20. package/dist/agent/context/retrieve.js +117 -0
  21. package/dist/agent/context/truth.d.ts +6 -0
  22. package/dist/agent/context/truth.js +19 -0
  23. package/dist/agent/context/types.d.ts +23 -0
  24. package/dist/agent/context/types.js +4 -0
  25. package/dist/agent/index.d.ts +26 -0
  26. package/dist/agent/index.js +14 -0
  27. package/dist/agent/loop.d.ts +51 -0
  28. package/dist/agent/loop.js +222 -0
  29. package/dist/agent/modes.d.ts +18 -0
  30. package/dist/agent/modes.js +102 -0
  31. package/dist/agent/plan.d.ts +30 -0
  32. package/dist/agent/plan.js +121 -0
  33. package/dist/agent/runtime.d.ts +67 -0
  34. package/dist/agent/runtime.js +180 -0
  35. package/dist/agent/state.d.ts +30 -0
  36. package/dist/agent/state.js +95 -0
  37. package/dist/agent/student.d.ts +56 -0
  38. package/dist/agent/student.js +230 -0
  39. package/dist/agent/tools/execute.d.ts +18 -0
  40. package/dist/agent/tools/execute.js +355 -0
  41. package/dist/agent/tools/index.d.ts +6 -0
  42. package/dist/agent/tools/index.js +5 -0
  43. package/dist/agent/tools/registry.d.ts +7 -0
  44. package/dist/agent/tools/registry.js +212 -0
  45. package/dist/agent/tools/run.d.ts +24 -0
  46. package/dist/agent/tools/run.js +44 -0
  47. package/dist/agent/tools/types.d.ts +32 -0
  48. package/dist/agent/tools/types.js +10 -0
  49. package/dist/agent/tools/write.d.ts +24 -0
  50. package/dist/agent/tools/write.js +121 -0
  51. package/dist/agent/verify.d.ts +29 -0
  52. package/dist/agent/verify.js +210 -0
  53. package/dist/ai/config.d.ts +22 -0
  54. package/dist/ai/config.js +68 -0
  55. package/dist/ai/index.d.ts +17 -0
  56. package/dist/ai/index.js +52 -0
  57. package/dist/ai/providers/mock.d.ts +20 -0
  58. package/dist/ai/providers/mock.js +84 -0
  59. package/dist/ai/providers/none.d.ts +6 -0
  60. package/dist/ai/providers/none.js +23 -0
  61. package/dist/ai/providers/openai-compatible.d.ts +21 -0
  62. package/dist/ai/providers/openai-compatible.js +151 -0
  63. package/dist/ai/redact.d.ts +8 -0
  64. package/dist/ai/redact.js +21 -0
  65. package/dist/ai/types.d.ts +71 -0
  66. package/dist/ai/types.js +6 -0
  67. package/dist/architecture/contract.d.ts +64 -0
  68. package/dist/architecture/contract.js +373 -0
  69. package/dist/assurance/change.d.ts +211 -0
  70. package/dist/assurance/change.js +624 -0
  71. package/dist/assurance/proof.d.ts +136 -0
  72. package/dist/assurance/proof.js +338 -0
  73. package/dist/auth/index.d.ts +81 -0
  74. package/dist/auth/index.js +130 -0
  75. package/dist/auth/rbac.d.ts +9 -0
  76. package/dist/auth/rbac.js +26 -0
  77. package/dist/cli/commands/agent.d.ts +27 -0
  78. package/dist/cli/commands/agent.js +153 -0
  79. package/dist/cli/commands/architecture.d.ts +6 -0
  80. package/dist/cli/commands/architecture.js +109 -0
  81. package/dist/cli/commands/assurance.d.ts +67 -0
  82. package/dist/cli/commands/assurance.js +210 -0
  83. package/dist/cli/commands/chat.d.ts +14 -0
  84. package/dist/cli/commands/chat.js +155 -0
  85. package/dist/cli/commands/complete.js +2 -2
  86. package/dist/cli/commands/learn.d.ts +12 -0
  87. package/dist/cli/commands/learn.js +107 -0
  88. package/dist/cli/commands/platform.d.ts +2 -0
  89. package/dist/cli/commands/platform.js +5 -1
  90. package/dist/cli/commands/policy-graph-run.d.ts +40 -0
  91. package/dist/cli/commands/policy-graph-run.js +200 -0
  92. package/dist/cli/commands/workspace.d.ts +9 -0
  93. package/dist/cli/commands/workspace.js +82 -0
  94. package/dist/cli/program.js +627 -17
  95. package/dist/constants.d.ts +1 -1
  96. package/dist/constants.js +1 -1
  97. package/dist/contracts/index.d.ts +1 -1
  98. package/dist/contracts/index.js +2 -2
  99. package/dist/core/brain-product/init.js +5 -2
  100. package/dist/core/secrets/scan.d.ts +7 -1
  101. package/dist/core/secrets/scan.js +9 -9
  102. package/dist/coverage/cobertura.d.ts +6 -0
  103. package/dist/coverage/cobertura.js +52 -0
  104. package/dist/coverage/istanbul.d.ts +7 -0
  105. package/dist/coverage/istanbul.js +134 -0
  106. package/dist/coverage/lcov.d.ts +7 -0
  107. package/dist/coverage/lcov.js +59 -0
  108. package/dist/coverage/load.d.ts +9 -0
  109. package/dist/coverage/load.js +39 -0
  110. package/dist/coverage/types.d.ts +23 -0
  111. package/dist/coverage/types.js +5 -0
  112. package/dist/dashboard/server.d.ts +7 -1
  113. package/dist/dashboard/server.js +110 -6
  114. package/dist/enforcement/runner.d.ts +52 -3
  115. package/dist/enforcement/runner.js +467 -16
  116. package/dist/index.d.ts +36 -2
  117. package/dist/index.js +23 -2
  118. package/dist/intelligence/graph/build.d.ts +2 -0
  119. package/dist/intelligence/graph/build.js +49 -5
  120. package/dist/intelligence/graph/incremental.d.ts +68 -0
  121. package/dist/intelligence/graph/incremental.js +234 -0
  122. package/dist/intelligence/resolve/imports.d.ts +36 -0
  123. package/dist/intelligence/resolve/imports.js +245 -0
  124. package/dist/languages/go.d.ts +9 -0
  125. package/dist/languages/go.js +50 -0
  126. package/dist/languages/index.d.ts +11 -0
  127. package/dist/languages/index.js +76 -0
  128. package/dist/languages/php.d.ts +8 -0
  129. package/dist/languages/php.js +202 -0
  130. package/dist/languages/python.d.ts +11 -0
  131. package/dist/languages/python.js +180 -0
  132. package/dist/languages/types.d.ts +42 -0
  133. package/dist/languages/types.js +26 -0
  134. package/dist/languages/typescript.d.ts +3 -0
  135. package/dist/languages/typescript.js +95 -0
  136. package/dist/mcp/agent/registry.d.ts +13 -0
  137. package/dist/mcp/agent/registry.js +234 -0
  138. package/dist/mcp/agentdoctor/server.js +8 -1
  139. package/dist/mcp/intelligence/handlers.d.ts +5 -0
  140. package/dist/mcp/intelligence/handlers.js +229 -40
  141. package/dist/mcp/intelligence/path-safety.d.ts +2 -4
  142. package/dist/mcp/intelligence/path-safety.js +25 -44
  143. package/dist/mcp/intelligence/registry.d.ts +1 -1
  144. package/dist/mcp/intelligence/registry.js +69 -1
  145. package/dist/platform/firewall/evaluate.d.ts +6 -3
  146. package/dist/platform/firewall/evaluate.js +66 -15
  147. package/dist/platform/graph/build.js +19 -23
  148. package/dist/platform/health/analyze.js +23 -17
  149. package/dist/platform/index.js +2 -0
  150. package/dist/platform/test-impact/analyze.d.ts +21 -3
  151. package/dist/platform/test-impact/analyze.js +214 -28
  152. package/dist/platform/tokens/plan.js +39 -20
  153. package/dist/platform/types.d.ts +9 -0
  154. package/dist/policy/compose.d.ts +34 -0
  155. package/dist/policy/compose.js +118 -0
  156. package/dist/policy/packs.js +33 -1
  157. package/dist/security/paths.d.ts +21 -0
  158. package/dist/security/paths.js +133 -0
  159. package/dist/storage/postgres.d.ts +26 -0
  160. package/dist/storage/postgres.js +90 -0
  161. package/dist/storage/provider.d.ts +2 -7
  162. package/dist/storage/provider.js +22 -16
  163. package/dist/storage/sqlite.d.ts +33 -0
  164. package/dist/storage/sqlite.js +77 -0
  165. package/dist/team/auth.js +1 -1
  166. package/dist/workspace/index.d.ts +69 -0
  167. package/dist/workspace/index.js +220 -0
  168. package/package.json +9 -3
@@ -0,0 +1,95 @@
1
+ import { createHash } from "node:crypto";
2
+ import ts from "typescript";
3
+ function sid(kind, key) {
4
+ return `${kind}:${createHash("sha256").update(key).digest("hex").slice(0, 12)}`;
5
+ }
6
+ function parseTsJs(filePath, source, language) {
7
+ const kind = language === "typescript" ? ts.ScriptKind.TS : ts.ScriptKind.JS;
8
+ const sf = ts.createSourceFile(filePath, source, ts.ScriptTarget.ES2022, true, kind);
9
+ const symbols = [];
10
+ const imports = [];
11
+ const calls = [];
12
+ const diagnostics = [];
13
+ const visit = (node) => {
14
+ if (ts.isFunctionDeclaration(node) && node.name) {
15
+ const name = node.name.text;
16
+ symbols.push({
17
+ id: sid("fn", `${filePath}:${name}`),
18
+ name,
19
+ kind: "function",
20
+ file: filePath,
21
+ line: sf.getLineAndCharacterOfPosition(node.getStart(sf)).line + 1,
22
+ evidence: "ast",
23
+ });
24
+ }
25
+ if (ts.isClassDeclaration(node) && node.name) {
26
+ const name = node.name.text;
27
+ symbols.push({
28
+ id: sid("class", `${filePath}:${name}`),
29
+ name,
30
+ kind: "class",
31
+ file: filePath,
32
+ line: sf.getLineAndCharacterOfPosition(node.getStart(sf)).line + 1,
33
+ evidence: "ast",
34
+ });
35
+ }
36
+ if (ts.isImportDeclaration(node) && ts.isStringLiteral(node.moduleSpecifier)) {
37
+ imports.push({
38
+ fromFile: filePath,
39
+ specifier: node.moduleSpecifier.text,
40
+ evidence: "ast",
41
+ });
42
+ }
43
+ if (ts.isCallExpression(node)) {
44
+ const callee = node.expression.getText(sf);
45
+ calls.push({ fromFile: filePath, callee, evidence: "ast" });
46
+ }
47
+ ts.forEachChild(node, visit);
48
+ };
49
+ visit(sf);
50
+ return {
51
+ language,
52
+ file: filePath,
53
+ ok: true,
54
+ capabilities: {
55
+ parse: "supported",
56
+ symbols: "supported",
57
+ definitions: "supported",
58
+ imports: "supported",
59
+ calls: "supported",
60
+ references: "unsupported",
61
+ diagnostics: "unsupported",
62
+ },
63
+ symbols,
64
+ imports,
65
+ calls,
66
+ diagnostics,
67
+ limitations: [
68
+ "TypeScript compiler API parse (single-file); cross-file references unsupported in adapter",
69
+ ],
70
+ };
71
+ }
72
+ export const typescriptAdapter = {
73
+ id: "typescript",
74
+ extensions: [".ts", ".tsx", ".mts", ".cts"],
75
+ capabilities: () => ({
76
+ parse: "supported",
77
+ symbols: "supported",
78
+ definitions: "supported",
79
+ imports: "supported",
80
+ calls: "supported",
81
+ references: "unsupported",
82
+ diagnostics: "unsupported",
83
+ }),
84
+ async parse(filePath, source) {
85
+ return parseTsJs(filePath, source, "typescript");
86
+ },
87
+ };
88
+ export const javascriptAdapter = {
89
+ id: "javascript",
90
+ extensions: [".js", ".jsx", ".mjs", ".cjs"],
91
+ capabilities: () => typescriptAdapter.capabilities(),
92
+ async parse(filePath, source) {
93
+ return parseTsJs(filePath, source, "javascript");
94
+ },
95
+ };
@@ -0,0 +1,13 @@
1
+ import type { Tool } from "@modelcontextprotocol/sdk/types.js";
2
+ import type { ModelProvider } from "../../ai/types.js";
3
+ export declare const AGENT_MCP_TOOL_NAMES: readonly ["project_context", "project_ask", "code_search", "file_read", "file_create", "file_edit", "agent_plan", "change_verify"];
4
+ export type AgentMcpToolName = (typeof AGENT_MCP_TOOL_NAMES)[number];
5
+ export declare function listAgentMcpTools(): Tool[];
6
+ export declare function invokeAgentMcpTool(root: string, name: string, args: Record<string, unknown>, options?: {
7
+ provider?: ModelProvider;
8
+ }): Promise<{
9
+ structured: unknown;
10
+ isError: boolean;
11
+ }>;
12
+ /** Convenience for tests */
13
+ export declare function projectFingerprint(root: string): Promise<unknown>;
@@ -0,0 +1,234 @@
1
+ import { createModelProvider, loadAiConfig } from "../../ai/index.js";
2
+ import { ChatService } from "../../agent/chat/service.js";
3
+ import { buildAgentPlan } from "../../agent/plan.js";
4
+ import { executeAgentTool, newToolCall } from "../../agent/tools/index.js";
5
+ import { retrieveProjectContext } from "../../agent/context/retrieve.js";
6
+ import { summarizeProjectForChat } from "../../agent/chat/project-summary.js";
7
+ export const AGENT_MCP_TOOL_NAMES = [
8
+ "project_context",
9
+ "project_ask",
10
+ "code_search",
11
+ "file_read",
12
+ "file_create",
13
+ "file_edit",
14
+ "agent_plan",
15
+ "change_verify",
16
+ ];
17
+ export function listAgentMcpTools() {
18
+ return [
19
+ {
20
+ name: "project_context",
21
+ description: "READ: Budgeted project context pack for a query (path-safe).",
22
+ inputSchema: {
23
+ type: "object",
24
+ properties: { query: { type: "string" } },
25
+ required: ["query"],
26
+ additionalProperties: false,
27
+ },
28
+ },
29
+ {
30
+ name: "project_ask",
31
+ description: "READ: One-shot Project Chat ask (requires AI provider; no file writes).",
32
+ inputSchema: {
33
+ type: "object",
34
+ properties: { question: { type: "string" } },
35
+ required: ["question"],
36
+ additionalProperties: false,
37
+ },
38
+ },
39
+ {
40
+ name: "code_search",
41
+ description: "READ: Search code via AgentDoctor graph search.",
42
+ inputSchema: {
43
+ type: "object",
44
+ properties: { query: { type: "string" } },
45
+ required: ["query"],
46
+ additionalProperties: false,
47
+ },
48
+ },
49
+ {
50
+ name: "file_read",
51
+ description: "READ: Path-safe file read inside workspace.",
52
+ inputSchema: {
53
+ type: "object",
54
+ properties: { path: { type: "string" } },
55
+ required: ["path"],
56
+ additionalProperties: false,
57
+ },
58
+ },
59
+ {
60
+ name: "file_create",
61
+ description: "WRITE: Create file (requires approved=true). Path-safe; never shell. Model cannot self-approve.",
62
+ inputSchema: {
63
+ type: "object",
64
+ properties: {
65
+ path: { type: "string" },
66
+ content: { type: "string" },
67
+ approved: { type: "boolean" },
68
+ },
69
+ required: ["path", "content", "approved"],
70
+ additionalProperties: false,
71
+ },
72
+ },
73
+ {
74
+ name: "file_edit",
75
+ description: "WRITE: Edit file (requires approved=true). Path-safe.",
76
+ inputSchema: {
77
+ type: "object",
78
+ properties: {
79
+ path: { type: "string" },
80
+ content: { type: "string" },
81
+ oldContent: { type: "string" },
82
+ approved: { type: "boolean" },
83
+ },
84
+ required: ["path", "approved"],
85
+ additionalProperties: false,
86
+ },
87
+ },
88
+ {
89
+ name: "agent_plan",
90
+ description: "READ: Build a change plan without modifying files.",
91
+ inputSchema: {
92
+ type: "object",
93
+ properties: { goal: { type: "string" } },
94
+ required: ["goal"],
95
+ additionalProperties: false,
96
+ },
97
+ },
98
+ {
99
+ name: "change_verify",
100
+ description: "READ: Produce evidence/proof for current changes (may write evidence artifacts).",
101
+ inputSchema: {
102
+ type: "object",
103
+ properties: { changeId: { type: "string" } },
104
+ additionalProperties: false,
105
+ },
106
+ },
107
+ ];
108
+ }
109
+ export async function invokeAgentMcpTool(root, name, args, options) {
110
+ try {
111
+ switch (name) {
112
+ case "project_context": {
113
+ const query = typeof args.query === "string" ? args.query : "";
114
+ const bundle = await retrieveProjectContext({ root, query });
115
+ return { structured: { ok: true, bundle }, isError: false };
116
+ }
117
+ case "project_ask": {
118
+ const question = typeof args.question === "string" ? args.question : "";
119
+ if (!question) {
120
+ return {
121
+ structured: {
122
+ ok: false,
123
+ error: { code: "invalid_argument", message: "question required" },
124
+ },
125
+ isError: true,
126
+ };
127
+ }
128
+ const provider = options?.provider ?? createModelProvider(loadAiConfig());
129
+ if (provider.id === "none") {
130
+ return {
131
+ structured: {
132
+ ok: false,
133
+ error: {
134
+ code: "provider_none",
135
+ message: "AI chat is not configured. Set AGENTDOCTOR_AI_PROVIDER=mock (or openai-compatible). Silent mock fallback is disabled.",
136
+ },
137
+ },
138
+ isError: true,
139
+ };
140
+ }
141
+ const chat = new ChatService({
142
+ root,
143
+ provider,
144
+ persistAudit: false,
145
+ });
146
+ try {
147
+ const response = await chat.ask(question);
148
+ return {
149
+ structured: { ok: response.status === "ok", response },
150
+ isError: response.status !== "ok",
151
+ };
152
+ }
153
+ finally {
154
+ await chat.end();
155
+ }
156
+ }
157
+ case "code_search": {
158
+ const result = await executeAgentTool(root, newToolCall("mcp", "search_code", { query: args.query }));
159
+ return { structured: result, isError: !result.ok };
160
+ }
161
+ case "file_read": {
162
+ const result = await executeAgentTool(root, newToolCall("mcp", "read_file", { path: args.path }));
163
+ return { structured: result, isError: !result.ok };
164
+ }
165
+ case "file_create": {
166
+ if (args.approved !== true) {
167
+ return {
168
+ structured: {
169
+ ok: false,
170
+ error: { code: "approval_required", message: "approved=true required" },
171
+ },
172
+ isError: true,
173
+ };
174
+ }
175
+ const result = await executeAgentTool(root, newToolCall("mcp", "create_file", { path: args.path, content: args.content }), { allowWrite: true, approvedByHuman: true });
176
+ return { structured: result, isError: !result.ok };
177
+ }
178
+ case "file_edit": {
179
+ if (args.approved !== true) {
180
+ return {
181
+ structured: {
182
+ ok: false,
183
+ error: { code: "approval_required", message: "approved=true required" },
184
+ },
185
+ isError: true,
186
+ };
187
+ }
188
+ const result = await executeAgentTool(root, newToolCall("mcp", "edit_file", {
189
+ path: args.path,
190
+ content: args.content,
191
+ oldContent: args.oldContent,
192
+ }), { allowWrite: true, approvedByHuman: true });
193
+ return { structured: result, isError: !result.ok };
194
+ }
195
+ case "agent_plan": {
196
+ const goal = typeof args.goal === "string" ? args.goal : "";
197
+ const plan = await buildAgentPlan({ root, goal });
198
+ return { structured: { ok: true, plan }, isError: false };
199
+ }
200
+ case "change_verify": {
201
+ const { verifyChange } = await import("../../assurance/change.js");
202
+ const result = await verifyChange({
203
+ root,
204
+ ...(typeof args.changeId === "string" ? { changeId: args.changeId } : {}),
205
+ });
206
+ return { structured: { ok: true, ...result }, isError: false };
207
+ }
208
+ default:
209
+ return {
210
+ structured: {
211
+ ok: false,
212
+ error: { code: "invalid_argument", message: `unknown agent tool: ${name}` },
213
+ },
214
+ isError: true,
215
+ };
216
+ }
217
+ }
218
+ catch (error) {
219
+ return {
220
+ structured: {
221
+ ok: false,
222
+ error: {
223
+ code: "internal",
224
+ message: error instanceof Error ? error.message : String(error),
225
+ },
226
+ },
227
+ isError: true,
228
+ };
229
+ }
230
+ }
231
+ /** Convenience for tests */
232
+ export async function projectFingerprint(root) {
233
+ return summarizeProjectForChat(root);
234
+ }
@@ -6,6 +6,7 @@ import { resolveRepoRoot } from "../../utils/path.js";
6
6
  import { BrainMcpSession } from "../brain/session.js";
7
7
  import { BRAIN_MCP_TOOL_NAMES, invokeBrainMcpTool, listBrainMcpTools, } from "../brain/tools/registry.js";
8
8
  import { INTELLIGENCE_MCP_TOOL_NAMES, invokeIntelligenceMcpTool, listIntelligenceMcpTools, } from "../intelligence/registry.js";
9
+ import { AGENT_MCP_TOOL_NAMES, invokeAgentMcpTool, listAgentMcpTools } from "../agent/registry.js";
9
10
  /**
10
11
  * Combined AgentDoctor MCP server: preserves all Brain tool names and adds
11
12
  * intelligence tools. No arbitrary shell execution; policy_evaluate is evaluate-only.
@@ -19,6 +20,7 @@ export async function startAgentDoctorMcpServer(options) {
19
20
  await session.initialize();
20
21
  const brainNames = new Set(BRAIN_MCP_TOOL_NAMES);
21
22
  const intelNames = new Set(INTELLIGENCE_MCP_TOOL_NAMES);
23
+ const agentNames = new Set(AGENT_MCP_TOOL_NAMES);
22
24
  const server = new Server({
23
25
  name: "agentdoctor",
24
26
  version: PACKAGE_VERSION,
@@ -28,7 +30,7 @@ export async function startAgentDoctorMcpServer(options) {
28
30
  },
29
31
  });
30
32
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
31
- tools: [...listBrainMcpTools(), ...listIntelligenceMcpTools()],
33
+ tools: [...listBrainMcpTools(), ...listIntelligenceMcpTools(), ...listAgentMcpTools()],
32
34
  }));
33
35
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
34
36
  const name = request.params.name;
@@ -45,6 +47,11 @@ export async function startAgentDoctorMcpServer(options) {
45
47
  structured = result.structured;
46
48
  isError = result.isError;
47
49
  }
50
+ else if (agentNames.has(name)) {
51
+ const result = await invokeAgentMcpTool(root, name, args);
52
+ structured = result.structured;
53
+ isError = result.isError;
54
+ }
48
55
  else {
49
56
  structured = {
50
57
  ok: false,
@@ -9,3 +9,8 @@ export declare function handleCodeHealthTool(rootInput: string): Promise<unknown
9
9
  export declare function handleArchitectureTool(rootInput: string): Promise<unknown>;
10
10
  export declare function handleKnowledgeTool(rootInput: string, args: Record<string, unknown>): Promise<unknown>;
11
11
  export declare function handlePolicyEvalTool(rootInput: string, args: Record<string, unknown>): Promise<unknown>;
12
+ export declare function handleChangeAnalyzeTool(rootInput: string, args: Record<string, unknown>): Promise<unknown>;
13
+ export declare function handleArchitectureCheckTool(rootInput: string): Promise<unknown>;
14
+ export declare function handleProofInspectTool(rootInput: string, args: Record<string, unknown>): Promise<unknown>;
15
+ export declare function handleEvidenceInspectTool(rootInput: string, args: Record<string, unknown>): Promise<unknown>;
16
+ export declare function handleGraphQueryTool(rootInput: string, args: Record<string, unknown>): Promise<unknown>;