ios-agent-mcp 2.0.1 → 2.2.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 (45) hide show
  1. package/README.md +74 -7
  2. package/data/knowledge.json +1 -0
  3. package/dist/analyzers/memory.d.ts +12 -0
  4. package/dist/analyzers/memory.js +81 -0
  5. package/dist/analyzers/memory.js.map +1 -0
  6. package/dist/analyzers/performance.d.ts +10 -0
  7. package/dist/analyzers/performance.js +106 -0
  8. package/dist/analyzers/performance.js.map +1 -0
  9. package/dist/analyzers/security.d.ts +2 -0
  10. package/dist/analyzers/security.js +82 -0
  11. package/dist/analyzers/security.js.map +1 -0
  12. package/dist/analyzers/skill.d.ts +34 -0
  13. package/dist/analyzers/skill.js +483 -0
  14. package/dist/analyzers/skill.js.map +1 -0
  15. package/dist/analyzers/testing.d.ts +16 -0
  16. package/dist/analyzers/testing.js +135 -0
  17. package/dist/analyzers/testing.js.map +1 -0
  18. package/dist/analyzers/types.d.ts +19 -1
  19. package/dist/analyzers/types.js +65 -3
  20. package/dist/analyzers/types.js.map +1 -1
  21. package/dist/index.js +162 -5
  22. package/dist/index.js.map +1 -1
  23. package/dist/knowledge-server.d.ts +2 -0
  24. package/dist/knowledge-server.js +44 -0
  25. package/dist/knowledge-server.js.map +1 -0
  26. package/dist/knowledge.d.ts +78 -0
  27. package/dist/knowledge.js +69 -0
  28. package/dist/knowledge.js.map +1 -0
  29. package/dist/report.d.ts +10 -0
  30. package/dist/report.js +40 -0
  31. package/dist/report.js.map +1 -1
  32. package/dist/resources.d.ts +67 -0
  33. package/dist/resources.js +222 -0
  34. package/dist/resources.js.map +1 -0
  35. package/dist/result.d.ts +203 -0
  36. package/dist/result.js +135 -0
  37. package/dist/result.js.map +1 -0
  38. package/dist/scan.d.ts +9 -0
  39. package/dist/scan.js +110 -0
  40. package/dist/scan.js.map +1 -1
  41. package/dist/version.d.ts +1 -0
  42. package/dist/version.js +4 -0
  43. package/dist/version.js.map +1 -0
  44. package/mcp.json +76 -11
  45. package/package.json +19 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/analyzers/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,QAAQ,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAElF,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAC5C,MAAM,WAAW,GAAG,kCAAkC,CAAC;AAEvD,MAAM,SAAS,GAAG,uCAAuC,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,IAAgB;IAC7C,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAEhD,MAAM,IAAI,GAAG,CACX,IAAY,EACZ,OAAe,EACf,IAAY,EACZ,QAA6B,EAC7B,OAAe,EACf,WAAmB,EACnB,GAAW,EACX,GAAG,GAAG,WAAW,EACjB,EAAE,CACF,QAAQ,CAAC,IAAI,CAAC;QACZ,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI;QACJ,QAAQ;QACR,IAAI;QACJ,OAAO;QACP,WAAW;QACX,GAAG;QACH,GAAG;QACH,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;KACxB,CAAC,CAAC;IAEL,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEvC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;QAEzB,mCAAmC;QACnC,IACE,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC;YACtD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAC7B,CAAC;YACD,IAAI,CACF,MAAM,EACN,IAAI,EACJ,aAAa,EACb,SAAS,EACT,yBAAyB,EACzB,2PAA2P,EAC3P,gJAAgJ,CACjJ,CAAC;QACJ,CAAC;QAED,+DAA+D;QAC/D,IAAI,6CAA6C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAChE,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;gBACjB,IAAI,CACF,MAAM,EACN,IAAI,EACJ,mBAAmB,EACnB,OAAO,EACP,0BAA0B,OAAO,IAAI,EACrC,kJAAkJ,EAClJ,gIAAgI,CACjI,CAAC;YACJ,CAAC;QACH,CAAC;QAED,iEAAiE;QACjE,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,KAAK,IAAI,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;gBAClF,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC9B,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gBAC7C,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gBAC7C,IAAI,CAAC,OAAO,IAAI,KAAK,GAAG,CAAC;oBAAE,OAAO,GAAG,IAAI,CAAC;gBAC1C,IAAI,IAAI,GAAG,OAAO,IAAI,CAAC;gBACvB,IAAI,OAAO,IAAI,KAAK,IAAI,CAAC;oBAAE,MAAM;YACnC,CAAC;YACD,IACE,CAAC,yDAAyD,CAAC,IAAI,CAAC,IAAI,CAAC;gBACrE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EACpB,CAAC;gBACD,IAAI,CACF,MAAM,EACN,IAAI,EACJ,wBAAwB,EACxB,SAAS,EACT,6BAA6B,EAC7B,0JAA0J,EAC1J,gFAAgF,CACjF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,EAAE;QACF,qEAAqE;QACrE,wEAAwE;QACxE,kDAAkD;QAClD,IAAI,iCAAiC,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACxE,IAAI,CACF,MAAM,EACN,IAAI,EACJ,wBAAwB,EACxB,SAAS,EACT,0CAA0C,EAC1C,wFAAwF,EACxF,yEAAyE,CAC1E,CAAC;QACJ,CAAC;QAED,0BAA0B;QAC1B,IACE,6DAA6D,CAAC,IAAI,CAAC,IAAI,CAAC;YACxE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAClC,CAAC;YACD,IAAI,CACF,MAAM,EACN,IAAI,EACJ,iBAAiB,EACjB,SAAS,EACT,8BAA8B,EAC9B,uMAAuM,EACvM,iIAAiI,EACjI,WAAW,CACZ,CAAC;QACJ,CAAC;QAED,sEAAsE;QACtE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,IAAI,CACF,MAAM,EACN,IAAI,EACJ,mBAAmB,EACnB,OAAO,EACP,mBAAmB,EACnB,iKAAiK,EACjK,uDAAuD,CACxD,CAAC;QACJ,CAAC;QAED,yBAAyB;QACzB,IAAI,uCAAuC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvF,IAAI,CACF,MAAM,EACN,IAAI,EACJ,2BAA2B,EAC3B,OAAO,EACP,sCAAsC,EACtC,mMAAmM,EACnM,4EAA4E,CAC7E,CAAC;QACJ,CAAC;QAED,wDAAwD;QACxD,IAAI,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,IAAI,CACF,MAAM,EACN,IAAI,EACJ,yBAAyB,EACzB,OAAO,EACP,2CAA2C,EAC3C,4HAA4H,EAC5H,6BAA6B,CAC9B,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAmB;IACrD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEvE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAExC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL;gBACE,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,iCAAiC,WAAW,CAAC,MAAM,gBAAgB;gBAC5E,WAAW,EACT,qGAAqG;gBACvG,GAAG,EAAE,kHAAkH;gBACvH,GAAG,EAAE,WAAW;gBAChB,OAAO,EAAE,EAAE;aACZ;SACF,CAAC;IACJ,CAAC;IAED,qEAAqE;IACrE,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IACpD,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QAChB,OAAO;YACL;gBACE,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,qBAAqB,WAAW,CAAC,MAAM,gBAAgB;gBACnF,WAAW,EACT,mHAAmH;gBACrH,GAAG,EAAE,gHAAgH;gBACrH,GAAG,EAAE,WAAW;gBAChB,OAAO,EAAE,EAAE;aACZ;SACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -35,7 +35,25 @@ export declare function sortFindings(findings: Finding[]): Finding[];
35
35
  * the signal-to-noise ratio high enough that the output is worth reading.
36
36
  */
37
37
  export declare function isSupportFile(path: string): boolean;
38
- /** Strip `//` line comments so commented-out code is not reported. */
38
+ /**
39
+ * Strip `//` line comments so commented-out code is not reported.
40
+ *
41
+ * String-literal aware. A naive `indexOf("//")` truncates
42
+ * `let base = "http://api.example.com"` at the scheme separator, which made
43
+ * every rule blind to the rest of any line containing a URL — including the
44
+ * cleartext-HTTP check, which could therefore never fire. Escapes are honoured
45
+ * so `"a\"//b"` does not end the literal early.
46
+ */
39
47
  export declare function stripComment(line: string): string;
40
48
  /** Walk lines with 1-indexed numbers, skipping comment-only content. */
41
49
  export declare function eachLine(file: SourceFile, visit: (line: string, number: number, raw: string) => void): void;
50
+ /**
51
+ * Blank the contents of string literals, preserving the quotes and length.
52
+ *
53
+ * For rules that must not match words appearing in user-facing text. The
54
+ * `await-inside-xctassert` rule fired on
55
+ * `XCTAssertTrue(x, "set before the await")` — the word was in the assertion
56
+ * *message*, not the expression. Keeping the delimiters means column offsets
57
+ * and any surrounding syntax still line up.
58
+ */
59
+ export declare function withoutStringLiterals(line: string): string;
@@ -17,10 +17,37 @@ export function sortFindings(findings) {
17
17
  export function isSupportFile(path) {
18
18
  return /(Tests?|Mock\w*|Stub\w*|Fake\w*|Preview\w*|\w*Preview|Fixtures?)\.swift$/i.test(path);
19
19
  }
20
- /** Strip `//` line comments so commented-out code is not reported. */
20
+ /**
21
+ * Strip `//` line comments so commented-out code is not reported.
22
+ *
23
+ * String-literal aware. A naive `indexOf("//")` truncates
24
+ * `let base = "http://api.example.com"` at the scheme separator, which made
25
+ * every rule blind to the rest of any line containing a URL — including the
26
+ * cleartext-HTTP check, which could therefore never fire. Escapes are honoured
27
+ * so `"a\"//b"` does not end the literal early.
28
+ */
21
29
  export function stripComment(line) {
22
- const index = line.indexOf("//");
23
- return index === -1 ? line : line.slice(0, index);
30
+ let inString = false;
31
+ for (let index = 0; index < line.length; index += 1) {
32
+ const character = line[index];
33
+ if (inString) {
34
+ if (character === "\\") {
35
+ index += 1; // skip the escaped character
36
+ }
37
+ else if (character === '"') {
38
+ inString = false;
39
+ }
40
+ continue;
41
+ }
42
+ if (character === '"') {
43
+ inString = true;
44
+ continue;
45
+ }
46
+ if (character === "/" && line[index + 1] === "/") {
47
+ return line.slice(0, index);
48
+ }
49
+ }
50
+ return line;
24
51
  }
25
52
  /** Walk lines with 1-indexed numbers, skipping comment-only content. */
26
53
  export function eachLine(file, visit) {
@@ -44,4 +71,39 @@ export function eachLine(file, visit) {
44
71
  visit(code, index + 1, raw);
45
72
  }
46
73
  }
74
+ /**
75
+ * Blank the contents of string literals, preserving the quotes and length.
76
+ *
77
+ * For rules that must not match words appearing in user-facing text. The
78
+ * `await-inside-xctassert` rule fired on
79
+ * `XCTAssertTrue(x, "set before the await")` — the word was in the assertion
80
+ * *message*, not the expression. Keeping the delimiters means column offsets
81
+ * and any surrounding syntax still line up.
82
+ */
83
+ export function withoutStringLiterals(line) {
84
+ let result = "";
85
+ let inString = false;
86
+ for (let index = 0; index < line.length; index += 1) {
87
+ const character = line[index];
88
+ if (inString) {
89
+ if (character === "\\") {
90
+ result += " ";
91
+ index += 1;
92
+ }
93
+ else if (character === '"') {
94
+ inString = false;
95
+ result += '"';
96
+ }
97
+ else {
98
+ result += " ";
99
+ }
100
+ continue;
101
+ }
102
+ if (character === '"') {
103
+ inString = true;
104
+ }
105
+ result += character;
106
+ }
107
+ return result;
108
+ }
47
109
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/analyzers/types.ts"],"names":[],"mappings":"AAiCA,MAAM,cAAc,GAA6B;IAC/C,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;CACT,CAAC;AAEF,qEAAqE;AACrE,MAAM,UAAU,YAAY,CAAC,QAAmB;IAC9C,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CACvB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC;QACvD,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5B,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAClB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,2EAA2E,CAAC,IAAI,CACrF,IAAI,CACL,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACpD,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,QAAQ,CACtB,IAAgB,EAChB,KAA0D;IAE1D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,cAAc,GAAG,KAAK,CAAC;YAC/C,SAAS;QACX,CAAC;QACD,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,cAAc,GAAG,IAAI,CAAC;YAC/C,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,SAAS;QACjC,KAAK,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/analyzers/types.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,14 +2,21 @@
2
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
3
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
4
  import { z } from "zod";
5
+ import { VERSION } from "./version.js";
5
6
  import { analyzeConcurrency } from "./analyzers/concurrency.js";
6
7
  import { analyzeArchitecture } from "./analyzers/architecture.js";
7
8
  import { analyzeSwiftUI } from "./analyzers/swiftui.js";
8
9
  import { analyzeAvailability } from "./analyzers/availability.js";
9
10
  import { analyzeAppStore, analyzeProjectLevelAppStore } from "./analyzers/appstore.js";
11
+ import { lintSkill } from "./analyzers/skill.js";
12
+ import { analyzeMemory } from "./analyzers/memory.js";
13
+ import { analyzeSecurity } from "./analyzers/security.js";
14
+ import { analyzeTesting, analyzeTestCoverage } from "./analyzers/testing.js";
15
+ import { analyzePerformance } from "./analyzers/performance.js";
10
16
  import { readProjectContext, readSwiftFiles, resolveProjectRoot, summarizeProject, } from "./scan.js";
11
- import { renderFindings } from "./report.js";
12
- const VERSION = "2.0.1";
17
+ import { renderFindings, renderSkillLint } from "./report.js";
18
+ import { buildReviewOutput, reviewOutputShape } from "./result.js";
19
+ import { projectDependenciesResource, projectInfoResource, projectIssuesResource, resolveRootFrom, } from "./resources.js";
13
20
  /**
14
21
  * Handle CLI flags before starting the stdio transport.
15
22
  *
@@ -34,13 +41,16 @@ function handleCLIFlags(argv) {
34
41
  "",
35
42
  "USAGE",
36
43
  " ios-agent-mcp Start the server (stdio transport)",
44
+ " ios-agent-mcp --project P Serve ios:// resources for project P",
37
45
  " ios-agent-mcp --help Show this message",
38
46
  " ios-agent-mcp --version Print the version",
39
47
  "",
40
48
  "SETUP",
41
49
  " Claude Code claude mcp add ios-agent -- npx -y ios-agent-mcp",
42
50
  " Claude Desktop add to claude_desktop_config.json",
43
- " Cursor add to .cursor/mcp.json",
51
+ " Codex codex mcp add ios-agent -- npx -y ios-agent-mcp",
52
+ " Gemini CLI install the ios-agent-skill GitHub extension",
53
+ " ChatGPT skills plugin or hosted ios-agent-knowledge /mcp",
44
54
  "",
45
55
  "TOOLS",
46
56
  " analyze_swift_project Overview plus findings per category",
@@ -49,8 +59,19 @@ function handleCLIFlags(argv) {
49
59
  " review_swiftui Views, state, Dynamic Type, tokens",
50
60
  " check_availability_guards Missing and over-restrictive @available",
51
61
  " audit_app_store_readiness Purpose strings, privacy, accessibility",
62
+ " review_swift_memory Retain cycles and object lifetime",
63
+ " review_swift_security Secrets, storage, ATS, TLS, weak crypto",
64
+ " review_swift_testing Flaky, vacuous, and missing tests",
65
+ " review_swift_performance Work on the render path",
66
+ " lint_skill Skill metadata, agent tool grants, mirrors",
52
67
  "",
53
- "Each tool takes one argument: an absolute path to a Swift project root.",
68
+ "Each tool takes one argument: an absolute path. The first ten want a",
69
+ "Swift project root; lint_skill wants an Agent Skill repository root.",
70
+ "",
71
+ "RESOURCES (root: --project, IOS_AGENT_PROJECT, or a .ios-agent/ marker)",
72
+ " ios://project/info Structure, architecture, DI, frameworks",
73
+ " ios://project/dependencies Third-party packages and Apple frameworks",
74
+ " ios://project/issues Every finding, all categories",
54
75
  "",
55
76
  "DOCS https://github.com/Nagarjuna2997/ios-agent-skill/tree/main/docs/mcp",
56
77
  "",
@@ -84,11 +105,15 @@ async function scanAndRender(path, title, analyze) {
84
105
  text: `No Swift files found under \`${root}\`.\n\nCheck the path points at the project root. Build directories (\`.build\`, \`DerivedData\`, \`Pods\`) are skipped deliberately.`,
85
106
  },
86
107
  ],
108
+ structuredContent: { ...buildReviewOutput(title, [], 0) },
87
109
  };
88
110
  }
89
111
  const findings = await analyze(files);
112
+ // Both halves, always: markdown for a human reading the transcript, and
113
+ // structuredContent for a workflow that must branch without parsing prose.
90
114
  return {
91
115
  content: [{ type: "text", text: renderFindings(title, findings, files.length) }],
116
+ structuredContent: { ...buildReviewOutput(title, findings, files.length) },
92
117
  };
93
118
  }
94
119
  catch (error) {
@@ -107,21 +132,25 @@ server.registerTool("review_swift_concurrency", {
107
132
  title: "Review Swift concurrency and actor isolation",
108
133
  description: "Check a Swift project for Swift 6 concurrency and isolation defects: @Observable types missing @MainActor, Task.detached, DispatchQueue.main.async in async code, @unchecked Sendable, nonisolated(unsafe), unstructured Tasks in onAppear, empty catch blocks, and types named Task that shadow _Concurrency.Task. Use when reviewing Swift code, migrating to Swift 6, or diagnosing a data race.",
109
134
  inputSchema: pathInput,
135
+ outputSchema: reviewOutputShape,
110
136
  }, async ({ path }) => scanAndRender(path, "Swift Concurrency Review", (files) => files.flatMap(analyzeConcurrency)));
111
137
  server.registerTool("review_swift_architecture", {
112
138
  title: "Review iOS architecture boundaries",
113
139
  description: "Check a Swift project for architecture and testability defects: dependencies defaulting to live implementations, the presentation layer naming concrete data-layer types (URLSession, APIClient, ModelContext), singletons resolved inside view models, the domain layer importing UI frameworks, nested NavigationStacks, and deprecated NavigationView. Use when reviewing MVVM or Clean Architecture code, or when a screen cannot be previewed without a network.",
114
140
  inputSchema: pathInput,
141
+ outputSchema: reviewOutputShape,
115
142
  }, async ({ path }) => scanAndRender(path, "Architecture Review", (files) => files.flatMap(analyzeArchitecture)));
116
143
  server.registerTool("review_swiftui", {
117
144
  title: "Review SwiftUI views and state",
118
145
  description: "Check SwiftUI code for view and state defects: fixed font sizes and heights that break Dynamic Type, AnyView, deprecated .cornerRadius, literal spacing values instead of design tokens, materials applied over solid backgrounds, transient presentation state stored on models, legacy ObservableObject and @EnvironmentObject, and try!. Use when reviewing or building SwiftUI screens.",
119
146
  inputSchema: pathInput,
147
+ outputSchema: reviewOutputShape,
120
148
  }, async ({ path }) => scanAndRender(path, "SwiftUI Review", (files) => files.flatMap(analyzeSwiftUI)));
121
149
  server.registerTool("check_availability_guards", {
122
150
  title: "Check iOS availability guards",
123
151
  description: "Verify that version-gated Apple APIs are guarded on the version where they were INTRODUCED rather than the newest SDK. Catches both missing guards and over-restrictive ones — for example Liquid Glass (iOS 26) guarded at iOS 27, which silently drops every iOS 26 device to the fallback. Also flags Foundation Models used without a runtime SystemLanguageModel.availability check. Use before shipping, or after bumping an SDK.",
124
152
  inputSchema: pathInput,
153
+ outputSchema: reviewOutputShape,
125
154
  }, async ({ path }) => scanAndRender(path, "Availability Guard Check", (files) => files.flatMap(analyzeAvailability)));
126
155
  server.registerTool("audit_app_store_readiness", {
127
156
  title: "Audit App Store submission readiness",
@@ -176,6 +205,10 @@ server.registerTool("analyze_swift_project", {
176
205
  Architecture: files.flatMap(analyzeArchitecture),
177
206
  SwiftUI: files.flatMap(analyzeSwiftUI),
178
207
  Availability: files.flatMap(analyzeAvailability),
208
+ Memory: files.flatMap(analyzeMemory),
209
+ Security: files.flatMap(analyzeSecurity),
210
+ Performance: files.flatMap(analyzePerformance),
211
+ Testing: [...analyzeTestCoverage(files), ...files.flatMap(analyzeTesting)],
179
212
  "App Store": [
180
213
  ...analyzeProjectLevelAppStore(context),
181
214
  ...files.flatMap((file) => analyzeAppStore(file, context)),
@@ -194,6 +227,14 @@ server.registerTool("analyze_swift_project", {
194
227
  `- **Xcode project:** ${summary.hasXcodeProject ? "yes" : "no"}`,
195
228
  `- **Test files:** ${summary.hasTests ? "found" : "**none found**"}`,
196
229
  "",
230
+ "## Shape",
231
+ "",
232
+ `- **UI framework:** ${summary.uiFramework}`,
233
+ `- **Architecture:** ${summary.architecture}`,
234
+ ` - evidence: ${summary.architectureEvidence.join("; ") || "none"}`,
235
+ `- **Dependency injection:** ${summary.usesDependencyInjection ? "protocol existentials injected through init" : "**not detected** — no `any Protocol` initializer parameters found"}`,
236
+ `- **Third-party dependencies:** ${summary.dependencies.slice(0, 20).join(", ") || "none detected"}`,
237
+ "",
197
238
  `- **Frameworks:** ${summary.frameworks.slice(0, 25).join(", ") || "none detected"}`,
198
239
  "",
199
240
  "## Findings by category",
@@ -206,6 +247,10 @@ server.registerTool("analyze_swift_project", {
206
247
  Architecture: "review_swift_architecture",
207
248
  SwiftUI: "review_swiftui",
208
249
  Availability: "check_availability_guards",
250
+ Memory: "review_swift_memory",
251
+ Security: "review_swift_security",
252
+ Performance: "review_swift_performance",
253
+ Testing: "review_swift_testing",
209
254
  "App Store": "audit_app_store_readiness",
210
255
  };
211
256
  let total = 0;
@@ -219,7 +264,37 @@ server.registerTool("analyze_swift_project", {
219
264
  lines.push("", total === 0
220
265
  ? "**No findings in any category.**"
221
266
  : `**${total} findings total.** Run the tool in the right-hand column for details on any category.`, "", "---", "", "_Static analysis only. It cannot prove the app builds or behaves correctly — run `swift build` and `swift test` for that._");
222
- return { content: [{ type: "text", text: lines.join("\n") }] };
267
+ const everyFinding = Object.values(categories).flat();
268
+ return {
269
+ content: [{ type: "text", text: lines.join("\n") }],
270
+ structuredContent: {
271
+ ...buildReviewOutput("Project analysis", everyFinding, files.length),
272
+ project: {
273
+ swift_files: summary.swiftFileCount,
274
+ lines: summary.lineCount,
275
+ deployment_target: summary.deploymentTarget,
276
+ swift_tools_version: summary.swiftToolsVersion,
277
+ ui_framework: summary.uiFramework,
278
+ architecture: summary.architecture,
279
+ architecture_evidence: summary.architectureEvidence,
280
+ dependencies: summary.dependencies,
281
+ frameworks: summary.frameworks,
282
+ uses_dependency_injection: summary.usesDependencyInjection,
283
+ has_tests: summary.hasTests,
284
+ has_package_swift: summary.hasPackageSwift,
285
+ has_xcode_project: summary.hasXcodeProject,
286
+ },
287
+ categories: Object.fromEntries(Object.entries(categories).map(([name, found]) => [
288
+ name,
289
+ {
290
+ blocker: found.filter((f) => f.severity === "blocker").length,
291
+ serious: found.filter((f) => f.severity === "serious").length,
292
+ minor: found.filter((f) => f.severity === "minor").length,
293
+ tool: toolFor[name],
294
+ },
295
+ ])),
296
+ },
297
+ };
223
298
  }
224
299
  catch (error) {
225
300
  return {
@@ -233,6 +308,88 @@ server.registerTool("analyze_swift_project", {
233
308
  };
234
309
  }
235
310
  });
311
+ server.registerTool("lint_skill", {
312
+ title: "Lint an Agent Skill repository",
313
+ description: "Validate the metadata of an Agent Skill repository rather than Swift source: SKILL.md frontmatter (required keys, kebab-case name, semver version, description length limits), subagent definitions in .claude/agents/ (name matches filename, unknown tool names, and read-only agents that are nonetheless granted Edit or Write), whether generated mirror files such as CLAUDE.md and AGENTS.md have drifted from SKILL.md, and backtick-quoted doc paths that do not resolve. Use when authoring or reviewing a skill, before publishing a release, or when a subagent or skill is not being invoked as expected.",
314
+ inputSchema: {
315
+ path: z
316
+ .string()
317
+ .describe("Absolute path to the skill repository root (the folder containing SKILL.md)."),
318
+ },
319
+ }, async ({ path }) => {
320
+ try {
321
+ const root = await resolveProjectRoot(path);
322
+ const result = await lintSkill(root);
323
+ return { content: [{ type: "text", text: renderSkillLint(result) }] };
324
+ }
325
+ catch (error) {
326
+ return {
327
+ content: [
328
+ {
329
+ type: "text",
330
+ text: `Lint failed: ${error instanceof Error ? error.message : String(error)}`,
331
+ },
332
+ ],
333
+ isError: true,
334
+ };
335
+ }
336
+ });
337
+ server.registerTool("review_swift_memory", {
338
+ title: "Review memory and retain cycles",
339
+ description: "Check a Swift project for retain cycles and lifetime defects: repeating Timers and block-based NotificationCenter observers capturing self strongly, Combine sinks stored in a cancellables set owned by the same object, non-weak delegate properties, stored closure properties capturing self, `unowned self` in escaping closures, and long-running unstructured Tasks that keep an object alive after its screen is gone. Use when memory grows over time, when deinit is never called, or before shipping a screen with timers or subscriptions.",
340
+ inputSchema: pathInput,
341
+ outputSchema: reviewOutputShape,
342
+ }, async ({ path }) => scanAndRender(path, "Memory Review", (files) => files.flatMap(analyzeMemory)));
343
+ server.registerTool("review_swift_security", {
344
+ title: "Review iOS security",
345
+ description: "Check a Swift project for security defects: hardcoded API keys, tokens, and passwords in source; credentials written to UserDefaults instead of the Keychain; App Transport Security disabled; cleartext http:// endpoints; TLS server trust accepted without evaluation; MD5 and SHA-1; Keychain items with over-permissive accessibility; non-cryptographic randomness used for nonces and salts; secrets written to logs; and string interpolation into evaluated JavaScript. Use before shipping, during a security review, or when handling credentials.",
346
+ inputSchema: pathInput,
347
+ outputSchema: reviewOutputShape,
348
+ }, async ({ path }) => scanAndRender(path, "Security Review", (files) => files.flatMap(analyzeSecurity)));
349
+ server.registerTool("review_swift_testing", {
350
+ title: "Review test suite quality",
351
+ description: "Check a Swift test suite for defects that make it unreliable or vacuous: tests that wait by sleeping, tests with no assertion at all, `await` inside an XCTAssert autoclosure (which does not compile), live URLSession calls in tests, `try!`, static mutable state that makes results order-dependent, long expectation timeouts covering for races, and XCTAssertTrue on an equality that hides both values on failure. Also reports when a project has no tests or very few. Use when tests are flaky, before trusting a green suite, or when adding coverage.",
352
+ inputSchema: pathInput,
353
+ outputSchema: reviewOutputShape,
354
+ }, async ({ path }) => scanAndRender(path, "Test Suite Review", (files) => [
355
+ ...analyzeTestCoverage(files),
356
+ ...files.flatMap(analyzeTesting),
357
+ ]));
358
+ server.registerTool("review_swift_performance", {
359
+ title: "Review SwiftUI and Swift performance",
360
+ description: "Check for runtime cost that shows up as dropped frames: DateFormatter and JSONDecoder allocated inside `body`, collections sorted or filtered on every render, ForEach over indices instead of stable identity, non-lazy stacks inside a ScrollView, AsyncImage with no frame, blocking file or network I/O on the render path, and GeometryReader wrapping an entire body. Use when scrolling stutters, launch is slow, or before shipping a list-heavy screen.",
361
+ inputSchema: pathInput,
362
+ outputSchema: reviewOutputShape,
363
+ }, async ({ path }) => scanAndRender(path, "Performance Review", (files) => files.flatMap(analyzePerformance)));
364
+ // Resources: nouns a client can read without the model deciding to ask.
365
+ //
366
+ // The root comes from --project, IOS_AGENT_PROJECT, the nearest ancestor
367
+ // holding a .ios-agent/ marker, or the working directory
368
+ // the client spawned the server in. Every payload reports which one won, so an
369
+ // empty project is never mistaken for a wrong path.
370
+ const RESOLVED_ROOT = resolveRootFrom(process.argv.slice(2), process.env);
371
+ const PROJECT_ROOT = RESOLVED_ROOT.root;
372
+ server.registerResource("project-info", "ios://project/info", {
373
+ title: "iOS project info",
374
+ description: "Structure and shape of the configured Swift project: file and line counts, deployment target, UI framework, inferred architecture with the evidence behind it, whether dependency injection is in use, and which Apple frameworks it imports.",
375
+ mimeType: "application/json",
376
+ }, async (uri) => ({
377
+ contents: [await projectInfoResource(uri.href, PROJECT_ROOT, RESOLVED_ROOT.source)],
378
+ }));
379
+ server.registerResource("project-dependencies", "ios://project/dependencies", {
380
+ title: "iOS project dependencies",
381
+ description: "Third-party packages resolved from Package.swift, Package.resolved, or a Podfile, plus the Apple frameworks the project imports.",
382
+ mimeType: "application/json",
383
+ }, async (uri) => ({
384
+ contents: [await projectDependenciesResource(uri.href, PROJECT_ROOT)],
385
+ }));
386
+ server.registerResource("project-issues", "ios://project/issues", {
387
+ title: "iOS project issues",
388
+ description: "Every finding across all nine analysis categories for the configured project, with counts by severity and by category. Capped at 100 issues, with the remainder reported as a count.",
389
+ mimeType: "application/json",
390
+ }, async (uri) => ({
391
+ contents: [await projectIssuesResource(uri.href, PROJECT_ROOT)],
392
+ }));
236
393
  const transport = new StdioServerTransport();
237
394
  await server.connect(transport);
238
395
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env node
2
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
+ import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
4
+ import { createMcpExpressApp } from '@modelcontextprotocol/sdk/server/express.js';
5
+ import { createKnowledgeServer } from './knowledge.js';
6
+ import { VERSION } from './version.js';
7
+ const args = process.argv.slice(2);
8
+ if (args.includes('--help')) {
9
+ console.log('ios-agent-knowledge [--http] [--port 3000] [--host 127.0.0.1]\nDefault: MCP over stdio. HTTP: public-reference tools only at /mcp, health at /health. No project filesystem access.');
10
+ }
11
+ else if (args.includes('--version')) {
12
+ console.log(VERSION);
13
+ }
14
+ else if (!args.includes('--http')) {
15
+ await createKnowledgeServer().connect(new StdioServerTransport());
16
+ }
17
+ else {
18
+ const value = (flag, fallback) => args.includes(flag) ? args[args.indexOf(flag) + 1] : fallback;
19
+ const port = Number(value('--port', process.env.PORT || '3000'));
20
+ const host = value('--host', '127.0.0.1');
21
+ if (!Number.isInteger(port) || port < 0 || port > 65535 || !host || host.startsWith('--'))
22
+ throw new Error('Invalid host/port');
23
+ const app = createMcpExpressApp({ host });
24
+ app.get('/health', (_req, res) => { res.json({ status: 'ok', version: VERSION, mode: 'public-reference-only' }); });
25
+ app.post('/mcp', async (req, res) => {
26
+ const server = createKnowledgeServer();
27
+ const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined, enableJsonResponse: true });
28
+ res.on('close', () => { void transport.close(); void server.close(); });
29
+ try {
30
+ await server.connect(transport);
31
+ await transport.handleRequest(req, res, req.body);
32
+ }
33
+ catch {
34
+ if (!res.headersSent)
35
+ res.status(500).json({ jsonrpc: '2.0', id: null, error: { code: -32603, message: 'MCP request failed' } });
36
+ }
37
+ });
38
+ app.get('/mcp', (_req, res) => { res.status(405).end(); });
39
+ app.delete('/mcp', (_req, res) => { res.status(405).end(); });
40
+ const listener = app.listen(port, host, () => { const address = listener.address(); console.error(`ios-agent-knowledge HTTP listening on ${typeof address === 'object' && address ? address.port : port}`); });
41
+ process.on('SIGTERM', () => listener.close());
42
+ process.on('SIGINT', () => listener.close());
43
+ }
44
+ //# sourceMappingURL=knowledge-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-server.js","sourceRoot":"","sources":["../src/knowledge-server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,qLAAqL,CAAC,CAAC;AACrM,CAAC;KAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;KAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpC,MAAM,qBAAqB,EAAE,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;AACpE,CAAC;KAAM,CAAC;IACN,MAAM,KAAK,GAAG,CAAC,IAAW,EAAE,QAAe,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5G,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAC,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAChI,MAAM,GAAG,GAAG,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAY,EAAC,GAAY,EAAE,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,uBAAuB,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7H,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAW,EAAC,GAAY,EAAE,EAAE;QAClD,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC,EAAC,kBAAkB,EAAC,SAAS,EAAC,kBAAkB,EAAC,IAAI,EAAC,CAAC,CAAC;QAC5G,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAChC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAC,GAAG,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,GAAG,CAAC,WAAW;gBAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,KAAK,EAAC,EAAC,IAAI,EAAC,CAAC,KAAK,EAAC,OAAO,EAAC,oBAAoB,EAAC,EAAC,CAAC,CAAC;QACvH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAY,EAAC,GAAY,EAAE,EAAE,GAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA,CAAC,CAAC,CAAC;IACzE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAY,EAAC,GAAY,EAAE,EAAE,GAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA,CAAC,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAC,IAAI,EAAC,GAAE,EAAE,GAAE,MAAM,OAAO,GAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,OAAO,OAAO,KAAG,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpM,OAAO,CAAC,EAAE,CAAC,SAAS,EAAC,GAAE,EAAE,CAAA,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAC,GAAE,EAAE,CAAA,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,78 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ type Topic = {
3
+ title: string;
4
+ links: {
5
+ title: string;
6
+ url: string;
7
+ }[];
8
+ };
9
+ type Update = {
10
+ title: string;
11
+ url: string;
12
+ summary: string;
13
+ topics: {
14
+ title: string;
15
+ url: string;
16
+ section: string;
17
+ }[];
18
+ };
19
+ export declare function searchTechnologies(query: string, limit: number): {
20
+ name: string;
21
+ id: string;
22
+ url: string;
23
+ summary: string;
24
+ categories: string[];
25
+ }[];
26
+ export declare function lookupTechnology(id: string): {
27
+ error: string;
28
+ } | {
29
+ checkedAt: string;
30
+ guideText: string;
31
+ evidence: string;
32
+ name: string;
33
+ slug: string;
34
+ url: string;
35
+ summary: string;
36
+ categories: string[];
37
+ guide: string;
38
+ topics: Topic[];
39
+ platforms: unknown[];
40
+ deprecated: boolean;
41
+ error?: undefined;
42
+ };
43
+ export declare function lookupUpdates(query: string, limit: number): {
44
+ checkedAt: string;
45
+ results: Update[];
46
+ evidence: string;
47
+ };
48
+ export declare function validAppName(name: string): boolean;
49
+ export declare function appPlan(name: string, brief: string): {
50
+ name: string;
51
+ brief: string;
52
+ status: string;
53
+ scaffold: {
54
+ executable: string;
55
+ args: string[];
56
+ };
57
+ phases: string[];
58
+ workflow: string;
59
+ };
60
+ export declare function iconPlan(appName: string, concept: string): {
61
+ appName: string;
62
+ concept: string;
63
+ status: string;
64
+ background: {
65
+ kind: string;
66
+ note: string;
67
+ };
68
+ groups: {
69
+ order: number;
70
+ name: string;
71
+ purpose: string;
72
+ file: string;
73
+ }[];
74
+ checks: string[];
75
+ guidance: string;
76
+ };
77
+ export declare function createKnowledgeServer(): McpServer;
78
+ export {};