@joeytheman/gemini-mcp-tool 1.3.0 → 2.3.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 (172) hide show
  1. package/README.md +127 -35
  2. package/dist/__tests__/agyModelSteps.test.d.ts +2 -0
  3. package/dist/__tests__/agyModelSteps.test.d.ts.map +1 -0
  4. package/dist/__tests__/agyModelSteps.test.js +58 -0
  5. package/dist/__tests__/agyModelSteps.test.js.map +1 -0
  6. package/dist/__tests__/ask-gemini.test.js +99 -37
  7. package/dist/__tests__/ask-gemini.test.js.map +1 -1
  8. package/dist/__tests__/capture-script.chromium.test.d.ts +2 -0
  9. package/dist/__tests__/capture-script.chromium.test.d.ts.map +1 -0
  10. package/dist/__tests__/capture-script.chromium.test.js +235 -0
  11. package/dist/__tests__/capture-script.chromium.test.js.map +1 -0
  12. package/dist/__tests__/layout-snippet.chromium.test.d.ts +2 -0
  13. package/dist/__tests__/layout-snippet.chromium.test.d.ts.map +1 -0
  14. package/dist/__tests__/layout-snippet.chromium.test.js +333 -0
  15. package/dist/__tests__/layout-snippet.chromium.test.js.map +1 -0
  16. package/dist/__tests__/layout-snippet.test.d.ts +2 -0
  17. package/dist/__tests__/layout-snippet.test.d.ts.map +1 -0
  18. package/dist/__tests__/layout-snippet.test.js +12 -0
  19. package/dist/__tests__/layout-snippet.test.js.map +1 -0
  20. package/dist/__tests__/live-pass.test.d.ts +2 -0
  21. package/dist/__tests__/live-pass.test.d.ts.map +1 -0
  22. package/dist/__tests__/live-pass.test.js +1249 -0
  23. package/dist/__tests__/live-pass.test.js.map +1 -0
  24. package/dist/__tests__/screen-review.test.d.ts +2 -0
  25. package/dist/__tests__/screen-review.test.d.ts.map +1 -0
  26. package/dist/__tests__/screen-review.test.js +553 -0
  27. package/dist/__tests__/screen-review.test.js.map +1 -0
  28. package/dist/__tests__/server-progress.test.d.ts +2 -0
  29. package/dist/__tests__/server-progress.test.d.ts.map +1 -0
  30. package/dist/__tests__/server-progress.test.js +63 -0
  31. package/dist/__tests__/server-progress.test.js.map +1 -0
  32. package/dist/__tests__/server.test.js +17 -19
  33. package/dist/__tests__/server.test.js.map +1 -1
  34. package/dist/__tests__/simple-tools.test.d.ts +2 -0
  35. package/dist/__tests__/simple-tools.test.d.ts.map +1 -0
  36. package/dist/__tests__/simple-tools.test.js +30 -0
  37. package/dist/__tests__/simple-tools.test.js.map +1 -0
  38. package/dist/__tests__/tools.test.js +91 -0
  39. package/dist/__tests__/tools.test.js.map +1 -1
  40. package/dist/__tests__/utils/agyExecutor.test.d.ts +2 -0
  41. package/dist/__tests__/utils/agyExecutor.test.d.ts.map +1 -0
  42. package/dist/__tests__/utils/agyExecutor.test.js +731 -0
  43. package/dist/__tests__/utils/agyExecutor.test.js.map +1 -0
  44. package/dist/__tests__/utils/agyTranscriptRecovery.test.d.ts +2 -0
  45. package/dist/__tests__/utils/agyTranscriptRecovery.test.d.ts.map +1 -0
  46. package/dist/__tests__/utils/agyTranscriptRecovery.test.js +127 -0
  47. package/dist/__tests__/utils/agyTranscriptRecovery.test.js.map +1 -0
  48. package/dist/__tests__/utils/chunkCache.test.js +26 -2
  49. package/dist/__tests__/utils/chunkCache.test.js.map +1 -1
  50. package/dist/__tests__/utils/commandExecutor.test.js +185 -7
  51. package/dist/__tests__/utils/commandExecutor.test.js.map +1 -1
  52. package/dist/__tests__/utils/fileReferences.test.d.ts +2 -0
  53. package/dist/__tests__/utils/fileReferences.test.d.ts.map +1 -0
  54. package/dist/__tests__/utils/fileReferences.test.js +87 -0
  55. package/dist/__tests__/utils/fileReferences.test.js.map +1 -0
  56. package/dist/__tests__/utils/gitStatusGuard.test.d.ts +2 -0
  57. package/dist/__tests__/utils/gitStatusGuard.test.d.ts.map +1 -0
  58. package/dist/__tests__/utils/gitStatusGuard.test.js +106 -0
  59. package/dist/__tests__/utils/gitStatusGuard.test.js.map +1 -0
  60. package/dist/__tests__/utils/progressUpdates.test.d.ts +2 -0
  61. package/dist/__tests__/utils/progressUpdates.test.d.ts.map +1 -0
  62. package/dist/__tests__/utils/progressUpdates.test.js +62 -0
  63. package/dist/__tests__/utils/progressUpdates.test.js.map +1 -0
  64. package/dist/__tests__/utils/responseCache.test.js +31 -11
  65. package/dist/__tests__/utils/responseCache.test.js.map +1 -1
  66. package/dist/__tests__/utils/test-helpers.d.ts +4 -0
  67. package/dist/__tests__/utils/test-helpers.d.ts.map +1 -1
  68. package/dist/__tests__/utils/test-helpers.js +16 -0
  69. package/dist/__tests__/utils/test-helpers.js.map +1 -1
  70. package/dist/constants.d.ts +91 -26
  71. package/dist/constants.d.ts.map +1 -1
  72. package/dist/constants.js +101 -28
  73. package/dist/constants.js.map +1 -1
  74. package/dist/index.js +20 -95
  75. package/dist/index.js.map +1 -1
  76. package/dist/layoutCheckSnippet.generated.d.ts +2 -0
  77. package/dist/layoutCheckSnippet.generated.d.ts.map +1 -0
  78. package/dist/layoutCheckSnippet.generated.js +3 -0
  79. package/dist/layoutCheckSnippet.generated.js.map +1 -0
  80. package/dist/tools/ask-gemini.tool.d.ts +34 -0
  81. package/dist/tools/ask-gemini.tool.d.ts.map +1 -1
  82. package/dist/tools/ask-gemini.tool.js +40 -23
  83. package/dist/tools/ask-gemini.tool.js.map +1 -1
  84. package/dist/tools/brainstorm.tool.d.ts.map +1 -1
  85. package/dist/tools/brainstorm.tool.js +7 -5
  86. package/dist/tools/brainstorm.tool.js.map +1 -1
  87. package/dist/tools/index.d.ts.map +1 -1
  88. package/dist/tools/index.js +3 -1
  89. package/dist/tools/index.js.map +1 -1
  90. package/dist/tools/live-pass.tool.d.ts +206 -0
  91. package/dist/tools/live-pass.tool.d.ts.map +1 -0
  92. package/dist/tools/live-pass.tool.js +670 -0
  93. package/dist/tools/live-pass.tool.js.map +1 -0
  94. package/dist/tools/registry.d.ts +6 -4
  95. package/dist/tools/registry.d.ts.map +1 -1
  96. package/dist/tools/registry.js +14 -11
  97. package/dist/tools/registry.js.map +1 -1
  98. package/dist/tools/screen-review.tool.d.ts +124 -0
  99. package/dist/tools/screen-review.tool.d.ts.map +1 -0
  100. package/dist/tools/screen-review.tool.js +449 -0
  101. package/dist/tools/screen-review.tool.js.map +1 -0
  102. package/dist/tools/simple-tools.d.ts.map +1 -1
  103. package/dist/tools/simple-tools.js +9 -3
  104. package/dist/tools/simple-tools.js.map +1 -1
  105. package/dist/utils/agyExecutor.d.ts +76 -0
  106. package/dist/utils/agyExecutor.d.ts.map +1 -0
  107. package/dist/utils/agyExecutor.js +449 -0
  108. package/dist/utils/agyExecutor.js.map +1 -0
  109. package/dist/utils/agyModelSteps.d.ts +5 -0
  110. package/dist/utils/agyModelSteps.d.ts.map +1 -0
  111. package/dist/utils/agyModelSteps.js +33 -0
  112. package/dist/utils/agyModelSteps.js.map +1 -0
  113. package/dist/utils/agyReport.d.ts +19 -0
  114. package/dist/utils/agyReport.d.ts.map +1 -0
  115. package/dist/utils/agyReport.js +62 -0
  116. package/dist/utils/agyReport.js.map +1 -0
  117. package/dist/utils/agyTranscriptRecovery.d.ts +16 -0
  118. package/dist/utils/agyTranscriptRecovery.d.ts.map +1 -0
  119. package/dist/utils/agyTranscriptRecovery.js +149 -0
  120. package/dist/utils/agyTranscriptRecovery.js.map +1 -0
  121. package/dist/utils/artifactFile.d.ts +6 -0
  122. package/dist/utils/artifactFile.d.ts.map +1 -0
  123. package/dist/utils/artifactFile.js +55 -0
  124. package/dist/utils/artifactFile.js.map +1 -0
  125. package/dist/utils/captureScript.d.ts +24 -0
  126. package/dist/utils/captureScript.d.ts.map +1 -0
  127. package/dist/utils/captureScript.js +83 -0
  128. package/dist/utils/captureScript.js.map +1 -0
  129. package/dist/utils/chunkCache.d.ts.map +1 -1
  130. package/dist/utils/chunkCache.js +19 -5
  131. package/dist/utils/chunkCache.js.map +1 -1
  132. package/dist/utils/commandExecutor.d.ts +7 -1
  133. package/dist/utils/commandExecutor.d.ts.map +1 -1
  134. package/dist/utils/commandExecutor.js +162 -22
  135. package/dist/utils/commandExecutor.js.map +1 -1
  136. package/dist/utils/fileReferences.d.ts +45 -0
  137. package/dist/utils/fileReferences.d.ts.map +1 -0
  138. package/dist/utils/fileReferences.js +169 -0
  139. package/dist/utils/fileReferences.js.map +1 -0
  140. package/dist/utils/gitCheckout.d.ts +14 -0
  141. package/dist/utils/gitCheckout.d.ts.map +1 -0
  142. package/dist/utils/gitCheckout.js +36 -0
  143. package/dist/utils/gitCheckout.js.map +1 -0
  144. package/dist/utils/gitStatusGuard.d.ts +35 -0
  145. package/dist/utils/gitStatusGuard.d.ts.map +1 -0
  146. package/dist/utils/gitStatusGuard.js +82 -0
  147. package/dist/utils/gitStatusGuard.js.map +1 -0
  148. package/dist/utils/layoutCheck.d.ts +58 -0
  149. package/dist/utils/layoutCheck.d.ts.map +1 -0
  150. package/dist/utils/layoutCheck.js +84 -0
  151. package/dist/utils/layoutCheck.js.map +1 -0
  152. package/dist/utils/logger.d.ts +0 -1
  153. package/dist/utils/logger.d.ts.map +1 -1
  154. package/dist/utils/logger.js +0 -6
  155. package/dist/utils/logger.js.map +1 -1
  156. package/dist/utils/progressUpdates.d.ts +14 -0
  157. package/dist/utils/progressUpdates.d.ts.map +1 -0
  158. package/dist/utils/progressUpdates.js +40 -0
  159. package/dist/utils/progressUpdates.js.map +1 -0
  160. package/dist/utils/responseCache.d.ts +3 -3
  161. package/dist/utils/responseCache.d.ts.map +1 -1
  162. package/dist/utils/responseCache.js +11 -6
  163. package/dist/utils/responseCache.js.map +1 -1
  164. package/package.json +19 -16
  165. package/dist/__tests__/utils/geminiExecutor.test.d.ts +0 -2
  166. package/dist/__tests__/utils/geminiExecutor.test.d.ts.map +0 -1
  167. package/dist/__tests__/utils/geminiExecutor.test.js +0 -337
  168. package/dist/__tests__/utils/geminiExecutor.test.js.map +0 -1
  169. package/dist/utils/geminiExecutor.d.ts +0 -17
  170. package/dist/utils/geminiExecutor.d.ts.map +0 -1
  171. package/dist/utils/geminiExecutor.js +0 -238
  172. package/dist/utils/geminiExecutor.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,YAAY,CAAC;AAGpC,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAGX,eAAO,MAAM,eAAe;;;;;;;;;CAUlB,CAAC;AAGX,eAAO,MAAM,MAAM;;;CAGT,CAAC;AAGX,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;CAuBX,CAAC;AAIX,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCN,CAAC;AAIX,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAGzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;CACjE"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,YAAY,CAAC;AAGpC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCjB,CAAC;AAIX,eAAO,MAAM,UAAU;;;;;CAKb,CAAC;AAEX,eAAO,MAAM,0BAA0B,QAEgD,CAAC;AAKxF,eAAO,MAAM,YAAY;;;;;;CAOf,CAAC;AAGX,eAAO,MAAM,eAAe;;;;;;CAOlB,CAAC;AAIX,eAAO,MAAM,MAAM;;;CAGT,CAAC;AAEX,eAAO,MAAM,wBAAwB,+ZACyX,CAAC;AAG/Z,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;CAoBZ,CAAC;AAEX;;;;;GAKG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAGzE,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;CAuBX,CAAC;AAIX,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCN,CAAC;AAIX,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC/B,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAG1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;CACjE"}
package/dist/constants.js CHANGED
@@ -2,28 +2,104 @@
2
2
  export const LOG_PREFIX = "[GMCPT]";
3
3
  // Error messages
4
4
  export const ERROR_MESSAGES = {
5
- QUOTA_EXCEEDED: "RESOURCE_EXHAUSTED",
6
- QUOTA_EXCEEDED_SHORT: "⚠️ Gemini Pro daily quota exceeded. Please retry with model: 'gemini-3-flash-preview'",
5
+ AGY_NOT_FOUND: "Antigravity CLI (`agy`) was not found. Install or update Antigravity CLI, run `agy install`, then verify `agy --version` works from your shell.",
7
6
  TOOL_NOT_FOUND: "not found in registry",
8
7
  NO_PROMPT_PROVIDED: "Please provide a prompt for analysis. Use @ syntax to include files (e.g., '@largefile.js explain what this does') or ask general questions",
8
+ UNSUPPORTED_AGY_OPTIONS: "Unsupported Antigravity CLI option(s)",
9
+ INVALID_RESUME: "resume must be true, latest, continue, or a non-empty conversation ID.",
10
+ AGY_NO_OUTPUT: "Antigravity CLI (`agy`) returned no output (it may have timed out resolving a file reference). Ensure any @referenced files exist under the working directory or an includeDirectories entry, narrow the prompt, or increase printTimeout.",
11
+ UNSAFE_ROOT_YOLO: "Refusing to run agy with yolo (`--dangerously-skip-permissions`) when workingDirectory is a filesystem root. Set workingDirectory to a specific project directory.",
12
+ UNSUPPORTED_OUTPUT_FORMAT: "outputFormat must be 'text' or 'json'. Antigravity CLI has no stream-json mode.",
13
+ JSON_SCHEMA_REQUIRES_JSON: "jsonSchema requires outputFormat: 'json'.",
14
+ INVALID_EFFORT: "effort must be one of: low, medium, high.",
15
+ AGY_JSON_PARSE: "Could not parse the Antigravity CLI JSON envelope",
16
+ AGY_STATUS_ERROR: "Antigravity CLI returned status ERROR",
17
+ AGY_DENIED_ACTIONS: "Antigravity CLI produced no response because it denied required actions. Retry with `yolo: true`, or allow the actions in the Antigravity `permissions.allow` settings. Denied",
18
+ CHANGEMODE_DENIED_ACTIONS: "changeMode returned no OLD/NEW edits. Ask again for the change as OLD/NEW edits, without yolo. Denied",
19
+ AGY_EMPTY_ANSWER: "Antigravity CLI (`agy`) finished with an empty answer.",
20
+ INVALID_PRINT_TIMEOUT: "printTimeout must be a duration such as 90s, 15m, 2h30m or 2.5h, or 0 for no limit",
21
+ INVALID_CONVERSATION_ID: "conversationId must be a non-empty agy conversation ID.",
22
+ CONVERSATION_NOT_RESUMED: "agy did not resume conversation",
23
+ AGY_HUNG: "Antigravity CLI (`agy`) ran past its time limit and was stopped",
24
+ AGY_CANCELLED: "The request was cancelled, so agy was stopped.",
25
+ INVALID_WORKING_DIRECTORY: "workingDirectory must be an absolute path to an existing directory that is not a filesystem root",
26
+ LIVE_PASS_ARTIFACT_DIR: "artifactDir must be an absolute path strictly inside workingDirectory",
27
+ LIVE_PASS_WEB_VIEWPORT: "a playwright target's viewport must be WxH, such as 390x844",
28
+ LIVE_PASS_NO_BRIEF: "brief is required: describe the base URL or app id, the served-branch marker, the seed case, and any navigation hints.",
29
+ // agy resolves an @reference up to the first space, so a path containing
30
+ // whitespace becomes a dangling reference that hangs until --print-timeout.
31
+ UNREFERENCEABLE_PATH: "path contains whitespace, which Antigravity CLI cannot resolve as an @reference. Move or rename it so the path has no spaces",
32
+ SCREEN_REVIEW_NO_IMAGES: "review mode requires at least one absolute image path",
33
+ SCREEN_REVIEW_IMAGE_MISSING: "image does not exist",
34
+ SCREEN_REVIEW_ROUTE_FILE: "plan mode requires routeFile: an absolute path to an existing file inside workingDirectory",
35
+ SCREEN_REVIEW_BASE_REF: "baseRef does not resolve to a merge base with HEAD in workingDirectory",
36
+ };
37
+ // How long an agy process may run before it is stopped. agy honours its own
38
+ // --print-timeout; this ceiling exists for runs that hang past it.
39
+ export const AGY_LIMITS = {
40
+ CEILING_MARGIN_MS: 2 * 60_000,
41
+ DEFAULT_CEILING_MS: 2 * 60 * 60_000,
42
+ KILL_GRACE_MS: 10_000,
43
+ KILL_CLOSE_WAIT_MS: 1_000,
44
+ };
45
+ export const PRINT_TIMEOUT_CEILING_NOTE = `The server stops agy ${AGY_LIMITS.CEILING_MARGIN_MS / 60_000} minutes after this limit, ` +
46
+ `or after ${AGY_LIMITS.DEFAULT_CEILING_MS / 3_600_000} hours when no limit is given.`;
47
+ // Undocumented Antigravity CLI internals. The step store feeds only the
48
+ // "Gemini steps" usage line, so a reader must degrade to null, never throw.
49
+ // Answers come only from agy's documented JSON output.
50
+ export const AGY_INTERNAL = {
51
+ ROOT_SEGMENTS: [".gemini", "antigravity-cli"],
52
+ TIMEOUT_SENTINEL: "Error: timed out waiting for response",
53
+ // agy 1.4.12 keeps each conversation's steps in SQLite; step_type 15 is a model step.
54
+ CONVERSATIONS_DIR: "conversations",
55
+ CONVERSATION_STORE_EXT: ".db",
56
+ MODEL_STEP_TYPE: 15,
9
57
  };
10
58
  // Status messages
11
59
  export const STATUS_MESSAGES = {
12
- QUOTA_SWITCHING: "🚫 Gemini Pro quota exceeded, switching to Flash model...",
13
- FLASH_RETRY: "⚡ Retrying with Gemini Flash...",
14
- FLASH_SUCCESS: "✅ Flash model completed successfully",
15
- SANDBOX_EXECUTING: "🔒 Executing Gemini CLI command in sandbox mode...",
60
+ SANDBOX_EXECUTING: "🔒 Executing Antigravity CLI command in sandbox mode...",
16
61
  GEMINI_RESPONSE: "Gemini response:",
17
62
  // Timeout prevention messages
18
63
  PROCESSING_START: "🔍 Starting analysis (may take 5-15 minutes for large codebases)",
19
64
  PROCESSING_CONTINUE: "⏳ Still processing... Gemini is working on your request",
20
65
  PROCESSING_COMPLETE: "✅ Analysis completed successfully",
21
66
  };
22
- // Models
67
+ // Models. The tier in an Antigravity model name IS its reasoning effort, which
68
+ // is why `--effort` is rejected for these names.
23
69
  export const MODELS = {
24
- PRO: "gemini-3.1-pro-preview",
25
- FLASH: "gemini-3-flash-preview",
70
+ DEFAULT: "Gemini 4 Argon (High)",
71
+ MEDIUM: "Gemini 3.8 Flash (Medium)",
72
+ };
73
+ export const MODEL_CHOICE_DESCRIPTION = "Optional Antigravity model name. Verified options: 'Gemini 4 Argon (Low)', 'Gemini 4 Argon (Medium)', 'Gemini 4 Argon (High)', 'Gemini 3.8 Flash (Low)', 'Gemini 3.8 Flash (Medium)', and 'Gemini 3.8 Flash (High)'. Availability depends on your CLI version and account; check `agy models`. Some accounts also expose 'Gemini 3.1 Pro (Low)' and 'Gemini 3.1 Pro (High)'. The tier in the name is the reasoning effort.";
74
+ // Live UI pass / screen review
75
+ export const LIVE_PASS = {
76
+ DEFAULT_ARTIFACT_SEGMENT: ".live-pass",
77
+ MANIFEST_FILE: "manifest.json",
78
+ DEFAULT_PRINT_TIMEOUT: "15m",
79
+ SCREEN_REVIEW_PRINT_TIMEOUT: "10m",
80
+ PLAYWRIGHT_MCP_NAME: "playwright",
81
+ MAESTRO_MCP_NAME: "maestro",
82
+ // Slack between a frame's mtime and our run-start clock.
83
+ FRESHNESS_TOLERANCE_MS: 2000,
84
+ CONVERSATION_LINE_PREFIX: "[GEMINI_CONVERSATION_ID=",
85
+ LAYOUT_FILE_SUFFIX: ".layout.json",
86
+ CAPTURE_FILE_SUFFIX: ".capture.js",
87
+ // React Native Web lays out again asynchronously after a viewport resize.
88
+ CAPTURE_SETTLE_MS: 1000,
89
+ // A virtualized list's tail spacer can report a scrollHeight far past its rows.
90
+ CAPTURE_MAX_HEIGHT: 4000,
91
+ CAPTURE_MAX_GROWS: 4,
92
+ LAYOUT_CHECK_ID: "layout-check/1",
93
+ LAYOUT_MAX_ENTRIES: 50,
94
+ LAYOUT_TEXT_CHARS: 80,
26
95
  };
96
+ /**
97
+ * Embedded in each web target's capture file, which runs it in the page right
98
+ * after the screenshot. Its return value is the `.layout.json` file the layout
99
+ * validator parses, so the two change together. The readable source is
100
+ * src/layout-check.snippet.js; its caps and check id must equal LIVE_PASS's.
101
+ */
102
+ export { LAYOUT_CHECK_SNIPPET } from './layoutCheckSnippet.generated.js';
27
103
  // MCP Protocol Constants
28
104
  export const PROTOCOL = {
29
105
  // Message roles
@@ -53,37 +129,34 @@ export const PROTOCOL = {
53
129
  export const CLI = {
54
130
  // Command names
55
131
  COMMANDS: {
56
- GEMINI: "gemini",
132
+ AGY: "agy",
57
133
  ECHO: "echo",
58
134
  },
59
135
  // Command flags
60
136
  FLAGS: {
61
- MODEL: "-m",
62
- SANDBOX: "-s",
63
- PROMPT: "-p",
64
- HELP: "-help",
65
- // Phase 1: Critical flags
66
- YOLO: "-y",
67
- APPROVAL_MODE: "--approval-mode",
68
- OUTPUT_FORMAT: "-o",
69
- INCLUDE_DIRECTORIES: "--include-directories",
70
- DEBUG: "-d",
71
- // Phase 2: Enhanced features
72
- PROMPT_INTERACTIVE: "-i",
73
- EXTENSIONS: "-e",
74
- RESUME: "-r",
137
+ MODEL: "--model",
138
+ SANDBOX: "--sandbox",
139
+ PRINT: "--print",
140
+ HELP: "--help",
141
+ YOLO: "--dangerously-skip-permissions",
142
+ ADD_DIR: "--add-dir",
143
+ PRINT_TIMEOUT: "--print-timeout",
144
+ CONTINUE: "--continue",
145
+ CONVERSATION: "--conversation",
146
+ OUTPUT_FORMAT: "--output-format",
147
+ JSON_SCHEMA: "--json-schema",
148
+ EFFORT: "--effort",
75
149
  },
76
150
  // Default values
77
151
  DEFAULTS: {
78
- MODEL: "default", // Fallback model used when no specific model is provided
79
152
  BOOLEAN_TRUE: "true",
80
153
  BOOLEAN_FALSE: "false",
81
- APPROVAL_MODE_DEFAULT: "default",
82
- APPROVAL_MODE_AUTO_EDIT: "auto_edit",
83
154
  APPROVAL_MODE_YOLO: "yolo",
155
+ RESUME_LATEST: "latest",
156
+ RESUME_CONTINUE: "continue",
84
157
  OUTPUT_FORMAT_TEXT: "text",
85
158
  OUTPUT_FORMAT_JSON: "json",
86
- OUTPUT_FORMAT_STREAM_JSON: "stream-json",
159
+ EFFORT_LEVELS: ["low", "medium", "high"],
87
160
  },
88
161
  };
89
162
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,UAAU;AACV,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC;AAEpC,iBAAiB;AACjB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,cAAc,EAAE,oBAAoB;IACpC,oBAAoB,EAAE,uFAAuF;IAC7G,cAAc,EAAE,uBAAuB;IACvC,kBAAkB,EAAE,6IAA6I;CACzJ,CAAC;AAEX,kBAAkB;AAClB,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,eAAe,EAAE,2DAA2D;IAC5E,WAAW,EAAE,iCAAiC;IAC9C,aAAa,EAAE,sCAAsC;IACrD,iBAAiB,EAAE,oDAAoD;IACvE,eAAe,EAAE,kBAAkB;IACnC,8BAA8B;IAC9B,gBAAgB,EAAE,kEAAkE;IACpF,mBAAmB,EAAE,yDAAyD;IAC9E,mBAAmB,EAAE,mCAAmC;CAChD,CAAC;AAEX,SAAS;AACT,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,GAAG,EAAE,wBAAwB;IAC7B,KAAK,EAAE,wBAAwB;CACvB,CAAC;AAEX,yBAAyB;AACzB,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,gBAAgB;IAChB,KAAK,EAAE;QACL,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,WAAW;KACvB;IACD,gBAAgB;IAChB,aAAa,EAAE;QACb,IAAI,EAAE,MAAM;KACb;IACD,eAAe;IACf,MAAM,EAAE;QACN,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;KACjB;IACD,uBAAuB;IACvB,aAAa,EAAE;QACb,QAAQ,EAAE,wBAAwB;KACnC;IACD,qBAAqB;IACrB,kBAAkB,EAAE,KAAK,EAAE,aAAa;CAChC,CAAC;AAGX,gBAAgB;AAChB,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,gBAAgB;IAChB,QAAQ,EAAE;QACR,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,MAAM;KACb;IACD,gBAAgB;IAChB,KAAK,EAAE;QACL,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,OAAO;QACb,0BAA0B;QAC1B,IAAI,EAAE,IAAI;QACV,aAAa,EAAE,iBAAiB;QAChC,aAAa,EAAE,IAAI;QACnB,mBAAmB,EAAE,uBAAuB;QAC5C,KAAK,EAAE,IAAI;QACX,6BAA6B;QAC7B,kBAAkB,EAAE,IAAI;QACxB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;KACb;IACD,iBAAiB;IACjB,QAAQ,EAAE;QACR,KAAK,EAAE,SAAS,EAAE,yDAAyD;QAC3E,YAAY,EAAE,MAAM;QACpB,aAAa,EAAE,OAAO;QACtB,qBAAqB,EAAE,SAAS;QAChC,uBAAuB,EAAE,WAAW;QACpC,kBAAkB,EAAE,MAAM;QAC1B,kBAAkB,EAAE,MAAM;QAC1B,kBAAkB,EAAE,MAAM;QAC1B,yBAAyB,EAAE,aAAa;KACzC;CACO,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,125 +4,51 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
4
4
  import { CallToolRequestSchema, ListToolsRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
5
5
  import { Logger } from "./utils/logger.js";
6
6
  import { PROTOCOL } from "./constants.js";
7
+ import { startProgressUpdates } from "./utils/progressUpdates.js";
7
8
  import { getToolDefinitions, getPromptDefinitions, executeTool, toolExists, getPromptMessage } from "./tools/index.js";
8
9
  const server = new Server({
9
- name: "gemini-cli-mcp",
10
- version: "1.1.4",
10
+ name: "gemini-mcp",
11
+ version: "2.3.0",
11
12
  }, {
12
13
  capabilities: {
13
14
  tools: {},
14
15
  prompts: {},
15
16
  },
16
17
  });
17
- let isProcessing = false;
18
- let currentOperationName = "";
19
- let latestOutput = "";
20
- async function sendNotification(method, params) {
21
- try {
22
- await server.notification({ method, params });
23
- }
24
- catch (error) {
25
- Logger.error("notification failed: ", error);
26
- }
27
- }
28
- /**
29
- * @param progressToken The progress token provided by the client
30
- * @param progress The current progress value
31
- * @param total Optional total value
32
- * @param message Optional status message
33
- */
34
- async function sendProgressNotification(progressToken, progress, total, message) {
35
- if (!progressToken)
36
- return; // Only send if client requested progress
37
- try {
38
- const params = {
39
- progressToken,
40
- progress
41
- };
42
- if (total !== undefined)
43
- params.total = total; // future cache progress
44
- if (message)
45
- params.message = message;
46
- await server.notification({
47
- method: PROTOCOL.NOTIFICATIONS.PROGRESS,
48
- params
49
- });
50
- }
51
- catch (error) {
52
- Logger.error("Failed to send progress notification:", error);
53
- }
54
- }
55
- function startProgressUpdates(operationName, progressToken) {
56
- isProcessing = true;
57
- currentOperationName = operationName;
58
- latestOutput = ""; // Reset latest output
59
- const progressMessages = [
60
- `🧠 ${operationName} - Gemini is analyzing your request...`,
61
- `📊 ${operationName} - Processing files and generating insights...`,
62
- `✨ ${operationName} - Creating structured response for your review...`,
63
- `⏱️ ${operationName} - Large analysis in progress (this is normal for big requests)...`,
64
- `🔍 ${operationName} - Still working... Gemini takes time for quality results...`,
65
- ];
66
- let messageIndex = 0;
67
- let progress = 0;
68
- // Send immediate acknowledgment if progress requested
69
- if (progressToken) {
70
- sendProgressNotification(progressToken, 0, undefined, // No total - indeterminate progress
71
- `🔍 Starting ${operationName}`);
72
- }
73
- // Keep client alive with periodic updates
74
- const progressInterval = setInterval(async () => {
75
- if (isProcessing && progressToken) {
76
- // Simply increment progress value
77
- progress += 1;
78
- // Include latest output if available
79
- const baseMessage = progressMessages[messageIndex % progressMessages.length];
80
- const outputPreview = latestOutput.slice(-150).trim(); // Last 150 chars
81
- const message = outputPreview
82
- ? `${baseMessage}\n📝 Output: ...${outputPreview}`
83
- : baseMessage;
84
- await sendProgressNotification(progressToken, progress, undefined, // No total - indeterminate progress
85
- message);
86
- messageIndex++;
18
+ // Request-scoped: the SDK drops it once the request is cancelled, and the
19
+ // client logs progress on a cancelled request's token as an error.
20
+ function progressSender(sendNotification) {
21
+ return async (progressToken, progress, total, message) => {
22
+ try {
23
+ await sendNotification({
24
+ method: PROTOCOL.NOTIFICATIONS.PROGRESS,
25
+ params: { progressToken, progress, total, message },
26
+ });
87
27
  }
88
- else if (!isProcessing) {
89
- clearInterval(progressInterval);
28
+ catch (error) {
29
+ Logger.error("Failed to send progress notification:", error);
90
30
  }
91
- }, PROTOCOL.KEEPALIVE_INTERVAL); // Every 25 seconds
92
- return { interval: progressInterval, progressToken };
93
- }
94
- function stopProgressUpdates(progressData, success = true) {
95
- const operationName = currentOperationName; // Store before clearing
96
- isProcessing = false;
97
- currentOperationName = "";
98
- clearInterval(progressData.interval);
99
- // Send final progress notification if client requested progress
100
- if (progressData.progressToken) {
101
- sendProgressNotification(progressData.progressToken, 100, 100, success ? `✅ ${operationName} completed successfully` : `❌ ${operationName} failed`);
102
- }
31
+ };
103
32
  }
104
33
  // tools/list
105
34
  server.setRequestHandler(ListToolsRequestSchema, async (request) => {
106
35
  return { tools: getToolDefinitions() };
107
36
  });
108
37
  // tools/get
109
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
38
+ server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
110
39
  const toolName = request.params.name;
111
40
  if (toolExists(toolName)) {
112
41
  // Check if client requested progress updates
113
42
  const progressToken = request.params._meta?.progressToken;
114
43
  // Start progress updates if client requested them
115
- const progressData = startProgressUpdates(toolName, progressToken);
44
+ const progress = startProgressUpdates(toolName, progressToken, progressSender(extra.sendNotification));
116
45
  try {
117
46
  // Get prompt and other parameters from arguments with proper typing
118
47
  const args = request.params.arguments || {};
119
48
  Logger.toolInvocation(toolName, request.params.arguments);
120
49
  // Execute the tool using the unified registry with progress callback
121
- const result = await executeTool(toolName, args, (newOutput) => {
122
- latestOutput = newOutput;
123
- });
124
- // Stop progress updates
125
- stopProgressUpdates(progressData, true);
50
+ const result = await executeTool(toolName, args, (newOutput) => progress.recordOutput(newOutput), extra.signal);
51
+ progress.finish('success');
126
52
  return {
127
53
  content: [
128
54
  {
@@ -134,8 +60,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
134
60
  };
135
61
  }
136
62
  catch (error) {
137
- // Stop progress updates on error
138
- stopProgressUpdates(progressData, false);
63
+ progress.finish('failure');
139
64
  Logger.error(`Error in tool '${toolName}':`, error);
140
65
  const errorMessage = error instanceof Error ? error.message : String(error);
141
66
  return {
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
+ export declare const LAYOUT_CHECK_SNIPPET = "()=>{const h=innerWidth,b=innerHeight,H=50,O=4,k=\"#error-overlay,#error-toast\",d=[],S=[];let W=0;const u=t=>getComputedStyle(t),D=t=>({x:Math.round(t.left),y:Math.round(t.top),width:Math.round(t.width),height:Math.round(t.height)}),A=t=>(t.innerText||t.textContent||t.getAttribute(\"aria-label\")||t.getAttribute(\"placeholder\")||\"\").replace(/\\s+/g,\" \").trim().slice(0,80),N=t=>t.closest(\"[data-testid]\")?.getAttribute(\"data-testid\")??null,p=(t,e,o,l,i)=>{t===d&&W++,t.length<H&&t.push({kind:e,text:i??A(o),testID:o?N(o):null,rect:D(l)})},w=(t,e)=>e.width>0&&e.height>0&&u(t).visibility!==\"hidden\"&&!t.closest('[aria-hidden=\"true\"],[inert]'),P=t=>t.right>0&&t.left<h&&t.bottom>0&&t.top<b,I=t=>t===\"hidden\"||t===\"clip\",v=t=>t===\"auto\"||t===\"scroll\",L=t=>t.webkitLineClamp&&t.webkitLineClamp!==\"none\"||t.textOverflow===\"ellipsis\",F=t=>{let e=t;for(;e.parentElement&&[\"inline\",\"contents\"].includes(u(e).display);)e=e.parentElement;return e},y=t=>{for(let e=t;e;e=e.parentElement||e.getRootNode().host)if(e.matches(k))return e;return null},E=t=>[t,...[...t.children,...t.shadowRoot?.children??[]].flatMap(E)],X=t=>{const e=t.getBoundingClientRect();return w(t,e)?e.width*e.height:0},C=[...document.querySelectorAll(k)].flatMap(E).reduce((t,e)=>X(e)>(t?X(t):0)?e:t,null);C&&p(d,\"dev-overlay\",y(C),C.getBoundingClientRect(),E(C).map(A).find(Boolean)??\"\");const M=document.scrollingElement||document.documentElement;M.scrollWidth>h&&p(d,\"page-scroll-x\",null,{left:0,top:0,width:M.scrollWidth,height:b},\"scrollWidth \"+M.scrollWidth+\" > innerWidth \"+h);const R=document.createRange();for(const t of document.body.querySelectorAll(\"*\")){if(t.isContentEditable||y(t))continue;const e=[...t.childNodes].filter(n=>n.nodeType===3&&n.textContent.trim());if(!e.length)continue;const o=F(t),l=o.getBoundingClientRect();if(!w(t,l)||!P(l))continue;let i=1/0,s=1/0,f=-1/0,m=-1/0;for(const n of e)for(const a of n.textContent.matchAll(/\\S+/g)){R.setStart(n,a.index),R.setEnd(n,a.index+a[0].length);const c=R.getBoundingClientRect();c.width&&(i=Math.min(i,c.left),s=Math.min(s,c.top),f=Math.max(f,c.right),m=Math.max(m,c.bottom))}if(i===1/0)continue;const r=u(o);for(let n=o,a=0;n&&n!==document.body&&a<O;n=n.parentElement){const c=u(n);if([\"inline\",\"contents\"].includes(c.display))continue;a++;const x=n.getBoundingClientRect(),g=x.left+n.clientLeft,B=x.top+n.clientTop,V=g+n.clientWidth,Y=B+n.clientHeight,q=i<g-1||f>V+1,J=s<B-1||m>Y+1;if(I(c.overflowX)&&q||I(c.overflowY)&&J){i<V&&f>g&&s<Y&&m>B&&p(n===o&&L(r)?S:d,n===o&&L(r)?\"text-clamped\":\"text-clipped\",t,t.getBoundingClientRect());break}if(v(c.overflowX)||v(c.overflowY))break;if(q){p(d,\"text-spill\",t,t.getBoundingClientRect());break}if(c.position===\"absolute\"||c.position===\"fixed\")break}}const T=[...document.querySelectorAll('[aria-modal=\"true\"]')].find(t=>w(t,t.getBoundingClientRect())),_=(t,e)=>{let o=Math.max(e.left,0),l=Math.max(e.top,0),i=Math.min(e.right,h),s=Math.min(e.bottom,b),f=!1;for(let m=t,r=t.parentElement;r&&r!==document.documentElement;m=r,r=r.parentElement){const n=u(m).position,a=u(r);if(n===\"fixed\")break;if(n===\"absolute\"&&(f=!0),f&&a.position===\"static\"||(f=!1,a.overflowX===\"visible\"&&a.overflowY===\"visible\"))continue;const c=r.getBoundingClientRect(),x=c.left+r.clientLeft,g=c.top+r.clientTop;o=Math.max(o,x),l=Math.max(l,g),i=Math.min(i,x+r.clientWidth),s=Math.min(s,g+r.clientHeight)}return i>o&&s>l?[(o+i)/2,(l+s)/2]:null},j=t=>{for(let e=t.parentElement;e;e=e.parentElement)if(v(u(e).overflowX)&&e.scrollWidth>e.clientWidth)return e;return null},z=(t,e)=>{if(t.contains(e))return!0;const o=t.getBoundingClientRect(),l=e.getBoundingClientRect();return!!t.parentElement?.contains(e)&&l.top>=o.top-1&&l.bottom<=o.bottom+1},G='a[href],button,input:not([type=hidden]),select,textarea,summary,[role=button],[role=link],[role=checkbox],[role=switch],[role=radio],[role=tab],[role=menuitem],[role=option],[role=combobox],[role=slider],[tabindex]:not([tabindex=\"-1\"])';for(const t of document.querySelectorAll(G)){const e=t.getBoundingClientRect();if(!w(t,e)||y(t)||u(t).pointerEvents===\"none\"||e.bottom<=0||e.top>=b)continue;const o=j(t);if((e.left<-.5||e.right>h+.5)&&e.right>0&&e.left<h&&!o&&p(d,\"control-offscreen\",t,e),T&&!T.contains(t))continue;const l=_(t,e);if(!l)continue;const i=document.elementsFromPoint(l[0],l[1]).find(s=>!y(s));i&&!t.contains(i)&&!i.contains(t)&&!(o&&z(o,i))&&p(d,\"control-covered\",t,e)}return{check:\"layout-check/1\",viewport:{width:h,height:b},found:W,entries:d,clamped:S}}";
2
+ //# sourceMappingURL=layoutCheckSnippet.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layoutCheckSnippet.generated.d.ts","sourceRoot":"","sources":["../src/layoutCheckSnippet.generated.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,oBAAoB,08IAA08I,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Generated by scripts/minify-layout-snippet.mjs from src/layout-check.snippet.js. Do not edit.
2
+ export const LAYOUT_CHECK_SNIPPET = "()=>{const h=innerWidth,b=innerHeight,H=50,O=4,k=\"#error-overlay,#error-toast\",d=[],S=[];let W=0;const u=t=>getComputedStyle(t),D=t=>({x:Math.round(t.left),y:Math.round(t.top),width:Math.round(t.width),height:Math.round(t.height)}),A=t=>(t.innerText||t.textContent||t.getAttribute(\"aria-label\")||t.getAttribute(\"placeholder\")||\"\").replace(/\\s+/g,\" \").trim().slice(0,80),N=t=>t.closest(\"[data-testid]\")?.getAttribute(\"data-testid\")??null,p=(t,e,o,l,i)=>{t===d&&W++,t.length<H&&t.push({kind:e,text:i??A(o),testID:o?N(o):null,rect:D(l)})},w=(t,e)=>e.width>0&&e.height>0&&u(t).visibility!==\"hidden\"&&!t.closest('[aria-hidden=\"true\"],[inert]'),P=t=>t.right>0&&t.left<h&&t.bottom>0&&t.top<b,I=t=>t===\"hidden\"||t===\"clip\",v=t=>t===\"auto\"||t===\"scroll\",L=t=>t.webkitLineClamp&&t.webkitLineClamp!==\"none\"||t.textOverflow===\"ellipsis\",F=t=>{let e=t;for(;e.parentElement&&[\"inline\",\"contents\"].includes(u(e).display);)e=e.parentElement;return e},y=t=>{for(let e=t;e;e=e.parentElement||e.getRootNode().host)if(e.matches(k))return e;return null},E=t=>[t,...[...t.children,...t.shadowRoot?.children??[]].flatMap(E)],X=t=>{const e=t.getBoundingClientRect();return w(t,e)?e.width*e.height:0},C=[...document.querySelectorAll(k)].flatMap(E).reduce((t,e)=>X(e)>(t?X(t):0)?e:t,null);C&&p(d,\"dev-overlay\",y(C),C.getBoundingClientRect(),E(C).map(A).find(Boolean)??\"\");const M=document.scrollingElement||document.documentElement;M.scrollWidth>h&&p(d,\"page-scroll-x\",null,{left:0,top:0,width:M.scrollWidth,height:b},\"scrollWidth \"+M.scrollWidth+\" > innerWidth \"+h);const R=document.createRange();for(const t of document.body.querySelectorAll(\"*\")){if(t.isContentEditable||y(t))continue;const e=[...t.childNodes].filter(n=>n.nodeType===3&&n.textContent.trim());if(!e.length)continue;const o=F(t),l=o.getBoundingClientRect();if(!w(t,l)||!P(l))continue;let i=1/0,s=1/0,f=-1/0,m=-1/0;for(const n of e)for(const a of n.textContent.matchAll(/\\S+/g)){R.setStart(n,a.index),R.setEnd(n,a.index+a[0].length);const c=R.getBoundingClientRect();c.width&&(i=Math.min(i,c.left),s=Math.min(s,c.top),f=Math.max(f,c.right),m=Math.max(m,c.bottom))}if(i===1/0)continue;const r=u(o);for(let n=o,a=0;n&&n!==document.body&&a<O;n=n.parentElement){const c=u(n);if([\"inline\",\"contents\"].includes(c.display))continue;a++;const x=n.getBoundingClientRect(),g=x.left+n.clientLeft,B=x.top+n.clientTop,V=g+n.clientWidth,Y=B+n.clientHeight,q=i<g-1||f>V+1,J=s<B-1||m>Y+1;if(I(c.overflowX)&&q||I(c.overflowY)&&J){i<V&&f>g&&s<Y&&m>B&&p(n===o&&L(r)?S:d,n===o&&L(r)?\"text-clamped\":\"text-clipped\",t,t.getBoundingClientRect());break}if(v(c.overflowX)||v(c.overflowY))break;if(q){p(d,\"text-spill\",t,t.getBoundingClientRect());break}if(c.position===\"absolute\"||c.position===\"fixed\")break}}const T=[...document.querySelectorAll('[aria-modal=\"true\"]')].find(t=>w(t,t.getBoundingClientRect())),_=(t,e)=>{let o=Math.max(e.left,0),l=Math.max(e.top,0),i=Math.min(e.right,h),s=Math.min(e.bottom,b),f=!1;for(let m=t,r=t.parentElement;r&&r!==document.documentElement;m=r,r=r.parentElement){const n=u(m).position,a=u(r);if(n===\"fixed\")break;if(n===\"absolute\"&&(f=!0),f&&a.position===\"static\"||(f=!1,a.overflowX===\"visible\"&&a.overflowY===\"visible\"))continue;const c=r.getBoundingClientRect(),x=c.left+r.clientLeft,g=c.top+r.clientTop;o=Math.max(o,x),l=Math.max(l,g),i=Math.min(i,x+r.clientWidth),s=Math.min(s,g+r.clientHeight)}return i>o&&s>l?[(o+i)/2,(l+s)/2]:null},j=t=>{for(let e=t.parentElement;e;e=e.parentElement)if(v(u(e).overflowX)&&e.scrollWidth>e.clientWidth)return e;return null},z=(t,e)=>{if(t.contains(e))return!0;const o=t.getBoundingClientRect(),l=e.getBoundingClientRect();return!!t.parentElement?.contains(e)&&l.top>=o.top-1&&l.bottom<=o.bottom+1},G='a[href],button,input:not([type=hidden]),select,textarea,summary,[role=button],[role=link],[role=checkbox],[role=switch],[role=radio],[role=tab],[role=menuitem],[role=option],[role=combobox],[role=slider],[tabindex]:not([tabindex=\"-1\"])';for(const t of document.querySelectorAll(G)){const e=t.getBoundingClientRect();if(!w(t,e)||y(t)||u(t).pointerEvents===\"none\"||e.bottom<=0||e.top>=b)continue;const o=j(t);if((e.left<-.5||e.right>h+.5)&&e.right>0&&e.left<h&&!o&&p(d,\"control-offscreen\",t,e),T&&!T.contains(t))continue;const l=_(t,e);if(!l)continue;const i=document.elementsFromPoint(l[0],l[1]).find(s=>!y(s));i&&!t.contains(i)&&!i.contains(t)&&!(o&&z(o,i))&&p(d,\"control-covered\",t,e)}return{check:\"layout-check/1\",viewport:{width:h,height:b},found:W,entries:d,clamped:S}}";
3
+ //# sourceMappingURL=layoutCheckSnippet.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layoutCheckSnippet.generated.js","sourceRoot":"","sources":["../src/layoutCheckSnippet.generated.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,MAAM,CAAC,MAAM,oBAAoB,GAAG,u8IAAu8I,CAAC"}
@@ -1,3 +1,37 @@
1
+ import { z } from 'zod';
1
2
  import { UnifiedTool } from './registry.js';
3
+ export declare const askGeminiArgsSchema: z.ZodObject<{
4
+ prompt: z.ZodString;
5
+ model: z.ZodOptional<z.ZodString>;
6
+ sandbox: z.ZodDefault<z.ZodBoolean>;
7
+ changeMode: z.ZodDefault<z.ZodBoolean>;
8
+ chunkIndex: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
9
+ chunkCacheKey: z.ZodOptional<z.ZodString>;
10
+ workingDirectory: z.ZodOptional<z.ZodString>;
11
+ yolo: z.ZodDefault<z.ZodBoolean>;
12
+ approvalMode: z.ZodOptional<z.ZodEnum<{
13
+ yolo: "yolo";
14
+ default: "default";
15
+ auto_edit: "auto_edit";
16
+ }>>;
17
+ outputFormat: z.ZodOptional<z.ZodEnum<{
18
+ text: "text";
19
+ json: "json";
20
+ "stream-json": "stream-json";
21
+ }>>;
22
+ jsonSchema: z.ZodOptional<z.ZodString>;
23
+ effort: z.ZodOptional<z.ZodEnum<{
24
+ low: "low";
25
+ medium: "medium";
26
+ high: "high";
27
+ }>>;
28
+ includeDirectories: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
29
+ debug: z.ZodDefault<z.ZodBoolean>;
30
+ printTimeout: z.ZodOptional<z.ZodString>;
31
+ promptInteractive: z.ZodOptional<z.ZodString>;
32
+ extensions: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
33
+ resume: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
34
+ conversationId: z.ZodOptional<z.ZodString>;
35
+ }, z.core.$strip>;
2
36
  export declare const askGeminiTool: UnifiedTool;
3
37
  //# sourceMappingURL=ask-gemini.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ask-gemini.tool.d.ts","sourceRoot":"","sources":["../../src/tools/ask-gemini.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AA6B5C,eAAO,MAAM,aAAa,EAAE,WA0D3B,CAAC"}
1
+ {"version":3,"file":"ask-gemini.tool.d.ts","sourceRoot":"","sources":["../../src/tools/ask-gemini.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAoB5C,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsB9B,CAAC;AAEH,eAAO,MAAM,aAAa,EAAE,WAuE3B,CAAC"}
@@ -1,31 +1,33 @@
1
1
  import { z } from 'zod';
2
- import { executeGeminiCLI, processChangeModeOutput } from '../utils/geminiExecutor.js';
3
- import { ERROR_MESSAGES, STATUS_MESSAGES } from '../constants.js';
4
- const askGeminiArgsSchema = z.object({
5
- prompt: z.string().min(1).describe("Analysis request. Use @ syntax to include files (e.g., '@largefile.js explain what this does') or ask general questions"),
6
- model: z.string().optional().describe("Optional model to use (e.g., 'gemini-3-flash-preview'). If not specified, uses the default model (gemini-3.1-pro-preview)."),
7
- sandbox: z.boolean().default(false).describe("Use sandbox mode (-s flag) to safely test code changes, execute scripts, or run potentially risky operations in an isolated environment"),
2
+ import { executeAgyCLI, executeAgyJson, processChangeModeOutput, renderAgyJsonEnvelope, formatAgyUsageLine, formatConversationLine, printTimeoutSchema, } from '../utils/agyExecutor.js';
3
+ import { CLI, ERROR_MESSAGES, MODELS, MODEL_CHOICE_DESCRIPTION, PRINT_TIMEOUT_CEILING_NOTE, STATUS_MESSAGES } from '../constants.js';
4
+ export const askGeminiArgsSchema = z.object({
5
+ prompt: z.string().min(1).describe("Analysis request for Gemini feedback. Use @ syntax to include files (e.g., '@largefile.js review this implementation') or ask for plan/code review feedback"),
6
+ model: z.string().optional().describe(`${MODEL_CHOICE_DESCRIPTION} Defaults to '${MODELS.DEFAULT}'.`),
7
+ sandbox: z.boolean().default(false).describe("Use Antigravity sandbox mode (--sandbox) to restrict terminal access"),
8
8
  changeMode: z.boolean().default(false).describe("Enable structured change mode - formats prompts to prevent tool errors and returns structured edit suggestions that Claude can apply directly"),
9
9
  chunkIndex: z.union([z.number(), z.string()]).optional().describe("Which chunk to return (1-based)"),
10
10
  chunkCacheKey: z.string().optional().describe("Optional cache key for continuation"),
11
- workingDirectory: z.string().optional().describe("Working directory to run Gemini from. Use drive root (e.g., 'C:/' or 'D:/') to access files on that drive."),
12
- // Phase 1: Critical flags
13
- yolo: z.boolean().default(false).describe("Auto-accept all actions (YOLO mode). Automatically approves all confirmations without prompting. Use with caution in automated workflows."),
14
- approvalMode: z.enum(["default", "auto_edit", "yolo"]).optional().describe("Set approval mode: 'default' (prompt for approval), 'auto_edit' (auto-approve edit tools only), 'yolo' (auto-approve all tools). Overrides yolo flag if both are set."),
15
- outputFormat: z.enum(["text", "json", "stream-json"]).optional().describe("Output format: 'text' (default human-readable), 'json' (structured JSON), 'stream-json' (streaming JSON for real-time processing)"),
16
- includeDirectories: z.union([z.string(), z.array(z.string())]).optional().describe("Additional directories to include in workspace (comma-separated string or array). Example: 'src,tests' or ['src', 'tests']"),
17
- debug: z.boolean().default(false).describe("Enable debug mode for verbose logging and troubleshooting"),
18
- // Phase 2: Enhanced features (for future implementation)
19
- promptInteractive: z.string().optional().describe("Execute the provided prompt and continue in interactive mode"),
20
- extensions: z.union([z.string(), z.array(z.string())]).optional().describe("Specific extensions to use (comma-separated or array). If not provided, all extensions are used."),
21
- resume: z.string().optional().describe("Resume a previous session. Use 'latest' for most recent or session index number"),
11
+ workingDirectory: z.string().optional().describe("Working directory to run agy from. Use drive root (e.g., 'C:/' or 'D:/') to access files on that drive."),
12
+ yolo: z.boolean().default(false).describe("Map to agy --dangerously-skip-permissions. Auto-approves all tool permission requests without prompting. Use with caution."),
13
+ approvalMode: z.enum(["default", "auto_edit", "yolo"]).optional().describe("Legacy Gemini CLI option. Only 'yolo' is supported and maps to --dangerously-skip-permissions; other values return an explicit error."),
14
+ outputFormat: z.enum(["text", "json", "stream-json"]).optional().describe("'text' (default) returns agy's plain answer. 'json' returns agy's JSON envelope rendered as the conversation ID line, the response (or structured_output when jsonSchema is set), and a usage line. 'stream-json' is unsupported."),
15
+ jsonSchema: z.string().optional().describe("Inline JSON Schema passed to agy --json-schema, which constrains the answer to structured_output. Requires outputFormat: 'json'."),
16
+ effort: z.enum(["low", "medium", "high"]).optional().describe("agy --effort, only for models that accept it; tiered Gemini names encode effort in the name ('Gemini 3.8 Flash (High)') and agy rejects --effort for them."),
17
+ includeDirectories: z.union([z.string(), z.array(z.string())]).optional().describe("Additional directories to include in the Antigravity workspace. Comma-separated string or array maps to repeated --add-dir flags."),
18
+ debug: z.boolean().default(false).describe("Unsupported legacy Gemini CLI option. Use agy logs for troubleshooting."),
19
+ printTimeout: printTimeoutSchema.optional().describe(`agy --print-timeout duration, such as '5m', '90s', or '10m'. If omitted, agy uses its default. ${PRINT_TIMEOUT_CEILING_NOTE}`),
20
+ promptInteractive: z.string().optional().describe("Unsupported in MCP request/response mode because it requires an interactive TTY."),
21
+ extensions: z.union([z.string(), z.array(z.string())]).optional().describe("Unsupported legacy Gemini CLI option. Antigravity uses plugins instead of Gemini CLI extensions."),
22
+ resume: z.union([z.boolean(), z.string()]).optional().describe("Resume an agy conversation. true/latest/continue maps to --continue; any other string maps to --conversation <id>."),
23
+ conversationId: z.string().optional().describe("Resume this exact agy conversation (--conversation <id>); wins over `resume`. The call errors when agy silently starts a different conversation instead of resuming this one. IDs come from the [GEMINI_CONVERSATION_ID=...] line of a previous json call."),
22
24
  });
23
25
  export const askGeminiTool = {
24
26
  name: "ask-gemini",
25
- description: "Ask Google Gemini with full CLI support: model selection [-m], sandbox [-s], YOLO mode [-y], approval modes, output formats, and more",
27
+ description: "Ask Gemini through Antigravity CLI (`agy`) for plan review, implementation critique, code review, architecture feedback, debugging, and tradeoff analysis",
26
28
  zodSchema: askGeminiArgsSchema,
27
29
  prompt: {
28
- description: "Execute Gemini CLI with advanced options. Supports file analysis (@syntax), YOLO mode, different approval levels, output formats (text/json), debug mode, and structured change mode for edit suggestions.",
30
+ description: "Ask Gemini through Antigravity CLI (`agy`). Supports file analysis (@syntax), sandbox, yolo permission mode, extra workspace directories, print timeouts, resume by conversation ID, JSON output with an optional response schema, and structured change mode for edit suggestions.",
29
31
  },
30
32
  category: 'gemini',
31
33
  annotations: {
@@ -33,8 +35,8 @@ export const askGeminiTool = {
33
35
  readOnlyHint: true,
34
36
  openWorldHint: true,
35
37
  },
36
- execute: async (args, onProgress) => {
37
- const { prompt, model, sandbox, changeMode, chunkIndex, chunkCacheKey, workingDirectory, yolo, approvalMode, outputFormat, includeDirectories, debug, promptInteractive, extensions, resume } = args;
38
+ execute: async (args, onProgress, signal) => {
39
+ const { prompt, model, sandbox, changeMode, chunkIndex, chunkCacheKey, workingDirectory, yolo, approvalMode, outputFormat, jsonSchema, effort, includeDirectories, debug, printTimeout, promptInteractive, extensions, resume, conversationId } = args;
38
40
  if (!prompt?.trim()) {
39
41
  throw new Error(ERROR_MESSAGES.NO_PROMPT_PROVIDED);
40
42
  }
@@ -42,20 +44,35 @@ export const askGeminiTool = {
42
44
  return processChangeModeOutput('', // empty for cache...
43
45
  chunkIndex, chunkCacheKey, prompt);
44
46
  }
45
- const result = await executeGeminiCLI(prompt, {
47
+ const cliOptions = {
46
48
  model: model,
47
49
  sandbox: !!sandbox,
48
50
  changeMode: !!changeMode,
49
51
  yolo: !!yolo,
50
52
  approvalMode: approvalMode,
51
53
  outputFormat: outputFormat,
54
+ jsonSchema: jsonSchema,
55
+ effort: effort,
52
56
  includeDirectories: includeDirectories,
53
57
  debug: !!debug,
58
+ printTimeout: printTimeout,
54
59
  promptInteractive: promptInteractive,
55
60
  extensions: extensions,
56
61
  resume: resume,
62
+ conversationId: conversationId,
57
63
  cwd: workingDirectory,
58
- }, onProgress);
64
+ signal,
65
+ };
66
+ if (outputFormat === CLI.DEFAULTS.OUTPUT_FORMAT_JSON) {
67
+ const envelope = await executeAgyJson(prompt, cliOptions, onProgress);
68
+ const rendered = renderAgyJsonEnvelope(envelope, { hadSchema: Boolean(jsonSchema) });
69
+ return [
70
+ envelope.conversation_id ? formatConversationLine(envelope.conversation_id) : '',
71
+ `${STATUS_MESSAGES.GEMINI_RESPONSE}\n${rendered}`,
72
+ formatAgyUsageLine(envelope),
73
+ ].filter(Boolean).join('\n\n');
74
+ }
75
+ const result = await executeAgyCLI(prompt, cliOptions, onProgress);
59
76
  if (changeMode) {
60
77
  return processChangeModeOutput(result, args.chunkIndex, undefined, prompt);
61
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ask-gemini.tool.js","sourceRoot":"","sources":["../../src/tools/ask-gemini.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ask-gemini.tool.js","sourceRoot":"","sources":["../../src/tools/ask-gemini.tool.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"brainstorm.tool.d.ts","sourceRoot":"","sources":["../../src/tools/brainstorm.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAgI5C,eAAO,MAAM,cAAc,EAAE,WAyD5B,CAAC"}
1
+ {"version":3,"file":"brainstorm.tool.d.ts","sourceRoot":"","sources":["../../src/tools/brainstorm.tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAiI5C,eAAO,MAAM,cAAc,EAAE,WA0D5B,CAAC"}