@comate/zulu 1.2.1-beta.2 → 1.3.1

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 (170) hide show
  1. package/comate-engine/assets/skills/auto-commit-comate/SKILL.md +260 -0
  2. package/comate-engine/assets/skills/auto-commit-comate/references/data_structures.md +189 -0
  3. package/comate-engine/assets/skills/auto-commit-comate/references/new_version_instruction.md +209 -0
  4. package/comate-engine/assets/skills/auto-commit-comate/references/old_version_instruction.md +208 -0
  5. package/comate-engine/assets/skills/auto-commit-comate/scripts/git_diff_cli.py +196 -0
  6. package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/git_utils.py +20 -10
  7. package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/client.py +69 -40
  8. package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/farseer.py +8 -9
  9. package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/matching.py +65 -9
  10. package/comate-engine/assets/skills/auto-commit-comate/scripts/match_card_cli.py +37 -0
  11. package/comate-engine/assets/skills/cnap-comate/SKILL.md +157 -0
  12. package/comate-engine/assets/skills/cnap-comate/references/cases.md +198 -0
  13. package/comate-engine/assets/skills/cnap-comate/references/deploy-troubleshoot.md +15 -0
  14. package/comate-engine/assets/skills/cnap-comate/references/install.md +43 -0
  15. package/comate-engine/assets/skills/cnap-comate/references/kubectl.md +55 -0
  16. package/comate-engine/assets/skills/cnap-comate/references/login.md +125 -0
  17. package/comate-engine/assets/skills/cnap-comate/references/oncall.md +24 -0
  18. package/comate-engine/assets/skills/cnap-comate/scripts/install_cnap_cli.sh +36 -0
  19. package/comate-engine/assets/skills/code-security/SKILL.md +176 -0
  20. package/comate-engine/assets/skills/code-security/references/credential_hosting.md +102 -0
  21. package/comate-engine/assets/skills/code-security/references/vul_repair_sensitive.md +219 -0
  22. package/comate-engine/assets/skills/code-security/scripts/build_repair_info.py +0 -0
  23. package/comate-engine/assets/skills/code-security/scripts/credential_hosting.py +99 -0
  24. package/comate-engine/assets/skills/code-security/scripts/credential_poll.py +350 -0
  25. package/comate-engine/assets/skills/code-security/scripts/http_client.py +173 -0
  26. package/comate-engine/assets/skills/code-security/scripts/parse_scan_result.py +301 -0
  27. package/comate-engine/assets/skills/code-security/scripts/repair_vulnerability.py +261 -0
  28. package/comate-engine/assets/skills/code-security/scripts/report_chat.py +198 -0
  29. package/comate-engine/assets/skills/code-security/scripts/scan_vulnerability.py +316 -0
  30. package/comate-engine/assets/skills/code-security-comate/SKILL.md +219 -0
  31. package/comate-engine/assets/skills/code-security-comate/references/credential_hosting.md +102 -0
  32. package/comate-engine/assets/skills/code-security-comate/references/vul_repair-go_sql_injection.md +399 -0
  33. package/comate-engine/assets/skills/code-security-comate/references/vul_repair-java_sql_injection.md +591 -0
  34. package/comate-engine/assets/skills/code-security-comate/references/vul_repair-php_sql_injection.md +318 -0
  35. package/comate-engine/assets/skills/code-security-comate/references/vul_repair-python_sql_injection.md +198 -0
  36. package/comate-engine/assets/skills/code-security-comate/references/vul_repair_sensitive.md +219 -0
  37. package/comate-engine/assets/skills/code-security-comate/scripts/credential_hosting.py +87 -0
  38. package/comate-engine/assets/skills/code-security-comate/scripts/credential_poll.py +345 -0
  39. package/comate-engine/assets/skills/code-security-comate/scripts/http_client.py +173 -0
  40. package/comate-engine/assets/skills/code-security-comate/scripts/parse_scan_result.py +392 -0
  41. package/comate-engine/assets/skills/code-security-comate/scripts/repair_vulnerability.py +245 -0
  42. package/comate-engine/assets/skills/code-security-comate/scripts/report_chat.py +145 -0
  43. package/comate-engine/assets/skills/code-security-comate/scripts/scan_vulnerability.py +444 -0
  44. package/comate-engine/assets/skills/code-security-comate/scripts/utils.py +153 -0
  45. package/comate-engine/assets/skills/comate-docs-comate/SKILL.md +148 -0
  46. package/comate-engine/assets/skills/comate-docs-comate/references/doc-map-extended.md +78 -0
  47. package/comate-engine/assets/skills/comate-docs-comate/references/models-and-billing.md +51 -0
  48. package/comate-engine/assets/skills/comate-docs-comate/references/product-overview.md +73 -0
  49. package/comate-engine/assets/skills/comate-docs-comate/references/query_content.md +83 -0
  50. package/comate-engine/assets/skills/comate-docs-comate/references/query_repo.md +57 -0
  51. package/comate-engine/assets/skills/comate-docs-comate/scripts/ku_operator.py +1575 -0
  52. package/comate-engine/assets/skills/create-image-comate/SKILL.md +278 -0
  53. package/comate-engine/assets/skills/create-skill-comate/SKILL.md +308 -217
  54. package/comate-engine/assets/skills/create-skill-comate/agents/analyzer.md +274 -0
  55. package/comate-engine/assets/skills/create-skill-comate/agents/comparator.md +202 -0
  56. package/comate-engine/assets/skills/create-skill-comate/agents/grader.md +223 -0
  57. package/comate-engine/assets/skills/create-skill-comate/assets/eval_review.html +146 -0
  58. package/comate-engine/assets/skills/create-skill-comate/eval-viewer/generate_review.py +489 -0
  59. package/comate-engine/assets/skills/create-skill-comate/eval-viewer/viewer.html +1325 -0
  60. package/comate-engine/assets/skills/create-skill-comate/references/schemas.md +430 -0
  61. package/comate-engine/assets/skills/create-skill-comate/scripts/__init__.py +0 -0
  62. package/comate-engine/assets/skills/create-skill-comate/scripts/__pycache__/__init__.cpython-311.pyc +0 -0
  63. package/comate-engine/assets/skills/create-skill-comate/scripts/__pycache__/aggregate_benchmark.cpython-311.pyc +0 -0
  64. package/comate-engine/assets/skills/create-skill-comate/scripts/aggregate_benchmark.py +412 -0
  65. package/comate-engine/assets/skills/create-skill-comate/scripts/generate_report.py +334 -0
  66. package/comate-engine/assets/skills/create-skill-comate/scripts/package_skill.py +140 -0
  67. package/comate-engine/assets/skills/create-skill-comate/scripts/utils.py +53 -0
  68. package/comate-engine/assets/skills/find-skills-comate/SKILL.md +15 -12
  69. package/comate-engine/assets/skills/find-skills-comate/scripts/fetch_skills.py +32 -3
  70. package/comate-engine/assets/skills/get-ugate-token-comate/SKILL.md +159 -0
  71. package/comate-engine/assets/skills/get-ugate-token-comate/getUgateToken.py +150 -0
  72. package/comate-engine/assets/skills/icafe-comate/SKILL.md +240 -0
  73. package/comate-engine/assets/skills/icafe-comate/references/ai-workflows.md +233 -0
  74. package/comate-engine/assets/skills/icafe-comate/references/commands.md +1147 -0
  75. package/comate-engine/assets/skills/icafe-comate/references/error-handling.md +164 -0
  76. package/comate-engine/assets/skills/icafe-comate/references/git-auto-bindcard-workflow.md +201 -0
  77. package/comate-engine/assets/skills/icafe-comate/references/git-bindcard-workflow.md +327 -0
  78. package/comate-engine/assets/skills/icafe-comate/references/iql-syntax.md +327 -0
  79. package/comate-engine/assets/skills/icafe-comate/references/platform-concepts.md +317 -0
  80. package/comate-engine/assets/skills/icafe-comate/references/smart-create-workflow.md +171 -0
  81. package/comate-engine/assets/skills/icafe-comate/references/smart-find-workflow.md +127 -0
  82. package/comate-engine/assets/skills/icafe-comate/references/smart-update-workflow.md +118 -0
  83. package/comate-engine/assets/skills/icode-comate/SKILL.md +366 -0
  84. package/comate-engine/assets/skills/icode-comate/references/api/add_reviewers.md +44 -0
  85. package/comate-engine/assets/skills/icode-comate/references/api/build_fetch_command.md +89 -0
  86. package/comate-engine/assets/skills/icode-comate/references/api/check_repo_permission.md +89 -0
  87. package/comate-engine/assets/skills/icode-comate/references/api/create_branch.md +79 -0
  88. package/comate-engine/assets/skills/icode-comate/references/api/create_draft_comment.md +109 -0
  89. package/comate-engine/assets/skills/icode-comate/references/api/get_ai_cr_result.md +190 -0
  90. package/comate-engine/assets/skills/icode-comate/references/api/get_ai_review.md +97 -0
  91. package/comate-engine/assets/skills/icode-comate/references/api/get_diff_content.md +92 -0
  92. package/comate-engine/assets/skills/icode-comate/references/api/get_diff_file.md +88 -0
  93. package/comate-engine/assets/skills/icode-comate/references/api/get_machine_check.md +73 -0
  94. package/comate-engine/assets/skills/icode-comate/references/api/get_my_reviews.md +115 -0
  95. package/comate-engine/assets/skills/icode-comate/references/api/get_person_commit.md +89 -0
  96. package/comate-engine/assets/skills/icode-comate/references/api/get_person_repo.md +63 -0
  97. package/comate-engine/assets/skills/icode-comate/references/api/get_repo_branch.md +62 -0
  98. package/comate-engine/assets/skills/icode-comate/references/api/get_repo_config.md +91 -0
  99. package/comate-engine/assets/skills/icode-comate/references/api/get_repo_members.md +118 -0
  100. package/comate-engine/assets/skills/icode-comate/references/api/get_repo_reviews.md +91 -0
  101. package/comate-engine/assets/skills/icode-comate/references/api/get_review_comments.md +87 -0
  102. package/comate-engine/assets/skills/icode-comate/references/api/get_review_info.md +81 -0
  103. package/comate-engine/assets/skills/icode-comate/references/api/get_submit_settings.md +105 -0
  104. package/comate-engine/assets/skills/icode-comate/references/api/icode-api.md +86 -0
  105. package/comate-engine/assets/skills/icode-comate/references/api/publish_comments.md +72 -0
  106. package/comate-engine/assets/skills/icode-comate/references/api/set_review_score.md +58 -0
  107. package/comate-engine/assets/skills/icode-comate/references/api/start_ai_review.md +77 -0
  108. package/comate-engine/assets/skills/icode-comate/references/api/submit_review.md +50 -0
  109. package/comate-engine/assets/skills/icode-comate/references/api/trigger_ai_cr.md +63 -0
  110. package/comate-engine/assets/skills/icode-comate/references/feature/add-reviewer.md +92 -0
  111. package/comate-engine/assets/skills/icode-comate/references/feature/fix-machine-check.md +144 -0
  112. package/comate-engine/assets/skills/icode-comate/references/feature/merge-cr.md +100 -0
  113. package/comate-engine/assets/skills/icode-comate/references/feature/ssh-setup.md +106 -0
  114. package/comate-engine/assets/skills/icode-comate/references/feature/submit-acr.md +135 -0
  115. package/comate-engine/assets/skills/icode-comate/references/feature/submit-cr.md +123 -0
  116. package/comate-engine/assets/skills/icode-comate/references/git/clone.md +67 -0
  117. package/comate-engine/assets/skills/icode-comate/references/git/icode-git.md +68 -0
  118. package/comate-engine/assets/skills/icode-comate/references/git/push.md +64 -0
  119. package/comate-engine/assets/skills/icode-comate/references/git/push_cr.md +103 -0
  120. package/comate-engine/assets/skills/icode-comate/references/install.md +144 -0
  121. package/comate-engine/assets/skills/icode-comate/references/login.md +111 -0
  122. package/comate-engine/assets/skills/icode-comate/scripts/add-reviewer.sh +154 -0
  123. package/comate-engine/assets/skills/icode-comate/scripts/common.sh +145 -0
  124. package/comate-engine/assets/skills/icode-comate/scripts/fix-machine-check.sh +131 -0
  125. package/comate-engine/assets/skills/icode-comate/scripts/merge-cr.sh +105 -0
  126. package/comate-engine/assets/skills/icode-comate/scripts/ssh-setup.sh +159 -0
  127. package/comate-engine/assets/skills/icode-comate/scripts/submit-acr.sh +236 -0
  128. package/comate-engine/assets/skills/icode-comate/scripts/submit-cr.sh +104 -0
  129. package/comate-engine/assets/skills/icode-comate/scripts/test-preflight.sh +89 -0
  130. package/comate-engine/assets/skills/ku-operator-comate/SKILL.md +121 -0
  131. package/comate-engine/assets/skills/ku-operator-comate/examples.md +190 -0
  132. package/comate-engine/assets/skills/ku-operator-comate/references/add_member.md +49 -0
  133. package/comate-engine/assets/skills/ku-operator-comate/references/change_scope.md +38 -0
  134. package/comate-engine/assets/skills/ku-operator-comate/references/copy_doc.md +50 -0
  135. package/comate-engine/assets/skills/ku-operator-comate/references/create_doc.md +61 -0
  136. package/comate-engine/assets/skills/ku-operator-comate/references/delete_doc.md +31 -0
  137. package/comate-engine/assets/skills/ku-operator-comate/references/edit_content.md +568 -0
  138. package/comate-engine/assets/skills/ku-operator-comate/references/move_doc.md +45 -0
  139. package/comate-engine/assets/skills/ku-operator-comate/references/query_comment.md +79 -0
  140. package/comate-engine/assets/skills/ku-operator-comate/references/query_content.md +83 -0
  141. package/comate-engine/assets/skills/ku-operator-comate/references/query_flowchart.md +84 -0
  142. package/comate-engine/assets/skills/ku-operator-comate/references/query_permission.md +38 -0
  143. package/comate-engine/assets/skills/ku-operator-comate/references/query_recent_view.md +67 -0
  144. package/comate-engine/assets/skills/ku-operator-comate/references/query_repo.md +57 -0
  145. package/comate-engine/assets/skills/ku-operator-comate/references/query_user_info.md +37 -0
  146. package/comate-engine/assets/skills/ku-operator-comate/references/update_member.md +41 -0
  147. package/comate-engine/assets/skills/ku-operator-comate/references/upload_attachment.md +52 -0
  148. package/comate-engine/assets/skills/ku-operator-comate/scripts/ku_operator.py +1575 -0
  149. package/comate-engine/node_modules/better-sqlite3/node_modules/.bin/prebuild-install +2 -2
  150. package/comate-engine/node_modules/tree-sitter-bash/node_modules/.bin/node-gyp-build +2 -2
  151. package/comate-engine/node_modules/tree-sitter-bash/node_modules/.bin/node-gyp-build-optional +2 -2
  152. package/comate-engine/node_modules/tree-sitter-bash/node_modules/.bin/node-gyp-build-test +2 -2
  153. package/comate-engine/package.json +2 -0
  154. package/comate-engine/server.js +170 -46
  155. package/dist/bundle/index.js +8 -8
  156. package/package.json +1 -1
  157. package/comate-engine/assets/skills/figma2code-comate/codeConnect.md +0 -37
  158. package/comate-engine/assets/skills/figma2code-comate/designToken.md +0 -3
  159. package/comate-engine/assets/skills/figma2code-comate/f2cMcp.md +0 -59
  160. package/comate-engine/assets/skills/smart-commit/SKILL.md +0 -646
  161. package/comate-engine/node_modules/@comate/plugin-host/dist/index-AZIho4HV.js +0 -1
  162. package/comate-engine/node_modules/@comate/plugin-host/dist/user-BIpzRUfb.js +0 -44
  163. package/comate-engine/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  164. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/references/issue_type_mapping.json +0 -0
  165. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/references/query_reference.md +0 -0
  166. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/compat.py +0 -0
  167. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/create_card_cli.py +0 -0
  168. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/__init__.py +0 -0
  169. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/logger.py +0 -0
  170. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/recognize_card_cli.py +0 -0
@@ -0,0 +1,278 @@
1
+ ---
2
+ name: create-image
3
+ description: "Generate/edit images with Nano Banana Pro (Gemini 3 Pro Image). Use for image create/modify requests incl. edits. Supports text-to-image + image-to-image; 1K/2K/4K resolution."
4
+ metadata:
5
+ enableWhen:
6
+ - isInternal
7
+ ---
8
+
9
+ # Nano Banana Pro Image Generation & Editing
10
+
11
+ Generate new images or edit existing ones using Google's Nano Banana Pro API (Gemini 3 Pro Image) via curl.
12
+
13
+ ## Requirements
14
+
15
+ ### macOS / Linux
16
+
17
+ - `curl` and `jq` must be installed
18
+ - `base64` built-in
19
+ - `sips` for auto-resolution detection (macOS built-in)
20
+ - `identify` for auto-resolution detection (Linux, via `imagemagick`)
21
+
22
+ ### Windows
23
+
24
+ - `curl.exe` built-in (Windows 10 1803+)
25
+ - PowerShell 5.1+ built-in (Windows 10+), used for all JSON parsing
26
+
27
+ ### Common
28
+
29
+ - API endpoint: `https://comate.baidu-int.com/api/aidevops/autocomate/rest/autowork/v1/generate-image`
30
+ - Username is passed via Header `login-name`, NOT in the request body
31
+ - Username: ${COMATE_USERNAME}
32
+
33
+ ---
34
+
35
+ ## Usage
36
+
37
+ **Important:** Always save output images to the user's current working directory.
38
+
39
+ ### 1. Generate new image (text-to-image)
40
+
41
+ **macOS / Linux (bash/zsh):**
42
+
43
+ ```bash
44
+ curl -s -X POST https://comate.baidu-int.com/api/aidevops/autocomate/rest/autowork/v1/generate-image \
45
+ -H "Content-Type: application/json" \
46
+ -H "login-name: ${COMATE_USERNAME}" \
47
+ -d '{
48
+ "contents": [{"parts": [{"text": "YOUR_PROMPT_HERE"}]}],
49
+ "resolution": "1K"
50
+ }' \
51
+ | jq -r '.candidates[0].content.parts[] | select(.inlineData) | .inlineData.data' \
52
+ | base64 --decode > output-name.png
53
+ ```
54
+
55
+ **Windows (PowerShell):**
56
+
57
+ ```powershell
58
+ # Write JSON to temp file to avoid PowerShell double-quote escaping bug with curl.exe -d
59
+ $tmpFile = "$env:TEMP\request.json"
60
+ @'
61
+ {"contents":[{"parts":[{"text":"YOUR_PROMPT_HERE"}]}],"resolution":"1K"}
62
+ '@ | Set-Content -Path $tmpFile -Encoding UTF8 -NoNewline
63
+
64
+ $response = curl.exe -s -X POST https://comate.baidu-int.com/api/aidevops/autocomate/rest/autowork/v1/generate-image `
65
+ -H "Content-Type: application/json" `
66
+ -H "login-name: $env:${COMATE_USERNAME}" `
67
+ -d "@$tmpFile" | ConvertFrom-Json
68
+
69
+ $imgBase64 = $response.candidates[0].content.parts |
70
+ Where-Object { $_.inlineData } |
71
+ Select-Object -First 1 -ExpandProperty inlineData |
72
+ Select-Object -ExpandProperty data
73
+ [System.IO.File]::WriteAllBytes(
74
+ (Join-Path (Get-Location) "output-name.png"),
75
+ [System.Convert]::FromBase64String($imgBase64)
76
+ )
77
+ ```
78
+
79
+ ### 2. Edit existing image (image-to-image)
80
+
81
+ **base64 image data is large — must write to a temp file, never inline in the command.**
82
+
83
+ **macOS / Linux (bash/zsh):**
84
+
85
+ ```bash
86
+ # Step 1: encode input image
87
+ IMG_B64=$(base64 -i path/to/input.png | tr -d '\n')
88
+
89
+ # Step 2: write JSON to temp file
90
+ cat > /tmp/request.json << EOF
91
+ {
92
+ "contents": [
93
+ {
94
+ "parts": [
95
+ {"inline_data": {"mime_type": "image/png", "data": "${IMG_B64}"}},
96
+ {"text": "YOUR_EDIT_INSTRUCTIONS_HERE"}
97
+ ]
98
+ }
99
+ ],
100
+ "resolution": "2K"
101
+ }
102
+ EOF
103
+
104
+ # Step 3: send request
105
+ curl -s -X POST https://comate.baidu-int.com/api/aidevops/autocomate/rest/autowork/v1/generate-image \
106
+ -H "Content-Type: application/json" \
107
+ -H "login-name: ${COMATE_USERNAME}" \
108
+ -d @/tmp/request.json \
109
+ | jq -r '.candidates[0].content.parts[] | select(.inlineData) | .inlineData.data' \
110
+ | base64 --decode > output-name.png
111
+ ```
112
+
113
+ **Windows (PowerShell):**
114
+
115
+ ```powershell
116
+ # Step 1: encode input image
117
+ $imgBytes = [System.IO.File]::ReadAllBytes((Resolve-Path "path\to\input.png"))
118
+ $imgBase64 = [System.Convert]::ToBase64String($imgBytes)
119
+
120
+ # Step 2: write JSON to temp file
121
+ $tmpFile = "$env:TEMP\request.json"
122
+ @"
123
+ {
124
+ "contents": [
125
+ {
126
+ "parts": [
127
+ {"inline_data": {"mime_type": "image/png", "data": "$imgBase64"}},
128
+ {"text": "YOUR_EDIT_INSTRUCTIONS_HERE"}
129
+ ]
130
+ }
131
+ ],
132
+ "resolution": "2K"
133
+ }
134
+ "@ | Set-Content -Path $tmpFile -Encoding UTF8
135
+
136
+ # Step 3: send request
137
+ $response = curl.exe -s -X POST https://comate.baidu-int.com/api/aidevops/autocomate/rest/autowork/v1/generate-image `
138
+ -H "Content-Type: application/json" `
139
+ -H "login-name: $env:${COMATE_USERNAME}" `
140
+ -d "@$tmpFile" | ConvertFrom-Json
141
+
142
+ $outBase64 = $response.candidates[0].content.parts |
143
+ Where-Object { $_.inlineData } |
144
+ Select-Object -First 1 -ExpandProperty inlineData |
145
+ Select-Object -ExpandProperty data
146
+
147
+ [System.IO.File]::WriteAllBytes(
148
+ (Join-Path (Get-Location) "output-name.png"),
149
+ [System.Convert]::FromBase64String($outBase64)
150
+ )
151
+ ```
152
+
153
+ ---
154
+
155
+ ## Default Workflow (draft > iterate > final)
156
+
157
+ - Draft (1K): quick feedback loop
158
+ - Iterate: adjust prompt in small diffs; keep filename new per run
159
+ - Final (4K): only when prompt is locked
160
+
161
+ ## Resolution Options
162
+
163
+ - **1K** (default) - ~1024px, use for drafts and quick feedback
164
+ - **2K** - ~2048px, use for mid-quality or medium-size input images
165
+ - **4K** - ~4096px, use only when prompt is locked and quality is required
166
+
167
+ ---
168
+
169
+ ## Auto-Resolution Detection (image-to-image only)
170
+
171
+ When editing an existing image and the user has not specified a resolution,
172
+ auto-detect based on the input image's longest edge.
173
+
174
+ **macOS (bash/zsh):**
175
+
176
+ ```bash
177
+ MAX_DIM=$(sips -g pixelWidth -g pixelHeight "input.png" \
178
+ | awk '/pixel/{print $2}' | sort -rn | head -1)
179
+
180
+ if [ "${MAX_DIM}" -ge 3000 ]; then RESOLUTION="4K"
181
+ elif [ "${MAX_DIM}" -ge 1500 ]; then RESOLUTION="2K"
182
+ else RESOLUTION="1K"
183
+ fi
184
+ ```
185
+
186
+ **Linux (bash):**
187
+
188
+ ```bash
189
+ # requires: apt install imagemagick / yum install imagemagick
190
+ MAX_DIM=$(identify -format "%[fx:max(w,h)]" input.png)
191
+
192
+ if [ "${MAX_DIM}" -ge 3000 ]; then RESOLUTION="4K"
193
+ elif [ "${MAX_DIM}" -ge 1500 ]; then RESOLUTION="2K"
194
+ else RESOLUTION="1K"
195
+ fi
196
+ ```
197
+
198
+ **Windows (PowerShell):**
199
+
200
+ ```powershell
201
+ Add-Type -AssemblyName System.Drawing
202
+ $img = [System.Drawing.Image]::FromFile((Resolve-Path "input.png"))
203
+ $maxDim = [Math]::Max($img.Width, $img.Height)
204
+ $img.Dispose()
205
+
206
+ $resolution = if ($maxDim -ge 3000) { "4K" }
207
+ elseif ($maxDim -ge 1500) { "2K" }
208
+ else { "1K" }
209
+ ```
210
+
211
+ ---
212
+
213
+ ## Prompt Handling
214
+
215
+ **For generation:** Pass the user's image description as-is to the `text` field.
216
+ **For editing:** Pass editing instructions to the `text` field alongside the `inline_data` image part.
217
+
218
+ ---
219
+
220
+ ## Output
221
+
222
+ - Saves PNG to current directory
223
+ - Script outputs the full path to the generated image
224
+ - **Do not read the image back** - display the image using markdown syntax: `![image](relative/path/to/image.png)`
225
+ - **Display the image path only once** using a relative path (e.g. `output-name.png` or `subdir/output-name.png`);
226
+ - do NOT display absolute paths (e.g. `/home/user/...` formats are forbidden); do NOT repeat the path multiple times in
227
+ the conversation
228
+
229
+ ---
230
+
231
+ ## Notes
232
+
233
+ | Rule | macOS/Linux | Windows |
234
+ |-------------------|-------------------------------------|------------------------------------------------------------------------------------------------------------------------------|
235
+ | curl command | `curl` | `curl.exe` (avoid PowerShell `curl` alias conflict) |
236
+ | `-d` body | inline `'{"key":"val"}'` is fine | **never** inline — PowerShell escapes `"` to `\u0022`, corrupts JSON; **always** write to temp file and use `-d "@$tmpFile"` |
237
+ | base64 encode | `base64 -i file \| tr -d '\n'` | `[Convert]::ToBase64String([IO.File]::ReadAllBytes(...))` |
238
+ | base64 decode | `base64 --decode` | `[IO.File]::WriteAllBytes(path, [Convert]::FromBase64String(...))` (PS 5.1 compatible) |
239
+ | image size detect | `sips` (macOS) / `identify` (Linux) | `System.Drawing.Image` (built-in) |
240
+ | line continuation | `\` | `` ` `` (backtick) |
241
+ | env variable | `${COMATE_USERNAME}` | `$env:COMATE_USERNAME` |
242
+
243
+ ---
244
+
245
+ ## Windows Pitfall: PowerShell escapes `"` when passing to external programs
246
+
247
+ When PowerShell passes a variable containing `"` to an external program like `curl.exe`,
248
+ it silently converts `"` into `\u0022`, which corrupts JSON and causes the server to return:
249
+
250
+ ```
251
+ JsonParseException: Unexpected character ('u'): was expecting double-quote to start field name
252
+ ```
253
+
254
+ **Wrong (never do this on Windows):**
255
+
256
+ ```powershell
257
+ $body = '{"contents":[...]}'
258
+ curl.exe ... -d $body # PowerShell corrupts the " characters
259
+ ```
260
+
261
+ **Correct — always write JSON to a temp file and pass with `-d @file`:**
262
+
263
+ ```powershell
264
+ # Single-quote here-string: content is taken literally, no escaping
265
+ $tmpFile = "$env:TEMP\request.json"
266
+ @'
267
+ {"contents":[{"parts":[{"text":"YOUR_PROMPT_HERE"}]}],"resolution":"1K"}
268
+ '@ | Set-Content -Path $tmpFile -Encoding UTF8 -NoNewline
269
+
270
+ curl.exe ... -d "@$tmpFile" # curl reads the file directly, no PowerShell escaping
271
+ ```
272
+
273
+ **Here-string type selection:**
274
+
275
+ | Situation | Here-string type | Reason |
276
+ |--------------------------------------------|------------------------|---------------------------------|
277
+ | text-to-image (no variables in JSON) | `@'...'@` single-quote | content taken literally, safest |
278
+ | image-to-image (need `$imgBase64` in JSON) | `@"..."@` double-quote | allows variable expansion |