@link-assistant/hive-mind 1.66.0 ā 1.67.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.
- package/CHANGELOG.md +6 -0
- package/package.json +1 -1
- package/src/agent.prompts.lib.mjs +2 -1
- package/src/claude-quiet-config.lib.mjs +28 -2
- package/src/claude.lib.mjs +7 -1
- package/src/claude.prompts.lib.mjs +2 -1
- package/src/codex.prompts.lib.mjs +2 -1
- package/src/gemini.prompts.lib.mjs +2 -1
- package/src/hive.mjs +1 -2
- package/src/i18n.lib.mjs +78 -13
- package/src/locales/en.lino +38 -0
- package/src/locales/hi.lino +38 -0
- package/src/locales/ru.lino +38 -0
- package/src/locales/zh.lino +38 -0
- package/src/opencode.prompts.lib.mjs +2 -1
- package/src/qwen.prompts.lib.mjs +2 -1
- package/src/review.mjs +17 -3
- package/src/solve.config.lib.mjs +11 -1
- package/src/solve.mjs +8 -2
- package/src/task.config.lib.mjs +11 -1
- package/src/task.mjs +6 -2
- package/src/telegram-bot.mjs +21 -4
- package/src/telegram-task-command.lib.mjs +16 -2
- package/src/work-language.prompts.lib.mjs +22 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @link-assistant/hive-mind
|
|
2
2
|
|
|
3
|
+
## 1.67.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- d88aa94: Add `--ui-language` and `--work-language` flags for two-track i18n (issue #378). The existing `--language LOCALE` continues to set both tracks at once; `--ui-language LOCALE` overrides only UI/log strings, and `--work-language LOCALE` overrides only the language the AI uses for free-form output (PR/issue comments, commit messages, chat replies). Code, identifiers, and CLI strings stay in their original form. Supported locales: `en` (default), `ru`, `zh`, `hi`. The Telegram bot now resolves the user's effective locale and propagates it as `--language` to spawned solve/hive/task processes when no language flag is already present.
|
|
8
|
+
|
|
3
9
|
## 1.66.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
package/package.json
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { getArchitectureCareSubPrompt } from './architecture-care.prompts.lib.mjs';
|
|
7
7
|
import { getExperimentsExamplesSubPrompt } from './experiments-examples.prompts.lib.mjs';
|
|
8
8
|
import { getThinkingPromptInstruction } from './thinking-prompt.lib.mjs';
|
|
9
|
+
import { buildWorkLanguageDirective } from './work-language.prompts.lib.mjs';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Build the user prompt for Agent
|
|
@@ -257,7 +258,7 @@ Visual UI work and screenshots.
|
|
|
257
258
|
- When the fix is visual, include side-by-side or sequential comparison of before/after states in the PR description.
|
|
258
259
|
- When possible, create automated visual regression tests to prevent the UI bug from recurring.`
|
|
259
260
|
: ''
|
|
260
|
-
}${ciExamples}${getArchitectureCareSubPrompt(argv)}`;
|
|
261
|
+
}${ciExamples}${getArchitectureCareSubPrompt(argv)}${buildWorkLanguageDirective()}`;
|
|
261
262
|
};
|
|
262
263
|
|
|
263
264
|
// Export all functions as default object too
|
|
@@ -60,7 +60,22 @@ export const formatClaudeQuietConfigSummary = () => {
|
|
|
60
60
|
|
|
61
61
|
const isPlainObject = value => value && typeof value === 'object' && !Array.isArray(value);
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
// Map our 2-letter locale to the BCP-47-like language string Claude Code accepts.
|
|
64
|
+
// See https://code.claude.com/docs/en/settings#available-settings for the
|
|
65
|
+
// supported `language` values.
|
|
66
|
+
const LOCALE_TO_CLAUDE_LANGUAGE = Object.freeze({
|
|
67
|
+
en: 'English',
|
|
68
|
+
ru: 'Russian',
|
|
69
|
+
zh: 'Chinese (Simplified)',
|
|
70
|
+
hi: 'Hindi',
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
export function resolveClaudeLanguageSetting(locale) {
|
|
74
|
+
if (!locale) return null;
|
|
75
|
+
return LOCALE_TO_CLAUDE_LANGUAGE[locale] || null;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export const ensureClaudeQuietConfig = async ({ settingsPath, log, workLanguage = null } = {}) => {
|
|
64
79
|
const resolvedPath = settingsPath || path.join(os.homedir(), '.claude', 'settings.json');
|
|
65
80
|
let settings = {};
|
|
66
81
|
try {
|
|
@@ -118,7 +133,18 @@ export const ensureClaudeQuietConfig = async ({ settingsPath, log } = {}) => {
|
|
|
118
133
|
}
|
|
119
134
|
settings.env = existingEnv;
|
|
120
135
|
|
|
121
|
-
|
|
136
|
+
// Issue #378: write Claude Code's `language` setting from --work-language.
|
|
137
|
+
// When workLanguage is null, we deliberately leave any existing value alone
|
|
138
|
+
// so the user's manual override stays intact between solve invocations.
|
|
139
|
+
const desiredLanguage = resolveClaudeLanguageSetting(workLanguage);
|
|
140
|
+
let updatedLanguage = false;
|
|
141
|
+
if (desiredLanguage && settings.language !== desiredLanguage) {
|
|
142
|
+
settings.language = desiredLanguage;
|
|
143
|
+
updatedSettingsKeys.push('language');
|
|
144
|
+
updatedLanguage = true;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
const changed = updatedSettingsKeys.length > 0 || updatedEnvKeys.length > 0 || updatedLanguage;
|
|
122
148
|
try {
|
|
123
149
|
if (changed) {
|
|
124
150
|
await fs.mkdir(path.dirname(resolvedPath), { recursive: true });
|
package/src/claude.lib.mjs
CHANGED
|
@@ -719,7 +719,13 @@ export const executeClaudeCommand = async params => {
|
|
|
719
719
|
await log(`š Resuming from session: ${argv.resume}`);
|
|
720
720
|
claudeArgs = `--resume ${argv.resume} ${claudeArgs}`;
|
|
721
721
|
}
|
|
722
|
-
|
|
722
|
+
let claudeWorkLanguage = null;
|
|
723
|
+
try {
|
|
724
|
+
claudeWorkLanguage = (await import('./i18n.lib.mjs')).getWorkLocale?.() ?? null;
|
|
725
|
+
} catch {
|
|
726
|
+
/* ignore */
|
|
727
|
+
}
|
|
728
|
+
await ensureClaudeQuietConfig({ log, workLanguage: claudeWorkLanguage });
|
|
723
729
|
const { mcpConfigPath, disallowedToolsList } = await resolveClaudeSessionToolFlags({ argv, log, fallbackBuildMcpConfigWithoutPlaywright: buildMcpConfigWithoutPlaywright });
|
|
724
730
|
if (mcpConfigPath) claudeArgs += ` --strict-mcp-config --mcp-config "${mcpConfigPath}"`;
|
|
725
731
|
if (disallowedToolsList.length) claudeArgs += ` --disallowedTools ${disallowedToolsList.join(' ')}`;
|
|
@@ -7,6 +7,7 @@ import { getArchitectureCareSubPrompt } from './architecture-care.prompts.lib.mj
|
|
|
7
7
|
import { getExperimentsExamplesSubPrompt } from './experiments-examples.prompts.lib.mjs';
|
|
8
8
|
import { primaryModelNames } from './models/index.mjs';
|
|
9
9
|
import { getThinkingPromptInstruction } from './thinking-prompt.lib.mjs';
|
|
10
|
+
import { buildWorkLanguageDirective } from './work-language.prompts.lib.mjs';
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* Build the user prompt for Claude
|
|
@@ -328,7 +329,7 @@ Visual UI work and screenshots.
|
|
|
328
329
|
- When the fix is visual, include side-by-side or sequential comparison of before/after states in the PR description.
|
|
329
330
|
- When possible, create automated visual regression tests to prevent the UI bug from recurring.`
|
|
330
331
|
: ''
|
|
331
|
-
}${ciExamples}${getArchitectureCareSubPrompt(argv)}`;
|
|
332
|
+
}${ciExamples}${getArchitectureCareSubPrompt(argv)}${buildWorkLanguageDirective()}`;
|
|
332
333
|
};
|
|
333
334
|
|
|
334
335
|
// Export all functions as default object too
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { getArchitectureCareSubPrompt } from './architecture-care.prompts.lib.mjs';
|
|
7
7
|
import { getExperimentsExamplesSubPrompt } from './experiments-examples.prompts.lib.mjs';
|
|
8
8
|
import { getThinkingPromptInstruction } from './thinking-prompt.lib.mjs';
|
|
9
|
+
import { buildWorkLanguageDirective } from './work-language.prompts.lib.mjs';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Build the user prompt for Codex
|
|
@@ -305,7 +306,7 @@ Visual UI work and screenshots.
|
|
|
305
306
|
- When the fix is visual, include side-by-side or sequential comparison of before/after states in the PR description.
|
|
306
307
|
- When possible, create automated visual regression tests to prevent the UI bug from recurring.`
|
|
307
308
|
: ''
|
|
308
|
-
}${ciExamples}${getArchitectureCareSubPrompt(argv)}`;
|
|
309
|
+
}${ciExamples}${getArchitectureCareSubPrompt(argv)}${buildWorkLanguageDirective()}`;
|
|
309
310
|
};
|
|
310
311
|
|
|
311
312
|
// Export all functions as default object too
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { getArchitectureCareSubPrompt } from './architecture-care.prompts.lib.mjs';
|
|
7
7
|
import { getExperimentsExamplesSubPrompt } from './experiments-examples.prompts.lib.mjs';
|
|
8
8
|
import { getThinkingPromptInstruction } from './thinking-prompt.lib.mjs';
|
|
9
|
+
import { buildWorkLanguageDirective } from './work-language.prompts.lib.mjs';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Build the user prompt for Gemini
|
|
@@ -227,7 +228,7 @@ Visual UI work and screenshots.
|
|
|
227
228
|
- When you work on visual UI changes, include a render or screenshot of the final result in the pull request description.
|
|
228
229
|
- When you save screenshots to the repository, use permanent links in the PR description such as https://github.com/${screenshotRepoPath}/blob/${branchName}/docs/screenshots/result.png?raw=true.`
|
|
229
230
|
: ''
|
|
230
|
-
}${ciExamples}${getArchitectureCareSubPrompt(argv)}`;
|
|
231
|
+
}${ciExamples}${getArchitectureCareSubPrompt(argv)}${buildWorkLanguageDirective()}`;
|
|
231
232
|
};
|
|
232
233
|
|
|
233
234
|
export default {
|
package/src/hive.mjs
CHANGED
|
@@ -292,9 +292,8 @@ if (isRunningDirectly) {
|
|
|
292
292
|
// Set global verbose mode
|
|
293
293
|
global.verboseMode = argv.verbose;
|
|
294
294
|
|
|
295
|
-
// Initialize i18n based on --language (or detected system locale)
|
|
296
295
|
const { initI18n } = await import('./i18n.lib.mjs');
|
|
297
|
-
await initI18n(argv.language);
|
|
296
|
+
await initI18n({ language: argv.language, uiLanguage: argv.uiLanguage, workLanguage: argv.workLanguage });
|
|
298
297
|
|
|
299
298
|
setupVerboseLogInterceptor(); // Issue #1466: capture [VERBOSE] output in log files
|
|
300
299
|
setupStdioLogInterceptor(); // Issue #1549: capture ALL terminal output in log file
|
package/src/i18n.lib.mjs
CHANGED
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
// - Translation files live in src/locales/<locale>.lino and are stored
|
|
3
3
|
// in Links Notation, parsed via lino-objects-codec.
|
|
4
4
|
// - Supported locales: en (default fallback), ru, zh, hi.
|
|
5
|
-
// -
|
|
5
|
+
// - Two locale tracks: ui (user-facing strings) and work (AI prompts /
|
|
6
|
+
// tool preferred language). Both default to the value of --language.
|
|
7
|
+
// - Public API: initI18n, t, getCurrentLocale, getUiLocale, getWorkLocale,
|
|
8
|
+
// setLocale, setUiLocale, setWorkLocale, getSupportedLocales,
|
|
6
9
|
// normalizeLocale, getUserLocale, setUserLocale, clearUserLocale,
|
|
7
10
|
// resolveLocaleFromTelegramCtx.
|
|
8
11
|
|
|
@@ -20,7 +23,8 @@ const SUPPORTED_LOCALES = ['en', 'ru', 'zh', 'hi'];
|
|
|
20
23
|
const localeCache = new Map(); // locale -> { key: string }
|
|
21
24
|
const userLocales = new Map(); // userId/chatId -> locale (in-memory)
|
|
22
25
|
|
|
23
|
-
let
|
|
26
|
+
let currentUiLocale = DEFAULT_LOCALE;
|
|
27
|
+
let currentWorkLocale = DEFAULT_LOCALE;
|
|
24
28
|
let fallbackLoaded = false;
|
|
25
29
|
|
|
26
30
|
export function getSupportedLocales() {
|
|
@@ -96,15 +100,40 @@ export async function loadTranslations(locale) {
|
|
|
96
100
|
return translations;
|
|
97
101
|
}
|
|
98
102
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
103
|
+
// initI18n accepts either a single locale string (legacy) that sets both
|
|
104
|
+
// ui and work locales, or an object { language, uiLanguage, workLanguage }.
|
|
105
|
+
// Resolution rules:
|
|
106
|
+
// - If uiLanguage given, use it for UI; else use language; else detect.
|
|
107
|
+
// - If workLanguage given, use it for work; else use language; else detect.
|
|
108
|
+
export async function initI18n(input = null) {
|
|
109
|
+
let language = null;
|
|
110
|
+
let uiLanguage = null;
|
|
111
|
+
let workLanguage = null;
|
|
112
|
+
|
|
113
|
+
if (input && typeof input === 'object') {
|
|
114
|
+
language = input.language ?? null;
|
|
115
|
+
uiLanguage = input.uiLanguage ?? null;
|
|
116
|
+
workLanguage = input.workLanguage ?? null;
|
|
117
|
+
} else if (typeof input === 'string') {
|
|
118
|
+
language = input;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const baseLocale = (language ? normalizeLocale(language) : null) || detectLocale();
|
|
122
|
+
const uiLocale = (uiLanguage ? normalizeLocale(uiLanguage) : null) || baseLocale;
|
|
123
|
+
const workLocale = (workLanguage ? normalizeLocale(workLanguage) : null) || baseLocale;
|
|
124
|
+
|
|
125
|
+
currentUiLocale = uiLocale;
|
|
126
|
+
currentWorkLocale = workLocale;
|
|
127
|
+
|
|
128
|
+
await loadTranslations(uiLocale);
|
|
129
|
+
if (workLocale !== uiLocale) {
|
|
130
|
+
await loadTranslations(workLocale);
|
|
131
|
+
}
|
|
132
|
+
if (uiLocale !== DEFAULT_LOCALE && workLocale !== DEFAULT_LOCALE) {
|
|
105
133
|
await loadTranslations(DEFAULT_LOCALE);
|
|
106
134
|
}
|
|
107
|
-
|
|
135
|
+
|
|
136
|
+
return { uiLocale, workLocale };
|
|
108
137
|
}
|
|
109
138
|
|
|
110
139
|
function applyParams(text, params) {
|
|
@@ -116,21 +145,57 @@ function applyParams(text, params) {
|
|
|
116
145
|
return out;
|
|
117
146
|
}
|
|
118
147
|
|
|
148
|
+
// t() returns a translated string. By default uses the UI locale.
|
|
149
|
+
// Pass options.locale to override; pass options.track = 'work' to use the
|
|
150
|
+
// work locale (for AI prompts).
|
|
119
151
|
export function t(key, params = {}, options = {}) {
|
|
120
|
-
|
|
152
|
+
let locale;
|
|
153
|
+
if (options.locale) {
|
|
154
|
+
locale = normalizeLocale(options.locale) || currentUiLocale;
|
|
155
|
+
} else if (options.track === 'work') {
|
|
156
|
+
locale = currentWorkLocale;
|
|
157
|
+
} else {
|
|
158
|
+
locale = currentUiLocale;
|
|
159
|
+
}
|
|
121
160
|
const main = localeCache.get(locale) || {};
|
|
122
161
|
const fallback = localeCache.get(DEFAULT_LOCALE) || {};
|
|
123
162
|
const value = main[key] ?? fallback[key] ?? key;
|
|
124
163
|
return applyParams(value, params);
|
|
125
164
|
}
|
|
126
165
|
|
|
166
|
+
// Convenience helper for work-language strings (AI prompts).
|
|
167
|
+
export function tWork(key, params = {}) {
|
|
168
|
+
return t(key, params, { track: 'work' });
|
|
169
|
+
}
|
|
170
|
+
|
|
127
171
|
export function getCurrentLocale() {
|
|
128
|
-
return
|
|
172
|
+
return currentUiLocale;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export function getUiLocale() {
|
|
176
|
+
return currentUiLocale;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export function getWorkLocale() {
|
|
180
|
+
return currentWorkLocale;
|
|
129
181
|
}
|
|
130
182
|
|
|
131
183
|
export function setLocale(locale) {
|
|
132
184
|
const normalized = normalizeLocale(locale);
|
|
133
|
-
if (normalized)
|
|
185
|
+
if (normalized) {
|
|
186
|
+
currentUiLocale = normalized;
|
|
187
|
+
currentWorkLocale = normalized;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
export function setUiLocale(locale) {
|
|
192
|
+
const normalized = normalizeLocale(locale);
|
|
193
|
+
if (normalized) currentUiLocale = normalized;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export function setWorkLocale(locale) {
|
|
197
|
+
const normalized = normalizeLocale(locale);
|
|
198
|
+
if (normalized) currentWorkLocale = normalized;
|
|
134
199
|
}
|
|
135
200
|
|
|
136
201
|
// In-memory per-user locale store (used by the Telegram bot).
|
|
@@ -159,7 +224,7 @@ export function resolveLocaleFromTelegramCtx(ctx) {
|
|
|
159
224
|
if (userOverride) return userOverride;
|
|
160
225
|
const fromTelegram = normalizeLocale(ctx?.from?.language_code);
|
|
161
226
|
if (fromTelegram) return fromTelegram;
|
|
162
|
-
return
|
|
227
|
+
return currentUiLocale;
|
|
163
228
|
}
|
|
164
229
|
|
|
165
230
|
// Pre-load every supported locale (handy for the Telegram bot at startup).
|
package/src/locales/en.lino
CHANGED
|
@@ -91,3 +91,41 @@ en
|
|
|
91
91
|
language.ru "Russian"
|
|
92
92
|
language.zh "Chinese"
|
|
93
93
|
language.hi "Hindi"
|
|
94
|
+
prompt.user.issue_to_solve "Issue to solve: {{issueUrl}}"
|
|
95
|
+
prompt.user.issue_linked_to_pr "Issue to solve: Issue linked to PR #{{prNumber}}"
|
|
96
|
+
prompt.user.prepared_branch "Your prepared branch: {{branchName}}"
|
|
97
|
+
prompt.user.prepared_working_directory "Your prepared working directory: {{tempDir}}"
|
|
98
|
+
prompt.user.prepared_tmp_directory "Your prepared tmp directory for logs and downloads: {{workspaceTmpDir}}"
|
|
99
|
+
prompt.user.prepared_pull_request "Your prepared Pull Request: {{prUrl}}"
|
|
100
|
+
prompt.user.forked_repository "Your forked repository: {{forkedRepo}}"
|
|
101
|
+
prompt.user.original_repository "Original repository (upstream): {{owner}}/{{repo}}"
|
|
102
|
+
prompt.user.fork_actions_url "GitHub Actions on your fork: {{forkActionsUrl}}"
|
|
103
|
+
prompt.user.continue "Continue."
|
|
104
|
+
prompt.user.proceed "Proceed."
|
|
105
|
+
prompt.system.intro 'You are an AI issue solver. When you investigate issues, prefer root-cause analysis. When you communicate, prefer facts you have checked yourself or cite sources that provide evidence, such as quoted code or references to documents or web pages. When you are unsure or working from assumptions, test them yourself or ask clarifying questions.'
|
|
106
|
+
prompt.system.workspace_instructions 'Workspace tmp directory.\n - Use {{workspaceTmpDir}} for all temporary files, logs, and downloads.\n - When saving command output to files, save to {{workspaceTmpDir}}/command-output.log.\n - When downloading CI logs, save to {{workspaceTmpDir}}/ci-logs/.\n - When saving diffs for review, save to {{workspaceTmpDir}}/diffs/.\n - When creating debug files, save to {{workspaceTmpDir}}/debug/.'
|
|
107
|
+
prompt.system.general_guidelines_header 'General guidelines.'
|
|
108
|
+
prompt.system.general_guidelines_body ' - When you execute commands and the output becomes large, save the logs to files for easier review.\n - When running commands, avoid setting a timeout yourself. Let them run as long as needed. The default timeout of 2 minutes is usually enough, and once commands finish, review the logs in the file.\n - When running sudo commands, especially package installations like apt-get, yum, or npm install, run them in the background to avoid timeout issues and permission errors when the process needs to be killed. Use the run_in_background parameter or append & to the command.'
|
|
109
|
+
prompt.system.issue_reporting ' - When you spot errors, bugs, or minor issues during the working session that are unrelated to the main task requirements, create issues to track them when they do not already exist. The issue should include reproducible examples, ideally a minimum reproducible example, workarounds, and suggestions for fixing the issue in code. For issues in the current repository, use gh issue create --repo {{owner}}/{{repo}} --title "Issue title" --body "Issue description". For issues in third-party GitHub repositories used by the working repository, use gh issue create --repo owner/repo --title "Issue title" --body "Issue description". When similar issues may already exist, check first with gh issue list --repo owner/repo --search "keywords" to avoid duplicates. If a similar issue already exists, add a comment with gh issue comment <issue-number> --repo owner/repo --body "Comment text" describing your specific case, including anonymized logs with personal or sensitive data redacted, reproduction steps, a minimum reproducible example when practical, workarounds, and suggestions for a fix.'
|
|
110
|
+
prompt.system.ci_investigation ' - When CI is failing or user reports failures, consider adding a detailed investigation protocol to your todo list with these steps:\n Step 1: List recent runs with timestamps using: gh run list --repo {{owner}}/{{repo}} --branch {{branchName}} --limit 5 --json databaseId,conclusion,createdAt,headSha\n Step 2: Verify runs are after the latest commit by checking timestamps and SHA\n Step 3: For each non-passing run, download logs to preserve them: gh run view {run-id} --repo {{owner}}/{{repo}} --log > ci-logs/{workflow}-{run-id}.log\n Step 4: Read each downloaded log file with the Read tool to understand the actual failures\n Step 5: Report findings with specific errors and line numbers from logs\n This detailed investigation is especially helpful when user mentions CI failures, asks to investigate logs, you see non-passing status, or when finalizing a PR.\n Note: If user says failing but tools show passing, this might indicate stale data - consider downloading fresh logs and checking timestamps to resolve the discrepancy.'
|
|
111
|
+
prompt.system.large_files " - When a code or log file has more than 1500 lines, read it in chunks of 1500 lines."
|
|
112
|
+
prompt.system.complex_problems " - When facing a complex problem, do as much tracing as possible and turn on all verbose modes."
|
|
113
|
+
prompt.system.divide_and_conquer " - When you face something extremely hard, use divide and conquer."
|
|
114
|
+
prompt.system.initial_research_header "Initial research."
|
|
115
|
+
prompt.system.initial_research_body ' - When you start, create a detailed plan for yourself and follow your todo list step by step. Add as many relevant points from these guidelines to the todo list as practical so you can track the work clearly.\n - When the user mentions CI failures or asks to investigate logs, consider adding these todos to track the investigation: (1) list recent CI runs with timestamps, (2) download logs from failed runs to the ci-logs/ directory, (3) analyze error messages and identify the root cause, (4) implement a fix, (5) verify that the fix resolves the specific errors found in the logs.\n - When you read the issue, read all details and comments thoroughly.\n - When you see screenshots or images in issue descriptions, pull request descriptions, comments, or discussions, download the image to a local file first, then use the Read tool to view and analyze it. Before reading downloaded images with the Read tool, verify that the file is a valid image rather than HTML by using a CLI tool such as the file command. When corrupted or non-image files, such as GitHub Not Found pages saved as .png, are read, they can cause Could not process image errors and crash the AI solver process. When the file command shows HTML, text, or ASCII text, the download failed, so do not call Read on that file. Instead: (1) when images are from GitHub issues or PRs, such as URLs containing github.com/user-attachments, retry with: curl -L -H "Authorization: token $(gh auth token)" -o <filename> "<url>" (2) when the retry still fails, skip the image and note that it was unavailable.\n - When you need issue details, use gh issue view https://github.com/{{owner}}/{{repo}}/issues/{{issueNumber}}.\n - When you need related code, use gh search code --owner {{owner}} [keywords].\n - When you need repo context, read files in your working directory.'
|
|
116
|
+
prompt.system.explore_subagent " - When you need to learn something about the codebase structure, patterns, or how things work, use the Task tool with subagent_type=Explore to thoroughly explore the codebase."
|
|
117
|
+
prompt.system.check_sibling_prs " - When you study related work, study the most recent related pull requests."
|
|
118
|
+
prompt.system.initial_research_tail ' - When the issue is not defined clearly enough, write a comment with clarifying questions.\n - When accessing GitHub Gists (especially private ones), use gh gist view command instead of direct URL fetching to ensure proper authentication.\n - When you are fixing a bug, find the actual root cause first and run as many experiments as needed.\n - When you are fixing a bug and the code does not have enough tracing or logs, add them and keep them in the code with the default state switched off.\n - When you need comments on a pull request, note that GitHub has three different comment types with different API endpoints:\n 1. PR review comments (inline code comments): gh api repos/{{owner}}/{{repo}}/pulls/{{prNumber}}/comments --paginate\n 2. PR conversation comments (general discussion): gh api repos/{{owner}}/{{repo}}/issues/{{prNumber}}/comments --paginate\n 3. PR reviews (approve/request changes): gh api repos/{{owner}}/{{repo}}/pulls/{{prNumber}}/reviews --paginate\n Note: The command "gh pr view --json comments" only returns conversation comments and misses review comments.\n - When you need the latest comments on the issue, use gh api repos/{{owner}}/{{repo}}/issues/{{issueNumber}}/comments --paginate.'
|
|
119
|
+
prompt.system.general_purpose_subagent " - When the task is large and requires processing many files or folders, use `general-purpose` sub-agents to delegate work. Each separate file or folder can be delegated to a sub-agent for more efficient processing."
|
|
120
|
+
prompt.system.case_studies " - When working on this issue, create a comprehensive case study in the ./docs/case-studies/issue-{{issueNumber}}/ directory. Download all logs and data related to the issue to the repository. Perform deep case study analysis by searching online for additional facts and data, reconstructing the timeline/sequence of events, identifying root causes of the problem, and proposing possible solutions. Include files like README.md (executive summary, problem statement, timeline, root cause), TECHNICAL_SUMMARY.md (deep technical analysis), ANALYSIS.md (detailed investigation findings), improvements.md (proposed solutions), and supporting logs/data files."
|
|
121
|
+
prompt.system.solution_development 'Solution development and testing.\n - When issue is solvable, first create a test that reproduces the problem, then implement the fix.\n - When implementing features, search for similar existing implementations in the codebase and use them as examples instead of implementing everything from scratch.\n - When coding, commit each atomic step that is useful on its own to the pull request branch so interrupted work remains preserved in the pull request.\n - When you test:\n start from testing of small functions using separate scripts;\n write unit tests with mocks for easy and quick start.\n - When you test integrations, use existing framework.\n - When you test solution draft, include automated checks in pr.\n - When you write or modify tests, consider setting reasonable timeouts at test, suite, and CI job levels so failures surface quickly instead of hanging.\n - When you see repeated test timeout patterns in CI, investigate the root cause rather than increasing timeouts.\n - When the issue is unclear, write a comment on the issue with questions.\n - When you encounter problems that you cannot solve yourself and need human help, write a comment on the pull request asking for help.\n - When you need human help, use gh pr comment {{prNumber}} --body "your message" to comment on existing PR.'
|
|
122
|
+
prompt.system.reproducible_testing "Reproducible testing.\n - When fixing a bug, create a test that reproduces the problem before implementing the fix. When you cannot reproduce the problem, you cannot verify the fix.\n - When encountering logic bugs, write an automated test that fails due to the bug, then implement the fix to make it pass.\n - When encountering UI bugs, capture a screenshot showing the problem state, then create a visual regression test or manual verification screenshot after the fix.\n - When creating tests, prefer minimum reproducible examples, meaning the simplest test case that demonstrates the issue.\n - When submitting a fix, include in the PR description: (1) how to reproduce the issue, (2) the automated test that verifies the fix, (3) before/after screenshots for UI issues.\n - When a bug fix does not have a reproducing test, treat the fix as incomplete because regressions can occur later without notice."
|
|
123
|
+
prompt.system.preparing_pr 'Preparing pull request.\n - When you code, follow contributing guidelines.\n - When you commit, write clear message.\n - When you need examples of style, use gh pr list --repo {{owner}}/{{repo}} --state merged --search [keywords].\n - When you open pr, describe solution draft and include tests.\n - When there is a package with version and GitHub Actions workflows for automatic release, update the version (or other necessary release trigger) in your pull request to prepare for next release.\n - When you update existing pr {{prNumber}}, use gh pr edit to modify title and description.\n - When you are about to commit or push code, run local CI checks first if they are available in contributing guidelines (like ruff check, mypy, eslint, etc.) to catch errors before pushing.\n - When you finalize the pull request:\n follow style from merged prs for code, title, and description,\n check that no uncommitted changes corresponding to the original requirements are left behind,\n check that the default branch is merged into the pull request branch,\n check that all CI checks are passing if they exist before you finish,\n check for latest comments on the issue and pull request to ensure no recent feedback was missed,\n double-check that all changes in the pull request address the original requirements of the issue,\n check for newly introduced bugs in the pull request by carefully reading gh pr diff,\n check that no previously existing features were removed without an explicit request in the issue description, issue comments, or pull request comments.\n - When you finish implementation, use gh pr ready {{prNumber}}.'
|
|
124
|
+
prompt.system.workflow "Workflow and collaboration.\n - When you check branch, verify with git branch --show-current.\n - When you push, push only to branch {{branchName}}.\n - When you finish, create a pull request from branch {{branchName}}. (Note: PR {{prNumber}} already exists, update it instead)\n - When you organize workflow, use pull requests instead of direct merges to default branch (main or master).\n - When you manage commits, preserve commit history for later analysis.\n - When you contribute, keep repository history forward-moving with regular commits, pushes, and reverts if needed.\n - When you face conflict that you cannot resolve yourself, ask for help.\n - When you collaborate, respect branch protections by working only on {{branchName}}.\n - When you mention a result, include the pull request URL or comment URL.\n - When you need to create pr, remember pr {{prNumber}} already exists for this branch."
|
|
125
|
+
prompt.system.self_review_header "Self review.\n - When you check your solution draft, run all tests locally.\n - When you check your solution draft, verify git status shows a clean working tree with no uncommitted changes.\n - When you compare with repo style, use gh pr diff [number].\n - When you finalize, confirm code, tests, and description are consistent."
|
|
126
|
+
prompt.system.ensure_all_requirements " - When no explicit feedback or requirements are provided, ensure all changes are correct, consistent, validated, tested, logged, and aligned with all discussed requirements by checking the issue description and all comments on the issue and pull request. Check that all CI or CD checks are passing."
|
|
127
|
+
prompt.system.github_cli_patterns 'GitHub CLI command patterns.\n - When fetching lists from GitHub API, use the --paginate flag to ensure all results are returned (GitHub returns max 30 per page by default).\n - When listing PR review comments (inline code comments), use gh api repos/OWNER/REPO/pulls/NUMBER/comments --paginate.\n - When listing PR conversation comments, use gh api repos/OWNER/REPO/issues/NUMBER/comments --paginate.\n - When listing PR reviews, use gh api repos/OWNER/REPO/pulls/NUMBER/reviews --paginate.\n - When listing issue comments, use gh api repos/OWNER/REPO/issues/NUMBER/comments --paginate.\n - When adding PR comment, use gh pr comment NUMBER --body "text" --repo OWNER/REPO.\n - When adding issue comment, use gh issue comment NUMBER --body "text" --repo OWNER/REPO.\n - When viewing PR details, use gh pr view NUMBER --repo OWNER/REPO.\n - When filtering with jq, use gh api repos/{{owner}}/{{repo}}/pulls/{{prNumber}}/comments --paginate --jq reverse-then-slice-first-five.'
|
|
128
|
+
prompt.system.playwright_mcp "Playwright MCP usage (browser automation via mcp__playwright__* tools).\n - When you develop frontend web applications (HTML, CSS, JavaScript, React, Vue, Angular, etc.), use Playwright MCP tools to test the UI in a real browser.\n - When WebFetch tool fails to retrieve expected content (e.g., returns empty content, JavaScript-rendered pages, or login-protected pages), use Playwright MCP tools (browser_navigate, browser_snapshot) as a fallback for web browsing.\n - When WebSearch tool fails or returns insufficient results, use Playwright MCP tools (browser_navigate, browser_snapshot) as a fallback for internet search.\n - When you need to interact with dynamic web pages that require JavaScript execution, use Playwright MCP tools.\n - When you need to visually verify how a web page looks or take screenshots, use browser_take_screenshot from Playwright MCP.\n - When you need to fill forms, click buttons, or perform user interactions on web pages, use Playwright MCP tools (browser_click, browser_type, browser_fill_form).\n - When you need to test responsive design or different viewport sizes, use browser_resize from Playwright MCP.\n - When you finish using the browser, close it with browser_close to free resources.\n - When reproducing UI bugs, use browser_take_screenshot to capture the problem state before implementing any fix.\n - When fixing UI bugs, take before/after screenshots to provide visual evidence of the fix for human verification.\n - When creating UI tests, save baseline screenshots to the repository for visual regression testing.\n - When verifying UI fixes, compare screenshots to ensure the fix does not introduce unintended visual changes."
|
|
129
|
+
prompt.system.plan_subagent 'Plan sub-agent usage.\n - When you start working on a task, consider using the Plan sub-agent to research the codebase and create an implementation plan.\n - When using the Plan sub-agent, you can add it as the first item in your todo list.\n - When you delegate planning, use the Task tool with subagent_type="Plan" before starting implementation work.'
|
|
130
|
+
prompt.system.visual_ui 'Visual UI work and screenshots.\n - When you work on visual UI changes (frontend, CSS, HTML, design), include a render or screenshot of the final result in the pull request description.\n - When you need to show visual results, take a screenshot and save it to the repository (e.g., in a docs/screenshots/ or assets/ folder).\n - When you save screenshots to the repository, use permanent links in the pull request description markdown (e.g., https://github.com/{{screenshotRepoPath}}/blob/{{branchName}}/docs/screenshots/result.png?raw=true).\n - When uploading images, commit them to the branch first, then reference them using the GitHub blob URL format with ?raw=true suffix (works for both public and private repositories).\n - When the visual result is important for review, mention it explicitly in the pull request description with the embedded image.\n - When fixing UI bugs, capture both the "before" (problem) and "after" (fixed) screenshots as evidence for human verification.\n - When reporting UI bugs, include a screenshot of the problem state to enable visual verification of the fix.\n - When the fix is visual, include side-by-side or sequential comparison of before/after states in the PR description.\n - When possible, create automated visual regression tests to prevent the UI bug from recurring.'
|
|
131
|
+
prompt.system.ci_examples "CI investigation with workspace tmp directory.\n - When downloading CI run logs:\n gh run view RUN_ID --repo {{owner}}/{{repo}} --log > {{workspaceTmpDir}}/ci-logs/run-RUN_ID.log\n - When downloading failed job logs:\n gh run view RUN_ID --repo {{owner}}/{{repo}} --log-failed > {{workspaceTmpDir}}/ci-logs/run-RUN_ID-failed.log\n - When listing CI runs with details:\n gh run list --repo {{owner}}/{{repo}} --branch {{branchName}} --limit 5 --json databaseId,conclusion,createdAt,headSha > {{workspaceTmpDir}}/ci-logs/recent-runs.json\n - When saving PR diff for review:\n gh pr diff {{prNumber}} --repo {{owner}}/{{repo}} > {{workspaceTmpDir}}/diffs/pr-{{prNumber}}.diff\n - When saving command output with stderr:\n npm test 2>&1 | tee {{workspaceTmpDir}}/test-output.log\n - When investigating issue details:\n gh issue view {{issueNumber}} --repo {{owner}}/{{repo}} --json body,comments > {{workspaceTmpDir}}/issue-{{issueNumber}}.json"
|
package/src/locales/hi.lino
CHANGED
|
@@ -91,3 +91,41 @@ hi
|
|
|
91
91
|
language.ru "ą¤°ą„ą¤øą„"
|
|
92
92
|
language.zh "ą¤ą„नą„"
|
|
93
93
|
language.hi "ą¤¹ą¤æą¤Øą„ą¤¦ą„"
|
|
94
|
+
prompt.user.issue_to_solve "हल ą¤ą¤°ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤®ą„ą¤¦ą„दा: {{issueUrl}}"
|
|
95
|
+
prompt.user.issue_linked_to_pr "हल ą¤ą¤°ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤®ą„ą¤¦ą„दा: PR #{{prNumber}} ą¤øą„ ą¤ą„औ़ा ą¤®ą„ą¤¦ą„दा"
|
|
96
|
+
prompt.user.prepared_branch "ą¤ą¤Ŗą¤ą„ ą¤¤ą„ą¤Æą¤¾ą¤° ą¤¬ą„ą¤°ą¤¾ą¤ą¤: {{branchName}}"
|
|
97
|
+
prompt.user.prepared_working_directory "ą¤ą¤Ŗą¤ą„ ą¤¤ą„ą¤Æą¤¾ą¤° ą¤ą¤¾ą¤°ą„य ą¤Øą¤æą¤°ą„ą¤¦ą„ą¤¶ą¤æą¤ą¤¾: {{tempDir}}"
|
|
98
|
+
prompt.user.prepared_tmp_directory "ą¤²ą„ą¤ ą¤ą¤° ą¤”ą¤¾ą¤ą¤Øą¤²ą„औ ą¤ą„ ą¤²ą¤æą¤ ą¤ą¤Ŗą¤ą„ ą¤¤ą„ą¤Æą¤¾ą¤° ą¤
ą¤øą„ą¤„ą¤¾ą¤Æą„ ą¤Øą¤æą¤°ą„ą¤¦ą„ą¤¶ą¤æą¤ą¤¾: {{workspaceTmpDir}}"
|
|
99
|
+
prompt.user.prepared_pull_request "ą¤ą¤Ŗą¤ą¤¾ ą¤¤ą„ą¤Æą¤¾ą¤° Pull Request: {{prUrl}}"
|
|
100
|
+
prompt.user.forked_repository "ą¤ą¤Ŗą¤ą„ forked repository: {{forkedRepo}}"
|
|
101
|
+
prompt.user.original_repository "ą¤®ą„ą¤² repository (upstream): {{owner}}/{{repo}}"
|
|
102
|
+
prompt.user.fork_actions_url "ą¤ą¤Ŗą¤ą„ fork पर GitHub Actions: {{forkActionsUrl}}"
|
|
103
|
+
prompt.user.continue "ą¤ą¤¾ą¤°ą„ ą¤°ą¤ą„ą¤ą„¤"
|
|
104
|
+
prompt.user.proceed "ą¤ą¤ą„ ą¤¬ą¤¢ą¤¼ą„ą¤ą„¤"
|
|
105
|
+
prompt.system.intro 'ą¤ą¤Ŗ ą¤ą¤ AI ą¤®ą„ą¤¦ą„दा हल ą¤ą¤°ą¤Øą„ ą¤µą¤¾ą¤²ą„ ą¤¹ą„ą¤ą„¤ ą¤ą¤¬ ą¤ą¤Ŗ ą¤®ą„ą¤¦ą„ą¤¦ą„ą¤ ą¤ą„ ą¤ą¤¾ą¤ą¤ ą¤ą¤°ą„ą¤, ą¤¤ą„ ą¤®ą„ą¤² ą¤ą¤¾ą¤°ą¤£ ą¤µą¤æą¤¶ą„ą¤²ą„षण ą¤ą„ ą¤Ŗą„ą¤°ą¤¾ą¤„ą¤®ą¤æą¤ą¤¤ą¤¾ ą¤¦ą„ą¤ą„¤ ą¤ą¤¬ ą¤ą¤Ŗ ą¤øą¤ą¤µą¤¾ą¤¦ ą¤ą¤°ą„ą¤, ą¤¤ą„ ą¤ą¤Ø ą¤¤ą¤„ą„ą¤Æą„ą¤ ą¤ą„ ą¤Ŗą„ą¤°ą¤¾ą¤„ą¤®ą¤æą¤ą¤¤ą¤¾ ą¤¦ą„ą¤ ą¤ą¤æą¤Øą„ą¤¹ą„ą¤ ą¤ą¤Ŗą¤Øą„ ą¤øą„ą¤µą¤Æą¤ ą¤øą¤¤ą„ą¤Æą¤¾ą¤Ŗą¤æą¤¤ ą¤ą¤æą¤Æą¤¾ हą„, या ą¤ą¤øą„ ą¤øą„ą¤°ą„ą¤¤ą„ą¤ ą¤ą¤¾ ą¤ą¤²ą„ą¤²ą„ą¤ ą¤ą¤°ą„ą¤ ą¤ą„ ą¤Ŗą„ą¤°ą¤®ą¤¾ą¤£ ą¤Ŗą„ą¤°ą¤¦ą¤¾ą¤Ø ą¤ą¤°ą¤¤ą„ ą¤¹ą„ą¤āą¤ą„ą¤øą„ ą¤ą¤¦ą„ą¤§ą„ą¤¤ ą¤ą„औ, या ą¤¦ą¤øą„ą¤¤ą¤¾ą¤µą„ą¤ą¤¼ą„ą¤/ą¤µą„ą¤¬ ą¤Ŗą„ą¤·ą„ą¤ ą„ą¤ ą¤ą„ ą¤øą¤ą¤¦ą¤°ą„ą¤ą„¤ ą¤ą¤¬ ą¤ą¤Ŗ ą¤
ą¤Øą¤æą¤¶ą„ą¤ą¤æą¤¤ ą¤¹ą„ą¤ या ą¤
ą¤Øą„ą¤®ą¤¾ą¤Øą„ठपर ą¤ą¤¾ą¤® ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, ą¤¤ą„ ą¤ą¤Øą„ą¤¹ą„ą¤ ą¤øą„ą¤µą¤Æą¤ ą¤Ŗą¤°ą¤ą„ठया ą¤øą„ą¤Ŗą¤·ą„ą¤ą„ą¤ą¤°ą¤£ ą¤Ŗą„ą¤°ą¤¶ą„न ą¤Ŗą„ą¤ą„ą¤ą„¤'
|
|
106
|
+
prompt.system.workspace_instructions 'ą¤ą¤¾ą¤°ą„ą¤Æą¤ą„ą¤·ą„ą¤¤ą„र ą¤
ą¤øą„ą¤„ą¤¾ą¤Æą„ ą¤Øą¤æą¤°ą„ą¤¦ą„ą¤¶ą¤æą¤ą¤¾ą„¤\n - ą¤øą¤ą„ ą¤
ą¤øą„ą¤„ą¤¾ą¤Æą„ ą¤«ą¤¼ą¤¾ą¤ą¤²ą„ą¤, ą¤²ą„ą¤ ą¤ą¤° ą¤”ą¤¾ą¤ą¤Øą¤²ą„औ ą¤ą„ लिठ{{workspaceTmpDir}} ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤®ą¤¾ą¤ą¤” ą¤ą¤ą¤ą¤Ŗą„ą¤ ą¤ą„ ą¤«ą¤¼ą¤¾ą¤ą¤²ą„ą¤ ą¤®ą„ą¤ ą¤øą¤¹ą„ą¤ą¤¤ą„ समय {{workspaceTmpDir}}/command-output.log ą¤®ą„ą¤ ą¤øą¤¹ą„ą¤ą„ą¤ą„¤\n - CI ą¤²ą„ą¤ ą¤”ą¤¾ą¤ą¤Øą¤²ą„औ ą¤ą¤°ą¤¤ą„ समय {{workspaceTmpDir}}/ci-logs/ ą¤®ą„ą¤ ą¤øą¤¹ą„ą¤ą„ą¤ą„¤\n - ą¤øą¤®ą„ą¤ą„षा ą¤ą„ लिठdiff ą¤øą¤¹ą„ą¤ą¤¤ą„ समय {{workspaceTmpDir}}/diffs/ ą¤®ą„ą¤ ą¤øą¤¹ą„ą¤ą„ą¤ą„¤\n - ą¤”ą¤æą¤¬ą¤ ą¤«ą¤¼ą¤¾ą¤ą¤²ą„ą¤ ą¤¬ą¤Øą¤¾ą¤¤ą„ ą¤øą¤®ą¤Æ {{workspaceTmpDir}}/debug/ ą¤®ą„ą¤ ą¤øą¤¹ą„ą¤ą„ą¤ą„¤'
|
|
107
|
+
prompt.system.general_guidelines_header 'ą¤øą¤¾ą¤®ą¤¾ą¤Øą„ą¤Æ ą¤¦ą¤æą¤¶ą¤¾ą¤Øą¤æą¤°ą„ą¤¦ą„ą¤¶ą„¤'
|
|
108
|
+
prompt.system.general_guidelines_body ' - ą¤ą¤¬ ą¤ą¤Ŗ ą¤ą¤®ą¤¾ą¤ą¤” ą¤ą¤²ą¤¾ą¤¤ą„ ą¤¹ą„ą¤ ą¤ą¤° ą¤ą¤ą¤ą¤Ŗą„ठबऔ़ा ą¤¹ą„ ą¤ą¤¾ą¤¤ą¤¾ हą„, ą¤¤ą„ ą¤ą¤øą¤¾ą¤Ø ą¤øą¤®ą„ą¤ą„षा ą¤ą„ ą¤²ą¤æą¤ ą¤²ą„ą¤ ą¤ą„ ą¤«ą¤¼ą¤¾ą¤ą¤²ą„ą¤ ą¤®ą„ą¤ ą¤øą¤¹ą„ą¤ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ ą¤ą¤®ą¤¾ą¤ą¤” ą¤ą¤²ą¤¾ą¤¤ą„ ą¤¹ą„ą¤, ą¤¤ą„ ą¤øą„ą¤µą¤Æą¤ ą¤ą¤¾ą¤ą¤®ą¤ą¤ą¤ ą¤øą„ą¤ न ą¤ą¤°ą„ą¤ą„¤ ą¤ą¤Øą„ą¤¹ą„ą¤ ą¤ą¤æą¤¤ą¤Øą¤¾ ą¤ą¤µą¤¶ą„ą¤Æą¤ ą¤¹ą„ ą¤ą¤¤ą¤Øą¤¾ ą¤ą¤²ą¤Øą„ ą¤¦ą„ą¤ą„¤ ą¤”ą¤æą¤«ą¤¼ą„ą¤²ą„ठ2 ą¤®ą¤æą¤Øą¤ ą¤ą¤¾ ą¤ą¤¾ą¤ą¤®ą¤ą¤ą¤ ą¤ą¤®ą¤¤ą„र पर ą¤Ŗą¤°ą„ą¤Æą¤¾ą¤Ŗą„त ą¤¹ą„ą¤¤ą¤¾ हą„, ą¤ą¤° ą¤ą¤®ą¤¾ą¤ą¤” ą¤øą¤®ą¤¾ą¤Ŗą„ą¤¤ ą¤¹ą„ą¤Øą„ ą¤ą„ बाद ą¤«ą¤¼ą¤¾ą¤ą¤² ą¤®ą„ą¤ ą¤²ą„ą¤ ą¤ą„ ą¤øą¤®ą„ą¤ą„षा ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ sudo ą¤ą¤®ą¤¾ą¤ą¤” ą¤ą¤²ą¤¾ą¤¤ą„ ą¤¹ą„ą¤, ą¤µą¤æą¤¶ą„ą¤· ą¤°ą„ą¤Ŗ ą¤øą„ apt-get, yum, या npm install ą¤ą„ą¤øą„ ą¤Ŗą„ą¤ą„ą¤ ą¤øą„ą¤„ापना, ą¤¤ą„ ą¤ą¤¾ą¤ą¤®ą¤ą¤ą¤ ą¤ą¤° ą¤Ŗą„ą¤°ą„ą¤øą„ą¤ø ą¤ą„ ą¤®ą¤¾ą¤°ą¤Øą„ ą¤Ŗą¤° ą¤
ą¤Øą„ą¤®ą¤¤ą¤æ ą¤¤ą„ą¤°ą„ą¤ą¤æą¤Æą„ą¤ ą¤øą„ ą¤¬ą¤ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤ą¤Øą„ą¤¹ą„ą¤ ą¤Ŗą„ą¤·ą„ą¤ ą¤ą„मि ą¤®ą„ą¤ ą¤ą¤²ą¤¾ą¤ą¤ą„¤ run_in_background ą¤Ŗą„ą¤°ą¤¾ą¤®ą„ą¤ą¤° ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ठया ą¤ą¤®ą¤¾ą¤ą¤” ą¤ą„ ą¤
ą¤ą¤¤ ą¤®ą„ą¤ & ą¤ą„ą¤”ą¤¼ą„ą¤ą„¤'
|
|
109
|
+
prompt.system.issue_reporting ' - ą¤ą¤¬ ą¤ą¤Ŗ ą¤ą¤¾ą¤°ą„य ą¤øą¤¤ą„ą¤° ą¤ą„ ą¤¦ą„ą¤°ą¤¾ą¤Ø ą¤®ą„ą¤ą„य ą¤ą¤¾ą¤°ą„य ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ą¤ą¤ ą¤øą„ ą¤
ą¤øą¤ą¤¬ą¤ą¤§ą¤æą¤¤ ą¤¤ą„ą¤°ą„ą¤ą¤æą¤Æą¤¾ą¤, बठया ą¤®ą¤¾ą¤®ą„ą¤²ą„ ą¤øą¤®ą¤øą„ą¤Æą¤¾ą¤ą¤ ą¤¦ą„ą¤ą„ą¤, ą¤¤ą„ ą¤ą¤Øą„ą¤¹ą„ą¤ ą¤ą„ą¤°ą„ą¤ ą¤ą¤°ą¤Øą„ ą¤ą„ लिठissue ą¤¬ą¤Øą¤¾ą¤ą¤ यदि ą¤µą„ ą¤Ŗą¤¹ą¤²ą„ ą¤øą„ ą¤®ą„ą¤ą„द ą¤Øą¤¹ą„ą¤ ą¤¹ą„ą¤ą„¤ Issue ą¤®ą„ą¤ ą¤Ŗą„ą¤Øą¤°ą„ą¤¤ą„ą¤Ŗą¤¾ą¤¦ą¤Ø ą¤Æą„ą¤ą„य ą¤ą¤¦ą¤¾ą¤¹ą¤°ą¤£, ą¤ą¤¦ą¤°ą„श ą¤°ą„ą¤Ŗ ą¤øą„ ą¤Øą„ą¤Æą„नतम ą¤Ŗą„ą¤Øą¤°ą„ą¤¤ą„ą¤Ŗą¤¾ą¤¦ą¤Ø ą¤Æą„ą¤ą„य ą¤ą¤¦ą¤¾ą¤¹ą¤°ą¤£, समाधान, ą¤ą¤° ą¤ą„औ ą¤®ą„ą¤ ą¤«ą¤¼ą¤æą¤ą„स ą¤ą„ ą¤øą„ą¤ą¤¾ą¤µ शामिल ą¤¹ą„ą¤Øą„ ą¤ą¤¾ą¤¹ą¤æą¤ą„¤ ą¤µą¤°ą„ą¤¤ą¤®ą¤¾ą¤Ø repository ą¤®ą„ą¤ issue ą¤ą„ लिą¤, gh issue create --repo {{owner}}/{{repo}} --title "Issue title" --body "Issue description" ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤ ą¤¤ą„ą¤¤ą„य-ą¤Ŗą¤ą„ष GitHub repository ą¤®ą„ą¤ issue ą¤ą„ लिą¤, gh issue create --repo owner/repo --title "Issue title" --body "Issue description" ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤ ą¤ą¤¬ समान issue ą¤Ŗą¤¹ą¤²ą„ ą¤øą„ ą¤®ą„ą¤ą„द ą¤¹ą„ ą¤øą¤ą¤¤ą„ हą„, ą¤Ŗą¤¹ą¤²ą„ gh issue list --repo owner/repo --search "keywords" ą¤øą„ ą¤ą¤¾ą¤ą¤ ą¤ą¤°ą„ą¤ ą¤¤ą¤¾ą¤ą¤æ ą¤”ą„ą¤Ŗą„ą¤²ą¤æą¤ą„ą¤ ą¤øą„ ą¤¬ą¤ą¤¾ ą¤ą¤¾ ą¤øą¤ą„ą„¤ यदि समान issue ą¤Ŗą¤¹ą¤²ą„ ą¤øą„ ą¤®ą„ą¤ą„द हą„, gh issue comment <issue-number> --repo owner/repo --body "Comment text" ą¤øą„ ą¤
ą¤Ŗą¤Øą„ ą¤µą¤æą¤¶ą¤æą¤·ą„ą¤ ą¤®ą¤¾ą¤®ą¤²ą„ ą¤ą¤¾ ą¤µą¤°ą„ą¤£ą¤Ø ą¤ą¤°ą¤¤ą„ ą¤¹ą„ą¤ ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą„ ą¤ą„ą¤”ą¤¼ą„ą¤, ą¤ą¤æą¤øą¤®ą„ą¤ ą¤µą„ą¤Æą¤ą„ą¤¤ą¤æą¤ą¤¤/ą¤øą¤ą¤µą„ą¤¦ą¤Øą¤¶ą„ą¤² ą¤”ą„ą¤ą¤¾ ą¤¹ą¤ą¤¾ą¤ ą¤ą¤ ą¤
ą¤Øą¤¾ą¤®ą„ ą¤²ą„ą¤, ą¤Ŗą„ą¤Øą¤°ą„ą¤¤ą„ą¤Ŗą¤¾ą¤¦ą¤Ø ą¤ą„ ą¤ą¤°ą¤£, ą¤Æą¤„ą¤¾ą¤øą¤ą¤ą¤µ ą¤Øą„ą¤Æą„नतम ą¤Ŗą„ą¤Øą¤°ą„ą¤¤ą„ą¤Ŗą¤¾ą¤¦ą¤Ø ą¤Æą„ą¤ą„य ą¤ą¤¦ą¤¾ą¤¹ą¤°ą¤£, समाधान, ą¤ą¤° ą¤«ą¤¼ą¤æą¤ą„स ą¤ą„ ą¤øą„ą¤ą¤¾ą¤µ शामिल ą¤¹ą„ą¤ą„¤'
|
|
110
|
+
prompt.system.ci_investigation ' - ą¤ą¤¬ CI विफल ą¤¹ą„ ą¤°ą¤¹ą¤¾ ą¤¹ą„ ą¤Æą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ą¤ą¤°ą„ता ą¤µą¤æą¤«ą¤²ą¤¤ą¤¾ą¤ą¤ ą¤ą„ ą¤øą„ą¤ą¤Øą¤¾ दą„, ą¤¤ą„ ą¤
ą¤Ŗą¤Øą„ todo ą¤øą„ą¤ą„ ą¤®ą„ą¤ ą¤µą¤æą¤øą„ą¤¤ą„त ą¤ą¤¾ą¤ą¤ ą¤Ŗą„ą¤°ą„ą¤ą„ą¤ą„ल ą¤ą„ą¤”ą¤¼ą¤Øą„ ą¤Ŗą¤° ą¤µą¤æą¤ą¤¾ą¤° ą¤ą¤°ą„ą¤:\n ą¤ą¤°ą¤£ 1: समय-ą¤ą¤æą¤¹ą„ą¤Øą„ą¤ ą¤ą„ साऄ हाल ą¤ą„ रन ą¤øą„ą¤ą„ą¤¬ą¤¦ą„ą¤§ ą¤ą¤°ą„ą¤: gh run list --repo {{owner}}/{{repo}} --branch {{branchName}} --limit 5 --json databaseId,conclusion,createdAt,headSha\n ą¤ą¤°ą¤£ 2: समय-ą¤ą¤æą¤¹ą„ą¤Øą„ą¤ ą¤ą¤° SHA ą¤ą„ ą¤ą¤¾ą¤ą¤ ą¤ą¤°ą¤ą„ ą¤øą¤¤ą„ą¤Æą¤¾ą¤Ŗą¤æą¤¤ ą¤ą¤°ą„ą¤ ą¤ą¤æ रन ą¤Øą¤µą„ą¤Øą¤¤ą¤® ą¤ą¤®ą¤æą¤ ą¤ą„ बाद ą¤¹ą„ą¤\n ą¤ą¤°ą¤£ 3: ą¤Ŗą„ą¤°ą¤¤ą„ą¤Æą„ą¤ ą¤ą„र-ą¤ą¤¤ą„ą¤¤ą„ą¤°ą„ण रन ą¤ą„ लिą¤, ą¤²ą„ą¤ ą¤”ą¤¾ą¤ą¤Øą¤²ą„औ ą¤ą¤°ą„ą¤: gh run view {run-id} --repo {{owner}}/{{repo}} --log > ci-logs/{workflow}-{run-id}.log\n ą¤ą¤°ą¤£ 4: ą¤µą¤¾ą¤øą„ą¤¤ą¤µą¤æą¤ ą¤µą¤æą¤«ą¤²ą¤¤ą¤¾ą¤ą¤ ą¤ą„ ą¤øą¤®ą¤ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤Ŗą„ą¤°ą¤¤ą„ą¤Æą„ą¤ ą¤”ą¤¾ą¤ą¤Øą¤²ą„औ ą¤ą¤æą¤ ą¤ą¤ ą¤²ą„ą¤ ą¤«ą¤¼ą¤¾ą¤ą¤² ą¤ą„ Read ą¤ą„ल ą¤øą„ ą¤Ŗą¤¢ą¤¼ą„ą¤\n ą¤ą¤°ą¤£ 5: ą¤²ą„ą¤ ą¤øą„ ą¤µą¤æą¤¶ą¤æą¤·ą„ą¤ ą¤¤ą„ą¤°ą„ą¤ą¤æą¤Æą„ą¤ ą¤ą¤° ą¤²ą¤¾ą¤ą¤Ø ą¤Øą¤ą¤¬ą¤°ą„ą¤ ą¤ą„ साऄ ą¤Øą¤æą¤·ą„ą¤ą¤°ą„ष ą¤°ą¤æą¤Ŗą„ą¤°ą„ą¤ ą¤ą¤°ą„ą¤\n यह ą¤µą¤æą¤øą„ą¤¤ą„त ą¤ą¤¾ą¤ą¤ ą¤µą¤æą¤¶ą„ą¤· ą¤°ą„ą¤Ŗ ą¤øą„ ą¤¤ą¤¬ ą¤ą¤Ŗą¤Æą„ą¤ą„ ą¤¹ą„ ą¤ą¤¬ ą¤ą¤Ŗą¤Æą„ą¤ą¤ą¤°ą„ता CI ą¤µą¤æą¤«ą¤²ą¤¤ą¤¾ą¤ą¤ ą¤ą¤¾ ą¤ą¤²ą„ą¤²ą„ą¤ ą¤ą¤°ą„, ą¤²ą„ą¤ ą¤ą¤¾ą¤ą¤ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤ą¤¹ą„, ą¤ą¤Ŗ ą¤ą„र-ą¤ą¤¤ą„ą¤¤ą„ą¤°ą„ण ą¤øą„ą¤„िति ą¤¦ą„ą¤ą„ą¤, या PR ą¤ą„ ą¤
ą¤ą¤¤ą¤æą¤® ą¤°ą„ą¤Ŗ ą¤¦ą„ą¤ą„¤\n ą¤ą¤æą¤Ŗą„पणą„: यदि ą¤ą¤Ŗą¤Æą„ą¤ą¤ą¤°ą„ता "विफल" ą¤ą¤¹ą„ ą¤²ą„ą¤ą¤æą¤Ø ą¤ą¤Ŗą¤ą¤°ą¤£ "ą¤ą¤¤ą„ą¤¤ą„ą¤°ą„ण" ą¤¦ą¤æą¤ą¤¾ą¤ą¤, ą¤¤ą„ ą¤Æą¤¹ ą¤Ŗą„ą¤°ą¤¾ą¤Øą„ ą¤”ą„ą¤ą¤¾ ą¤ą¤¾ ą¤øą¤ą¤ą„त ą¤¹ą„ ą¤øą¤ą¤¤ą¤¾ हą„āą¤µą¤æą¤øą¤ą¤ą¤¤ą¤æ ą¤ą„ हल ą¤ą¤°ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤¤ą¤¾ą¤ą¤¼ą¤¾ ą¤²ą„ą¤ ą¤”ą¤¾ą¤ą¤Øą¤²ą„औ ą¤ą¤°ą„ą¤ ą¤ą¤° समय-ą¤ą¤æą¤¹ą„न ą¤ą¤¾ą¤ą¤ą„ą¤ą„¤'
|
|
111
|
+
prompt.system.large_files " - ą¤ą¤¬ ą¤ą¤æą¤øą„ ą¤ą„औ या ą¤²ą„ą¤ ą¤«ą¤¼ą¤¾ą¤ą¤² ą¤®ą„ą¤ 1500 ą¤øą„ ą¤
ą¤§ą¤æą¤ ą¤Ŗą¤ą¤ą„ą¤¤ą¤æą¤Æą¤¾ą¤ ą¤¹ą„ą¤, ą¤¤ą„ ą¤ą¤øą„ 1500 ą¤Ŗą¤ą¤ą„ą¤¤ą¤æą¤Æą„ą¤ ą¤ą„ ą¤ą„ą¤ą¤”ą¤¼ą„ą¤ ą¤®ą„ą¤ ą¤Ŗą¤¢ą¤¼ą„ą¤ą„¤"
|
|
112
|
+
prompt.system.complex_problems " - ą¤ą¤¬ ą¤ą¤æą¤øą„ ą¤ą¤ą¤æą¤² ą¤øą¤®ą¤øą„ą¤Æą¤¾ ą¤ą¤¾ सामना हą„, ą¤¤ą„ ą¤ą¤æą¤¤ą¤Øą„ ą¤øą¤ą¤ą¤µ ą¤¹ą„ ą¤ą¤¤ą¤Øą„ ą¤ą„ą¤°ą„ą¤øą¤æą¤ą¤ ą¤ą¤°ą„ą¤ ą¤ą¤° ą¤øą¤ą„ ą¤µą¤æą¤øą„ą¤¤ą„त ą¤®ą„ą¤” ą¤ą¤¾ą¤²ą„ ą¤ą¤°ą„ą¤ą„¤"
|
|
113
|
+
prompt.system.divide_and_conquer " - ą¤ą¤¬ ą¤ą„ठą¤
ą¤¤ą„ą¤Æą¤ą¤¤ ą¤ą¤ िन ą¤ą¤¾ सामना हą„, ą¤¤ą„ ą¤µą¤æą¤ą¤¾ą¤ą¤Ø-ą¤ą¤°-ą¤µą¤æą¤ą¤Æ ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤"
|
|
114
|
+
prompt.system.initial_research_header "ą¤Ŗą„ą¤°ą¤¾ą¤°ą¤ą¤ą¤æą¤ ą¤¶ą„ą¤§ą„¤"
|
|
115
|
+
prompt.system.initial_research_body ' - ą¤ą¤¬ ą¤ą¤Ŗ ą¤¶ą„ą¤°ą„ ą¤ą¤°ą„ą¤, ą¤øą„ą¤µą¤Æą¤ ą¤ą„ ą¤²ą¤æą¤ ą¤ą¤ ą¤µą¤æą¤øą„ą¤¤ą„त ą¤Æą„ą¤ą¤Øą¤¾ ą¤¬ą¤Øą¤¾ą¤ą¤ ą¤ą¤° ą¤
ą¤Ŗą¤Øą„ todo ą¤øą„ą¤ą„ ą¤ą¤¾ ą¤ą¤°ą¤£-दर-ą¤ą¤°ą¤£ पालन ą¤ą¤°ą„ą¤ą„¤ ą¤ą¤¾ą¤°ą„य ą¤ą„ ą¤øą„ą¤Ŗą¤·ą„ą¤ ą¤°ą„ą¤Ŗ ą¤øą„ ą¤ą„ą¤°ą„ą¤ ą¤ą¤°ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤ą¤Ø ą¤¦ą¤æą¤¶ą¤¾ą¤Øą¤æą¤°ą„ą¤¦ą„ą¤¶ą„ą¤ ą¤ą„ ą¤Æą¤„ą¤¾ą¤øą¤ą¤ą¤µ ą¤
ą¤§ą¤æą¤ ą¤Ŗą„ą¤°ą¤¾ą¤øą¤ą¤ą¤æą¤ ą¤¬ą¤æą¤ą¤¦ą„ą¤ą¤ ą¤ą„ todo ą¤øą„ą¤ą„ ą¤®ą„ą¤ ą¤ą„ą¤”ą¤¼ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗą¤Æą„ą¤ą¤ą¤°ą„ता CI ą¤µą¤æą¤«ą¤²ą¤¤ą¤¾ą¤ą¤ ą¤ą¤¾ ą¤ą¤²ą„ą¤²ą„ą¤ ą¤ą¤°ą„ या ą¤²ą„ą¤ ą¤ą¤¾ą¤ą¤ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤ą¤¹ą„, ą¤¤ą„ ą¤ą¤¾ą¤ą¤ ą¤ą„ ą¤ą„ą¤°ą„ą¤ ą¤ą¤°ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤Æą„ todo ą¤ą„ą¤”ą¤¼ą¤Øą„ ą¤Ŗą¤° ą¤µą¤æą¤ą¤¾ą¤° ą¤ą¤°ą„ą¤: (1) समय-ą¤ą¤æą¤¹ą„ą¤Øą„ą¤ ą¤ą„ साऄ हाल ą¤ą„ CI रन ą¤øą„ą¤ą„ą¤¬ą¤¦ą„ą¤§ ą¤ą¤°ą„ą¤, (2) विफल रन ą¤øą„ ą¤²ą„ą¤ ci-logs/ ą¤Øą¤æą¤°ą„ą¤¦ą„ą¤¶ą¤æą¤ą¤¾ ą¤®ą„ą¤ ą¤”ą¤¾ą¤ą¤Øą¤²ą„औ ą¤ą¤°ą„ą¤, (3) ą¤¤ą„ą¤°ą„ą¤ą¤æ ą¤øą¤ą¤¦ą„ą¤¶ą„ą¤ ą¤ą¤¾ ą¤µą¤æą¤¶ą„ą¤²ą„षण ą¤ą¤°ą„ą¤ ą¤ą¤° ą¤®ą„ą¤² ą¤ą¤¾ą¤°ą¤£ ą¤ą„ ą¤Ŗą¤¹ą¤ą¤¾ą¤Ø ą¤ą¤°ą„ą¤, (4) ą¤«ą¤¼ą¤æą¤ą„स ą¤²ą¤¾ą¤ą„ ą¤ą¤°ą„ą¤, (5) ą¤øą¤¤ą„ą¤Æą¤¾ą¤Ŗą¤æą¤¤ ą¤ą¤°ą„ą¤ ą¤ą¤æ ą¤«ą¤¼ą¤æą¤ą„स ą¤²ą„ą¤ ą¤®ą„ą¤ ą¤®ą¤æą¤²ą„ ą¤µą¤æą¤¶ą¤æą¤·ą„ą¤ ą¤¤ą„ą¤°ą„ą¤ą¤æą¤Æą„ą¤ ą¤ą„ हल ą¤ą¤°ą¤¤ą¤¾ ą¤¹ą„ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ issue ą¤Ŗą¤¢ą¤¼ą„ą¤, ą¤øą¤ą„ विवरण ą¤ą¤° ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą¤æą¤Æą¤¾ą¤ ą¤§ą„ą¤Æą¤¾ą¤Ø ą¤øą„ ą¤Ŗą¤¢ą¤¼ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ issue ą¤ą„ विवरण, PR विवरण, ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą¤æą¤Æą„ą¤, या ą¤ą¤°ą„ą¤ą¤¾ą¤ą¤ ą¤®ą„ą¤ ą¤øą„ą¤ą„ą¤°ą„ą¤Øą¤¶ą„ठया ą¤ą¤æą¤¤ą„र ą¤¦ą„ą¤ą„ą¤, ą¤¤ą„ ą¤Ŗą¤¹ą¤²ą„ ą¤ą¤µą¤æ ą¤ą„ ą¤øą„ą¤„ą¤¾ą¤Øą„ą¤Æ ą¤«ą¤¼ą¤¾ą¤ą¤² ą¤®ą„ą¤ ą¤”ą¤¾ą¤ą¤Øą¤²ą„औ ą¤ą¤°ą„ą¤, फिर Read ą¤ą„ल ą¤øą„ ą¤¦ą„ą¤ą„ą¤ ą¤ą¤° ą¤µą¤æą¤¶ą„ą¤²ą„षण ą¤ą¤°ą„ą¤ą„¤ ą¤”ą¤¾ą¤ą¤Øą¤²ą„औ ą¤ą„ ą¤ą¤ ą¤ą¤µą¤æą¤Æą„ą¤ ą¤ą„ Read ą¤ą„ल ą¤øą„ ą¤Ŗą¤¢ą¤¼ą¤Øą„ ą¤øą„ ą¤Ŗą¤¹ą¤²ą„, file ą¤ą„ą¤øą„ CLI ą¤ą„ल ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą¤ą„ ą¤Ŗą„ą¤·ą„ą¤ą¤æ ą¤ą¤°ą„ą¤ ą¤ą¤æ ą¤«ą¤¼ą¤¾ą¤ą¤² ą¤µą¤¾ą¤øą„ą¤¤ą¤µ ą¤®ą„ą¤ ą¤ą¤ ą¤ą¤µą¤æ हą„, HTML ą¤Øą¤¹ą„ą¤ą„¤ ą¤ą¤¬ ą¤ą„ą¤·ą¤¤ą¤æą¤ą„ą¤°ą¤øą„ą¤¤ या ą¤ą„र-ą¤ą¤µą¤æ ą¤«ą¤¼ą¤¾ą¤ą¤²ą„ठ(ą¤ą„ą¤øą„ .png ą¤ą„ ą¤°ą„ą¤Ŗ ą¤®ą„ą¤ ą¤øą¤¹ą„ą¤ą„ ą¤ą¤ GitHub "Not Found" ą¤Ŗą„ą¤·ą„ठ) ą¤Ŗą¤¢ą¤¼ą„ ą¤ą¤¾ą¤¤ą„ ą¤¹ą„ą¤, ą¤¤ą„ ą¤µą„ "Could not process image" ą¤¤ą„ą¤°ą„ą¤ą¤æą¤Æą¤¾ą¤ ą¤ą¤¤ą„ą¤Ŗą¤Øą„ą¤Ø ą¤ą¤° ą¤øą¤ą¤¤ą„ ą¤¹ą„ą¤ ą¤ą¤° AI solver ą¤Ŗą„ą¤°ą¤ą„रिया ą¤ą„ ą¤ą„ą¤°ą„ą¤¶ ą¤ą¤° ą¤øą¤ą¤¤ą„ ą¤¹ą„ą¤ą„¤ ą¤ą¤¬ file ą¤ą¤®ą¤¾ą¤ą¤” "HTML", "text", या "ASCII text" ą¤¦ą¤æą¤ą¤¾ą¤, ą¤¤ą„ ą¤”ą¤¾ą¤ą¤Øą¤²ą„औ विफल ą¤¹ą„ ą¤ą¤Æą¤¾, ą¤ą¤øą¤²ą¤æą¤ ą¤ą¤ø ą¤«ą¤¼ą¤¾ą¤ą¤² पर Read ą¤ą„ल न ą¤ą¤°ą„ą¤ą„¤ ą¤ą¤øą¤ą„ ą¤¬ą¤ą¤¾ą¤Æ: (1) ą¤ą¤¬ ą¤ą¤µą¤æą¤Æą¤¾ą¤ GitHub issue या PR ą¤øą„ ą¤¹ą„ą¤ (ą¤ą„ą¤øą„ URL "github.com/user-attachments" सą„), ą¤¤ą„ ą¤Ŗą„ą¤Øą¤ ą¤Ŗą„ą¤°ą¤Æą¤¾ą¤ø ą¤ą¤°ą„ą¤: curl -L -H "Authorization: token $(gh auth token)" -o <filename> "<url>"; (2) ą¤ą¤¬ ą¤Ŗą„ą¤Øą¤ ą¤Ŗą„ą¤°ą¤Æą¤¾ą¤ø ą¤ą„ विफल हą„, ą¤¤ą„ ą¤ą¤µą¤æ ą¤ą„औ़ ą¤¦ą„ą¤ ą¤ą¤° ą¤Øą„ą¤ ą¤ą¤°ą„ą¤ ą¤ą¤æ यह ą¤
ą¤Øą„ą¤Ŗą¤²ą¤¬ą„ध ą¤„ą„ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗą¤ą„ issue विवरण ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ हą„, ą¤¤ą„ gh issue view https://github.com/{{owner}}/{{repo}}/issues/{{issueNumber}} ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗą¤ą„ ą¤øą¤ą¤¬ą¤ą¤§ą¤æą¤¤ ą¤ą„औ ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ हą„, ą¤¤ą„ gh search code --owner {{owner}} [keywords] ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗą¤ą„ repo ą¤øą¤ą¤¦ą¤°ą„ą¤ ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ हą„, ą¤
ą¤Ŗą¤Øą„ ą¤ą¤¾ą¤°ą„य ą¤Øą¤æą¤°ą„ą¤¦ą„ą¤¶ą¤æą¤ą¤¾ ą¤®ą„ą¤ ą¤«ą¤¼ą¤¾ą¤ą¤²ą„ą¤ ą¤Ŗą¤¢ą¤¼ą„ą¤ą„¤'
|
|
116
|
+
prompt.system.explore_subagent " - ą¤ą¤¬ ą¤ą¤Ŗą¤ą„ codebase ą¤øą¤ą¤°ą¤ą¤Øą¤¾, ą¤Ŗą„ą¤ą¤°ą„न, या ą¤ą„ą¤ą¤¼ą„ą¤ ą¤ą„ą¤øą„ ą¤ą¤¾ą¤® ą¤ą¤°ą¤¤ą„ ą¤¹ą„ą¤ ą¤ą¤øą¤ą„ ą¤¬ą¤¾ą¤°ą„ ą¤®ą„ą¤ ą¤ą„ą¤ ą¤øą„ą¤ą¤Øą„ ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ हą„, ą¤¤ą„ codebase ą¤ą¤¾ ą¤ą¤¹ą¤Ø ą¤
ą¤Øą„ą¤µą„षण ą¤ą¤°ą¤Øą„ ą¤ą„ लिठsubagent_type=Explore ą¤ą„ साऄ Task ą¤ą„ल ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤"
|
|
117
|
+
prompt.system.check_sibling_prs " - ą¤ą¤¬ ą¤ą¤Ŗ ą¤øą¤ą¤¬ą¤ą¤§ą¤æą¤¤ ą¤ą¤¾ą¤°ą„य ą¤ą¤¾ ą¤
ą¤§ą„ą¤Æą¤Æą¤Ø ą¤ą¤°ą„ą¤, ą¤øą¤¬ą¤øą„ ą¤¹ą¤¾ą¤² ą¤ą„ ą¤øą¤ą¤¬ą¤ą¤§ą¤æą¤¤ pull requests ą¤ą¤¾ ą¤
ą¤§ą„ą¤Æą¤Æą¤Ø ą¤ą¤°ą„ą¤ą„¤"
|
|
118
|
+
prompt.system.initial_research_tail ' - ą¤ą¤¬ issue ą¤Ŗą¤°ą„ą¤Æą¤¾ą¤Ŗą„त ą¤øą„ą¤Ŗą¤·ą„ą¤ ą¤°ą„ą¤Ŗ ą¤øą„ ą¤Ŗą¤°ą¤æą¤ą¤¾ą¤·ą¤æą¤¤ न हą„, ą¤¤ą„ ą¤øą„ą¤Ŗą¤·ą„ą¤ą„ą¤ą¤°ą¤£ ą¤Ŗą„ą¤°ą¤¶ą„ą¤Øą„ą¤ ą¤ą„ साऄ ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą„ ą¤²ą¤æą¤ą„ą¤ą„¤\n - ą¤ą¤¬ GitHub Gists (ą¤µą¤æą¤¶ą„ą¤· ą¤°ą„ą¤Ŗ ą¤øą„ ą¤Øą¤æą¤ą„) ą¤¤ą¤ ą¤Ŗą¤¹ą„ą¤ą¤ हą„, ą¤¤ą„ ą¤ą¤ą¤æą¤¤ ą¤Ŗą„ą¤°ą¤®ą¤¾ą¤£ą„ą¤ą¤°ą¤£ ą¤øą„ą¤Øą¤æą¤¶ą„ą¤ą¤æą¤¤ ą¤ą¤°ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤øą„ą¤§ą„ URL fetching ą¤ą„ ą¤¬ą¤ą¤¾ą¤Æ gh gist view ą¤ą¤®ą¤¾ą¤ą¤” ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ ą¤ą¤æą¤øą„ bug ą¤ą„ ą¤ ą„ą¤ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, ą¤Ŗą¤¹ą¤²ą„ ą¤µą¤¾ą¤øą„ą¤¤ą¤µą¤æą¤ ą¤®ą„ą¤² ą¤ą¤¾ą¤°ą¤£ ą¤ą„ą¤ą„ą¤ ą¤ą¤° ą¤ą¤æą¤¤ą¤Øą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ ą¤¹ą„ą¤ ą¤ą¤¤ą¤Øą„ ą¤Ŗą„ą¤°ą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ ą¤ą¤æą¤øą„ bug ą¤ą„ ą¤ ą„ą¤ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤ ą¤ą¤° ą¤ą„औ ą¤®ą„ą¤ ą¤Ŗą¤°ą„ą¤Æą¤¾ą¤Ŗą„त ą¤ą„ą¤°ą„ą¤øą¤æą¤ą¤ या ą¤²ą„ą¤ न ą¤¹ą„ą¤, ą¤ą¤Øą„ą¤¹ą„ą¤ ą¤ą„ą¤”ą¤¼ą„ą¤ ą¤ą¤° ą¤ą„औ ą¤®ą„ą¤ ą¤”ą¤æą¤«ą¤¼ą„ą¤²ą„ą¤ ą¤°ą„ą¤Ŗ ą¤øą„ ą¤¬ą¤ą¤¦ ą¤°ą¤ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗą¤ą„ PR पर ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą¤æą¤Æą„ą¤ ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ हą„, ą¤§ą„ą¤Æą¤¾ą¤Ø ą¤¦ą„ą¤ ą¤ą¤æ GitHub ą¤®ą„ą¤ ą¤
लą¤-ą¤
लठAPI endpoints ą¤ą„ साऄ ą¤¤ą„ą¤Ø ą¤Ŗą„ą¤°ą¤ą¤¾ą¤° ą¤ą„ ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą¤æą¤Æą¤¾ą¤ ą¤¹ą„ą¤:\n 1. PR ą¤øą¤®ą„ą¤ą„षा ą¤ą¤æą¤Ŗą„पणियाठ(ą¤ą¤Øą¤²ą¤¾ą¤ą¤Ø ą¤ą„औ ą¤ą¤æą¤Ŗą„पणियाą¤): gh api repos/{{owner}}/{{repo}}/pulls/{{prNumber}}/comments --paginate\n 2. PR ą¤µą¤¾ą¤°ą„ą¤¤ą¤¾ą¤²ą¤¾ą¤Ŗ ą¤ą¤æą¤Ŗą„पणियाठ(ą¤øą¤¾ą¤®ą¤¾ą¤Øą„ą¤Æ ą¤ą¤°ą„ą¤ą¤¾): gh api repos/{{owner}}/{{repo}}/issues/{{prNumber}}/comments --paginate\n 3. PR ą¤øą¤®ą„ą¤ą„ą¤·ą¤¾ą¤ą¤ (ą¤
ą¤Øą„ą¤®ą„दन/ą¤Ŗą¤°ą¤æą¤µą¤°ą„ą¤¤ą¤Ø ą¤ą¤¾ ą¤
ą¤Øą„ą¤°ą„ध): gh api repos/{{owner}}/{{repo}}/pulls/{{prNumber}}/reviews --paginate\n ą¤ą¤æą¤Ŗą„पणą„: ą¤ą¤®ą¤¾ą¤ą¤” "gh pr view --json comments" ą¤ą„वल ą¤µą¤¾ą¤°ą„ą¤¤ą¤¾ą¤²ą¤¾ą¤Ŗ ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą¤æą¤Æą¤¾ą¤ ą¤²ą„ą¤ą¤¾ą¤¤ą¤¾ ą¤¹ą„ ą¤ą¤° ą¤øą¤®ą„ą¤ą„षा ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą¤æą¤Æą¤¾ą¤ ą¤ą„ą¤ ą¤ą¤¾ą¤¤ą„ ą¤¹ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗą¤ą„ issue पर ą¤Øą¤µą„ą¤Øą¤¤ą¤® ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą¤æą¤Æą„ą¤ ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ हą„, ą¤¤ą„ gh api repos/{{owner}}/{{repo}}/issues/{{issueNumber}}/comments --paginate ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤'
|
|
119
|
+
prompt.system.general_purpose_subagent " - ą¤ą¤¬ ą¤ą¤¾ą¤°ą„य बऔ़ा ą¤¹ą„ ą¤ą¤° ą¤ą¤ ą¤«ą¤¼ą¤¾ą¤ą¤²ą„ठया ą¤«ą¤¼ą„ą¤²ą„ą¤”ą¤°ą„ą¤ ą¤ą„ ą¤Ŗą„ą¤°ą¤øą¤ą¤øą„ą¤ą¤°ą¤£ ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ हą„, ą¤¤ą„ ą¤ą¤¾ą¤°ą„य ą¤øą„ą¤ą¤Ŗą¤Øą„ ą¤ą„ लिठ`general-purpose` sub-agents ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤ ą¤Ŗą„ą¤°ą¤¤ą„ą¤Æą„ą¤ ą¤
ą¤²ą¤ ą¤«ą¤¼ą¤¾ą¤ą¤² या ą¤«ą¤¼ą„ą¤²ą„और ą¤ą„ ą¤
ą¤§ą¤æą¤ ą¤ą„शल ą¤Ŗą„ą¤°ą¤øą¤ą¤øą„ą¤ą¤°ą¤£ ą¤ą„ ą¤²ą¤æą¤ ą¤ą¤ sub-agent ą¤ą„ ą¤øą„ą¤ą¤Ŗą¤¾ ą¤ą¤¾ ą¤øą¤ą¤¤ą¤¾ ą¤¹ą„ą„¤"
|
|
120
|
+
prompt.system.case_studies " - ą¤ą¤¬ ą¤ą¤ø issue पर ą¤ą¤¾ą¤® ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, ./docs/case-studies/issue-{{issueNumber}}/ ą¤Øą¤æą¤°ą„ą¤¦ą„ą¤¶ą¤æą¤ą¤¾ ą¤®ą„ą¤ ą¤ą¤ ą¤µą„ą¤Æą¤¾ą¤Ŗą¤ case study ą¤¬ą¤Øą¤¾ą¤ą¤ą„¤ issue ą¤øą„ ą¤øą¤ą¤¬ą¤ą¤§ą¤æą¤¤ ą¤øą¤ą„ ą¤²ą„ą¤ ą¤ą¤° ą¤”ą„ą¤ą¤¾ repository ą¤®ą„ą¤ ą¤”ą¤¾ą¤ą¤Øą¤²ą„औ ą¤ą¤°ą„ą¤ą„¤ ą¤ą¤Øą¤²ą¤¾ą¤ą¤Ø ą¤
ą¤¤ą¤æą¤°ą¤æą¤ą„त ą¤¤ą¤„ą„ą¤Æą„ą¤ ą¤ą¤° ą¤”ą„ą¤ą¤¾ ą¤ą„ ą¤ą„ą¤ ą¤ą¤°ą¤ą„, ą¤ą¤ą¤Øą¤¾ą¤ą¤ ą¤ą„ ą¤øą¤®ą¤Æą¤°ą„ą¤ą¤¾/ą¤
ą¤Øą„ą¤ą„रम ą¤Ŗą„ą¤Øą¤°ą„ą¤Øą¤æą¤°ą„ą¤®ą¤¾ą¤£ ą¤ą¤°ą¤ą„, ą¤øą¤®ą¤øą„ą¤Æą¤¾ ą¤ą„ ą¤®ą„ą¤² ą¤ą¤¾ą¤°ą¤£ą„ą¤ ą¤ą„ ą¤Ŗą¤¹ą¤ą¤¾ą¤Ø ą¤ą¤°ą¤ą„, ą¤ą¤° ą¤øą¤ą¤ą¤¾ą¤µą¤æą¤¤ ą¤øą¤®ą¤¾ą¤§ą¤¾ą¤Øą„ą¤ ą¤ą¤¾ ą¤Ŗą„ą¤°ą¤øą„ताव ą¤ą¤°ą¤ą„ ą¤ą¤¹ą¤Ø case study ą¤µą¤æą¤¶ą„ą¤²ą„षण ą¤ą¤°ą„ą¤ą„¤ README.md (ą¤ą¤¾ą¤°ą„ą¤Æą¤ą¤¾ą¤°ą„ ą¤øą¤¾ą¤°ą¤¾ą¤ą¤¶, ą¤øą¤®ą¤øą„ą¤Æą¤¾ ą¤ą¤„न, ą¤øą¤®ą¤Æą¤°ą„ą¤ą¤¾, ą¤®ą„ą¤² ą¤ą¤¾ą¤°ą¤£), TECHNICAL_SUMMARY.md (ą¤ą¤¹ą¤Ø ą¤¤ą¤ą¤Øą„ą¤ą„ ą¤µą¤æą¤¶ą„ą¤²ą„षण), ANALYSIS.md (ą¤µą¤æą¤øą„ą¤¤ą„त ą¤ą¤¾ą¤ą¤ ą¤Øą¤æą¤·ą„ą¤ą¤°ą„ष), improvements.md (ą¤Ŗą„ą¤°ą¤øą„तावित समाधान), ą¤ą¤° ą¤øą¤¹ą¤¾ą¤Æą¤ ą¤²ą„ą¤/ą¤”ą„ą¤ą¤¾ ą¤«ą¤¼ą¤¾ą¤ą¤²ą„ą¤ ą¤ą„ą¤øą„ ą¤«ą¤¼ą¤¾ą¤ą¤²ą„ठशामिल ą¤ą¤°ą„ą¤ą„¤"
|
|
121
|
+
prompt.system.solution_development 'समाधान ą¤ą¤¾ ą¤µą¤æą¤ą¤¾ą¤ø ą¤ą¤° ą¤Ŗą¤°ą„ą¤ą„ą¤·ą¤£ą„¤\n - ą¤ą¤¬ issue हल ą¤ą¤°ą¤Øą„ ą¤Æą„ą¤ą„य हą„, ą¤Ŗą¤¹ą¤²ą„ ą¤ą¤ test ą¤¬ą¤Øą¤¾ą¤ą¤ ą¤ą„ ą¤øą¤®ą¤øą„ą¤Æą¤¾ ą¤ą„ ą¤Ŗą„ą¤Øą¤°ą„ą¤¤ą„ą¤Ŗą¤¾ą¤¦ą¤æą¤¤ ą¤ą¤°ą„, फिर ą¤«ą¤¼ą¤æą¤ą„स ą¤²ą¤¾ą¤ą„ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ features ą¤²ą¤¾ą¤ą„ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, codebase ą¤®ą„ą¤ समान ą¤®ą„ą¤ą„दा ą¤ą¤¾ą¤°ą„ą¤Æą¤¾ą¤Øą„ą¤µą¤Æą¤Ø ą¤ą„ą¤ą„ą¤ ą¤ą¤° ą¤ą¤Øą„ą¤¹ą„ą¤ ą¤ą¤¦ą¤¾ą¤¹ą¤°ą¤£ ą¤ą„ ą¤°ą„ą¤Ŗ ą¤®ą„ą¤ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ ą¤¬ą¤ą¤¾ą¤Æ ą¤¶ą„ą¤°ą„ą¤ą¤¤ ą¤øą„ ą¤øą¤¬ ą¤ą„ą¤ ą¤²ą¤¾ą¤ą„ ą¤ą¤°ą¤Øą„ ą¤ą„ą„¤\n - ą¤ą¤¬ coding ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, ą¤øą„ą¤µą¤Æą¤ ą¤ą¤Ŗą¤Æą„ą¤ą„ ą¤Ŗą„ą¤°ą¤¤ą„ą¤Æą„ą¤ atomic step ą¤ą„ PR branch ą¤®ą„ą¤ commit ą¤ą¤°ą„ą¤ ą¤¤ą¤¾ą¤ą¤æ बाधित ą¤ą¤¾ą¤°ą„य PR ą¤®ą„ą¤ बना ą¤°ą¤¹ą„ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ ą¤Ŗą¤°ą„ą¤ą„षण ą¤ą¤°ą„ą¤:\n ą¤
लą¤-ą¤
लठscripts ą¤ą„ साऄ ą¤ą„ą¤ą„ functions ą¤ą„ ą¤Ŗą¤°ą„ą¤ą„षण ą¤øą„ ą¤¶ą„ą¤°ą„ ą¤ą¤°ą„ą¤;\n ą¤¤ą„ą¤µą¤°ą¤æą¤¤ ą¤¶ą„ą¤°ą„ą¤ą¤¤ ą¤ą„ लिठmocks ą¤ą„ साऄ unit tests ą¤²ą¤æą¤ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ integrations ą¤ą¤¾ ą¤Ŗą¤°ą„ą¤ą„षण ą¤ą¤°ą„ą¤, ą¤®ą„ą¤ą„दा framework ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ समाधान draft ą¤ą¤¾ ą¤Ŗą¤°ą„ą¤ą„षण ą¤ą¤°ą„ą¤, PR ą¤®ą„ą¤ ą¤øą„ą¤µą¤ą¤¾ą¤²ą¤æą¤¤ ą¤ą¤¾ą¤ą¤ą„ठशामिल ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ tests ą¤²ą¤æą¤ą„ठया ą¤øą¤ą¤¶ą„धित ą¤ą¤°ą„ą¤, test, suite, ą¤ą¤° CI job ą¤øą„ą¤¤ą¤°ą„ठपर ą¤ą¤ą¤æą¤¤ timeouts ą¤øą„ą¤ ą¤ą¤°ą¤Øą„ पर ą¤µą¤æą¤ą¤¾ą¤° ą¤ą¤°ą„ą¤ ą¤¤ą¤¾ą¤ą¤æ ą¤µą¤æą¤«ą¤²ą¤¤ą¤¾ą¤ą¤ ą¤¤ą„ą¤ą¤¼ą„ ą¤øą„ ą¤øą¤¾ą¤®ą¤Øą„ ą¤ą¤ą¤ ą¤¬ą¤ą¤¾ą¤Æ ą¤²ą¤ą¤ą¤Øą„ ą¤ą„ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ CI ą¤®ą„ą¤ बार-बार test timeout pattern ą¤¦ą„ą¤ą„ą¤, timeouts ą¤¬ą¤¢ą¤¼ą¤¾ą¤Øą„ ą¤ą„ ą¤¬ą¤ą¤¾ą¤Æ ą¤®ą„ą¤² ą¤ą¤¾ą¤°ą¤£ ą¤ą„ ą¤ą¤¾ą¤ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ issue ą¤
ą¤øą„ą¤Ŗą¤·ą„ठहą„, issue पर ą¤Ŗą„ą¤°ą¤¶ą„ą¤Øą„ą¤ ą¤ą„ साऄ ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą„ ą¤²ą¤æą¤ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ ą¤ą¤øą„ ą¤øą¤®ą¤øą„ą¤Æą¤¾ą¤ą¤ ą¤ą¤¾ सामना ą¤ą¤°ą„ą¤ ą¤ą¤æą¤Øą„ą¤¹ą„ą¤ ą¤ą¤Ŗ ą¤øą„ą¤µą¤Æą¤ हल ą¤Øą¤¹ą„ą¤ ą¤ą¤° ą¤øą¤ą¤¤ą„ ą¤ą¤° मानव सहायता ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ हą„, सहायता ą¤®ą¤¾ą¤ą¤ą¤¤ą„ ą¤¹ą„ą¤ PR पर ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą„ ą¤²ą¤æą¤ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗą¤ą„ मानव सहायता ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ हą„, ą¤®ą„ą¤ą„दा PR पर ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą„ ą¤ą¤°ą¤Øą„ ą¤ą„ लिठgh pr comment {{prNumber}} --body "your message" ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤'
|
|
122
|
+
prompt.system.reproducible_testing "ą¤Ŗą„ą¤Øą¤°ą„ą¤¤ą„ą¤Ŗą¤¾ą¤¦ą¤Ø ą¤Æą„ą¤ą„य ą¤Ŗą¤°ą„ą¤ą„ą¤·ą¤£ą„¤\n - ą¤ą¤¬ ą¤ą¤æą¤øą„ bug ą¤ą„ ą¤ ą„ą¤ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, ą¤«ą¤¼ą¤æą¤ą„स ą¤²ą¤¾ą¤ą„ ą¤ą¤°ą¤Øą„ ą¤øą„ ą¤Ŗą¤¹ą¤²ą„ ą¤øą¤®ą¤øą„ą¤Æą¤¾ ą¤ą„ ą¤Ŗą„ą¤Øą¤°ą„ą¤¤ą„ą¤Ŗą¤¾ą¤¦ą¤æą¤¤ ą¤ą¤°ą¤Øą„ वाला test ą¤¬ą¤Øą¤¾ą¤ą¤ą„¤ यदि ą¤ą¤Ŗ ą¤øą¤®ą¤øą„ą¤Æą¤¾ ą¤ą„ ą¤Ŗą„ą¤Øą¤°ą„ą¤¤ą„ą¤Ŗą¤¾ą¤¦ą¤æą¤¤ ą¤Øą¤¹ą„ą¤ ą¤ą¤° ą¤øą¤ą¤¤ą„, ą¤¤ą„ ą¤ą¤Ŗ ą¤«ą¤¼ą¤æą¤ą„स ą¤ą„ ą¤øą¤¤ą„ą¤Æą¤¾ą¤Ŗą¤æą¤¤ ą¤Øą¤¹ą„ą¤ ą¤ą¤° ą¤øą¤ą¤¤ą„ą„¤\n - ą¤ą¤¬ logical bugs ą¤ą¤¾ सामना हą„, ą¤ą¤ ą¤øą„ą¤µą¤ą¤¾ą¤²ą¤æą¤¤ test ą¤²ą¤æą¤ą„ą¤ ą¤ą„ bug ą¤ą„ ą¤ą¤¾ą¤°ą¤£ विफल हą„, फिर ą¤ą¤øą„ pass ą¤ą¤°ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤«ą¤¼ą¤æą¤ą„स ą¤²ą¤¾ą¤ą„ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ UI bugs ą¤ą¤¾ सामना हą„, ą¤øą¤®ą¤øą„ą¤Æą¤¾ ą¤øą„ą¤„िति ą¤¦ą¤æą¤ą¤¾ą¤Øą„ वाला screenshot ą¤ą„ą¤Ŗą„ą¤ą¤° ą¤ą¤°ą„ą¤, फिर ą¤«ą¤¼ą¤æą¤ą„स ą¤ą„ बाद visual regression test या ą¤®ą„ą¤Øą„ą¤Æą„ą¤
ल ą¤øą¤¤ą„ą¤Æą¤¾ą¤Ŗą¤Ø screenshot ą¤¬ą¤Øą¤¾ą¤ą¤ą„¤\n - ą¤ą¤¬ tests बना ą¤°ą¤¹ą„ ą¤¹ą„ą¤, ą¤Øą„ą¤Æą„नतम ą¤Ŗą„ą¤Øą¤°ą„ą¤¤ą„ą¤Ŗą¤¾ą¤¦ą¤Ø ą¤Æą„ą¤ą„य ą¤ą¤¦ą¤¾ą¤¹ą¤°ą¤£ą„ą¤ ą¤ą„ ą¤Ŗą„ą¤°ą¤¾ą¤„ą¤®ą¤æą¤ą¤¤ą¤¾ ą¤¦ą„ą¤āसरलतम test case ą¤ą„ issue ą¤ą„ ą¤Ŗą„ą¤°ą¤¦ą¤°ą„शित ą¤ą¤°ą¤¤ą¤¾ ą¤¹ą„ą„¤\n - ą¤ą¤¬ ą¤«ą¤¼ą¤æą¤ą„स ą¤Ŗą„ą¤°ą¤øą„ą¤¤ą„ą¤¤ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, PR विवरण ą¤®ą„ą¤ शामिल ą¤ą¤°ą„ą¤: (1) issue ą¤ą„ ą¤Ŗą„ą¤Øą¤°ą„ą¤¤ą„ą¤Ŗą¤¾ą¤¦ą¤æą¤¤ ą¤ą„ą¤øą„ ą¤ą¤°ą„ą¤, (2) ą¤«ą¤¼ą¤æą¤ą„स ą¤ą„ ą¤øą¤¤ą„ą¤Æą¤¾ą¤Ŗą¤æą¤¤ ą¤ą¤°ą¤Øą„ वाला ą¤øą„ą¤µą¤ą¤¾ą¤²ą¤æą¤¤ test, (3) UI issues ą¤ą„ लिठपहलą„/बाद ą¤ą„ screenshotsą„¤\n - ą¤ą¤¬ ą¤ą¤æą¤øą„ bug ą¤«ą¤¼ą¤æą¤ą„स ą¤®ą„ą¤ ą¤Ŗą„ą¤Øą¤°ą„ą¤¤ą„ą¤Ŗą¤¾ą¤¦ą¤Ø test न हą„, ą¤«ą¤¼ą¤æą¤ą„स ą¤ą„ ą¤
ą¤§ą„ą¤°ą¤¾ ą¤®ą¤¾ą¤Øą„ą¤ ą¤ą„ą¤Æą„ą¤ą¤ą¤æ बाद ą¤®ą„ą¤ बिना ą¤øą„ą¤ą¤Øą¤¾ ą¤ą„ regressions ą¤¹ą„ ą¤øą¤ą¤¤ą„ ą¤¹ą„ą¤ą„¤"
|
|
123
|
+
prompt.system.preparing_pr 'Pull request ą¤¤ą„ą¤Æą¤¾ą¤° ą¤ą¤°ą¤Øą¤¾ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ ą¤ą„औ ą¤²ą¤æą¤ą„ą¤, contributing guidelines ą¤ą¤¾ पालन ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ commit ą¤ą¤°ą„ą¤, ą¤øą„ą¤Ŗą¤·ą„ą¤ ą¤øą¤ą¤¦ą„श ą¤²ą¤æą¤ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗą¤ą„ ą¤¶ą„ą¤²ą„ ą¤ą„ ą¤ą¤¦ą¤¾ą¤¹ą¤°ą¤£ą„ą¤ ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ हą„, gh pr list --repo {{owner}}/{{repo}} --state merged --search [keywords] ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ PR ą¤ą„ą¤²ą„ą¤, समाधान draft ą¤ą¤¾ ą¤µą¤°ą„ą¤£ą¤Ø ą¤ą¤°ą„ą¤ ą¤ą¤° tests शामिल ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤øą„ą¤µą¤ą¤¾ą¤²ą¤æą¤¤ release ą¤ą„ ą¤²ą¤æą¤ ą¤øą¤ą¤øą„ą¤ą¤°ą¤£ ą¤ą¤° GitHub Actions workflows वाला ą¤Ŗą„ą¤ą„ठहą„, ą¤¤ą„ ą¤
ą¤ą¤²ą„ release ą¤ą„ ą¤¤ą„ą¤Æą¤¾ą¤°ą„ ą¤ą„ लिठą¤
ą¤Ŗą¤Øą„ PR ą¤®ą„ą¤ ą¤øą¤ą¤øą„ą¤ą¤°ą¤£ (या ą¤
ą¤Øą„ą¤Æ ą¤ą¤µą¤¶ą„यठrelease trigger) ą¤
ą¤Ŗą¤”ą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ ą¤®ą„ą¤ą„दा PR {{prNumber}} ą¤
ą¤Ŗą¤”ą„ą¤ ą¤ą¤°ą„ą¤, ą¤¶ą„ą¤°ą„ą¤·ą¤ ą¤ą¤° विवरण ą¤øą¤ą¤¶ą„धित ą¤ą¤°ą¤Øą„ ą¤ą„ लिठgh pr edit ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ commit या push ą¤ą¤°ą¤Øą„ ą¤µą¤¾ą¤²ą„ ą¤¹ą„ą¤, ą¤§ą¤ą„ą¤²ą¤Øą„ ą¤øą„ ą¤Ŗą¤¹ą¤²ą„ ą¤¤ą„ą¤°ą„ą¤ą¤æą¤Æą¤¾ą¤ ą¤Ŗą¤ą¤”ą¤¼ą¤Øą„ ą¤ą„ लिठcontributing guidelines ą¤®ą„ą¤ ą¤ą¤Ŗą¤²ą¤¬ą„ध ą¤øą„ą¤„ą¤¾ą¤Øą„ą¤Æ CI ą¤ą¤¾ą¤ą¤ą„ठ(ą¤ą„ą¤øą„ ruff check, mypy, eslint) ą¤Ŗą¤¹ą¤²ą„ ą¤ą¤²ą¤¾ą¤ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ pull request ą¤ą„ ą¤
ą¤ą¤¤ą¤æą¤® ą¤°ą„ą¤Ŗ ą¤¦ą„ą¤:\n ą¤ą„औ, ą¤¶ą„ą¤°ą„ą¤·ą¤ ą¤ą¤° विवरण ą¤ą„ ą¤²ą¤æą¤ ą¤®ą¤°ą„ą¤ ą¤ą¤æą¤ ą¤ą¤ PRs ą¤ą„ ą¤¶ą„ą¤²ą„ ą¤ą¤¾ पालन ą¤ą¤°ą„ą¤,\n ą¤ą¤¾ą¤ą¤ą„ą¤ ą¤ą¤æ ą¤®ą„ą¤² ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ą¤ą¤ ą¤øą„ ą¤øą¤ą¤¬ą¤ą¤§ą¤æą¤¤ ą¤ą„ठuncommitted ą¤Ŗą¤°ą¤æą¤µą¤°ą„ą¤¤ą¤Ø ą¤¶ą„ą¤· न ą¤¹ą„ą¤,\n ą¤ą¤¾ą¤ą¤ą„ą¤ ą¤ą¤æ ą¤”ą¤æą¤«ą¤¼ą„ą¤²ą„ठbranch PR branch ą¤®ą„ą¤ ą¤®ą¤°ą„ą¤ हą„,\n ą¤øą¤®ą¤¾ą¤Ŗą„ą¤¤ ą¤ą¤°ą¤Øą„ ą¤øą„ ą¤Ŗą¤¹ą¤²ą„ ą¤ą¤¾ą¤ą¤ą„ą¤ ą¤ą¤æ ą¤øą¤ą„ CI ą¤ą¤¾ą¤ą¤ą„ठपास ą¤¹ą„ ą¤°ą¤¹ą„ ą¤¹ą„ą¤ (यदि ą¤µą„ ą¤®ą„ą¤ą„द ą¤¹ą„ą¤),\n हाल ą¤ą„ ą¤Ŗą„ą¤°ą¤¤ą¤æą¤ą„रिया ą¤ą„ą¤ą¤Øą„ ą¤øą„ ą¤¬ą¤ą¤Øą„ ą¤ą„ लिठissue ą¤ą¤° PR पर ą¤Øą¤µą„ą¤Øą¤¤ą¤® ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą¤æą¤Æą¤¾ą¤ ą¤ą¤¾ą¤ą¤ą„ą¤,\n ą¤¦ą„ą¤¹ą¤°ą„ ą¤ą¤¾ą¤ą¤ ą¤ą¤°ą„ą¤ ą¤ą¤æ PR ą¤ą„ ą¤øą¤ą„ ą¤Ŗą¤°ą¤æą¤µą¤°ą„ą¤¤ą¤Ø issue ą¤ą„ ą¤®ą„ą¤² ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ą¤ą¤ ą¤ą„ ą¤øą¤ą¤¬ą„धित ą¤ą¤°ą¤¤ą„ ą¤¹ą„ą¤,\n gh pr diff ą¤ą„ ą¤§ą„ą¤Æą¤¾ą¤Ø ą¤øą„ ą¤Ŗą¤¢ą¤¼ą¤ą¤° PR ą¤®ą„ą¤ ą¤Øą¤ ą¤ą„ą¤”ą¤¼ą„ ą¤ą¤ bugs ą¤ą„ ą¤ą¤¾ą¤ą¤ ą¤ą¤°ą„ą¤,\n ą¤ą¤¾ą¤ą¤ą„ą¤ ą¤ą¤æ issue विवरण, issue ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą¤æą¤Æą„ą¤, या PR ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą¤æą¤Æą„ą¤ ą¤®ą„ą¤ ą¤øą„ą¤Ŗą¤·ą„ठą¤
ą¤Øą„ą¤°ą„ध ą¤ą„ बिना ą¤Ŗą¤¹ą¤²ą„ ą¤øą„ ą¤®ą„ą¤ą„द ą¤ą„ठfeature ą¤Øą¤¹ą„ą¤ ą¤¹ą¤ą¤¾ą¤Æą¤¾ ą¤ą¤Æą¤¾ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ ą¤ą¤¾ą¤°ą„ą¤Æą¤¾ą¤Øą„ą¤µą¤Æą¤Ø ą¤øą¤®ą¤¾ą¤Ŗą„ą¤¤ ą¤ą¤°ą„ą¤, gh pr ready {{prNumber}} ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤'
|
|
124
|
+
prompt.system.workflow "Workflow ą¤ą¤° ą¤øą¤¹ą¤Æą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ branch ą¤ą¤¾ą¤ą¤ą„ą¤, git branch --show-current ą¤øą„ ą¤øą¤¤ą„ą¤Æą¤¾ą¤Ŗą¤æą¤¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ push ą¤ą¤°ą„ą¤, ą¤ą„वल branch {{branchName}} पर push ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ ą¤øą¤®ą¤¾ą¤Ŗą„ą¤¤ ą¤ą¤°ą„ą¤, branch {{branchName}} ą¤øą„ PR ą¤¬ą¤Øą¤¾ą¤ą¤ą„¤ (ą¤ą¤æą¤Ŗą„पणą„: PR {{prNumber}} ą¤Ŗą¤¹ą¤²ą„ ą¤øą„ ą¤®ą„ą¤ą„द हą„, ą¤ą¤øą„ ą¤
ą¤Ŗą¤”ą„ą¤ ą¤ą¤°ą„ą¤)\n - ą¤ą¤¬ ą¤ą¤Ŗ workflow ą¤µą„ą¤Æą¤µą¤øą„ऄित ą¤ą¤°ą„ą¤, ą¤”ą¤æą¤«ą¤¼ą„ą¤²ą„ठbranch (main या master) ą¤®ą„ą¤ ą¤øą„ą¤§ą„ merges ą¤ą„ ą¤¬ą¤ą¤¾ą¤Æ PRs ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ commits ą¤Ŗą„ą¤°ą¤¬ą¤ą¤§ą¤æą¤¤ ą¤ą¤°ą„ą¤, बाद ą¤ą„ ą¤µą¤æą¤¶ą„ą¤²ą„षण ą¤ą„ लिठcommit ą¤ą¤¤ą¤æą¤¹ą¤¾ą¤ø ą¤øą¤ą¤°ą¤ą„षित ą¤°ą¤ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ ą¤Æą„ą¤ą¤¦ą¤¾ą¤Ø ą¤ą¤°ą„ą¤, नियमित commits, pushes, ą¤ą¤° ą¤ą¤µą¤¶ą„ą¤Æą¤ ą¤¹ą„ą¤Øą„ पर reverts ą¤ą„ साऄ repository ą¤ą¤¤ą¤æą¤¹ą¤¾ą¤ø ą¤ą„ ą¤ą¤ą„ ą¤¬ą¤¢ą¤¼ą¤¾ą¤¤ą„ ą¤°ą¤¹ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ ą¤ą¤øą„ ą¤øą¤ą¤ą¤°ą„ष ą¤ą¤¾ सामना ą¤ą¤°ą„ą¤ ą¤ą¤æą¤øą„ ą¤ą¤Ŗ ą¤øą„ą¤µą¤Æą¤ हल ą¤Øą¤¹ą„ą¤ ą¤ą¤° ą¤øą¤ą¤¤ą„, सहायता ą¤®ą¤¾ą¤ą¤ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ ą¤øą¤¹ą¤Æą„ą¤ ą¤ą¤°ą„ą¤, ą¤ą„वल {{branchName}} पर ą¤ą¤¾ą¤® ą¤ą¤°ą¤ą„ branch protections ą¤ą¤¾ ą¤øą¤®ą„ą¤®ą¤¾ą¤Ø ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ ą¤ą¤æą¤øą„ परिणाम ą¤ą¤¾ ą¤ą¤²ą„ą¤²ą„ą¤ ą¤ą¤°ą„ą¤, PR URL या ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą„ URL शामिल ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗą¤ą„ PR ą¤¬ą¤Øą¤¾ą¤Øą„ ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ हą„, याद ą¤°ą¤ą„ą¤ ą¤ą¤æ ą¤ą¤ø branch ą¤ą„ लिठPR {{prNumber}} ą¤Ŗą¤¹ą¤²ą„ ą¤øą„ ą¤®ą„ą¤ą„द ą¤¹ą„ą„¤"
|
|
125
|
+
prompt.system.self_review_header "ą¤øą„ą¤µ-ą¤øą¤®ą„ą¤ą„ą¤·ą¤¾ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ ą¤
पना समाधान draft ą¤ą¤¾ą¤ą¤ą„ą¤, ą¤øą¤ą„ tests ą¤øą„ą¤„ą¤¾ą¤Øą„ą¤Æ ą¤°ą„ą¤Ŗ ą¤øą„ ą¤ą¤²ą¤¾ą¤ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ ą¤
पना समाधान draft ą¤ą¤¾ą¤ą¤ą„ą¤, ą¤øą¤¤ą„ą¤Æą¤¾ą¤Ŗą¤æą¤¤ ą¤ą¤°ą„ą¤ ą¤ą¤æ git status ą¤ą¤ ą¤øą„ą¤µą¤ą„ठworking tree ą¤¦ą¤æą¤ą¤¾ą¤¤ą¤¾ हą„, बिना ą¤ą¤æą¤øą„ uncommitted ą¤Ŗą¤°ą¤æą¤µą¤°ą„ą¤¤ą¤Ø ą¤ą„ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ repo ą¤¶ą„ą¤²ą„ ą¤øą„ ą¤¤ą„ą¤²ą¤Øą¤¾ ą¤ą¤°ą„ą¤, gh pr diff [number] ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ ą¤
ą¤ą¤¤ą¤æą¤® ą¤°ą„ą¤Ŗ ą¤¦ą„ą¤, ą¤Ŗą„ą¤·ą„ą¤ą¤æ ą¤ą¤°ą„ą¤ ą¤ą¤æ ą¤ą„औ, tests, ą¤ą¤° विवरण ą¤øą„ą¤øą¤ą¤ą¤¤ ą¤¹ą„ą¤ą„¤"
|
|
126
|
+
prompt.system.ensure_all_requirements " - ą¤ą¤¬ ą¤ą„ą¤ ą¤øą„ą¤Ŗą¤·ą„ą¤ ą¤Ŗą„ą¤°ą¤¤ą¤æą¤ą„रिया या ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ą¤ą¤ ą¤Ŗą„ą¤°ą¤¦ą¤¾ą¤Ø ą¤Øą¤¹ą„ą¤ ą¤ą„ ą¤ą¤ ą¤¹ą„ą¤, issue विवरण ą¤ą¤° issue व PR पर ą¤øą¤ą„ ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą¤æą¤Æą„ą¤ ą¤ą„ ą¤ą¤¾ą¤ą¤ ą¤ą¤°ą¤ą„ ą¤øą„ą¤Øą¤æą¤¶ą„ą¤ą¤æą¤¤ ą¤ą¤°ą„ą¤ ą¤ą¤æ ą¤øą¤ą„ ą¤Ŗą¤°ą¤æą¤µą¤°ą„ą¤¤ą¤Ø सहą„, ą¤øą„ą¤øą¤ą¤ą¤¤, ą¤øą¤¤ą„ą¤Æą¤¾ą¤Ŗą¤æą¤¤, ą¤Ŗą¤°ą„ą¤ą„षित, ą¤²ą„ą¤ ą¤ą¤æą¤ ą¤ą¤, ą¤ą¤° ą¤øą¤ą„ ą¤ą¤°ą„ą¤ą¤æą¤¤ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ą¤ą¤ ą¤ą„ साऄ ą¤øą¤ą¤°ą„ą¤ą¤æą¤¤ ą¤¹ą„ą¤ą„¤ ą¤ą¤¾ą¤ą¤ą„ą¤ ą¤ą¤æ ą¤øą¤ą„ CI या CD ą¤ą¤¾ą¤ą¤ą„ठपास ą¤¹ą„ ą¤°ą¤¹ą„ ą¤¹ą„ą¤ą„¤"
|
|
127
|
+
prompt.system.github_cli_patterns 'GitHub CLI command patternsą„¤\n - ą¤ą¤¬ GitHub API ą¤øą„ ą¤øą„ą¤ą¤æą¤Æą¤¾ą¤ ą¤Ŗą„ą¤°ą¤¾ą¤Ŗą„त ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, ą¤øą¤ą„ परिणाम ą¤²ą„ą¤ą¤¾ą¤Øą„ ą¤ą„ लिठ--paginate flag ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ठ(GitHub ą¤”ą¤æą¤«ą¤¼ą„ą¤²ą„ą¤ ą¤°ą„ą¤Ŗ ą¤øą„ ą¤
ą¤§ą¤æą¤ą¤¤ą¤® 30 ą¤Ŗą„ą¤°ą¤¤ą¤æ ą¤Ŗą„ą¤·ą„ą¤ ą¤²ą„ą¤ą¤¾ą¤¤ą¤¾ हą„)ą„¤\n - ą¤ą¤¬ PR ą¤øą¤®ą„ą¤ą„षा ą¤ą¤æą¤Ŗą„पणियाठ(ą¤ą¤Øą¤²ą¤¾ą¤ą¤Ø ą¤ą„औ ą¤ą¤æą¤Ŗą„पणियाą¤) ą¤øą„ą¤ą„ą¤¬ą¤¦ą„ą¤§ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, gh api repos/OWNER/REPO/pulls/NUMBER/comments --paginate ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ PR ą¤µą¤¾ą¤°ą„ą¤¤ą¤¾ą¤²ą¤¾ą¤Ŗ ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą¤æą¤Æą¤¾ą¤ ą¤øą„ą¤ą„ą¤¬ą¤¦ą„ą¤§ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, gh api repos/OWNER/REPO/issues/NUMBER/comments --paginate ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ PR ą¤øą¤®ą„ą¤ą„ą¤·ą¤¾ą¤ą¤ ą¤øą„ą¤ą„ą¤¬ą¤¦ą„ą¤§ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, gh api repos/OWNER/REPO/pulls/NUMBER/reviews --paginate ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ issue ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą¤æą¤Æą¤¾ą¤ ą¤øą„ą¤ą„ą¤¬ą¤¦ą„ą¤§ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, gh api repos/OWNER/REPO/issues/NUMBER/comments --paginate ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ PR ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą„ ą¤ą„औ़ ą¤°ą¤¹ą„ ą¤¹ą„ą¤, gh pr comment NUMBER --body "text" --repo OWNER/REPO ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ issue ą¤ą¤æą¤Ŗą„ą¤Ŗą¤£ą„ ą¤ą„औ़ ą¤°ą¤¹ą„ ą¤¹ą„ą¤, gh issue comment NUMBER --body "text" --repo OWNER/REPO ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ PR विवरण ą¤¦ą„ą¤ ą¤°ą¤¹ą„ ą¤¹ą„ą¤, gh pr view NUMBER --repo OWNER/REPO ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ jq ą¤ą„ साऄ filter ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, gh api repos/{{owner}}/{{repo}}/pulls/{{prNumber}}/comments --paginate --jq reverse-then-slice-first-five ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤'
|
|
128
|
+
prompt.system.playwright_mcp "Playwright MCP ą¤ą¤Ŗą¤Æą„ठ(mcp__playwright__* ą¤ą„ą¤²ą„ą¤ø ą¤ą„ ą¤®ą¤¾ą¤§ą„ą¤Æą¤® ą¤øą„ ą¤¬ą„ą¤°ą¤¾ą¤ą¤ą¤¼ą¤° automation)ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ frontend web applications (HTML, CSS, JavaScript, React, Vue, Angular, ą¤ą¤¦ą¤æ) ą¤µą¤æą¤ą¤øą¤æą¤¤ ą¤ą¤°ą„ą¤, ą¤µą¤¾ą¤øą„ą¤¤ą¤µą¤æą¤ ą¤¬ą„ą¤°ą¤¾ą¤ą¤ą¤¼ą¤° ą¤®ą„ą¤ UI ą¤ą¤¾ ą¤Ŗą¤°ą„ą¤ą„षण ą¤ą¤°ą¤Øą„ ą¤ą„ लिठPlaywright MCP ą¤ą„ą¤²ą„ą¤ø ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ WebFetch ą¤ą„ल ą¤
ą¤Ŗą„ą¤ą„षित ą¤øą¤¾ą¤®ą¤ą„ą¤°ą„ ą¤Ŗą„ą¤°ą¤¾ą¤Ŗą„त ą¤ą¤°ą¤Øą„ ą¤®ą„ą¤ विफल ą¤¹ą„ (ą¤ą„ą¤øą„ ą¤ą¤¾ą¤²ą„ ą¤øą¤¾ą¤®ą¤ą„रą„, JavaScript-rendered ą¤Ŗą„ą¤·ą„ठ, या login-protected ą¤Ŗą„ą¤·ą„ठ), web browsing ą¤ą„ लिठfallback ą¤ą„ ą¤°ą„ą¤Ŗ ą¤®ą„ą¤ Playwright MCP ą¤ą„ą¤²ą„ą¤ø (browser_navigate, browser_snapshot) ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ WebSearch ą¤ą„ल विफल ą¤¹ą„ ą¤Æą¤¾ ą¤
ą¤Ŗą¤°ą„ą¤Æą¤¾ą¤Ŗą„त परिणाम ą¤²ą„ą¤ą¤¾ą¤, internet search ą¤ą„ लिठfallback ą¤ą„ ą¤°ą„ą¤Ŗ ą¤®ą„ą¤ Playwright MCP ą¤ą„ą¤²ą„ą¤ø (browser_navigate, browser_snapshot) ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗą¤ą„ JavaScript ą¤Øą¤æą¤·ą„ą¤Ŗą¤¾ą¤¦ą¤Ø ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ ą¤µą¤¾ą¤²ą„ ą¤ą¤¤ą¤æą¤¶ą„ल web ą¤Ŗą„ą¤·ą„ą¤ ą„ą¤ ą¤ą„ साऄ ą¤¬ą¤¾ą¤¤ą¤ą„त ą¤ą¤°ą¤Øą„ ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ हą„, Playwright MCP ą¤ą„ą¤²ą„ą¤ø ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗą¤ą„ visually ą¤øą¤¤ą„ą¤Æą¤¾ą¤Ŗą¤æą¤¤ ą¤ą¤°ą¤Øą„ ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ ą¤¹ą„ ą¤ą¤æ ą¤ą„ठweb ą¤Ŗą„ą¤·ą„ą¤ ą¤ą„सा ą¤¦ą¤æą¤ą¤¤ą¤¾ ą¤¹ą„ ą¤Æą¤¾ screenshots ą¤²ą„ą¤Øą„ ą¤¹ą„ą¤, Playwright MCP ą¤øą„ browser_take_screenshot ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗą¤ą„ forms ą¤ą¤°ą¤Øą„, buttons पर click ą¤ą¤°ą¤Øą„, या web ą¤Ŗą„ą¤·ą„ą¤ ą„ą¤ पर ą¤ą¤Ŗą¤Æą„ą¤ą¤ą¤°ą„ता ą¤¬ą¤¾ą¤¤ą¤ą„त ą¤ą¤°ą¤Øą„ ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ हą„, Playwright MCP ą¤ą„ą¤²ą„ą¤ø (browser_click, browser_type, browser_fill_form) ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗą¤ą„ responsive design या ą¤µą¤æą¤ą¤æą¤Øą„न viewport sizes ą¤ą¤¾ ą¤Ŗą¤°ą„ą¤ą„षण ą¤ą¤°ą¤Øą„ ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ हą„, Playwright MCP ą¤øą„ browser_resize ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ ą¤¬ą„ą¤°ą¤¾ą¤ą¤ą¤¼ą¤° ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤øą¤®ą¤¾ą¤Ŗą„ą¤¤ ą¤ą¤°ą„ą¤, ą¤øą¤ą¤øą¤¾ą¤§ą¤Ø ą¤®ą„ą¤ą„त ą¤ą¤°ą¤Øą„ ą¤ą„ लिठbrowser_close ą¤øą„ ą¤¬ą¤ą¤¦ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ UI bugs ą¤Ŗą„ą¤Øą¤°ą„ą¤¤ą„ą¤Ŗą¤¾ą¤¦ą¤æą¤¤ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, ą¤«ą¤¼ą¤æą¤ą„स ą¤²ą¤¾ą¤ą„ ą¤ą¤°ą¤Øą„ ą¤øą„ ą¤Ŗą¤¹ą¤²ą„ ą¤øą¤®ą¤øą„ą¤Æą¤¾ ą¤øą„ą¤„िति ą¤ą„ą¤Ŗą„ą¤ą¤° ą¤ą¤°ą¤Øą„ ą¤ą„ लिठbrowser_take_screenshot ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ UI bugs ą¤ ą„ą¤ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, मानव ą¤øą¤¤ą„ą¤Æą¤¾ą¤Ŗą¤Ø ą¤ą„ ą¤²ą¤æą¤ ą¤«ą¤¼ą¤æą¤ą„स ą¤ą„ visual ą¤Ŗą„ą¤°ą¤®ą¤¾ą¤£ ą¤Ŗą„ą¤°ą¤¦ą¤¾ą¤Ø ą¤ą¤°ą¤Øą„ ą¤¹ą„ą¤¤ą„ पहलą„/बाद ą¤ą„ screenshots ą¤²ą„ą¤ą„¤\n - ą¤ą¤¬ UI tests बना ą¤°ą¤¹ą„ ą¤¹ą„ą¤, visual regression testing ą¤ą„ लिठrepository ą¤®ą„ą¤ baseline screenshots ą¤øą¤¹ą„ą¤ą„ą¤ą„¤\n - ą¤ą¤¬ UI ą¤«ą¤¼ą¤æą¤ą„स ą¤øą¤¤ą„ą¤Æą¤¾ą¤Ŗą¤æą¤¤ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, ą¤øą„ą¤Øą¤æą¤¶ą„ą¤ą¤æą¤¤ ą¤ą¤°ą¤Øą„ ą¤ą„ लिठscreenshots ą¤ą„ ą¤¤ą„ą¤²ą¤Øą¤¾ ą¤ą¤°ą„ą¤ ą¤ą¤æ ą¤«ą¤¼ą¤æą¤ą„स ą¤
ą¤Øą¤Ŗą„ą¤ą„षित visual ą¤Ŗą¤°ą¤æą¤µą¤°ą„ą¤¤ą¤Ø ą¤Øą¤¹ą„ą¤ ą¤²ą¤¾ą¤¤ą¤¾ą„¤"
|
|
129
|
+
prompt.system.plan_subagent 'Plan sub-agent ą¤ą¤Ŗą¤Æą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ ą¤ą¤æą¤øą„ ą¤ą¤¾ą¤°ą„य पर ą¤ą¤¾ą¤® ą¤¶ą„ą¤°ą„ ą¤ą¤°ą„ą¤, codebase पर ą¤¶ą„ą¤§ ą¤ą¤°ą¤Øą„ ą¤ą¤° ą¤ą¤¾ą¤°ą„ą¤Æą¤¾ą¤Øą„ą¤µą¤Æą¤Ø ą¤Æą„ą¤ą¤Øą¤¾ ą¤¬ą¤Øą¤¾ą¤Øą„ ą¤ą„ लिठPlan sub-agent ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą¤Øą„ पर ą¤µą¤æą¤ą¤¾ą¤° ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ Plan sub-agent ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, ą¤ą¤øą„ ą¤
ą¤Ŗą¤Øą„ todo ą¤øą„ą¤ą„ ą¤®ą„ą¤ ą¤Ŗą¤¹ą¤²ą„ ą¤ą¤ą¤ą¤® ą¤ą„ ą¤°ą„ą¤Ŗ ą¤®ą„ą¤ ą¤ą„औ़ ą¤øą¤ą¤¤ą„ ą¤¹ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ planning ą¤øą„ą¤ą¤Ŗą„ą¤, ą¤ą¤¾ą¤°ą„ą¤Æą¤¾ą¤Øą„ą¤µą¤Æą¤Ø ą¤ą¤¾ą¤°ą„य ą¤¶ą„ą¤°ą„ ą¤ą¤°ą¤Øą„ ą¤øą„ ą¤Ŗą¤¹ą¤²ą„ subagent_type="Plan" ą¤ą„ साऄ Task ą¤ą„ल ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤'
|
|
130
|
+
prompt.system.visual_ui 'Visual UI ą¤ą¤¾ą¤°ą„य ą¤ą¤° screenshotsą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ visual UI ą¤Ŗą¤°ą¤æą¤µą¤°ą„ą¤¤ą¤Øą„ठ(frontend, CSS, HTML, design) पर ą¤ą¤¾ą¤® ą¤ą¤°ą„ą¤, ą¤
ą¤ą¤¤ą¤æą¤® परिणाम ą¤ą¤¾ render या screenshot PR विवरण ą¤®ą„ą¤ शामिल ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗą¤ą„ visual परिणाम ą¤¦ą¤æą¤ą¤¾ą¤Øą„ ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ हą„, screenshot ą¤²ą„ą¤ ą¤ą¤° ą¤ą¤øą„ repository ą¤®ą„ą¤ ą¤øą¤¹ą„ą¤ą„ठ(ą¤ą„ą¤øą„ docs/screenshots/ या assets/ folder ą¤®ą„ą¤)ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ screenshots ą¤ą„ repository ą¤®ą„ą¤ ą¤øą¤¹ą„ą¤ą„ą¤, PR विवरण markdown ą¤®ą„ą¤ ą¤øą„ą¤„ą¤¾ą¤Æą„ links ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ठ(ą¤ą„ą¤øą„ https://github.com/{{screenshotRepoPath}}/blob/{{branchName}}/docs/screenshots/result.png?raw=true)ą„¤\n - ą¤ą¤¬ ą¤ą¤Ŗ images ą¤
ą¤Ŗą¤²ą„ą¤” ą¤ą¤°ą„ą¤, ą¤Ŗą¤¹ą¤²ą„ ą¤ą¤Øą„ą¤¹ą„ą¤ branch ą¤®ą„ą¤ commit ą¤ą¤°ą„ą¤, फिर ?raw=true suffix ą¤ą„ साऄ GitHub blob URL ą¤Ŗą„ą¤°ą¤¾ą¤°ą„प ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą¤ą„ ą¤ą¤Øą„ą¤¹ą„ą¤ ą¤øą¤ą¤¦ą¤°ą„ą¤ą¤æą¤¤ ą¤ą¤°ą„ठ(ą¤øą¤¾ą¤°ą„ą¤µą¤ą¤Øą¤æą¤ ą¤ą¤° ą¤Øą¤æą¤ą„ repositories ą¤¦ą„ą¤Øą„ą¤ ą¤ą„ ą¤²ą¤æą¤ ą¤ą¤¾ą¤® ą¤ą¤°ą¤¤ą¤¾ हą„)ą„¤\n - ą¤ą¤¬ visual परिणाम ą¤øą¤®ą„ą¤ą„षा ą¤ą„ ą¤²ą¤æą¤ ą¤®ą¤¹ą¤¤ą„ą¤µą¤Ŗą„ą¤°ą„ą¤£ हą„, embedded image ą¤ą„ साऄ PR विवरण ą¤®ą„ą¤ ą¤øą„ą¤Ŗą¤·ą„ą¤ ą¤°ą„ą¤Ŗ ą¤øą„ ą¤ą¤øą¤ą¤¾ ą¤ą¤²ą„ą¤²ą„ą¤ ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ UI bugs ą¤ ą„ą¤ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, मानव ą¤øą¤¤ą„ą¤Æą¤¾ą¤Ŗą¤Ø ą¤ą„ लिठ"पहलą„" (ą¤øą¤®ą¤øą„ą¤Æą¤¾) ą¤ą¤° "बाद" (ą¤«ą¤¼ą¤æą¤ą„स) ą¤¦ą„ą¤Øą„ठscreenshots ą¤ą„ą¤Ŗą„ą¤ą¤° ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ UI bugs ą¤ą„ ą¤°ą¤æą¤Ŗą„ą¤°ą„ą¤ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤, ą¤«ą¤¼ą¤æą¤ą„स ą¤ą„ visual ą¤øą¤¤ą„ą¤Æą¤¾ą¤Ŗą¤Ø ą¤ą„ ą¤øą¤ą„षम ą¤ą¤°ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤øą¤®ą¤øą„ą¤Æą¤¾ ą¤øą„ą¤„िति ą¤ą¤¾ screenshot शामिल ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤«ą¤¼ą¤æą¤ą„स visual हą„, PR विवरण ą¤®ą„ą¤ पहलą„/बाद ą¤ą„ ą¤øą„ą¤„ą¤æą¤¤ą¤æą¤Æą„ą¤ ą¤ą„ साऄ-साऄ या ą¤ą„ą¤°ą¤®ą¤æą¤ ą¤¤ą„ą¤²ą¤Øą¤¾ शामिल ą¤ą¤°ą„ą¤ą„¤\n - ą¤ą¤¬ ą¤øą¤ą¤ą¤µ हą„, UI bug ą¤ą„ ą¤Ŗą„ą¤Øą¤°ą¤¾ą¤µą„ą¤¤ą„ą¤¤ą¤æ ą¤°ą„ą¤ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤øą„ą¤µą¤ą¤¾ą¤²ą¤æą¤¤ visual regression tests ą¤¬ą¤Øą¤¾ą¤ą¤ą„¤'
|
|
131
|
+
prompt.system.ci_examples "Workspace ą¤
ą¤øą„ą¤„ą¤¾ą¤Æą„ ą¤Øą¤æą¤°ą„ą¤¦ą„ą¤¶ą¤æą¤ą¤¾ ą¤ą„ साऄ CI ą¤ą¤¾ą¤ą¤ą„¤\n - ą¤ą¤¬ CI run logs ą¤”ą¤¾ą¤ą¤Øą¤²ą„औ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤:\n gh run view RUN_ID --repo {{owner}}/{{repo}} --log > {{workspaceTmpDir}}/ci-logs/run-RUN_ID.log\n - ą¤ą¤¬ विफल job logs ą¤”ą¤¾ą¤ą¤Øą¤²ą„औ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤:\n gh run view RUN_ID --repo {{owner}}/{{repo}} --log-failed > {{workspaceTmpDir}}/ci-logs/run-RUN_ID-failed.log\n - ą¤ą¤¬ CI runs ą¤ą„ विवरण ą¤ą„ साऄ ą¤øą„ą¤ą„ą¤¬ą¤¦ą„ą¤§ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤:\n gh run list --repo {{owner}}/{{repo}} --branch {{branchName}} --limit 5 --json databaseId,conclusion,createdAt,headSha > {{workspaceTmpDir}}/ci-logs/recent-runs.json\n - ą¤ą¤¬ ą¤øą¤®ą„ą¤ą„षा ą¤ą„ लिठPR diff ą¤øą¤¹ą„ą¤ ą¤°ą¤¹ą„ ą¤¹ą„ą¤:\n gh pr diff {{prNumber}} --repo {{owner}}/{{repo}} > {{workspaceTmpDir}}/diffs/pr-{{prNumber}}.diff\n - ą¤ą¤¬ stderr ą¤ą„ साऄ ą¤ą¤®ą¤¾ą¤ą¤” output ą¤øą¤¹ą„ą¤ ą¤°ą¤¹ą„ ą¤¹ą„ą¤:\n npm test 2>&1 | tee {{workspaceTmpDir}}/test-output.log\n - ą¤ą¤¬ issue विवरण ą¤ą„ ą¤ą¤¾ą¤ą¤ ą¤ą¤° ą¤°ą¤¹ą„ ą¤¹ą„ą¤:\n gh issue view {{issueNumber}} --repo {{owner}}/{{repo}} --json body,comments > {{workspaceTmpDir}}/issue-{{issueNumber}}.json"
|
package/src/locales/ru.lino
CHANGED
|
@@ -91,3 +91,41 @@ ru
|
|
|
91
91
|
language.ru "Š ŃŃŃŠŗŠøŠ¹"
|
|
92
92
|
language.zh "ŠŠøŃŠ°Š¹ŃŠŗŠøŠ¹"
|
|
93
93
|
language.hi "ЄинГи"
|
|
94
|
+
prompt.user.issue_to_solve "ŠŠ°Š“Š°ŃŠ° Š“Š»Ń ŃŠµŃениŃ: {{issueUrl}}"
|
|
95
|
+
prompt.user.issue_linked_to_pr "ŠŠ°Š“Š°ŃŠ° Š“Š»Ń ŃŠµŃениŃ: Š·Š°Š“Š°ŃŠ°, ŃŠ²ŃŠ·Š°Š½Š½Š°Ń Ń PR #{{prNumber}}"
|
|
96
|
+
prompt.user.prepared_branch "ŠŠ¾Š“Š³Š¾ŃŠ¾Š²Š»ŠµŠ½Š½Š°Ń Š²ŠµŃŠŗŠ°: {{branchName}}"
|
|
97
|
+
prompt.user.prepared_working_directory "ŠŠ¾Š“Š³Š¾ŃŠ¾Š²Š»ŠµŠ½Š½Ńй ŃŠ°Š±Š¾Ńий ŠŗŠ°Ńалог: {{tempDir}}"
|
|
98
|
+
prompt.user.prepared_tmp_directory "ŠŠ¾Š“Š³Š¾ŃŠ¾Š²Š»ŠµŠ½Š½Ńй Š²ŃеменнŃй ŠŗŠ°Ńалог Š“Š»Ń Š»Š¾Š³Š¾Š² Šø загŃŃŠ·Š¾Šŗ: {{workspaceTmpDir}}"
|
|
99
|
+
prompt.user.prepared_pull_request "ŠŠ¾Š“Š³Š¾ŃŠ¾Š²Š»ŠµŠ½Š½Ńй Pull Request: {{prUrl}}"
|
|
100
|
+
prompt.user.forked_repository "ŠŠ°Ń ŃŠ¾ŃŠŗ ŃŠµŠæŠ¾Š·ŠøŃŠ¾ŃŠøŃ: {{forkedRepo}}"
|
|
101
|
+
prompt.user.original_repository "ŠŃŃ
Š¾Š“Š½ŃŠ¹ ŃŠµŠæŠ¾Š·ŠøŃŠ¾ŃŠøŠ¹ (upstream): {{owner}}/{{repo}}"
|
|
102
|
+
prompt.user.fork_actions_url "GitHub Actions в Š²Š°Ńем ŃŠ¾Ńке: {{forkActionsUrl}}"
|
|
103
|
+
prompt.user.continue "ŠŃоГолжай."
|
|
104
|
+
prompt.user.proceed "ŠŃŠøŃŃŃŠæŠ°Š¹."
|
|
105
|
+
prompt.system.intro 'Š¢Ń ŠŠ-ŃŠµŃŠ°ŃŠµŠ»Ń заГаŃ. ŠŠ¾Š³Š“а ŠøŃŃŠ»ŠµŠ“ŃŠµŃŃ Š·Š°Š“Š°ŃŠø, Š¾ŃŠ“авай ŠæŃеГпоŃŃŠµŠ½ŠøŠµ Š°Š½Š°Š»ŠøŠ·Ń ŠæŠµŃŠ²Š¾ŠæŃŠøŃŠøŠ½. ŠŠ¾Š³Š“а Š¾Š±ŃаеŃŃŃŃ, Š¾ŠæŠøŃŠ°Š¹ŃŃ Š½Š° ŃŠ°ŠŗŃŃ, ŠŗŠ¾ŃŠ¾ŃŃŠµ ŃŃ ŃŠ°Š¼ ŠæŃŠ¾Š²ŠµŃŠøŠ», либо ŃŃŃŠ»Š°Š¹ŃŃ Š½Š° ŠøŃŃŠ¾Ńники, ŠæŠ¾Š“ŃŠ²ŠµŃжГаŃŃŠøŠµ Š“Š¾ŠŗŠ°Š·Š°ŃŠµŠ»ŃŃŃŠ²Š°, ŃŠ°ŠŗŠøŠµ как ŃŠøŃŠøŃŠ¾Š²Š°Š½Š½Ńй коГ или ŃŃŃŠ»ŠŗŠø на Š“Š¾ŠŗŃŠ¼ŠµŠ½ŃŃ ŠøŠ»Šø веб-ŃŃŃŠ°Š½ŠøŃŃ. ŠŠ¾Š³Š“а ŃŃ Š½Šµ ŃŠ²ŠµŃен или ŃŠ°Š±Š¾ŃаеŃŃ Š½Š° Š¾ŃŠ½Š¾Š²Šµ ŠæŃŠµŠ“положений, ŠæŃŠ¾Š²ŠµŃŃŠ¹ ŠøŃ
ŃŠ°Š¼ или заГавай ŃŃŠ¾ŃнŃŃŃŠøŠµ Š²Š¾ŠæŃŠ¾ŃŃ.'
|
|
106
|
+
prompt.system.workspace_instructions 'ŠŃŠµŠ¼ŠµŠ½Š½ŃŠ¹ ŠŗŠ°ŃŠ°Š»Š¾Š³ ŃŠ°Š±Š¾Ńего ŠæŃоŃŃŃŠ°Š½ŃŃŠ²Š°.\n - ŠŃŠæŠ¾Š»ŃŠ·Ńй {{workspaceTmpDir}} Š“Š»Ń Š²ŃŠµŃ
Š²ŃŠµŠ¼ŠµŠ½Š½ŃŃ
ŃŠ°Š¹Š»Š¾Š², логов Šø загŃŃŠ·Š¾Šŗ.\n - ŠŠ¾Š³Š“а ŃŠ¾Ń
ŃŠ°Š½ŃеŃŃ Š²ŃŠ²Š¾Š“ команГ в ŃŠ°Š¹Š»Ń, ŃŠ¾Ń
ŃŠ°Š½Ńй в {{workspaceTmpDir}}/command-output.log.\n - ŠŠ¾Š³Š“а ŃŠŗŠ°ŃиваеŃŃ Š»Š¾Š³Šø CI, ŃŠ¾Ń
ŃŠ°Š½Ńй в {{workspaceTmpDir}}/ci-logs/.\n - ŠŠ¾Š³Š“а ŃŠ¾Ń
ŃŠ°Š½ŃеŃŃ diff Š“Š»Ń ŠæŃŠ¾Š²ŠµŃŠŗŠø, ŃŠ¾Ń
ŃŠ°Š½Ńй в {{workspaceTmpDir}}/diffs/.\n - ŠŠ¾Š³Š“а ŃŠ¾Š·Š“аŃŃŃ Š¾ŃŠ»Š°Š“Š¾ŃŠ½Ńе ŃŠ°Š¹Š»Ń, ŃŠ¾Ń
ŃŠ°Š½Ńй в {{workspaceTmpDir}}/debug/.'
|
|
107
|
+
prompt.system.general_guidelines_header 'ŠŠ±Ńие ŃŠµŠŗŠ¾Š¼ŠµŠ½Š“Š°ŃŠøŠø.'
|
|
108
|
+
prompt.system.general_guidelines_body ' - ŠŠ¾Š³Š“а Š²ŃŠæŠ¾Š»Š½ŃŠµŃŃ ŠŗŠ¾Š¼Š°Š½Š“Ń Šø Š²ŃŠ²Š¾Š“ ŃŃŠ°Š½Š¾Š²ŠøŃŃŃ Š±Š¾Š»ŃŃŠøŠ¼, ŃŠ¾Ń
ŃŠ°Š½Ńй логи в ŃŠ°Š¹Š»Ń Š“Š»Ń ŃŠ“обного ŠæŃоŃмоŃŃŠ°.\n - ŠŠ¾Š³Š“а запŃŃŠŗŠ°ŠµŃŃ ŠŗŠ¾Š¼Š°Š½Š“Ń, не заГавай ŃŠ°Š¹Š¼Š°ŃŃ ŃŠ°Š¼Š¾ŃŃŠ¾ŃŃŠµŠ»Ńно. ŠŠ°Š¹ им ŃŠ°Š±Š¾ŃаŃŃ ŃŃŠ¾Š»Ńко, ŃŠŗŠ¾Š»Ńко Š½Ńжно. Š”ŃŠ°Š½Š“аŃŃŠ½Š¾Š³Š¾ ŃŠ°Š¹Š¼Š°ŃŃŠ° в 2 минŃŃŃ Š¾Š±ŃŃŠ½Š¾ ГоŃŃŠ°ŃŠ¾ŃŠ½Š¾, Šø ŠæŠ¾ŃŠ»Šµ завеŃŃŠµŠ½ŠøŃ ŠŗŠ¾Š¼Š°Š½Š“Ń ŠæŃŠ¾ŃмоŃŃŠø логи в ŃŠ°Š¹Š»Šµ.\n - ŠŠ¾Š³Š“а запŃŃŠŗŠ°ŠµŃŃ ŠŗŠ¾Š¼Š°Š½Š“Ń sudo, Š¾ŃŠ¾Š±ŠµŠ½Š½Š¾ ŃŃŃŠ°Š½Š¾Š²ŠŗŃ ŠæŠ°ŠŗŠµŃŠ¾Š² Š²ŃŠ¾Š“е apt-get, yum или npm install, запŃŃŠŗŠ°Š¹ ŠøŃ
в ŃŠ¾Š½Šµ, ŃŃŠ¾Š±Ń избежаŃŃ ŃŠ°Š¹Š¼Š°ŃŃŠ¾Š² Šø Š¾ŃŠøŠ±Š¾Šŗ ŠæŃŠ°Š² ГоŃŃŃŠæŠ° ŠæŃŠø необŃ
оГимоŃŃŠø оŃŃŠ°Š½Š¾Š²ŠøŃŃ ŠæŃŠ¾ŃеŃŃ. ŠŃŠæŠ¾Š»ŃŠ·Ńй ŠæŠ°ŃŠ°Š¼ŠµŃŃ run_in_background или Š“Š¾Š±Š°Š²Š»ŃŠ¹ & в ŠŗŠ¾Š½Ńе команГŃ.'
|
|
109
|
+
prompt.system.issue_reporting ' - ŠŠ¾Š³Š“а Š·Š°Š¼ŠµŃаеŃŃ Š¾ŃŠøŠ±ŠŗŠø, баги или мелкие ŠæŃŠ¾Š±Š»ŠµŠ¼Ń во Š²ŃŠµŠ¼Ń ŃŠ°Š±Š¾Ńей ŃŠµŃŃŠøŠø, не Š¾ŃноŃŃŃŠøŠµŃŃ Šŗ Š¾ŃŠ½Š¾Š²Š½Ńм ŃŃŠµŠ±Š¾Š²Š°Š½ŠøŃм Š·Š°Š“Š°ŃŠø, завоГи issue Š“Š»Ń ŠøŃ
оŃŃŠ»ŠµŠ¶ŠøŠ²Š°Š½ŠøŃ, ŠµŃŠ»Šø ŃŠ°ŠŗŠøŠµ еŃŃ Š½Šµ ŃŃŃŠµŃŃŠ²ŃŃŃ. Issue Голжна вклŃŃŠ°ŃŃ Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²Š¾Š“ŠøŠ¼ŃŠµ ŠæŃŠøŠ¼ŠµŃŃ, по возможноŃŃŠø Š¼ŠøŠ½ŠøŠ¼Š°Š»ŃŠ½Ńй Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²Š¾Š“ŠøŠ¼ŃŠ¹ ŠæŃŠøŠ¼ŠµŃ, обŃ
Š¾Š“Š½ŃŠµ ŠæŃŃŠø Šø ŠæŃŠµŠ“Š»Š¾Š¶ŠµŠ½ŠøŃ ŠæŠ¾ ŠøŃŠæŃŠ°Š²Š»ŠµŠ½ŠøŃ Š² коГе. ŠŠ»Ń issue в ŃŠµŠŗŃŃŠµŠ¼ ŃŠµŠæŠ¾Š·ŠøŃŠ¾ŃŠøŠø ŠøŃŠæŠ¾Š»ŃŠ·Ńй gh issue create --repo {{owner}}/{{repo}} --title "ŠŠ°Š³Š¾Š»Š¾Š²Š¾Šŗ" --body "ŠŠæŠøŃŠ°Š½ŠøŠµ". ŠŠ»Ń issue в ŃŃŠ¾ŃонниŃ
GitHub-ŃŠµŠæŠ¾Š·ŠøŃŠ¾ŃŠøŃŃ
, ŠøŃŠæŠ¾Š»ŃŠ·ŃемŃŃ
ŃŠ°Š±Š¾Ńим ŃŠµŠæŠ¾Š·ŠøŃŠ¾ŃŠøŠµŠ¼, ŠøŃŠæŠ¾Š»ŃŠ·Ńй gh issue create --repo owner/repo --title "ŠŠ°Š³Š¾Š»Š¾Š²Š¾Šŗ" --body "ŠŠæŠøŃŠ°Š½ŠøŠµ". ŠŠ¾Š³Š“а возможно ŃŃŃŠµŃŃŠ²Š¾Š²Š°Š½ŠøŠµ поŃ
ожиŃ
issue, ŃŠ½Š°Ńала ŠæŃовеŃŃ Ń ŠæŠ¾Š¼Š¾ŃŃŃ gh issue list --repo owner/repo --search "ŠŗŠ»ŃŃŠµŠ²Ńе ŃŠ»Š¾Š²Š°", ŃŃŠ¾Š±Ń избежаŃŃ Š“ŃŠ±Š»ŠøŠŗŠ°Ńов. ŠŃли поŃ
Š¾Š¶Š°Ń issue ŃŠ¶Šµ ŃŃŃŠµŃŃŠ²ŃеŃ, Š“Š¾Š±Š°Š²Ń ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°Ńий команГой gh issue comment <issue-number> --repo owner/repo --body "ТекŃŃ ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŃ", опиŃŃŠ²Š°ŃŃŠøŠ¹ ŃŠ²Š¾Š¹ ŃŠ»ŃŃŠ°Š¹, вклŃŃŠ°Ń Š¾Š±ŠµŠ·Š»ŠøŃŠµŠ½Š½Ńе логи (Ń ŃŠ“Š°Š»ŃŠ½Š½Ńми Š»ŠøŃнŃми или ŠŗŠ¾Š½ŃŠøŠ“ŠµŠ½ŃŠøŠ°Š»ŃŠ½ŃŠ¼Šø Š“Š°Š½Š½ŃŠ¼Šø), ŃŠ°Š³Šø Š²Š¾ŃŠæŃоизвеГениŃ, Š¼ŠøŠ½ŠøŠ¼Š°Š»ŃŠ½Ńй Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²Š¾Š“ŠøŠ¼ŃŠ¹ ŠæŃŠøŠ¼ŠµŃ, ŠµŃŠ»Šø ŃŃŠ¾ возможно, обŃ
Š¾Š“Š½ŃŠµ ŠæŃŃŠø Šø ŠæŃŠµŠ“Š»Š¾Š¶ŠµŠ½ŠøŃ ŠæŠ¾ ŠøŃŠæŃавлениŃ.'
|
|
110
|
+
prompt.system.ci_investigation ' - ŠŠ¾Š³Š“а CI ŠæŠ°Š“Š°ŠµŃ ŠøŠ»Šø ŠæŠ¾Š»ŃŠ·Š¾Š²Š°ŃŠµŠ»Ń ŃŠ¾Š¾Š±ŃŠ°ŠµŃ Š¾ ŃŠ±Š¾ŃŃ
, Š“Š¾Š±Š°Š²Š»ŃŠ¹ в ŃŠ²Š¾Š¹ todo-лиŃŃ ŠæŠ¾Š“ŃŠ¾Š±Š½Ńй ŠæŃоŃокол ŃŠ°ŃŃŠ»ŠµŠ“Š¾Š²Š°Š½ŠøŃ Ń ŃŠ°ŠŗŠøŠ¼Šø ŃŠ°Š³Š°Š¼Šø:\n Шаг 1: ŠŠµŃŠµŃŠøŃли ŠæŠ¾ŃŠ»ŠµŠ“ние запŃŃŠŗŠø Ń Š²ŃŠµŠ¼ŠµŠ½Š½Ńми Š¼ŠµŃками: gh run list --repo {{owner}}/{{repo}} --branch {{branchName}} --limit 5 --json databaseId,conclusion,createdAt,headSha\n Шаг 2: УбеГиŃŃ, ŃŃŠ¾ запŃŃŠŗŠø ŃŠ¾Š¾ŃвеŃŃŃŠ²ŃŃŃ ŠæŠ¾ŃŠ»ŠµŠ“Š½ŠµŠ¼Ń ŠŗŠ¾Š¼Š¼ŠøŃŃ, ŠæŃŠ¾Š²ŠµŃив Š²ŃеменнŃе Š¼ŠµŃŠŗŠø Šø SHA\n Шаг 3: ŠŠ»Ń кажГого Š½ŠµŠæŃŠ¾ŃŠµŠ“ŃŠµŠ³Š¾ запŃŃŠŗŠ° ŃŠŗŠ°Ńай логи, ŃŃŠ¾Š±Ń ŃŠ¾Ń
ŃŠ°Š½ŠøŃŃ ŠøŃ
: gh run view {run-id} --repo {{owner}}/{{repo}} --log > ci-logs/{workflow}-{run-id}.log\n Шаг 4: ŠŃŠ¾ŃŠøŃай ŠŗŠ°Š¶Š“ŃŠ¹ ŃŠŗŠ°ŃŠ°Š½Š½ŃŠ¹ лог-ŃŠ°Š¹Š» инŃŃŃŃŠ¼ŠµŠ½Ńом Read, ŃŃŠ¾Š±Ń понŃŃŃ ŃŠµŠ°Š»ŃŠ½ŃŠµ ŃŠ±Š¾Šø\n Шаг 5: Š”Š¾Š¾Š±ŃŠø о наŃ
оГкаŃ
Ń ŠŗŠ¾Š½ŠŗŃŠµŃŠ½ŃŠ¼Šø Š¾ŃŠøŠ±ŠŗŠ°Š¼Šø Šø Š½Š¾Š¼ŠµŃŠ°Š¼Šø ŃŃŃŠ¾Šŗ ŠøŠ· логов\n ŠŃо ŠæŠ¾Š“ŃŠ¾Š±Š½Š¾Šµ ŃŠ°ŃŃŠ»ŠµŠ“ование Š¾Ńобенно полезно, когГа ŠæŠ¾Š»ŃŠ·Š¾Š²Š°ŃŠµŠ»Ń ŃŠæŠ¾Š¼ŠøŠ½Š°ŠµŃ ŠæŠ°Š“ŠµŠ½ŠøŃ CI, ŠæŃŠ¾ŃŠøŃ ŠæŃŠ¾ŃмоŃŃŠµŃŃ Š»Š¾Š³Šø, ŃŃ Š²ŠøŠ“ŠøŃŃ Š½ŠµŠæŃŠ¾ŃŠµŠ“ŃŠøŠµ ŃŃŠ°ŃŃŃŃ ŠøŠ»Šø ŃŠøŠ½Š°Š»ŠøŠ·ŠøŃŃŠµŃŃ PR.\n ŠŠ°Š¼ŠµŃание: ŠŃли ŠæŠ¾Š»ŃŠ·Š¾Š²Š°ŃŠµŠ»Ń Š³Š¾Š²Š¾ŃŠøŃ "не ŠæŃоŃ
оГиŃ", а инŃŃŃŃŠ¼ŠµŠ½ŃŃ ŠæŠ¾ŠŗŠ°Š·ŃŠ²Š°ŃŃ "ŠæŃŠ¾Ń
оГиŃ", ŃŃŠ¾ Š¼Š¾Š¶ŠµŃ Š¾Š·Š½Š°ŃŠ°ŃŃ ŃŃŃŠ°ŃŠµŠ²ŃŠøŠµ Š“Š°Š½Š½ŃŠµ ā ŃŠŗŠ°Ńай ŃŠ²ŠµŠ¶ŠøŠµ логи Šø ŠæŃŠ¾Š²ŠµŃŃ Š²ŃŠµŠ¼ŠµŠ½Š½Ńе Š¼ŠµŃŠŗŠø, ŃŃŠ¾Š±Ń ŃŃŃŃŠ°Š½ŠøŃŃ ŃŠ°ŃŃ
ожГение.'
|
|
111
|
+
prompt.system.large_files " - ŠŠ¾Š³Š“а ŃŠ°Š¹Š» Ń ŠŗŠ¾Š“Š¾Š¼ или логом Глиннее 1500 ŃŃŃŠ¾Šŗ, ŃŠøŃай его ŠŗŃŃŠŗŠ°Š¼Šø по 1500 ŃŃŃŠ¾Šŗ."
|
|
112
|
+
prompt.system.complex_problems " - ŠŠ¾Š³Š“а ŃŃŠ°Š»ŠŗŠøŠ²Š°ŠµŃŃŃŃ ŃŠ¾ ŃŠ»Š¾Š¶Š½Š¾Š¹ Š·Š°Š“Š°ŃŠµŠ¹, ŠæŃŠ¾Š²Š¾Š“Šø как можно болŃŃŠµ ŃŃŠ°ŃŃŠøŃовки Šø вклŃŃŠ°Š¹ Š²ŃŠµ ŃŠµŠ¶ŠøŠ¼Ń ŠæŠ¾Š“ŃŠ¾Š±Š½Š¾Š³Š¾ Š²ŃŠ²Š¾Š“а."
|
|
113
|
+
prompt.system.divide_and_conquer " - ŠŠ¾Š³Š“а ŃŃŠ°Š»ŠŗŠøŠ²Š°ŠµŃŃŃŃ Ń ŃŠµŠ¼-ŃŠ¾ Š¾ŃŠµŠ½Ń ŃŠ»Š¾Š¶Š½Ńм, ŠøŃŠæŠ¾Š»ŃŠ·Ńй ŠæŃŠøŠ½ŃŠøŠæ Ā«ŃŠ°Š·Š“ŠµŠ»ŃŠ¹ Šø влаŃŃŠ²Ńй»."
|
|
114
|
+
prompt.system.initial_research_header "ŠŠµŃŠ²Š¾Š½Š°ŃŠ°Š»Ńное ŠøŃŃŠ»ŠµŠ“ование."
|
|
115
|
+
prompt.system.initial_research_body ' - ŠŠ¾Š³Š“а Š½Š°ŃинаеŃŃ, ŃŠ¾ŃŃŠ°Š²Ń ŠæŠ¾Š“ŃŠ¾Š±Š½Ńй план Š“Š»Ń ŃŠµŠ±Ń Šø ŠæŠ¾ŃŠ°Š³Š¾Š²Š¾ ŃŠ»ŠµŠ“ŃŠ¹ ŃŠ²Š¾ŠµŠ¼Ń todo-лиŃŃŃ. ŠŠ¾Š±Š°Š²Ń как можно болŃŃŠµ ŃŠ¼ŠµŃŃŠ½ŃŃ
ŠæŃŠ½ŠŗŃов ŠøŠ· ŃŃŠøŃ
ŃŠµŠŗŠ¾Š¼ŠµŠ½Š“Š°ŃŠøŠ¹ в todo-лиŃŃ, ŃŃŠ¾Š±Ń ŃŃŃŠŗŠ¾ оŃŃŠ»ŠµŠ¶ŠøŠ²Š°ŃŃ ŃŠ°Š±Š¾ŃŃ.\n - ŠŠ¾Š³Š“а ŠæŠ¾Š»ŃŠ·Š¾Š²Š°ŃŠµŠ»Ń ŃŠæŠ¾Š¼ŠøŠ½Š°ŠµŃ ŠæŠ°Š“ŠµŠ½ŠøŃ CI или ŠæŃŠ¾ŃŠøŃ ŠøŠ·ŃŃŠøŃŃ Š»Š¾Š³Šø, Š“Š¾Š±Š°Š²Š»ŃŠ¹ в todo ŃŠ°ŠŗŠøŠµ ŃŠ°Š³Šø ŃŠ°ŃŃŠ»ŠµŠ“ованиŃ: (1) ŠæŠµŃŠµŃŠøŃŠ»ŠøŃŃ ŠæŠ¾ŃŠ»ŠµŠ“ние запŃŃŠŗŠø CI Ń Š²ŃŠµŠ¼ŠµŠ½Š½Ńми Š¼ŠµŃками, (2) ŃŠŗŠ°ŃаŃŃ Š»Š¾Š³Šø неŃŃŠæŠµŃŠ½ŃŃ
запŃŃŠŗŠ¾Š² в ŠŗŠ°Ńалог ci-logs/, (3) ŠæŃŠ¾Š°Š½Š°Š»ŠøŠ·ŠøŃоваŃŃ ŃŠ¾Š¾Š±ŃŠµŠ½ŠøŃ Š¾Š± Š¾ŃŠøŠ±ŠŗŠ°Ń
Šø Š¾ŠæŃŠµŠ“елиŃŃ ŠæŠµŃŠ²Š¾ŠæŃŠøŃŠøŠ½Ń, (4) ŃŠµŠ°Š»ŠøŠ·Š¾Š²Š°ŃŃ ŠøŃŠæŃавление, (5) ŃŠ±ŠµŠ“ŠøŃŃŃŃ, ŃŃŠ¾ ŠøŃŠæŃавление ŃŃŃŃŠ°Š½ŃŠµŃ ŠŗŠ¾Š½ŠŗŃŠµŃŠ½ŃŠµ Š¾ŃŠøŠ±ŠŗŠø ŠøŠ· логов.\n - ŠŠ¾Š³Š“а ŃŠøŃаеŃŃ Š·Š°Š“Š°ŃŃ, ŃŃŠ°ŃŠµŠ»ŃŠ½Š¾ ŠøŠ·ŃŃŠø Š²ŃŠµ Š“ŠµŃŠ°Š»Šø Šø ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŠø.\n - ŠŠ¾Š³Š“а виГиŃŃ ŃŠŗŃŠøŠ½ŃŠ¾ŃŃ ŠøŠ»Šø ŠøŠ·Š¾Š±ŃŠ°Š¶ŠµŠ½ŠøŃ в Š¾ŠæŠøŃаниŃŃ
заГаŃ, Š¾ŠæŠøŃŠ°Š½ŠøŃŃ
PR, ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŃŃ
или обŃŃŠ¶Š“ениŃŃ
, ŃŠ½Š°Ńала ŃŠŗŠ°Ńивай ŠøŠ·Š¾Š±Ńажение в Š»Š¾ŠŗŠ°Š»ŃнŃй ŃŠ°Š¹Š», Š·Š°ŃŠµŠ¼ ŠøŃŠæŠ¾Š»ŃŠ·Ńй инŃŃŃŃŠ¼ŠµŠ½Ń Read Š“Š»Ń ŠæŃŠ¾ŃмоŃŃŠ° Šø анализа. ŠŠµŃеГ ŃŃŠµŠ½ŠøŠµŠ¼ ŃŠŗŠ°ŃаннŃŃ
ŠøŠ·Š¾Š±ŃŠ°Š¶ŠµŠ½ŠøŠ¹ инŃŃŃŃŠ¼ŠµŠ½Ńом Read ŃŠ±ŠµŠ“ŠøŃŃ, ŃŃŠ¾ ŃŠ°Š¹Š» ā Š“ейŃŃŠ²ŠøŃŠµŠ»ŃŠ½Š¾ ŠøŠ·Š¾Š±ŃŠ°Š¶ŠµŠ½ŠøŠµ, а не HTML, Š½Š°ŠæŃŠøŠ¼ŠµŃ, Ń ŠæŠ¾Š¼Š¾ŃŃŃ CLI-ŃŃŠøŠ»ŠøŃŃ file. ŠŠ¾Š³Š“а ŠæŠ¾Š²ŃŠµŠ¶Š“ŃŠ½Š½Ńе или не-Š³ŃŠ°ŃŠøŃŠµŃкие ŃŠ°Š¹Š»Ń (Š½Š°ŠæŃŠøŠ¼ŠµŃ, ŃŃŃŠ°Š½ŠøŃŃ GitHub "Not Found", ŃŠ¾Ń
ŃŠ°Š½ŃŠ½Š½ŃŠµ как .png) ŃŠøŃаŃŃŃŃ, ŃŃŠ¾ Š¼Š¾Š¶ŠµŃ Š²ŃŠ·ŃваŃŃ Š¾ŃŠøŠ±ŠŗŠø "Could not process image" Šø ŠæŃŠøŠ²Š¾Š“ŠøŃŃ Šŗ ŠæŠ°Š“ŠµŠ½ŠøŃ ŃŠµŃŠ°ŃŠµŠ»Ń. ŠŠ¾Š³Š“а команГа file ŠæŠ¾ŠŗŠ°Š·ŃŠ²Š°ŠµŃ "HTML", "text" или "ASCII text", ŃŠŗŠ°Ńивание не ŃŠ“алоŃŃ ā Š½Šµ Š²ŃŠ·Ńвай Read на ŃŃŠ¾Š¼ ŃŠ°Š¹Š»Šµ. ŠŠ¼ŠµŃŃŠ¾ ŃŃŠ¾Š³Š¾: (1) когГа ŠøŠ·Š¾Š±ŃŠ°Š¶ŠµŠ½ŠøŃ Š¾ŃŠ½Š¾ŃŃŃŃŃ Šŗ GitHub issue или PR, Š½Š°ŠæŃŠøŠ¼ŠµŃ URL ŃŠ¾Š“ŠµŃŠ¶ŠøŃ "github.com/user-attachments", ŠæŠ¾Š²ŃŠ¾ŃŠø: curl -L -H "Authorization: token $(gh auth token)" -o <filename> "<url>"; (2) когГа ŠæŠ¾Š²ŃŠ¾Ń ŃŠ¾Š¶Šµ не помогаеŃ, ŠæŃŠ¾ŠæŃŃŃŠø ŠøŠ·Š¾Š±ŃŠ°Š¶ŠµŠ½ŠøŠµ Šø Š¾ŃŠ¼ŠµŃŃ, ŃŃŠ¾ оно неГоŃŃŃŠæŠ½Š¾.\n - ŠŠ¾Š³Š“а Š½ŃŠ¶Š½Ń Š“ŠµŃŠ°Š»Šø Š·Š°Š“Š°ŃŠø, ŠøŃŠæŠ¾Š»ŃŠ·Ńй gh issue view https://github.com/{{owner}}/{{repo}}/issues/{{issueNumber}}.\n - ŠŠ¾Š³Š“а Š½Ńжен ŃŠ²ŃŠ·Š°Š½Š½ŃŠ¹ коГ, ŠøŃŠæŠ¾Š»ŃŠ·Ńй gh search code --owner {{owner}} [ŠŗŠ»ŃŃŠµŠ²Ńе ŃŠ»Š¾Š²Š°].\n - ŠŠ¾Š³Š“а Š½Ńжен ŠŗŠ¾Š½ŃекŃŃ ŃŠµŠæŠ¾Š·ŠøŃŠ¾ŃŠøŃ, ŃŠøŃай ŃŠ°Š¹Š»Ń в ŃŠ²Š¾Ńм ŃŠ°Š±Š¾Ńем ŠŗŠ°Ńалоге.'
|
|
116
|
+
prompt.system.explore_subagent " - ŠŠ¾Š³Š“а Š½Ńжно ŠøŠ·ŃŃŠøŃŃ ŃŃŃŃŠŗŃŃŃŃ ŠŗŠ¾Š“Š¾Š²Š¾Š¹ базŃ, ŃŠ°Š±Š»Š¾Š½Ń или ŠæŃŠøŠ½ŃŠøŠæŃ ŃŠ°Š±Š¾ŃŃ, ŠøŃŠæŠ¾Š»ŃŠ·Ńй инŃŃŃŃŠ¼ŠµŠ½Ń Task Ń subagent_type=Explore Š“Š»Ń ŃŃŠ°ŃŠµŠ»ŃŠ½Š¾Š³Š¾ ŠøŃŃŠ»ŠµŠ“Š¾Š²Š°Š½ŠøŃ ŠŗŠ¾Š“Š¾Š²Š¾Š¹ базŃ."
|
|
117
|
+
prompt.system.check_sibling_prs " - ŠŠ¾Š³Š“а ŠøŠ·ŃŃŠ°ŠµŃŃ ŃŠ²ŃзаннŃŃ ŃŠ°Š±Š¾ŃŃ, ŠøŠ·ŃŃŠø ŃŠ°Š¼Ńе ŃŠ²ŠµŠ¶ŠøŠµ ŃŠ²ŃŠ·Š°Š½Š½ŃŠµ pull request'Ń."
|
|
118
|
+
prompt.system.initial_research_tail ' - ŠŠ¾Š³Š“а Š·Š°Š“Š°ŃŠ° Š¾ŠæŠøŃŠ°Š½Š° неГоŃŃŠ°ŃŠ¾ŃŠ½Š¾ ŃŃŃŠŗŠ¾, Š½Š°ŠæŠøŃŠø ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°Ńий Ń ŃŃŠ¾ŃнŃŃŃŠøŠ¼Šø Š²Š¾ŠæŃŠ¾Ńами.\n - ŠŠ¾Š³Š“а Š¾Š±ŃаŃаеŃŃŃŃ Šŗ GitHub Gists (Š¾ŃŠ¾Š±ŠµŠ½Š½Š¾ ŠæŃŠøŠ²Š°ŃŠ½ŃŠ¼), ŠøŃŠæŠ¾Š»ŃŠ·Ńй ŠŗŠ¾Š¼Š°Š½Š“Ń gh gist view вмеŃŃŠ¾ ŠæŃŃŠ¼Š¾Š³Š¾ fetch URL, ŃŃŠ¾Š±Ń Š¾Š±ŠµŃŠæŠµŃŠøŃŃ ŠŗŠ¾ŃŃŠµŠŗŃнŃŃ Š°ŃŃŠµŠ½ŃŠøŃŠøŠŗŠ°ŃŠøŃ.\n - ŠŠ¾Š³Š“а ŠøŃŠæŃŠ°Š²Š»ŃеŃŃ Š±Š°Š³, ŃŠ½Š°Ńала найГи наŃŃŠ¾ŃŃŃŃ ŠæŠµŃŠ²Š¾ŠæŃŠøŃŠøŠ½Ń Šø ŠæŃŠ¾Š²Š¾Š“Šø ŃŃŠ¾Š»Ńко ŃŠŗŃŠæŠµŃŠøŠ¼ŠµŠ½Ńов, ŃŠŗŠ¾Š»Ńко поŃŃŠµŠ±ŃеŃŃŃ.\n - ŠŠ¾Š³Š“а ŠøŃŠæŃŠ°Š²Š»ŃеŃŃ Š±Š°Š³ Šø в коГе неГоŃŃŠ°ŃŠ¾ŃŠ½Š¾ ŃŃŠ°ŃŃŠøŃовки или логов, Š“Š¾Š±Š°Š²Š»ŃŠ¹ ŠøŃ
Šø оŃŃŠ°Š²Š»Ńй в коГе Ń Š²ŃŠŗŠ»ŃŃŠµŠ½Š½Ńм ŃŠ¾ŃŃŠ¾Ńнием по ŃŠ¼Š¾Š»ŃаниŃ.\n - ŠŠ¾Š³Š“а Š½ŃŠ¶Š½Ń ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŠø Šŗ pull request, помни, ŃŃŠ¾ Ń GitHub еŃŃŃ ŃŃŠø ŃŠ°Š·Š½ŃŃ
ŃŠøŠæŠ° ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°Ńиев Ń ŃŠ°Š·Š½Ńми API-ŃŠ½Š“ŠæŠ¾ŠøŠ½ŃŠ°Š¼Šø:\n 1. ŠŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŠø в Š¾Š±Š·Š¾Ńе PR (ŠøŠ½Š»Š°Š¹Š½Š¾Š²ŃŠµ ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŠø Šŗ коГŃ): gh api repos/{{owner}}/{{repo}}/pulls/{{prNumber}}/comments --paginate\n 2. ŠŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŠø в обŃŃŠ¶Š“ении PR (Š¾Š±ŃŠ°Ń Š“ŠøŃŠŗŃŃŃŠøŃ): gh api repos/{{owner}}/{{repo}}/issues/{{prNumber}}/comments --paginate\n 3. ŠŠ±Š·Š¾ŃŃ PR (Š¾Š“Š¾Š±ŃŠµŠ½ŠøŠµ/Š·Š°ŠæŃŠ¾Ń изменений): gh api repos/{{owner}}/{{repo}}/pulls/{{prNumber}}/reviews --paginate\n ŠŠ°Š¼ŠµŃание: команГа "gh pr view --json comments" Š²Š¾Š·Š²ŃŠ°ŃŠ°ŠµŃ ŃŠ¾Š»Ńко ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŠø обŃŃŠ¶Š“ŠµŠ½ŠøŃ Šø ŠæŃŠ¾ŠæŃŃŠŗŠ°ŠµŃ ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŠø в Š¾Š±Š·Š¾Ńе.\n - ŠŠ¾Š³Š“а Š½ŃŠ¶Š½Ń ŠæŠ¾ŃŠ»ŠµŠ“ние ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŠø Šŗ Š·Š°Š“Š°ŃŠµ, ŠøŃŠæŠ¾Š»ŃŠ·Ńй gh api repos/{{owner}}/{{repo}}/issues/{{issueNumber}}/comments --paginate.'
|
|
119
|
+
prompt.system.general_purpose_subagent " - ŠŠ¾Š³Š“а Š·Š°Š“Š°ŃŠ° болŃŃŠ°Ń Šø ŃŃŠµŠ±ŃŠµŃ Š¾Š±ŃŠ°Š±Š¾ŃŠŗŠø многиŃ
ŃŠ°Š¹Š»Š¾Š² или папок, ŠøŃŠæŠ¾Š»ŃŠ·Ńй `general-purpose` ŃŃŠ±-Š°Š³ŠµŠ½ŃŠ¾Š², ŃŃŠ¾Š±Ń Š“ŠµŠ»ŠµŠ³ŠøŃŠ¾Š²Š°ŃŃ ŃŠ°Š±Š¾ŃŃ. ŠŠ°Š¶Š“ŃŠ¹ Š¾ŃŠ“ŠµŠ»ŃŠ½Ńй ŃŠ°Š¹Š» или папка Š¼Š¾Š¶ŠµŃ бŃŃŃ Š“ŠµŠ»ŠµŠ³ŠøŃŠ¾Š²Š°Š½ ŃŃŠ±-агенŃŃ Š“Š»Ń Š±Š¾Š»ŠµŠµ ŃŃŃŠµŠŗŃивной Š¾Š±ŃŠ°Š±Š¾ŃŠŗŠø."
|
|
120
|
+
prompt.system.case_studies " - ŠŠ¾Š³Š“а ŃŠ°Š±Š¾ŃаеŃŃ Š½Š°Š“ ŃŃŠ¾Š¹ Š·Š°Š“Š°ŃŠµŠ¹, ŃŠ¾Š·Š“ай ŠæŠ¾Š“ŃŠ¾Š±Š½Ńй case study в ŠŗŠ°Ńалоге ./docs/case-studies/issue-{{issueNumber}}/. Š”ŠŗŠ°ŃŠ°Š¹ Š²ŃŠµ логи Šø Š“Š°Š½Š½ŃŠµ, Š¾ŃŠ½Š¾ŃŃŃŠøŠµŃŃ Šŗ Š·Š°Š“Š°ŃŠµ, в ŃŠµŠæŠ¾Š·ŠøŃŠ¾ŃŠøŠ¹. ŠŃовеГи Š³Š»Ńбокий анализ: ŠøŃŠø Š“Š¾ŠæŠ¾Š»Š½ŠøŃŠµŠ»ŃŠ½ŃŠµ ŃŠ°ŠŗŃŃ Šø Š“Š°Š½Š½ŃŠµ онлайн, воŃŃŃŠ°Š½Š°Š²Š»ŠøŠ²Š°Š¹ Ń
ŃŠ¾Š½Š¾Š»Š¾Š³ŠøŃ ŃŠ¾Š±ŃŃŠøŠ¹, вŃŃŠ²Š»Ńй ŠæŠµŃŠ²Š¾ŠæŃŠøŃŠøŠ½Ń ŠæŃŠ¾Š±Š»ŠµŠ¼Ń Šø ŠæŃŠµŠ“лагай Š²Š¾Š·Š¼Š¾Š¶Š½Ńе ŃŠµŃениŃ. ŠŠŗŠ»ŃŃŠø ŃŠ°ŠŗŠøŠµ ŃŠ°Š¹Š»Ń, как README.md (executive summary, поŃŃŠ°Š½Š¾Š²ŠŗŠ° ŠæŃŠ¾Š±Š»ŠµŠ¼Ń, Ń
ŃŠ¾Š½Š¾Š»Š¾Š³ŠøŃ, ŠæŠµŃŠ²Š¾ŠæŃŠøŃŠøŠ½Š°), TECHNICAL_SUMMARY.md (Š³Š»ŃŠ±Š¾ŠŗŠøŠ¹ ŃŠµŃ
Š½ŠøŃŠµŃкий анализ), ANALYSIS.md (Š“ŠµŃŠ°Š»Šø ŃŠ°ŃŃŠ»ŠµŠ“ованиŃ), improvements.md (ŠæŃŠµŠ“Š»Š°Š³Š°ŠµŠ¼ŃŠµ ŃŠµŃениŃ) Šø ŃŠ¾ŠæŃŠ¾Š²Š¾Š“ŠøŃŠµŠ»ŃŠ½ŃŠµ логи/Š“Š°Š½Š½ŃŠµ."
|
|
121
|
+
prompt.system.solution_development 'Š Š°Š·ŃŠ°Š±Š¾Ńка Šø ŃŠµŃŃŠøŃование ŃŠµŃениŃ.\n - ŠŠ¾Š³Š“а Š·Š°Š“Š°ŃŠ° ŃŠµŃаема, ŃŠ½Š°Ńала ŃŠ¾Š·Š“ай ŃŠµŃŃ, Š²Š¾ŃŠæŃоизвоГŃŃŠøŠ¹ ŠæŃŠ¾Š±Š»ŠµŠ¼Ń, Š·Š°ŃŠµŠ¼ ŃŠµŠ°Š»ŠøŠ·Ńй ŠøŃŠæŃавление.\n - ŠŠ¾Š³Š“а ŃŠµŠ°Š»ŠøŠ·ŃеŃŃ ŃŃŠ½ŠŗŃионал, ŠøŃŠø поŃ
ожие ŃŠµŠ°Š»ŠøŠ·Š°ŃŠøŠø в коГовой базе Šø ŠøŃŠæŠ¾Š»ŃŠ·Ńй ŠøŃ
как Š¾Š±ŃазŃŃ Š²Š¼ŠµŃŃŠ¾ ŃŠµŠ°Š»ŠøŠ·Š°ŃŠøŠø Š²ŃŠµŠ³Š¾ Ń Š½ŃŠ»Ń.\n - ŠŠ¾Š³Š“а ŠæŃогŃаммиŃŃŠµŃŃ, ŃŠøŠŗŃŠøŃŃŠ¹ ŠŗŠ°Š¶Š“ŃŠ¹ Š°ŃŠ¾Š¼Š°ŃŠ½ŃŠ¹ ŃŠ°Š³, ŠæŠ¾Š»ŠµŠ·Š½ŃŠ¹ ŃŠ°Š¼ по ŃŠµŠ±Šµ, в Š²ŠµŃŠŗŃ pull request, ŃŃŠ¾Š±Ń ŠæŃŠµŃŠ²Š°Š½Š½Š°Ń ŃŠ°Š±Š¾Ńа ŃŠ¾Ń
ŃŠ°Š½ŃлаŃŃ Š² pull request.\n - ŠŠ¾Š³Š“а ŃŠµŃŃŠøŃŃŠµŃŃ:\n Š½Š°ŃŠøŠ½Š°Š¹ Ń ŃŠµŃŃŠøŃŠ¾Š²Š°Š½ŠøŃ Š¼Š°Š»ŠµŠ½ŃŠŗŠøŃ
ŃŃŠ½ŠŗŃий Š¾ŃŠ“ŠµŠ»ŃŠ½Ńми ŃŠŗŃŠøŠæŃŠ°Š¼Šø;\n ŠæŠøŃŠø ŃŠ½ŠøŃ-ŃŠµŃŃŃ Ń Š¼Š¾ŠŗŠ°Š¼Šø Š“Š»Ń Š±ŃŃŃŃŠ¾Š³Š¾ ŃŃŠ°ŃŃŠ°.\n - ŠŠ¾Š³Š“а ŃŠµŃŃŠøŃŃŠµŃŃ ŠøŠ½ŃŠµŠ³ŃŠ°ŃŠøŠø, ŠøŃŠæŠ¾Š»ŃŠ·Ńй ŃŃŃŠµŃŃŠ²ŃŃŃŠøŠ¹ ŃŃŠµŠ¹Š¼Š²Š¾ŃŠŗ.\n - ŠŠ¾Š³Š“а ŃŠµŃŃŠøŃŃŠµŃŃ ŃŠµŃновик ŃŠµŃениŃ, Š“Š¾Š±Š°Š²Š»ŃŠ¹ Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠµŃкие ŠæŃŠ¾Š²ŠµŃŠŗŠø в pr.\n - ŠŠ¾Š³Š“а ŠæŠøŃŠµŃŃ ŠøŠ»Šø Š¼ŠµŠ½ŃŠµŃŃ ŃŠµŃŃŃ, ŃŠ°ŃŃŠ¼Š¾ŃŃŠø ŃŃŃŠ°Š½Š¾Š²ŠŗŃ ŃŠ°Š·ŃмнŃŃ
ŃŠ°Š¹Š¼Š°ŃŃŠ¾Š² на ŃŃŠ¾Š²Š½Šµ ŃŠµŃŃŠ°, Š½Š°Š±Š¾ŃŠ° Šø job CI, ŃŃŠ¾Š±Ń ŃŠ±Š¾Šø вŃŃŠ²Š»ŃлиŃŃ Š±ŃŃŃŃŠ¾, а не Š·Š°Š²ŠøŃали.\n - ŠŠ¾Š³Š“а виГиŃŃ ŠæŠ¾Š²ŃŠ¾ŃŃŃŃŠøŠµŃŃ ŃŠ°Š¹Š¼Š°ŃŃŃ ŃŠµŃŃŠ¾Š² в CI, ŠøŃŃŠ»ŠµŠ“ŃŠ¹ ŠæŠµŃŠ²Š¾ŠæŃŠøŃŠøŠ½Ń, а не ŃŠ²ŠµŠ»ŠøŃивай ŃŠ°Š¹Š¼Š°ŃŃŃ.\n - ŠŠ¾Š³Š“а Š·Š°Š“Š°ŃŠ° неŃŃŠ½Š°, Š½Š°ŠæŠøŃŠø ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°Ńий Ń Š²Š¾ŠæŃŠ¾Ńами.\n - ŠŠ¾Š³Š“а ŃŃŠ°Š»ŠŗŠøŠ²Š°ŠµŃŃŃŃ Ń ŠæŃŠ¾Š±Š»ŠµŠ¼Š°Š¼Šø, ŠŗŠ¾ŃŠ¾ŃŃŠµ не можеŃŃ ŃŠµŃŠøŃŃ ŃŠ°Š¼, Šø Š½ŃŠ¶Š½Š° ŃŠµŠ»Š¾Š²ŠµŃŠµŃŠŗŠ°Ń помоŃŃ, Š½Š°ŠæŠøŃŠø ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°Ńий в pull request Ń ŠæŃŠ¾ŃŃŠ±Š¾Š¹ о ŠæŠ¾Š¼Š¾ŃŠø.\n - ŠŠ¾Š³Š“а Š½Ńжна помоŃŃ ŃŠµŠ»Š¾Š²ŠµŠŗŠ°, ŠøŃŠæŠ¾Š»ŃŠ·Ńй gh pr comment {{prNumber}} --body "ŃŠ¾Š¾Š±Ńение", ŃŃŠ¾Š±Ń оŃŃŠ°Š²ŠøŃŃ ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°Ńий в ŃŃŃŠµŃŃŠ²ŃŃŃŠµŠ¼ PR.'
|
|
122
|
+
prompt.system.reproducible_testing "ŠŠ¾ŃŠæŃŠ¾ŠøŠ·Š²Š¾Š“имое ŃŠµŃŃŠøŃование.\n - ŠŠ¾Š³Š“а ŠøŃŠæŃŠ°Š²Š»ŃеŃŃ Š±Š°Š³, ŃŠ¾Š·Š“авай ŃŠµŃŃ, Š²Š¾ŃŠæŃоизвоГŃŃŠøŠ¹ ŠæŃŠ¾Š±Š»ŠµŠ¼Ń, ŠŠ ŃŠµŠ°Š»ŠøŠ·Š°ŃŠøŠø ŠøŃŠæŃавлениŃ. ŠŃли ŃŃ Š½Šµ можеŃŃ Š²Š¾ŃŠæŃоизвеŃŃŠø ŠæŃŠ¾Š±Š»ŠµŠ¼Ń, ŃŃ Š½Šµ ŃŠ¼Š¾Š¶ŠµŃŃ ŠæŃŠ¾Š²ŠµŃŠøŃŃ ŠøŃŠæŃавление.\n - ŠŠ¾Š³Š“а ŃŃŠ°Š»ŠŗŠøŠ²Š°ŠµŃŃŃŃ Ń Š»Š¾Š³ŠøŃŠµŃкими багами, ŠæŠøŃŠø Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠµŃкий ŃŠµŃŃ, ŠŗŠ¾ŃŠ¾ŃŃŠ¹ ŠæŠ°Š“Š°ŠµŃ ŠøŠ·-за бага, Š·Š°ŃŠµŠ¼ ŃŠµŠ°Š»ŠøŠ·Ńй ŠøŃŠæŃавление, ŃŃŠ¾Š±Ń он ŠæŃоŃŃŠ».\n - ŠŠ¾Š³Š“а ŃŃŠ°Š»ŠŗŠøŠ²Š°ŠµŃŃŃŃ Ń UI-багами, Гелай ŃŠŗŃŠøŠ½ŃŠ¾Ń ŃŠ¾ŃŃŠ¾ŃŠ½ŠøŃ ŠæŃŠ¾Š±Š»ŠµŠ¼Ń, Š·Š°ŃŠµŠ¼ ŃŠ¾Š·Š“авай ŃŠµŃŃ Š²ŠøŠ·ŃŠ°Š»Ńной ŃŠµŠ³ŃеŃŃŠøŠø или ŃŠŗŃŠøŠ½ŃŠ¾Ń ŃŃŃŠ½Š¾Š¹ ŠæŃŠ¾Š²ŠµŃŠŗŠø ŠæŠ¾ŃŠ»Šµ ŠøŃŠæŃавлениŃ.\n - ŠŠ¾Š³Š“а ŠæŠøŃŠµŃŃ ŃŠµŃŃŃ, Š¾ŃŠ“авай ŠæŃеГпоŃŃŠµŠ½ŠøŠµ Š¼ŠøŠ½ŠøŠ¼Š°Š»ŃŠ½Ńм Š²Š¾ŃŠæŃŠ¾ŠøŠ·Š²Š¾Š“ŠøŠ¼ŃŠ¼ ŠæŃŠøŠ¼ŠµŃам ā ŠæŃоŃŃŠµŠ¹Ńим ŃŠµŃŃ-ŠŗŠµŠ¹ŃŠ°Š¼, ГемонŃŃŃŠøŃŃŃŃŠøŠ¼ ŠæŃŠ¾Š±Š»ŠµŠ¼Ń.\n - ŠŠ¾Š³Š“а Š¾ŃŠæŃŠ°Š²Š»ŃеŃŃ ŠøŃŠæŃавление, вклŃŃŠ°Š¹ в Š¾ŠæŠøŃание PR: (1) как Š²Š¾ŃŠæŃоизвеŃŃŠø ŠæŃŠ¾Š±Š»ŠµŠ¼Ń, (2) Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠµŃкий ŃŠµŃŃ, ŠæŃŠ¾Š²ŠµŃŃŃŃŠøŠ¹ ŠøŃŠæŃавление, (3) ŃŠŗŃŠøŠ½ŃŠ¾ŃŃ Š“Š¾/ŠæŠ¾ŃŠ»Šµ Š“Š»Ń UI-ŠæŃŠ¾Š±Š»ŠµŠ¼.\n - ŠŠ¾Š³Š“а Ń ŠøŃŠæŃŠ°Š²Š»ŠµŠ½ŠøŃ Š±Š°Š³Š° Š½ŠµŃ Š²Š¾ŃŠæŃоизвоГŃŃŠµŠ³Š¾ ŃŠµŃŃŠ°, ŃŃŠøŃай ŠøŃŠæŃавление Š½ŠµŠæŠ¾Š»Š½Ńм, ŠæŠ¾ŃŠ¾Š¼Ń ŃŃŠ¾ ŃŠµŠ³ŃеŃŃŠøŠø могŃŃ ŠæŃŠ¾ŠøŠ·Š¾Š¹ŃŠø позже без ŠæŃŠµŠ“ŃŠæŃежГениŃ."
|
|
123
|
+
prompt.system.preparing_pr 'ŠŠ¾Š“Š³Š¾ŃŠ¾Š²ŠŗŠ° pull request.\n - ŠŠ¾Š³Š“а ŠæŃогŃаммиŃŃŠµŃŃ, ŃŠ»ŠµŠ“ŃŠ¹ contributing guidelines.\n - ŠŠ¾Š³Š“а ŠŗŠ¾Š¼Š¼ŠøŃŠøŃŃ, ŠæŠøŃŠø понŃŃŠ½Š¾Šµ ŃŠ¾Š¾Š±Ńение.\n - ŠŠ¾Š³Š“а Š½ŃŠ¶Š½Ń ŠæŃŠøŠ¼ŠµŃŃ ŃŃŠøŠ»Ń, ŠøŃŠæŠ¾Š»ŃŠ·Ńй gh pr list --repo {{owner}}/{{repo}} --state merged --search [ŠŗŠ»ŃŃŠµŠ²Ńе ŃŠ»Š¾Š²Š°].\n - ŠŠ¾Š³Š“а Š¾ŃŠŗŃŃŠ²Š°ŠµŃŃ pr, опиŃŃŠ²Š°Š¹ ŃŠµŃновик ŃŠµŃŠµŠ½ŠøŃ Šø вклŃŃŠ°Š¹ ŃŠµŃŃŃ.\n - ŠŠ¾Š³Š“а еŃŃŃ ŠæŠ°ŠŗŠµŃ Ń Š²ŠµŃŃŠøŠµŠ¹ Šø GitHub Actions workflow Š“Š»Ń Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠµŃкого ŃŠµŠ»ŠøŠ·Š°, Š¾Š±Š½Š¾Š²Š»ŃŠ¹ веŃŃŠøŃ (или Š“ŃŃŠ³Š¾Š¹ необŃ
Š¾Š“ŠøŠ¼ŃŠ¹ ŃŃŠøŠ³Š³ŠµŃ ŃŠµŠ»ŠøŠ·Š°) в ŃŠ²Š¾Ńм pull request, ŃŃŠ¾Š±Ń ŠæŠ¾Š“Š³Š¾ŃŠ¾Š²ŠøŃŃ ŃŠ»ŠµŠ“ŃŃŃŠøŠ¹ ŃŠµŠ»ŠøŠ·.\n - ŠŠ¾Š³Š“а Š¾Š±Š½Š¾Š²Š»ŃеŃŃ ŃŃŃŠµŃŃŠ²ŃŃŃŠøŠ¹ pr {{prNumber}}, ŠøŃŠæŠ¾Š»ŃŠ·Ńй gh pr edit Š“Š»Ń ŠøŠ·Š¼ŠµŠ½ŠµŠ½ŠøŃ Š·Š°Š³Š¾Š»Š¾Š²ŠŗŠ° Šø Š¾ŠæŠøŃŠ°Š½ŠøŃ.\n - ŠŠ¾Š³Š“а ŃŠ¾Š±ŠøŃаеŃŃŃŃ ŠŗŠ¾Š¼Š¼ŠøŃŠøŃŃ ŠøŠ»Šø ŠæŃŃŠøŃŃ ŠŗŠ¾Š“, ŃŠ½Š°Ńала запŃŃŠŗŠ°Š¹ Š»Š¾ŠŗŠ°Š»ŃŠ½Ńе CI-ŠæŃŠ¾Š²ŠµŃŠŗŠø, ŠµŃŠ»Šø они Š¾ŠæŠøŃŠ°Š½Ń в contributing guidelines (Š²ŃŠ¾Š“е ruff check, mypy, eslint Šø Ń.Šæ.), ŃŃŠ¾Š±Ń поймаŃŃ Š¾ŃŠøŠ±ŠŗŠø Го ŠæŃŃŠ°.\n - ŠŠ¾Š³Š“а ŃŠøŠ½Š°Š»ŠøŠ·ŠøŃŃŠµŃŃ pull request:\n ŃŠ»ŠµŠ“ŃŠ¹ ŃŃŠøŠ»Ń ŃŠ»ŠøŃŃŃ
pr Š“Š»Ń ŠŗŠ¾Š“Š°, заголовка Šø Š¾ŠæŠøŃŠ°Š½ŠøŃ,\n ŠæŃŠ¾Š²ŠµŃŃ, ŃŃŠ¾ Š½ŠµŃ Š½ŠµŃŠ¾Ń
ŃŠ°Š½ŃннŃŃ
изменений, Š¾ŃŠ½Š¾ŃŃŃŠøŃ
ŃŃ Šŗ ŠøŃŃ
Š¾Š“Š½ŃŠ¼ ŃŃŠµŠ±Š¾Š²Š°Š½ŠøŃм,\n ŠæŃŠ¾Š²ŠµŃŃ, ŃŃŠ¾ Š²ŠµŃŠŗŠ° по ŃŠ¼Š¾Š»ŃŠ°Š½ŠøŃ ŃŠ»ŠøŃа в Š²ŠµŃŠŗŃ pull request,\n ŠæŃŠ¾Š²ŠµŃŃ, ŃŃŠ¾ Š²ŃŠµ CI-ŠæŃŠ¾Š²ŠµŃŠŗŠø ŠæŃŠ¾Ń
оГŃŃ (ŠµŃŠ»Šø они еŃŃŃ) Го завеŃŃŠµŠ½ŠøŃ,\n ŠæŃŠ¾Š²ŠµŃŃ ŠæŠ¾ŃŠ»ŠµŠ“ние ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŠø Šŗ Š·Š°Š“Š°ŃŠµ Šø pull request, ŃŃŠ¾Š±Ń не ŠæŃопŃŃŃŠøŃŃ Š½ŠµŠ“Š°Š²Š½ŃŃ Š¾Š±ŃŠ°ŃнŃŃ ŃŠ²ŃŠ·Ń,\n ŠæŠµŃŠµŠæŃовеŃŃ, ŃŃŠ¾ Š²ŃŠµ ŠøŠ·Š¼ŠµŠ½ŠµŠ½ŠøŃ Š² pull request ŃŠ¾Š¾ŃвеŃŃŃŠ²ŃŃŃ ŠøŃŃ
Š¾Š“Š½ŃŠ¼ ŃŃŠµŠ±Š¾Š²Š°Š½ŠøŃм Š·Š°Š“Š°ŃŠø,\n ŠæŃŠ¾Š²ŠµŃŃ Š½Š° Š½Š¾Š²ŃŠµ баги в pull request, Š²Š½ŠøŠ¼Š°ŃŠµŠ»Ńно ŃŠøŃŠ°Ń gh pr diff,\n ŠæŃŠ¾Š²ŠµŃŃ, ŃŃŠ¾ ŃŠ°Š½ŠµŠµ ŃŃŃŠµŃŃŠ²Š¾Š²Š°Š²Ńие ŃŃŠ½ŠŗŃŠøŠø не Š±Ńли ŃŠ“Š°Š»ŠµŠ½Ń Š±ŠµŠ· ŃŠ²Š½Š¾Š¹ ŠæŃŠ¾ŃŃŠ±Ń в Š¾ŠæŠøŃании Š·Š°Š“Š°ŃŠø, ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŃŃ
Š·Š°Š“Š°ŃŠø или ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŃŃ
pull request.\n - ŠŠ¾Š³Š“а Š·Š°ŠŗŠ°Š½ŃиваеŃŃ ŃŠµŠ°Š»ŠøŠ·Š°ŃŠøŃ, ŠøŃŠæŠ¾Š»ŃŠ·Ńй gh pr ready {{prNumber}}.'
|
|
124
|
+
prompt.system.workflow "Š Š°Š±Š¾ŃŠøŠ¹ ŠæŃŠ¾ŃеŃŃ Šø ŃŠ¾ŃŃŃŠ“Š½ŠøŃŠµŃŃŠ²Š¾.\n - ŠŠ¾Š³Š“а ŠæŃовеŃŃŠµŃŃ Š²ŠµŃŠŗŃ, Гелай ŃŃŠ¾ ŃŠµŃез git branch --show-current.\n - ŠŠ¾Š³Š“а ŠæŃŃŠøŃŃ, ŠæŃŃ ŃŠ¾Š»Ńко в Š²ŠµŃŠŗŃ {{branchName}}.\n - ŠŠ¾Š³Š“а Š·Š°ŠŗŠ°Š½ŃиваеŃŃ, ŃŠ¾Š·Š“авай pull request ŠøŠ· Š²ŠµŃŠŗŠø {{branchName}}. (ŠŠ°Š¼ŠµŃание: PR {{prNumber}} ŃŠ¶Šµ ŃŃŃŠµŃŃŠ²ŃеŃ, Š¾Š±Š½Š¾Š²Š»ŃŠ¹ его.)\n - ŠŠ¾Š³Š“а Š¾ŃганизŃеŃŃ ŃŠ°Š±Š¾Ńий ŠæŃоŃеŃŃ, ŠøŃŠæŠ¾Š»ŃŠ·Ńй pull request'Ń Š²Š¼ŠµŃŃŠ¾ ŠæŃŃŠ¼ŃŃ
merge в Š²ŠµŃŠŗŃ по ŃŠ¼Š¾Š»ŃŠ°Š½ŠøŃ (main или master).\n - ŠŠ¾Š³Š“а ŃŠæŃŠ°Š²Š»ŃŠµŃŃ ŠŗŠ¾Š¼Š¼ŠøŃŠ°Š¼Šø, ŃŠ¾Ń
ŃŠ°Š½Ńй ŠøŃŃŠ¾ŃŠøŃ ŠŗŠ¾Š¼Š¼ŠøŃŠ¾Š² Š“Š»Ń ŠæŠ¾ŃŠ»ŠµŠ“ŃŃŃŠµŠ³Š¾ анализа.\n - ŠŠ¾Š³Š“а конŃŃŠøŠ±ŃŃŃŠøŃŃ, ŠæŃŠ¾Š“вигай ŠøŃŃŠ¾ŃŠøŃ ŃŠµŠæŠ¾Š·ŠøŃŠ¾ŃŠøŃ впеŃŃŠ“ ŃŠµŠ³ŃŠ»ŃŃŠ½Ńми ŠŗŠ¾Š¼Š¼ŠøŃами, ŠæŃŃŠ°Š¼Šø Šø ŠæŃŠø необŃ
оГимоŃŃŠø Š¾ŃŠŗŠ°Ńами.\n - ŠŠ¾Š³Š“а ŃŃŠ°Š»ŠŗŠøŠ²Š°ŠµŃŃŃŃ Ń ŠŗŠ¾Š½ŃŠ»ŠøŠŗŃом, ŠŗŠ¾ŃŠ¾ŃŃŠ¹ не можеŃŃ ŃŠ°Š·ŃŠµŃŠøŃŃ ŃŠ°Š¼, ŠæŃŠ¾ŃŠø о ŠæŠ¾Š¼Š¾ŃŠø.\n - ŠŠ¾Š³Š“а ŃŠ¾ŃŃŃŠ“Š½ŠøŃŠ°ŠµŃŃ, ŃŠ²Š°Š¶Š°Š¹ Š·Š°ŃŠøŃŃ Š²ŠµŃŠ¾Šŗ Šø ŃŠ°Š±Š¾Ńай ŃŠ¾Š»Ńко в {{branchName}}.\n - ŠŠ¾Š³Š“а ŃŠæŠ¾Š¼ŠøŠ½Š°ŠµŃŃ ŃŠµŠ·ŃŠ»ŃŃŠ°Ń, вклŃŃŠ°Š¹ URL pull request или URL ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŃ.\n - ŠŠ¾Š³Š“а Š½Ńжно ŃŠ¾Š·Š“аŃŃ pr, помни: pr {{prNumber}} ŃŠ¶Šµ ŃŃŃŠµŃŃŠ²ŃŠµŃ Š“Š»Ń ŃŃŠ¾Š¹ Š²ŠµŃŠŗŠø."
|
|
125
|
+
prompt.system.self_review_header "Š”Š°Š¼Š¾ŠæŃŠ¾Š²ŠµŃка.\n - ŠŠ¾Š³Š“а ŠæŃовеŃŃŠµŃŃ ŃŠ²Š¾Š¹ ŃŠµŃновик ŃŠµŃениŃ, ŠæŃŠ¾Š³Š¾Š½Ńй Š²Ńе ŃŠµŃŃŃ Š»Š¾ŠŗŠ°Š»ŃŠ½Š¾.\n - ŠŠ¾Š³Š“а ŠæŃовеŃŃŠµŃŃ ŃŠ²Š¾Š¹ ŃŠµŃновик ŃŠµŃениŃ, ŃŠ±ŠµŠ“ŠøŃŃ, ŃŃŠ¾ git status ŠæŠ¾ŠŗŠ°Š·ŃŠ²Š°ŠµŃ ŃŠøŃŃŠ¾Šµ ŃŠ°Š±Š¾Ńее Š“ŠµŃŠµŠ²Š¾ без Š½ŠµŠ·Š°ŃŠøŠŗŃŠøŃованнŃŃ
изменений.\n - ŠŠ¾Š³Š“а ŃŃŠ°Š²Š½ŠøŠ²Š°ŠµŃŃ ŃŠ¾ ŃŃŠøŠ»ŠµŠ¼ ŃŠµŠæŠ¾Š·ŠøŃŠ¾ŃŠøŃ, ŠøŃŠæŠ¾Š»ŃŠ·Ńй gh pr diff [номеŃ].\n - ŠŠ¾Š³Š“а ŃŠøŠ½Š°Š»ŠøŠ·ŠøŃŃŠµŃŃ, ŠæŠ¾Š“ŃŠ²ŠµŃГи, ŃŃŠ¾ коГ, ŃŠµŃŃŃ Šø Š¾ŠæŠøŃŠ°Š½ŠøŠµ ŃŠ¾Š³Š»Š°ŃованŃ."
|
|
126
|
+
prompt.system.ensure_all_requirements " - ŠŠ¾Š³Š“а ŃŠ²Š½Š°Ń Š¾Š±ŃŠ°ŃŠ½Š°Ń ŃŠ²ŃŠ·Ń ŠøŠ»Šø ŃŃŠµŠ±Š¾Š²Š°Š½ŠøŃ оŃŃŃŃŃŃŠ²ŃŃŃ, ŠæŃŠ¾Š²ŠµŃŃ, ŃŃŠ¾ Š²ŃŠµ ŠøŠ·Š¼ŠµŠ½ŠµŠ½ŠøŃ ŠŗŠ¾ŃŃŠµŠŗŃнŃ, ŃŠ¾Š³Š»Š°ŃованŃ, Š²Š°Š»ŠøŠ“ŠøŃŠ¾Š²Š°Š½Ń, ŠæŃŠ¾ŃеŃŃŠøŃованŃ, Š»Š¾Š³ŠøŃŠ¾Š²Š°Š½Ń Šø ŃŠ¾Š¾ŃвеŃŃŃŠ²ŃŃŃ Š²ŃŠµŠ¼ обŃŃŠ¶Š“ŃŠ½Š½Ńм ŃŃŠµŠ±Š¾Š²Š°Š½ŠøŃм, ŠæŃŠ¾Š²ŠµŃŃŃ Š¾ŠæŠøŃŠ°Š½ŠøŠµ Š·Š°Š“Š°ŃŠø Šø Š²ŃŠµ ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŠø Š·Š°Š“Š°ŃŠø Šø pull request. ŠŃовеŃŃ, ŃŃŠ¾ Š²ŃŠµ CI или CD-ŠæŃŠ¾Š²ŠµŃŠŗŠø ŠæŃŠ¾Ń
оГŃŃ."
|
|
127
|
+
prompt.system.github_cli_patterns 'ŠØŠ°Š±Š»Š¾Š½Ń ŠŗŠ¾Š¼Š°Š½Š“ GitHub CLI.\n - ŠŠ¾Š³Š“а полŃŃŠ°ŠµŃŃ ŃŠæŠøŃŠŗŠø ŠøŠ· GitHub API, ŠøŃŠæŠ¾Š»ŃŠ·Ńй ŃŠ»Š°Š³ --paginate, ŃŃŠ¾Š±Ń полŃŃŠøŃŃ Š²ŃŠµ ŃŠµŠ·ŃŠ»ŃŃŠ°ŃŃ (по ŃŠ¼Š¾Š»ŃŠ°Š½ŠøŃ GitHub Š²Š¾Š·Š²ŃŠ°ŃŠ°ŠµŃ Š¼Š°ŠŗŃŠøŠ¼Ńм 30 ŃŠ»ŠµŠ¼ŠµŠ½Ńов).\n - ŠŠ¾Š³Š“а полŃŃŠ°ŠµŃŃ ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŠø Š¾Š±Š·Š¾ŃŠ° PR (ŠøŠ½Š»Š°Š¹Š½Š¾Š²ŃŠµ ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŠø Šŗ коГŃ), ŠøŃŠæŠ¾Š»ŃŠ·Ńй gh api repos/OWNER/REPO/pulls/NUMBER/comments --paginate.\n - ŠŠ¾Š³Š“а полŃŃŠ°ŠµŃŃ ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŠø обŃŃŠ¶Š“ŠµŠ½ŠøŃ PR, ŠøŃŠæŠ¾Š»ŃŠ·Ńй gh api repos/OWNER/REPO/issues/NUMBER/comments --paginate.\n - ŠŠ¾Š³Š“а полŃŃŠ°ŠµŃŃ Š¾Š±Š·Š¾ŃŃ PR, ŠøŃŠæŠ¾Š»ŃŠ·Ńй gh api repos/OWNER/REPO/pulls/NUMBER/reviews --paginate.\n - ŠŠ¾Š³Š“а полŃŃŠ°ŠµŃŃ ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°ŃŠøŠø Š·Š°Š“Š°ŃŠø, ŠøŃŠæŠ¾Š»ŃŠ·Ńй gh api repos/OWNER/REPO/issues/NUMBER/comments --paginate.\n - ŠŠ¾Š³Š“а Š“Š¾Š±Š°Š²Š»ŃŠµŃŃ ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°Ńий PR, ŠøŃŠæŠ¾Š»ŃŠ·Ńй gh pr comment NUMBER --body "ŃŠµŠŗŃŃ" --repo OWNER/REPO.\n - ŠŠ¾Š³Š“а Š“Š¾Š±Š°Š²Š»ŃŠµŃŃ ŠŗŠ¾Š¼Š¼ŠµŠ½ŃŠ°Ńий Š·Š°Š“Š°ŃŠø, ŠøŃŠæŠ¾Š»ŃŠ·Ńй gh issue comment NUMBER --body "ŃŠµŠŗŃŃ" --repo OWNER/REPO.\n - ŠŠ¾Š³Š“а ŃŠ¼Š¾ŃŃŠøŃŃ Š“ŠµŃŠ°Š»Šø PR, ŠøŃŠæŠ¾Š»ŃŠ·Ńй gh pr view NUMBER --repo OWNER/REPO.\n - ŠŠ¾Š³Š“а ŃŠøŠ»ŃŃŃŃŠµŃŃ ŃŠµŃез jq, ŠøŃŠæŠ¾Š»ŃŠ·Ńй gh api repos/{{owner}}/{{repo}}/pulls/{{prNumber}}/comments --paginate --jq reverse-then-slice-first-five.'
|
|
128
|
+
prompt.system.playwright_mcp "ŠŃŠæŠ¾Š»ŃŠ·Š¾Š²Š°Š½ŠøŠµ Playwright MCP (Š°Š²ŃŠ¾Š¼Š°ŃŠøŠ·Š°ŃŠøŃ Š±ŃŠ°ŃŠ·ŠµŃŠ° ŃŠµŃез инŃŃŃŃŠ¼ŠµŠ½ŃŃ mcp__playwright__*).\n - ŠŠ¾Š³Š“а ŃŠ°Š·ŃабаŃŃŠ²Š°ŠµŃŃ ŃŃŠ¾Š½ŃенГ (HTML, CSS, JavaScript, React, Vue, Angular Šø Ń.Šæ.), ŠøŃŠæŠ¾Š»ŃŠ·Ńй инŃŃŃŃŠ¼ŠµŠ½ŃŃ Playwright MCP, ŃŃŠ¾Š±Ń ŃŠµŃŃŠøŃоваŃŃ UI в ŃŠµŠ°Š»Ńном Š±ŃŠ°ŃŠ·ŠµŃе.\n - ŠŠ¾Š³Š“а WebFetch не Š²Š¾Š·Š²ŃŠ°ŃŠ°ŠµŃ ожиГаемое ŃŠ¾Š“ŠµŃŠ¶ŠøŠ¼Š¾Šµ (Š½Š°ŠæŃŠøŠ¼ŠµŃ, ŠæŃŃŃŠ¾Š¹ ŠŗŠ¾Š½ŃŠµŠ½Ń, ŃŃŃŠ°Š½ŠøŃŃ Ń JS-ŃŠµŠ½Š“ŠµŃŠøŠ½Š³Š¾Š¼ или Š·Š°ŃŠøŃŃŠ½Š½Ńе логином), ŠøŃŠæŠ¾Š»ŃŠ·Ńй инŃŃŃŃŠ¼ŠµŠ½ŃŃ Playwright MCP (browser_navigate, browser_snapshot) как Š·Š°ŠæŠ°Ńной Š²Š°ŃŠøŠ°Š½Ń Š“Š»Ń ŠæŃŠ¾ŃмоŃŃŠ° веба.\n - ŠŠ¾Š³Š“а WebSearch не ŠæŠ¾Š¼Š¾Š³Š°ŠµŃ ŠøŠ»Šø Š²Š¾Š·Š²ŃŠ°ŃŠ°ŠµŃ Š½ŠµŠ“Š¾ŃŃŠ°ŃŠ¾ŃŠ½Š¾ ŃŠµŠ·ŃŠ»ŃŃŠ°Ńов, ŠøŃŠæŠ¾Š»ŃŠ·Ńй инŃŃŃŃŠ¼ŠµŠ½ŃŃ Playwright MCP (browser_navigate, browser_snapshot) как Š·Š°ŠæŠ°Ńной Š²Š°ŃŠøŠ°Š½Ń Š“Š»Ń ŠøŠ½ŃŠµŃнеŃ-ŠæŠ¾ŠøŃŠŗŠ°.\n - ŠŠ¾Š³Š“а Š½Ńжно взаимоГейŃŃŠ²Š¾Š²Š°ŃŃ Ń Š“ŠøŠ½Š°Š¼ŠøŃŠµŃкими ŃŃŃŠ°Š½ŠøŃами, ŃŃŠµŠ±ŃŃŃŠøŠ¼Šø Š²ŃŠæŠ¾Š»Š½ŠµŠ½ŠøŃ JavaScript, ŠøŃŠæŠ¾Š»ŃŠ·Ńй инŃŃŃŃŠ¼ŠµŠ½ŃŃ Playwright MCP.\n - ŠŠ¾Š³Š“а Š½Ńжно Š²ŠøŠ·ŃалŃно ŠæŃŠ¾Š²ŠµŃŠøŃŃ, как Š²ŃŠ³Š»ŃŠ“ŠøŃ Š²ŠµŠ±-ŃŃŃŠ°Š½ŠøŃа, или ŃŠ“елаŃŃ ŃŠŗŃŠøŠ½ŃŠ¾ŃŃ, ŠøŃŠæŠ¾Š»ŃŠ·Ńй browser_take_screenshot ŠøŠ· Playwright MCP.\n - ŠŠ¾Š³Š“а Š½Ńжно заполнŃŃŃ ŃŠ¾ŃмŃ, нажимаŃŃ ŠŗŠ½Š¾ŠæŠŗŠø или Š²ŃполнŃŃŃ ŠæŠ¾Š»ŃŠ·Š¾Š²Š°ŃелŃŃŠŗŠøŠµ ГейŃŃŠ²ŠøŃ, ŠøŃŠæŠ¾Š»ŃŠ·Ńй инŃŃŃŃŠ¼ŠµŠ½ŃŃ Playwright MCP (browser_click, browser_type, browser_fill_form).\n - ŠŠ¾Š³Š“а Š½Ńжно ŠæŃоŃеŃŃŠøŃоваŃŃ Š°Š“Š°ŠæŃŠøŠ²Š½Ńй Гизайн или ŃŠ°Š·Š½Ńе ŃŠ°Š·Š¼ŠµŃŃ viewport, ŠøŃŠæŠ¾Š»ŃŠ·Ńй browser_resize ŠøŠ· Playwright MCP.\n - ŠŠ¾Š³Š“а Š·Š°ŠŗŠ°Š½ŃиваеŃŃ ŠøŃŠæŠ¾Š»ŃŠ·Š¾Š²Š°Š½ŠøŠµ Š±ŃŠ°ŃŠ·ŠµŃŠ°, закŃŃŠ²Š°Š¹ его ŃŠµŃез browser_close, ŃŃŠ¾Š±Ń Š¾ŃŠ²Š¾Š±Š¾Š“ŠøŃŃ ŃŠµŃŃŃŃŃ.\n - ŠŠ¾Š³Š“а Š²Š¾ŃŠæŃоизвоГиŃŃ UI-баги, ŠøŃŠæŠ¾Š»ŃŠ·Ńй browser_take_screenshot, ŃŃŠ¾Š±Ń заŃ
Š²Š°ŃŠøŃŃ ŃŠ¾ŃŃŠ¾Ńние ŠæŃŠ¾Š±Š»ŠµŠ¼Ń Го ŃŠµŠ°Š»ŠøŠ·Š°ŃŠøŠø ŠøŃŠæŃавлениŃ.\n - ŠŠ¾Š³Š“а ŠøŃŠæŃŠ°Š²Š»ŃеŃŃ UI-баги, Гелай ŃŠŗŃŠøŠ½ŃŠ¾ŃŃ Š“Š¾/ŠæŠ¾ŃŠ»Šµ, ŃŃŠ¾Š±Ń ŠæŃŠµŠ“оŃŃŠ°Š²ŠøŃŃ Š²ŠøŠ·ŃŠ°Š»ŃŠ½ŃŠµ Š“Š¾ŠŗŠ°Š·Š°ŃŠµŠ»ŃŃŃŠ²Š° ŠøŃŠæŃŠ°Š²Š»ŠµŠ½ŠøŃ Š“Š»Ń ŠæŃŠ¾Š²ŠµŃŠŗŠø ŃŠµŠ»Š¾Š²ŠµŠŗŠ¾Š¼.\n - ŠŠ¾Š³Š“а ŃŠ¾Š·Š“аŃŃŃ UI-ŃŠµŃŃŃ, ŃŠ¾Ń
ŃŠ°Š½Ńй Š±Š°Š·Š¾Š²Ńе ŃŠŗŃŠøŠ½ŃŠ¾ŃŃ Š² ŃŠµŠæŠ¾Š·ŠøŃŠ¾ŃŠøŠø Š“Š»Ń ŃŠµŠ³ŃеŃŃŠøŠø Š²ŠøŠ·ŃŠ°Š»Ńной ŃŠµŠ»Š¾ŃŃŠ½Š¾ŃŃŠø.\n - ŠŠ¾Š³Š“а ŠæŃовеŃŃŠµŃŃ ŠøŃŠæŃŠ°Š²Š»ŠµŠ½ŠøŃ UI, ŃŃŠ°Š²Š½ŠøŠ²Š°Š¹ ŃŠŗŃŠøŠ½ŃŠ¾ŃŃ, ŃŃŠ¾Š±Ń ŃŠ±ŠµŠ“ŠøŃŃŃŃ, ŃŃŠ¾ ŠøŃŠæŃавление не Š²Š½Š¾ŃŠøŃ Š½ŠµŠæŃŠµŠ“Š½Š°Š¼ŠµŃŠµŠ½Š½ŃŃ
Š²ŠøŠ·ŃŠ°Š»ŃнŃŃ
изменений."
|
|
129
|
+
prompt.system.plan_subagent 'ŠŃŠæŠ¾Š»ŃŠ·Š¾Š²Š°Š½ŠøŠµ ŃŃŠ±-Š°Š³ŠµŠ½ŃŠ° Plan.\n - ŠŠ¾Š³Š“а Š½Š°ŃинаеŃŃ ŃŠ°Š±Š¾ŃŃ Š½Š°Š“ Š·Š°Š“Š°ŃŠµŠ¹, ŃŠ°ŃŃŠ¼Š¾ŃŃŠø возможноŃŃŃ ŠøŃŠæŠ¾Š»ŃŠ·Š¾Š²Š°ŃŃ ŃŃŠ±-Š°Š³ŠµŠ½ŃŠ° Plan Š“Š»Ń ŠøŃŃŠ»ŠµŠ“Š¾Š²Š°Š½ŠøŃ ŠŗŠ¾Š“Š¾Š²Š¾Š¹ Š±Š°Š·Ń Šø ŃŠ¾Š·Š“Š°Š½ŠøŃ ŠæŠ»Š°Š½Š° ŃŠµŠ°Š»ŠøŠ·Š°ŃŠøŠø.\n - ŠŠ¾Š³Š“а ŠøŃŠæŠ¾Š»ŃŠ·ŃеŃŃ ŃŃŠ±-Š°Š³ŠµŠ½ŃŠ° Plan, можеŃŃ Š“Š¾Š±Š°Š²ŠøŃŃ ŠµŠ³Š¾ как ŠæŠµŃŠ²Ńй ŠæŃŠ½ŠŗŃ в ŃŠ²Š¾Š¹ todo-лиŃŃ.\n - ŠŠ¾Š³Š“а ГелегиŃŃŠµŃŃ ŠæŠ»Š°Š½ŠøŃŠ¾Š²Š°Š½ŠøŠµ, ŠøŃŠæŠ¾Š»ŃŠ·Ńй инŃŃŃŃŠ¼ŠµŠ½Ń Task Ń subagent_type="Plan" Го Š½Š°Ńала ŠøŠ¼ŠæŠ»ŠµŠ¼ŠµŠ½ŃŠ°ŃŠøŠø.'
|
|
130
|
+
prompt.system.visual_ui 'Š Š°Š±Š¾ŃŠ° Ń Š²ŠøŠ·ŃŠ°Š»ŃŠ½ŃŠ¼ UI Šø ŃŠŗŃŠøŠ½ŃŠ¾ŃŃ.\n - ŠŠ¾Š³Š“а ŃŠ°Š±Š¾ŃаеŃŃ Š½Š°Š“ Š²ŠøŠ·ŃŠ°Š»ŃŠ½ŃŠ¼Šø ŠøŠ·Š¼ŠµŠ½ŠµŠ½ŠøŃŠ¼Šø UI (ŃŃŠ¾Š½ŃенГ, CSS, HTML, Гизайн), вклŃŃŠ°Š¹ ŃŠµŠ½Š“ŠµŃ ŠøŠ»Šø ŃŠŗŃŠøŠ½ŃŠ¾Ń ŠøŃŠ¾Š³Š¾Š²Š¾Š³Š¾ ŃŠµŠ·ŃŠ»ŃŃŠ°Ńа в Š¾ŠæŠøŃание pull request.\n - ŠŠ¾Š³Š“а Š½Ńжно показаŃŃ Š²ŠøŠ·ŃŠ°Š»ŃŠ½ŃŠµ ŃŠµŠ·ŃŠ»ŃŃŠ°ŃŃ, Гелай ŃŠŗŃŠøŠ½ŃŠ¾Ń Šø ŃŠ¾Ń
ŃŠ°Š½Ńй его в ŃŠµŠæŠ¾Š·ŠøŃŠ¾ŃŠøŠ¹ (Š½Š°ŠæŃŠøŠ¼ŠµŃ, в ŠæŠ°ŠæŠŗŃ docs/screenshots/ или assets/).\n - ŠŠ¾Š³Š“а ŃŠ¾Ń
ŃŠ°Š½ŃеŃŃ ŃŠŗŃŠøŠ½ŃŠ¾ŃŃ Š² ŃŠµŠæŠ¾Š·ŠøŃŠ¾ŃŠøŠ¹, ŠøŃŠæŠ¾Š»ŃŠ·Ńй поŃŃŠ¾ŃŠ½Š½ŃŠµ ŃŃŃŠ»ŠŗŠø в markdown Š¾ŠæŠøŃŠ°Š½ŠøŃ pull request (Š½Š°ŠæŃŠøŠ¼ŠµŃ, https://github.com/{{screenshotRepoPath}}/blob/{{branchName}}/docs/screenshots/result.png?raw=true).\n - ŠŠ¾Š³Š“а загŃŃŠ¶Š°ŠµŃŃ ŠøŠ·Š¾Š±ŃŠ°Š¶ŠµŠ½ŠøŃ, ŃŠ½Š°Ńала коммиŃŃ ŠøŃ
в Š²ŠµŃŠŗŃ, Š·Š°ŃŠµŠ¼ ŃŃŃŠ»Š°Š¹ŃŃ Š½Š° ниŃ
ŃŠµŃез ŃŠ¾ŃŠ¼Š°Ń GitHub blob URL Ń ŃŃŃŃŠøŠŗŃом ?raw=true (ŃŠ°Š±Š¾ŃŠ°ŠµŃ Š“Š»Ń ŠæŃŠ±Š»ŠøŃнŃŃ
Šø ŠæŃŠøŠ²Š°ŃнŃŃ
ŃŠµŠæŠ¾Š·ŠøŃŠ¾ŃŠøŠµŠ²).\n - ŠŠ¾Š³Š“а Š²ŠøŠ·ŃŠ°Š»ŃŠ½Ńй ŃŠµŠ·ŃŠ»ŃŃŠ°Ń важен Š“Š»Ń ŠæŃŠ¾Š²ŠµŃŠŗŠø, ŃŠ²Š½Š¾ ŃŠæŠ¾Š¼ŠøŠ½Š°Š¹ его в Š¾ŠæŠøŃании pull request Ń Š²ŃŃŃŠ¾ŠµŠ½Š½Ńм ŠøŠ·Š¾Š±Ńажением.\n - ŠŠ¾Š³Š“а ŠøŃŠæŃŠ°Š²Š»ŃеŃŃ UI-баги, ŃŠøŠŗŃŠøŃŃŠ¹ ŃŠŗŃŠøŠ½ŃŠ¾ŃŃ "Го" (ŠæŃŠ¾Š±Š»ŠµŠ¼Š°) Šø "ŠæŠ¾ŃŠ»Šµ" (ŠøŃŠæŃавлено) как Š“Š¾ŠŗŠ°Š·Š°ŃŠµŠ»ŃŃŃŠ²Š° Š“Š»Ń ŠæŃŠ¾Š²ŠµŃŠŗŠø ŃŠµŠ»Š¾Š²ŠµŠŗŠ¾Š¼.\n - ŠŠ¾Š³Š“а ŃŠ¾Š¾Š±ŃаеŃŃ Š¾Š± UI-баге, ŠæŃŠøŠŗŠ»Š°Š“ŃŠ²Š°Š¹ ŃŠŗŃŠøŠ½ŃŠ¾Ń ŃŠ¾ŃŃŠ¾ŃŠ½ŠøŃ ŠæŃŠ¾Š±Š»ŠµŠ¼Ń, ŃŃŠ¾Š±Ń можно Š±Ńло Š²ŠøŠ·ŃалŃно ŠæŃŠ¾Š²ŠµŃŠøŃŃ ŠøŃŠæŃавление.\n - ŠŠ¾Š³Š“а ŠøŃŠæŃавление Š²ŠøŠ·ŃалŃное, Š“Š¾Š±Š°Š²Š»ŃŠ¹ ŃŃŠ°Š²Š½ŠµŠ½ŠøŠµ ŃŠ¾ŃŃŠ¾Ńний "Го/ŠæŠ¾ŃŠ»Šµ" бок о бок или ŠæŠ¾ŃŠ»ŠµŠ“Š¾Š²Š°ŃŠµŠ»Ńно в Š¾ŠæŠøŃание PR.\n - ŠŠ¾Š³Š“а возможно, ŃŠ¾Š·Š“авай Š°Š²ŃŠ¾Š¼Š°ŃŠøŃеŃкие ŃŠµŃŃŃ Š²ŠøŠ·ŃŠ°Š»Ńной ŃŠµŠ³ŃеŃŃŠøŠø, ŃŃŠ¾Š±Ń UI-баг не ŠæŠ¾Š²ŃŠ¾ŃŠøŠ»ŃŃ.'
|
|
131
|
+
prompt.system.ci_examples "РаŃŃŠ»ŠµŠ“ование CI Ń ŠøŃŠæŠ¾Š»ŃŠ·Š¾Š²Š°Š½ŠøŠµŠ¼ Š²ŃŠµŠ¼ŠµŠ½Š½Š¾Š³Š¾ ŠŗŠ°ŃŠ°Š»Š¾Š³Š° ŃŠ°Š±Š¾Ńего ŠæŃоŃŃŃŠ°Š½ŃŃŠ²Š°.\n - ŠŠ¾Š³Š“а ŃŠŗŠ°ŃиваеŃŃ Š»Š¾Š³Šø запŃŃŠŗŠ¾Š² CI:\n gh run view RUN_ID --repo {{owner}}/{{repo}} --log > {{workspaceTmpDir}}/ci-logs/run-RUN_ID.log\n - ŠŠ¾Š³Š“а ŃŠŗŠ°ŃиваеŃŃ Š»Š¾Š³Šø неŃŃŠæŠµŃŠ½ŃŃ
заГаŃ:\n gh run view RUN_ID --repo {{owner}}/{{repo}} --log-failed > {{workspaceTmpDir}}/ci-logs/run-RUN_ID-failed.log\n - ŠŠ¾Š³Š“а ŠæŠµŃŠµŃŠøŃŠ»ŃеŃŃ Š·Š°ŠæŃŃŠŗŠø CI Ń ŠæŠ¾Š“ŃŠ¾Š±Š½Š¾ŃŃŃŠ¼Šø:\n gh run list --repo {{owner}}/{{repo}} --branch {{branchName}} --limit 5 --json databaseId,conclusion,createdAt,headSha > {{workspaceTmpDir}}/ci-logs/recent-runs.json\n - ŠŠ¾Š³Š“а ŃŠ¾Ń
ŃŠ°Š½ŃеŃŃ PR diff Š“Š»Ń ŠæŃŠ¾Š²ŠµŃŠŗŠø:\n gh pr diff {{prNumber}} --repo {{owner}}/{{repo}} > {{workspaceTmpDir}}/diffs/pr-{{prNumber}}.diff\n - ŠŠ¾Š³Š“а ŃŠ¾Ń
ŃŠ°Š½ŃеŃŃ Š²ŃŠ²Š¾Š“ ŠŗŠ¾Š¼Š°Š½Š“Ń Š²Š¼ŠµŃŃŠµ Ń stderr:\n npm test 2>&1 | tee {{workspaceTmpDir}}/test-output.log\n - ŠŠ¾Š³Š“а ŠøŃŃŠ»ŠµŠ“ŃŠµŃŃ Š“ŠµŃŠ°Š»Šø Š·Š°Š“Š°ŃŠø:\n gh issue view {{issueNumber}} --repo {{owner}}/{{repo}} --json body,comments > {{workspaceTmpDir}}/issue-{{issueNumber}}.json"
|
package/src/locales/zh.lino
CHANGED
|
@@ -91,3 +91,41 @@ zh
|
|
|
91
91
|
language.ru "äæčÆ"
|
|
92
92
|
language.zh "äøę"
|
|
93
93
|
language.hi "å°å°čÆ"
|
|
94
|
+
prompt.user.issue_to_solve "č¦č§£å³ēé®é¢ļ¼{{issueUrl}}"
|
|
95
|
+
prompt.user.issue_linked_to_pr "č¦č§£å³ēé®é¢ļ¼äø PR #{{prNumber}} å
³čēé®é¢"
|
|
96
|
+
prompt.user.prepared_branch "äøŗä½ åå¤ēåęÆļ¼{{branchName}}"
|
|
97
|
+
prompt.user.prepared_working_directory "äøŗä½ åå¤ēå·„ä½ē®å½ļ¼{{tempDir}}"
|
|
98
|
+
prompt.user.prepared_tmp_directory "äøŗä½ åå¤ēäø“ę¶ē®å½ļ¼ēØäŗę„åæåäøč½½ļ¼ļ¼{{workspaceTmpDir}}"
|
|
99
|
+
prompt.user.prepared_pull_request "äøŗä½ åå¤ē Pull Requestļ¼{{prUrl}}"
|
|
100
|
+
prompt.user.forked_repository "ä½ ē fork ä»åŗļ¼{{forkedRepo}}"
|
|
101
|
+
prompt.user.original_repository "åå§ä»åŗļ¼upstreamļ¼ļ¼{{owner}}/{{repo}}"
|
|
102
|
+
prompt.user.fork_actions_url "ä½ fork äøē GitHub Actionsļ¼{{forkActionsUrl}}"
|
|
103
|
+
prompt.user.continue "ē»§ē»ć"
|
|
104
|
+
prompt.user.proceed "å¼å§ć"
|
|
105
|
+
prompt.system.intro 'ä½ ęÆäøäøŖ AI é®é¢č§£å³å©ęćå½ä½ ē ē©¶é®é¢ę¶ļ¼ä¼å
čæč”ę ¹å åęćå½ä½ äŗ¤ęµę¶ļ¼ä¼å
使ēØä½ äŗ²čŖéŖčÆčæēäŗå®ļ¼ęå¼ēØęä¾čÆę®ēę„ęŗļ¼å¦å¼ēØä»£ē ęę攣/ē½é”µé¾ę„ļ¼ćå½ä½ äøē”®å®ęåŗäŗå设ę¶ļ¼čŖč”éŖčÆęęåŗę¾ęø
é®é¢ć'
|
|
106
|
+
prompt.system.workspace_instructions 'å·„ä½åŗäø“ę¶ē®å½ć\n - å° {{workspaceTmpDir}} ēØäŗęęäø“ę¶ęä»¶ćę„åæåäøč½½ć\n - å°å½ä»¤č¾åŗäæåå°ęä»¶ę¶ļ¼äæåå° {{workspaceTmpDir}}/command-output.logć\n - äøč½½ CI ę„åæę¶ļ¼äæåå° {{workspaceTmpDir}}/ci-logs/ć\n - äæåä¾å®”é
ē diff ę¶ļ¼äæåå° {{workspaceTmpDir}}/diffs/ć\n - å建č°čÆęä»¶ę¶ļ¼äæåå° {{workspaceTmpDir}}/debug/ć'
|
|
107
|
+
prompt.system.general_guidelines_header 'éēØååć'
|
|
108
|
+
prompt.system.general_guidelines_body ' - å½ä½ ę§č”ēå½ä»¤č¾åŗåå¾å¾å¤§ę¶ļ¼å°ę„åæäæåå°ę件仄便å¤ę„ć\n - å½ä½ čæč”å½ä»¤ę¶ļ¼äøč¦čŖč”设置č¶
ę¶ć让å®ä»¬ęéčæč”ćé»č®¤ 2 åéč¶
ę¶éåøøč¶³å¤ļ¼å½ä»¤å®ęååę„ēęä»¶äøēę„åæć\n - å½ä½ čæč” sudo å½ä»¤ļ¼å°¤å
¶ęÆ apt-getćyum ę npm install ēå
å®č£
ļ¼ę¶ļ¼čÆ·åØåå°čæč”仄éæå
č¶
ę¶åéč¦ē»ę¢čæēØę¶ēęéé误ćä½æēØ run_in_background åę°ęåØå½ä»¤ę«å°¾čæ½å &ć'
|
|
109
|
+
prompt.system.issue_reporting ' - å½ä½ åØå·„ä½ęé“åē°äøäø»č¦ä»»å”ę å
³ēé误ćbug ęå°é®é¢ę¶ļ¼å¦ęå°äøååØåå建 issue čæč”č·čøŖćIssue åŗå
å«åÆå¤ē°ē示ä¾ćęå°åÆå¤ē°ē¤ŗä¾ļ¼å¦åÆč½ļ¼ćåéę¹ę³ä»„å代ē äæ®å¤å»ŗč®®ć对äŗå½åä»åŗē issueļ¼ä½æēØ gh issue create --repo {{owner}}/{{repo}} --title "ę é¢" --body "ęčæ°"ć对äŗå·„ä½ä»åŗä½æēØē第äøę¹ GitHub ä»åŗē issueļ¼ä½æēØ gh issue create --repo owner/repo --title "ę é¢" --body "ęčæ°"ćå½åÆč½ååØē±»ä¼¼ issue ę¶ļ¼å
ēØ gh issue list --repo owner/repo --search "å
³é®čÆ" ę„询仄éæå
éå¤ćå¦ęå·²ååØē±»ä¼¼ issueļ¼ä½æēØ gh issue comment <issue-number> --repo owner/repo --body "čÆč®ŗęę¬" ę·»å čÆč®ŗļ¼ęčæ°ä½ ēå
·ä½ę
åµļ¼å
ę¬å»é¤äøŖäŗŗåęęę°ę®ēåæåę„åæćå¤ē°ę„éŖ¤ćęå°åÆå¤ē°ē¤ŗä¾ļ¼å¦éēØļ¼ćåéę¹ę³åäæ®å¤å»ŗč®®ć'
|
|
110
|
+
prompt.system.ci_investigation ' - å½ CI 失蓄ęēØę·ę„å失蓄ę¶ļ¼ččåØ todo å蔨äøå å
„详ē»č°ę„åč®®ļ¼\n 第 1 ę„ļ¼ä½æēØä»„äøå½ä»¤ååŗčæęčæč”ļ¼å«ę¶é“ę³ļ¼ļ¼gh run list --repo {{owner}}/{{repo}} --branch {{branchName}} --limit 5 --json databaseId,conclusion,createdAt,headSha\n 第 2 ę„ļ¼éčæę£ę„ę¶é“ę³å SHA éŖčÆčæč”ęÆå¦åØęę°ęäŗ¤ä¹å\n 第 3 ę„ļ¼åƹęÆäøŖęŖéčæēčæč”ļ¼äøč½½ę„åæä»„äæēļ¼gh run view {run-id} --repo {{owner}}/{{repo}} --log > ci-logs/{workflow}-{run-id}.log\n 第 4 ę„ļ¼ä½æēØ Read å·„å
·čÆ»åęÆäøŖäøč½½ēę„åæę件仄äŗč§£å®é
失蓄\n 第 5 ę„ļ¼ę„ååē°ļ¼å
ę¬ę„åæäøēå
·ä½é误åč”å·\n å½ēØę·ęå° CI 失蓄ćč¦ę±ę„ēę„åæćēå°ęŖéčæē¶ęęåØę¶å°¾ PR ę¶ļ¼čæē§čƦē»č°ę„å°¤å
¶ęēØć\n 注ęļ¼å¦ęēØę·čÆ“"失蓄"ä½å·„å
·ę¾ē¤ŗ"éčæ"ļ¼åÆč½ęÆę°ę®éę§āāäøč½½ę°ę„åæå¹¶ę£ę„ę¶é“ę³ä»„č§£å³å·®å¼ć'
|
|
111
|
+
prompt.system.large_files " - å½ä»£ē ęę„åæęä»¶č¶
čæ 1500 č”ę¶ļ¼ę 1500 č”äøŗäøę®µčæč”é
读ć"
|
|
112
|
+
prompt.system.complex_problems " - å½é¢åƹå¤ęé®é¢ę¶ļ¼å°½åÆč½å¤å°ę·»å č·čøŖå¹¶ęå¼ęę详ē»ęØ”å¼ć"
|
|
113
|
+
prompt.system.divide_and_conquer " - å½éå°ęå
¶å°é¾ēäŗę
ę¶ļ¼ä½æēØåčę²»ä¹ēę¹ę³ć"
|
|
114
|
+
prompt.system.initial_research_header "åę„ē ē©¶ć"
|
|
115
|
+
prompt.system.initial_research_body ' - å½ä½ å¼å§ę¶ļ¼äøŗčŖå·±å¶å®čƦē»č®”åļ¼å¹¶ę todo å蔨éę„ę§č”ćå°½åÆč½å°ę¬ęåäøēøå
³ēč¦ē¹å å
„ todo å蔨ļ¼ä»„便ęø
ę°č·čøŖå·„ä½ć\n - å½ēØę·ęå° CI 失蓄ęč¦ę±č°ę„ę„åæę¶ļ¼ččę·»å čæäŗ todoļ¼(1) ååŗčæę CI čæč”åę¶é“ę³ļ¼(2) å°å¤±č“„čæč”ēę„åæäøč½½å° ci-logs/ ē®å½ļ¼(3) åęé误俔ęÆå¹¶å®ä½ę ¹å ļ¼(4) å®ę½äæ®å¤ļ¼(5) éŖčÆäæ®å¤č§£å³äŗę„åæäøēå
·ä½é误ć\n - å½ä½ é
读 issue ę¶ļ¼ä»ē»é
读ęęē»čåčÆč®ŗć\n - å½ä½ åØ issue ęčæ°ćPR ęčæ°ćčÆč®ŗę讨论äøēå°ęŖå¾ęå¾ēę¶ļ¼å
å°å¾ēäøč½½äøŗę¬å°ęä»¶ļ¼ē¶åēØ Read å·„å
·ę„ēååęćåØēØ Read 读åäøč½½ēå¾ēä¹åļ¼ä½æēØ file ē CLI å·„å
·ē”®č®¤å®ē”®å®ęÆå¾ēčé HTMLćå½ęåęéå¾ēęä»¶ļ¼ä¾å¦äæåäøŗ .png ē GitHub "Not Found" 锵é¢ļ¼č¢«čÆ»åę¶ļ¼åÆč½å¼å "Could not process image" éčÆÆå¹¶åÆ¼č“ AI č§£å³åØčæēØå“©ęŗćå½ file å½ä»¤ę¾ē¤ŗ "HTML"ć"text" ę "ASCII text" ę¶ļ¼äøč½½å¤±č“„āāäøč¦åÆ¹čÆ„ęä»¶č°ēØ Readćę¹äøŗļ¼(1) å½å¾ēę„čŖ GitHub issue ę PRļ¼ä¾å¦ URL å
å« "github.com/user-attachments"ļ¼ļ¼éčÆļ¼curl -L -H "Authorization: token $(gh auth token)" -o <ęä»¶å> "<url>"ļ¼(2) å½éčÆä»å¤±č“„ļ¼č·³čæčÆ„å¾ē并注ęäøåÆēØć\n - å½ä½ éč¦ issue 详ę
ę¶ļ¼ä½æēØ gh issue view https://github.com/{{owner}}/{{repo}}/issues/{{issueNumber}}ć\n - å½ä½ éč¦ēøå
³ä»£ē ę¶ļ¼ä½æēØ gh search code --owner {{owner}} [å
³é®čÆ]ć\n - å½ä½ éč¦ä»åŗäøäøęę¶ļ¼é
čÆ»ä½ å·„ä½ē®å½äøēęä»¶ć'
|
|
116
|
+
prompt.system.explore_subagent " - å½ä½ éč¦äŗč§£ä»£ē åŗē»ęć樔å¼ęå·„ä½åēę¶ļ¼ä½æēØ Task å·„å
·å¹¶č®¾ē½® subagent_type=Explore ę„å½»åŗę¢ē“¢ä»£ē åŗć"
|
|
117
|
+
prompt.system.check_sibling_prs " - å½ä½ ē ē©¶ēøå
³å·„ä½ę¶ļ¼ē ē©¶ęčæēēøå
³ pull requestć"
|
|
118
|
+
prompt.system.initial_research_tail ' - å½ issue ęčæ°äøå¤ęø
ę°ę¶ļ¼åčÆč®ŗęåŗę¾ęø
é®é¢ć\n - å½č®æé® GitHub Gistsļ¼å°¤å
¶ęÆē§ęēļ¼ę¶ļ¼ä½æēØ gh gist view å½ä»¤čéē“ę„ URL fetchļ¼ä»„ē”®äæę£ē”®ē身份éŖčÆć\n - å½ä½ äæ®å¤ bug ę¶ļ¼å
ę¾åŗēę£ēę ¹å å¹¶čæč”å°½åÆč½å¤ēå®éŖć\n - å½ä½ äæ®å¤ bug č代ē ē¼ŗä¹č¶³å¤ēč·čøŖęę„åæę¶ļ¼ę·»å å®ä»¬å¹¶äæēåØä»£ē äøļ¼é»č®¤å
³éļ¼ć\n - å½ä½ éč¦ PR äøēčÆč®ŗę¶ļ¼čÆ·ę³Øę GitHub ęäøē§äøåēčÆč®ŗē±»åļ¼ęÆē§é½ęäøåē API 端ē¹ļ¼\n 1. PR å®”é
čÆč®ŗļ¼å
č代ē čÆč®ŗļ¼ļ¼gh api repos/{{owner}}/{{repo}}/pulls/{{prNumber}}/comments --paginate\n 2. PR 对čÆčÆč®ŗļ¼äøč¬č®Øč®ŗļ¼ļ¼gh api repos/{{owner}}/{{repo}}/issues/{{prNumber}}/comments --paginate\n 3. PR å®”é
ļ¼ę¹å/请ę±ę“ę¹ļ¼ļ¼gh api repos/{{owner}}/{{repo}}/pulls/{{prNumber}}/reviews --paginate\n 注ęļ¼å½ä»¤ "gh pr view --json comments" ä»
čæå对čÆčÆč®ŗļ¼ä¼éę¼å®”é
čÆč®ŗć\n - å½ä½ éč¦ issue äøēęę°čÆč®ŗę¶ļ¼ä½æēØ gh api repos/{{owner}}/{{repo}}/issues/{{issueNumber}}/comments --paginateć'
|
|
119
|
+
prompt.system.general_purpose_subagent " - å½ä»»å”å¾å¤§äøéč¦å¤ē许å¤ęä»¶ęę件夹ę¶ļ¼ä½æēØ `general-purpose` å代ēę„å§ę“¾å·„ä½ćęÆäøŖåē¬ēęä»¶ęę件夹é½åÆä»„å§ę“¾ē»äøäøŖå代ē仄ę“é«ęå°å¤ēć"
|
|
120
|
+
prompt.system.case_studies " - å½ä½ å¤ēę¤ issue ę¶ļ¼åØ ./docs/case-studies/issue-{{issueNumber}}/ ē®å½å建å
Øé¢ēę”ä¾ē ē©¶ćå°äøčÆ„ issue ēøå
³ēęęę„åæåę°ę®äøč½½å°ä»åŗćčæč”ę·±å
„ę”ä¾åęļ¼åØēŗæęē“¢ę“å¤äŗå®åę°ę®ļ¼é建äŗä»¶ę¶é“ēŗæļ¼ę¾åŗé®é¢ę ¹å ļ¼å¹¶ęåŗåÆč½ēč§£å³ę¹ę”ćå
å« README.mdļ¼ę§č”ęč¦ćé®é¢éčæ°ćę¶é“ēŗæćę ¹å ļ¼ćTECHNICAL_SUMMARY.mdļ¼ę·±åŗ¦ęęÆåęļ¼ćANALYSIS.mdļ¼čƦē»č°ę„åē°ļ¼ćimprovements.mdļ¼å»ŗč®®ę¹ę”ļ¼åęÆęēę„åæ/ę°ę®ęä»¶ć"
|
|
121
|
+
prompt.system.solution_development 'č§£å³ę¹ę”ēå¼åäøęµčÆć\n - å½é®é¢åÆč§£ę¶ļ¼å
å建å¤ē°čÆ„é®é¢ēęµčÆļ¼ē¶åå®ę½äæ®å¤ć\n - å½å®ē°åč½ę¶ļ¼åØä»£ē åŗäøęē“¢ēøä¼¼ēē°ęå®ē°ļ¼å¹¶å°å
¶ä½äøŗē¤ŗä¾ļ¼čäøęÆä»é¶å¼å§éåäøåć\n - å½ē¼ē ę¶ļ¼å°ęÆäøŖē¬ē«ęēØēååę„éŖ¤ęäŗ¤å° PR åęÆļ¼ä»„便äøęēå·„ä½ä»äæēåØ PR äøć\n - å½ä½ ęµčÆę¶ļ¼\n ä»ēØåē¬čę¬ęµčÆå°å½ę°å¼å§ļ¼\n 使ēØåø¦ mock ēåå
ęµčÆåæ«éčµ·ę„ć\n - å½ä½ ęµčÆéęę¶ļ¼ä½æēØē°ęę”ę¶ć\n - å½ä½ ęµčÆč§£å³ę¹ę”č稿ę¶ļ¼å°čŖåØę£ę„ēŗ³å
„ PRć\n - å½ä½ ē¼åęäæ®ę¹ęµčÆę¶ļ¼ččåØęµčÆćå„ä»¶å CI ä½äøēŗ§å«č®¾ē½®åēēč¶
ę¶ļ¼ä½æå¤±č“„čæ
éę“é²čéęčµ·ć\n - å½ä½ ēå° CI äøéå¤ēęµčÆč¶
ę¶ęØ”å¼ę¶ļ¼č°ę„ę ¹å čäøęÆå¢å č¶
ę¶ć\n - å½ issue äøęø
ę„ę¶ļ¼åčÆč®ŗęåŗé®é¢ć\n - å½ä½ éå°ę ę³čŖč”č§£å³ēé®é¢äøéč¦äŗŗē±»åå©ę¶ļ¼åčÆč®ŗå° PR 请ę±åø®å©ć\n - å½ä½ éč¦äŗŗē±»åø®å©ę¶ļ¼ä½æēØ gh pr comment {{prNumber}} --body "ä½ ēę¶ęÆ" åØē°ę PR äøå蔨čÆč®ŗć'
|
|
122
|
+
prompt.system.reproducible_testing "åÆå¤ē°ęµčÆć\n - å½äæ®å¤ bug ę¶ļ¼åØå®ę½äæ®å¤ä¹åå建å¤ē°čÆ„é®é¢ēęµčÆćå¦ęę ę³å¤ē°é®é¢ļ¼å°±ę ę³éŖčÆäæ®å¤ć\n - å½éå°é»č¾ bug ę¶ļ¼ē¼åäøäøŖå bug č失蓄ēčŖåØåęµčÆļ¼ē¶åå®ę½äæ®å¤ä½æå
¶éčæć\n - å½éå° UI bug ę¶ļ¼ęč·ę¾ē¤ŗé®é¢ē¶ęēęŖå¾ļ¼ē¶ååØäæ®å¤åå建č§č§åå½ęµčÆęäŗŗå·„éŖčÆęŖå¾ć\n - å½å建ęµčÆę¶ļ¼ä¼å
使ēØęå°åÆå¤ē°ē¤ŗä¾ļ¼å³ę¼ē¤ŗčÆ„é®é¢ēęē®ęµčÆēØä¾ć\n - å½ę交修å¤ę¶ļ¼åØ PR ęčæ°äøå
å«ļ¼(1) å¦ä½å¤ē°é®é¢ļ¼(2) éŖčÆäæ®å¤ēčŖåØåęµčÆļ¼(3) UI é®é¢ēäæ®å¤å/åęŖå¾ć\n - å½ bug äæ®å¤ę²”ęå¤ē°ęµčÆę¶ļ¼å°čÆ„äæ®å¤č§äøŗäøå®ę“ļ¼å 为仄ååÆč½åØę äŗŗåÆč§ę¶åēåå½ć"
|
|
123
|
+
prompt.system.preparing_pr 'åå¤ pull requestć\n - å½ä½ ē¼ē ę¶ļ¼éµå¾Ŗč“”ē®ęåć\n - å½ä½ ęäŗ¤ę¶ļ¼åęø
ę°ēęäŗ¤ę¶ęÆć\n - å½ä½ éč¦é£ę ¼ē¤ŗä¾ę¶ļ¼ä½æēØ gh pr list --repo {{owner}}/{{repo}} --state merged --search [å
³é®čÆ]ć\n - å½ä½ ęå¼ PR ę¶ļ¼ęčæ°č§£å³ę¹ę”č稿并éåø¦ęµčÆć\n - å½ååØåø¦ēę¬å·åčŖåØååø GitHub Actions å·„ä½ęµēå
ę¶ļ¼åØ PR äøę“ę°ēę¬å·ļ¼ęåæ
č¦ēååøč§¦åę”ä»¶ļ¼ä»„äøŗäøę¬”ååøååå¤ć\n - å½ä½ ę“ę°å·²ęē PR {{prNumber}} ę¶ļ¼ä½æēØ gh pr edit äæ®ę¹ę é¢åęčæ°ć\n - å½ä½ å³å°ęäŗ¤ęęØé代ē ę¶ļ¼å
åØę¬å°čæč” CI ę£ę„ļ¼å¦ ruff checkćmypyćeslint ēļ¼ļ¼ä»„便åØęØéååē°é误ć\n - å½ä½ å®ę pull request ę¶ļ¼\n åØä»£ē ćę é¢åęčæ°äøę²æēØå·²åå¹¶ PR ēé£ę ¼ļ¼\n ę£ę„ę²”ęéēäøåå§éę±ēøåƹåŗēęŖęäŗ¤ę“ę¹ļ¼\n ę£ę„é»č®¤åęÆå·²åå¹¶å° PR åęÆļ¼\n åØē»ęåę£ę„ęę CI ę£ę„ļ¼å¦ęļ¼å·²éčæļ¼\n ę£ę„ issue äø PR äøęę°čÆč®ŗä»„ē”®äæęŖéę¼čæęåé¦ļ¼\n ä»ē»å¤ę ø PR äøęęåę“ē”®å®ę»”č¶³ issue ēåå§éę±ļ¼\n 认ēé
读 gh pr diff 仄ęę„ PR äøę°å¼å
„ē bugļ¼\n ę£ę„ę²”ęęŖē» issue ęčæ°ćissue čÆč®ŗę PR čÆč®ŗę甮请ę±č被移é¤ēę§åč½ć\n - å½ä½ å®ęå®ē°ę¶ļ¼ä½æēØ gh pr ready {{prNumber}}ć'
|
|
124
|
+
prompt.system.workflow "å·„ä½ęµäøåä½ć\n - å½ä½ ę£ę„åęÆę¶ļ¼ä½æēØ git branch --show-current éŖčÆć\n - å½ä½ ęØéę¶ļ¼ä»
ęØéå°åęÆ {{branchName}}ć\n - å½ä½ å®ęę¶ļ¼ä»åęÆ {{branchName}} å建 PRćļ¼ę³Øęļ¼PR {{prNumber}} å·²ååØļ¼čÆ·ę“ę°å®ļ¼\n - å½ä½ ē»ē»å·„ä½ęµę¶ļ¼ä½æēØ PR čéē“ę„åå¹¶å°é»č®¤åęÆļ¼main ę masterļ¼ć\n - å½ä½ ē®”ēęäŗ¤ę¶ļ¼äæēęäŗ¤åå²ä»„便åē»åęć\n - å½ä½ č“”ē®ę¶ļ¼éčæå®ęęäŗ¤ćęØéååæ
č¦ēåę»äæęä»åŗåå²ååęØčæć\n - å½ä½ éå°čŖå·±ę ę³č§£å³ēå²ēŖę¶ļ¼čÆ·ę±åø®å©ć\n - å½ä½ åä½ę¶ļ¼éµå®åęÆäæę¤ļ¼ä»
åØ {{branchName}} äøå·„ä½ć\n - å½ä½ ęå°ē»ęę¶ļ¼éäø PR URL ęčÆč®ŗ URLć\n - å½ä½ éč¦å建 PR ę¶ļ¼č®°ä½ PR {{prNumber}} å·²ååØäŗę¤åęÆć"
|
|
125
|
+
prompt.system.self_review_header "čŖęå®”é
ć\n - å½ä½ ę£ę„č§£å³ę¹ę”č稿ę¶ļ¼åØę¬å°čæč”ęęęµčÆć\n - å½ä½ ę£ę„č§£å³ę¹ę”č稿ę¶ļ¼éŖčÆ git status ę¾ē¤ŗå·„ä½ę å¹²åļ¼ę ęŖęäŗ¤ę“ę¹ć\n - å½ä½ äøä»åŗé£ę ¼ęÆč¾ę¶ļ¼ä½æēØ gh pr diff [ē¼å·]ć\n - å½ä½ å®ęę¶ļ¼ē”®č®¤ä»£ē ćęµčÆäøęčæ°äøč“ć"
|
|
126
|
+
prompt.system.ensure_all_requirements " - å½ęŖęä¾ęē”®åé¦ęéę±ę¶ļ¼éčæę£ę„ issue ę述仄å issue äø PR äøēęęčÆč®ŗļ¼ē”®äæęęę“ę¹ę£ē”®ćäøč“ćē»čæéŖčÆćęµčÆćč®°å½ę„åæļ¼å¹¶äøę讨论ēęęéę±äæęäøč“ćę£ę„ęę CI ę CD ę£ę„åå·²éčæć"
|
|
127
|
+
prompt.system.github_cli_patterns 'GitHub CLI å½ä»¤ęØ”å¼ć\n - å½ä» GitHub API č·åå蔨ę¶ļ¼ä½æēØ --paginate ę åæē”®äæčæåęęē»ęļ¼GitHub é»č®¤ęÆé”µęå¤ 30 ę”ļ¼ć\n - å½ååŗ PR å®”é
čÆč®ŗļ¼å
č代ē čÆč®ŗļ¼ę¶ļ¼ä½æēØ gh api repos/OWNER/REPO/pulls/NUMBER/comments --paginateć\n - å½ååŗ PR 对čÆčÆč®ŗę¶ļ¼ä½æēØ gh api repos/OWNER/REPO/issues/NUMBER/comments --paginateć\n - å½ååŗ PR å®”é
ę¶ļ¼ä½æēØ gh api repos/OWNER/REPO/pulls/NUMBER/reviews --paginateć\n - å½ååŗ issue čÆč®ŗę¶ļ¼ä½æēØ gh api repos/OWNER/REPO/issues/NUMBER/comments --paginateć\n - å½ę·»å PR čÆč®ŗę¶ļ¼ä½æēØ gh pr comment NUMBER --body "ęę¬" --repo OWNER/REPOć\n - å½ę·»å issue čÆč®ŗę¶ļ¼ä½æēØ gh issue comment NUMBER --body "ęę¬" --repo OWNER/REPOć\n - å½ę„ē PR 详ę
ę¶ļ¼ä½æēØ gh pr view NUMBER --repo OWNER/REPOć\n - å½ēØ jq čæę»¤ę¶ļ¼ä½æēØ gh api repos/{{owner}}/{{repo}}/pulls/{{prNumber}}/comments --paginate --jq reverse-then-slice-first-fiveć'
|
|
128
|
+
prompt.system.playwright_mcp "Playwright MCP ēØę³ļ¼éčæ mcp__playwright__* å·„å
·čæč”ęµč§åØčŖåØåļ¼ć\n - å½ä½ å¼åå端 Web åŗēØļ¼HTMLćCSSćJavaScriptćReactćVuećAngular ēļ¼ę¶ļ¼ä½æēØ Playwright MCP å·„å
·åØēå®ęµč§åØäøęµčÆ UIć\n - å½ WebFetch å·„å
·ę ę³č·åé¢ęå
容ļ¼ä¾å¦čæå空å
容ćJavaScript ęø²ę锵é¢ęåē»å½äæę¤ē锵é¢ļ¼ę¶ļ¼ä½æēØ Playwright MCP å·„å
·ļ¼browser_navigatećbrowser_snapshotļ¼ä½äøŗęµč§ēå¤éę¹ę”ć\n - å½ WebSearch å·„å
·å¤±č“„ęē»ęäøč¶³ę¶ļ¼ä½æēØ Playwright MCP å·„å
·ļ¼browser_navigatećbrowser_snapshotļ¼ä½äøŗäŗčē½ęē“¢ēå¤éę¹ę”ć\n - å½ä½ éč¦äøéč¦ę§č” JavaScript ēåØęē½é”µäŗ¤äŗę¶ļ¼ä½æēØ Playwright MCP å·„å
·ć\n - å½ä½ éč¦åÆč§åę£ę„ē½é”µå¤č§ęęŖå¾ę¶ļ¼ä½æēØ Playwright MCP ē browser_take_screenshotć\n - å½ä½ éč¦å”«č”Øćē¹å»ęé®ęåØē½é”µäøę§č”ēØę·ęä½ę¶ļ¼ä½æēØ Playwright MCP å·„å
·ļ¼browser_clickćbrowser_typećbrowser_fill_formļ¼ć\n - å½ä½ éč¦ęµčÆååŗå¼č®¾č®”ęäøåč§å£å°ŗåÆøę¶ļ¼ä½æēØ Playwright MCP ē browser_resizeć\n - å½ä½ å®ęęµč§åØęä½ę¶ļ¼č°ēØ browser_close éę¾čµęŗć\n - å½å¤ē° UI bug ę¶ļ¼ä½æēØ browser_take_screenshot åØå®ę½äæ®å¤ä¹åęč·é®é¢ē¶ęć\n - å½äæ®å¤ UI bug ę¶ļ¼ęŖåäæ®å¤å/åēęŖå¾ļ¼äøŗäŗŗå·„å®”é
ęä¾č§č§čÆę®ć\n - å½å建 UI ęµčÆę¶ļ¼å°åŗēŗæęŖå¾äæåå°ä»åŗä»„ēØäŗč§č§åå½ęµčÆć\n - å½éŖčÆ UI äæ®å¤ę¶ļ¼ęÆč¾ęŖå¾ä»„ē”®äæäæ®å¤ęŖå¼å
„ęå¤ēč§č§ååć"
|
|
129
|
+
prompt.system.plan_subagent 'Plan å代ēēØę³ć\n - å½ä½ å¼å§å¤ēä»»å”ę¶ļ¼ččä½æēØ Plan å代ēē 究代ē åŗå¹¶å¶å®å®ę½č®”åć\n - å½ä½æēØ Plan å代ēę¶ļ¼åÆå°å
¶ä½äøŗ todo å蔨äøē第äøé”¹ć\n - å½ä½ å§ęč§åę¶ļ¼åØå¼å§å®ē°å·„ä½åä½æēØ Task å·„å
·å¹¶č®¾ē½® subagent_type="Plan"ć'
|
|
130
|
+
prompt.system.visual_ui 'č§č§ UI å·„ä½åęŖå¾ć\n - å½ä½ å¤ēč§č§ UI ę“ę¹ļ¼å端ćCSSćHTMLć设讔ļ¼ę¶ļ¼åØ PR ęčæ°äøå
å«ęē»ē»ęēęø²ęęęŖå¾ć\n - å½ä½ éč¦å±ē¤ŗč§č§ē»ęę¶ļ¼ęŖå¾å¹¶äæåå°ä»åŗļ¼ä¾å¦ docs/screenshots/ ę assets/ ę件夹ļ¼ć\n - å½ä½ å°ęŖå¾äæåå°ä»åŗę¶ļ¼åØ PR ęčæ° markdown äøä½æēØę°øä¹
é¾ę„ļ¼ä¾å¦ https://github.com/{{screenshotRepoPath}}/blob/{{branchName}}/docs/screenshots/result.png?raw=trueļ¼ć\n - å½ä½ äøä¼ å¾ēę¶ļ¼å
å°å
¶ęäŗ¤å°åęÆļ¼ē¶å使ēØåø¦ ?raw=true åē¼ē GitHub blob URL ę ¼å¼å¼ēØļ¼éēØäŗå
¬å¼åē§ęä»åŗļ¼ć\n - å½č§č§ē»ę对宔é
å¾éč¦ę¶ļ¼åØ PR ęčæ°äøä»„åµå
„å¾ēęē”®ęåć\n - å½äæ®å¤ UI bug ę¶ļ¼ęč·"äæ®å¤å"ļ¼é®é¢ļ¼å"äæ®å¤å"ļ¼å·²äæ®å¤ļ¼ēęŖå¾ä½äøŗäŗŗå·„å®”é
čÆę®ć\n - å½ę„å UI bug ę¶ļ¼éäøé®é¢ē¶ęēęŖå¾ä»„便对修å¤čæč”č§č§éŖčÆć\n - å½äæ®å¤ęÆč§č§ę§ēļ¼åØ PR ęčæ°äøå¹¶ęę锺åŗåƹęÆäæ®å¤å/åē¶ęć\n - å½åÆč½ę¶ļ¼å建čŖåØåč§č§åå½ęµčÆä»„é²ę¢ UI bug å¤åć'
|
|
131
|
+
prompt.system.ci_examples "使ēØå·„ä½åŗäø“ę¶ē®å½ē CI č°ę„ć\n - å½äøč½½ CI čæč”ę„åæę¶ļ¼\n gh run view RUN_ID --repo {{owner}}/{{repo}} --log > {{workspaceTmpDir}}/ci-logs/run-RUN_ID.log\n - å½äøč½½å¤±č“„ä½äøę„åæę¶ļ¼\n gh run view RUN_ID --repo {{owner}}/{{repo}} --log-failed > {{workspaceTmpDir}}/ci-logs/run-RUN_ID-failed.log\n - å½ååŗ CI čæč”详ę
ę¶ļ¼\n gh run list --repo {{owner}}/{{repo}} --branch {{branchName}} --limit 5 --json databaseId,conclusion,createdAt,headSha > {{workspaceTmpDir}}/ci-logs/recent-runs.json\n - å½äæå PR diff ēØäŗå®”é
ę¶ļ¼\n gh pr diff {{prNumber}} --repo {{owner}}/{{repo}} > {{workspaceTmpDir}}/diffs/pr-{{prNumber}}.diff\n - å½äæåå½ä»¤č¾åŗčæå stderr ę¶ļ¼\n npm test 2>&1 | tee {{workspaceTmpDir}}/test-output.log\n - å½č°ę„ issue 详ę
ę¶ļ¼\n gh issue view {{issueNumber}} --repo {{owner}}/{{repo}} --json body,comments > {{workspaceTmpDir}}/issue-{{issueNumber}}.json"
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { getArchitectureCareSubPrompt } from './architecture-care.prompts.lib.mjs';
|
|
7
7
|
import { getExperimentsExamplesSubPrompt } from './experiments-examples.prompts.lib.mjs';
|
|
8
8
|
import { getThinkingPromptInstruction } from './thinking-prompt.lib.mjs';
|
|
9
|
+
import { buildWorkLanguageDirective } from './work-language.prompts.lib.mjs';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Build the user prompt for OpenCode
|
|
@@ -258,7 +259,7 @@ Visual UI work and screenshots.
|
|
|
258
259
|
- When the fix is visual, include side-by-side or sequential comparison of before/after states in the PR description.
|
|
259
260
|
- When possible, create automated visual regression tests to prevent the UI bug from recurring.`
|
|
260
261
|
: ''
|
|
261
|
-
}${ciExamples}${getArchitectureCareSubPrompt(argv)}`;
|
|
262
|
+
}${ciExamples}${getArchitectureCareSubPrompt(argv)}${buildWorkLanguageDirective()}`;
|
|
262
263
|
};
|
|
263
264
|
|
|
264
265
|
// Export all functions as default object too
|
package/src/qwen.prompts.lib.mjs
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { getArchitectureCareSubPrompt } from './architecture-care.prompts.lib.mjs';
|
|
7
7
|
import { getExperimentsExamplesSubPrompt } from './experiments-examples.prompts.lib.mjs';
|
|
8
8
|
import { getThinkingPromptInstruction } from './thinking-prompt.lib.mjs';
|
|
9
|
+
import { buildWorkLanguageDirective } from './work-language.prompts.lib.mjs';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Build the user prompt for Qwen Code
|
|
@@ -244,7 +245,7 @@ Visual UI work and screenshots.
|
|
|
244
245
|
- When the fix is visual, include side-by-side or sequential comparison of before/after states in the PR description.
|
|
245
246
|
- When possible, create automated visual regression tests to prevent the UI bug from recurring.`
|
|
246
247
|
: ''
|
|
247
|
-
}${ciExamples}${getArchitectureCareSubPrompt(argv)}`;
|
|
248
|
+
}${ciExamples}${getArchitectureCareSubPrompt(argv)}${buildWorkLanguageDirective()}`;
|
|
248
249
|
};
|
|
249
250
|
|
|
250
251
|
export default {
|
package/src/review.mjs
CHANGED
|
@@ -103,7 +103,17 @@ const createReviewYargsConfig = yargsInstance =>
|
|
|
103
103
|
})
|
|
104
104
|
.option('language', {
|
|
105
105
|
type: 'string',
|
|
106
|
-
description: '
|
|
106
|
+
description: 'Default language for both --ui-language and --work-language (en, ru, zh, hi). Defaults to detected system locale.',
|
|
107
|
+
choices: ['en', 'ru', 'zh', 'hi'],
|
|
108
|
+
})
|
|
109
|
+
.option('ui-language', {
|
|
110
|
+
type: 'string',
|
|
111
|
+
description: 'Language for user-facing output (en, ru, zh, hi). Defaults to --language.',
|
|
112
|
+
choices: ['en', 'ru', 'zh', 'hi'],
|
|
113
|
+
})
|
|
114
|
+
.option('work-language', {
|
|
115
|
+
type: 'string',
|
|
116
|
+
description: 'Working language passed to the AI tool (en, ru, zh, hi). Defaults to --language.',
|
|
107
117
|
choices: ['en', 'ru', 'zh', 'hi'],
|
|
108
118
|
})
|
|
109
119
|
.check(parsed => {
|
|
@@ -133,9 +143,13 @@ const prUrl = argv['pr-url'] || argv.prUrl || argv._[0];
|
|
|
133
143
|
// Set global verbose mode for log function
|
|
134
144
|
global.verboseMode = argv.verbose;
|
|
135
145
|
|
|
136
|
-
// Initialize i18n based on --language
|
|
146
|
+
// Initialize i18n based on --language / --ui-language / --work-language
|
|
137
147
|
const { initI18n } = await import('./i18n.lib.mjs');
|
|
138
|
-
await initI18n(
|
|
148
|
+
await initI18n({
|
|
149
|
+
language: argv.language,
|
|
150
|
+
uiLanguage: argv.uiLanguage,
|
|
151
|
+
workLanguage: argv.workLanguage,
|
|
152
|
+
});
|
|
139
153
|
|
|
140
154
|
// Create permanent log file immediately with timestamp
|
|
141
155
|
const scriptDir = path.dirname(process.argv[1]);
|
package/src/solve.config.lib.mjs
CHANGED
|
@@ -554,7 +554,17 @@ export const SOLVE_OPTION_DEFINITIONS = {
|
|
|
554
554
|
},
|
|
555
555
|
language: {
|
|
556
556
|
type: 'string',
|
|
557
|
-
description: '
|
|
557
|
+
description: 'Default language for both --ui-language and --work-language (en, ru, zh, hi). Defaults to detected system locale. Each track can be overridden independently.',
|
|
558
|
+
choices: ['en', 'ru', 'zh', 'hi'],
|
|
559
|
+
},
|
|
560
|
+
'ui-language': {
|
|
561
|
+
type: 'string',
|
|
562
|
+
description: 'Language for user-facing output (en, ru, zh, hi). Affects terminal status/error messages and bot-generated PR/issue comments. Defaults to --language.',
|
|
563
|
+
choices: ['en', 'ru', 'zh', 'hi'],
|
|
564
|
+
},
|
|
565
|
+
'work-language': {
|
|
566
|
+
type: 'string',
|
|
567
|
+
description: "Working language passed to the AI tool (Claude/Codex/etc). Used as the tool's preferred language for translations and prompts. Defaults to --language.",
|
|
558
568
|
choices: ['en', 'ru', 'zh', 'hi'],
|
|
559
569
|
},
|
|
560
570
|
};
|
package/src/solve.mjs
CHANGED
|
@@ -84,9 +84,15 @@ try {
|
|
|
84
84
|
}
|
|
85
85
|
global.verboseMode = argv.verbose;
|
|
86
86
|
|
|
87
|
-
// Initialize i18n based on --language
|
|
87
|
+
// Initialize i18n based on --language / --ui-language / --work-language
|
|
88
|
+
// (or detected system locale). --language sets both tracks by default;
|
|
89
|
+
// --ui-language and --work-language can override each track independently.
|
|
88
90
|
const { initI18n } = await import('./i18n.lib.mjs');
|
|
89
|
-
await initI18n(
|
|
91
|
+
await initI18n({
|
|
92
|
+
language: argv.language,
|
|
93
|
+
uiLanguage: argv.uiLanguage,
|
|
94
|
+
workLanguage: argv.workLanguage,
|
|
95
|
+
});
|
|
90
96
|
|
|
91
97
|
setupVerboseLogInterceptor(); // Issue #1466: capture [VERBOSE] output in log files
|
|
92
98
|
setupStdioLogInterceptor(); // Issue #1549: capture ALL terminal output in log file
|
package/src/task.config.lib.mjs
CHANGED
|
@@ -87,7 +87,17 @@ export const createYargsConfig = yargsInstance =>
|
|
|
87
87
|
})
|
|
88
88
|
.option('language', {
|
|
89
89
|
type: 'string',
|
|
90
|
-
description: '
|
|
90
|
+
description: 'Default language for both --ui-language and --work-language (en, ru, zh, hi). Defaults to detected system locale.',
|
|
91
|
+
choices: ['en', 'ru', 'zh', 'hi'],
|
|
92
|
+
})
|
|
93
|
+
.option('ui-language', {
|
|
94
|
+
type: 'string',
|
|
95
|
+
description: 'Language for user-facing output (en, ru, zh, hi). Defaults to --language.',
|
|
96
|
+
choices: ['en', 'ru', 'zh', 'hi'],
|
|
97
|
+
})
|
|
98
|
+
.option('work-language', {
|
|
99
|
+
type: 'string',
|
|
100
|
+
description: 'Working language passed to the AI tool (en, ru, zh, hi). Defaults to --language.',
|
|
91
101
|
choices: ['en', 'ru', 'zh', 'hi'],
|
|
92
102
|
})
|
|
93
103
|
.check(argv => {
|
package/src/task.mjs
CHANGED
|
@@ -50,9 +50,13 @@ try {
|
|
|
50
50
|
process.exit(1);
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
// Initialize i18n based on --language
|
|
53
|
+
// Initialize i18n based on --language / --ui-language / --work-language
|
|
54
54
|
const { initI18n } = await import('./i18n.lib.mjs');
|
|
55
|
-
await initI18n(
|
|
55
|
+
await initI18n({
|
|
56
|
+
language: argv.language,
|
|
57
|
+
uiLanguage: argv.uiLanguage,
|
|
58
|
+
workLanguage: argv.workLanguage,
|
|
59
|
+
});
|
|
56
60
|
|
|
57
61
|
const taskInput = argv['task-input'] || argv.taskInput || argv._[0];
|
|
58
62
|
const selectedModel = argv.model || getDefaultTaskModel(argv.tool);
|
package/src/telegram-bot.mjs
CHANGED
|
@@ -416,6 +416,19 @@ function mergeArgsWithOverrides(userArgs, overrides) {
|
|
|
416
416
|
return [...filteredArgs, ...overrides];
|
|
417
417
|
}
|
|
418
418
|
|
|
419
|
+
// Inject --language LOCALE into spawn args if no language flag is already present.
|
|
420
|
+
// Issue #378: telegram bot resolves the user's effective locale and propagates
|
|
421
|
+
// it to spawned solve/hive sessions so the AI tool replies in the same language.
|
|
422
|
+
function injectLanguageIfMissing(args, locale) {
|
|
423
|
+
if (!locale || !args || !Array.isArray(args)) return args;
|
|
424
|
+
const langFlags = new Set(['--language', '--ui-language', '--work-language']);
|
|
425
|
+
for (const arg of args) {
|
|
426
|
+
const flag = arg.startsWith('--') ? arg.split('=')[0] : null;
|
|
427
|
+
if (flag && langFlags.has(flag)) return args;
|
|
428
|
+
}
|
|
429
|
+
return [...args, '--language', locale];
|
|
430
|
+
}
|
|
431
|
+
|
|
419
432
|
/** Validate GitHub URL for Telegram bot commands. Returns { valid, error?, parsed?, normalizedUrl? } */
|
|
420
433
|
async function getCommandUrlArg(args, createYargsConfig, positionalNames) {
|
|
421
434
|
const parsedUrl = createYargsConfig ? await getFirstParsedPositionalArg(args, yargs, createYargsConfig, positionalNames) : null;
|
|
@@ -695,7 +708,7 @@ const { handleSolveQueueCommand } = registerSolveQueueCommand(bot, { ...sharedCo
|
|
|
695
708
|
const { registerSubscribeCommands } = await import('./telegram-subscribers.lib.mjs'); // #1688
|
|
696
709
|
registerSubscribeCommands(bot, sharedCommandOpts);
|
|
697
710
|
const { registerTaskCommands } = await import('./telegram-task-command.lib.mjs');
|
|
698
|
-
const { handleTaskCommand, TASK_COMMAND_NAMES } = registerTaskCommands(bot, { ...sharedCommandOpts, taskEnabled, safeReply, executeAndUpdateMessage });
|
|
711
|
+
const { handleTaskCommand, TASK_COMMAND_NAMES } = registerTaskCommands(bot, { ...sharedCommandOpts, taskEnabled, safeReply, executeAndUpdateMessage, resolveLocale: resolveLocaleFromTelegramCtx });
|
|
699
712
|
|
|
700
713
|
// Named handler for /solve command - extracted for reuse by text-based fallback (issue #1207)
|
|
701
714
|
async function handleSolveCommand(ctx) {
|
|
@@ -943,11 +956,13 @@ async function handleSolveCommand(ctx) {
|
|
|
943
956
|
const solveUrlContext = validation.parsed ? { owner: validation.parsed.owner, repo: validation.parsed.repo, number: validation.parsed.number, type: validation.parsed.type, normalized: validation.parsed.normalized || normalizedUrl } : null;
|
|
944
957
|
|
|
945
958
|
const toolQueuedCount = queueStats.queuedByTool[solveTool] || 0; // tool-specific queue count (#1551)
|
|
959
|
+
// Issue #378: propagate user's effective Telegram locale to the spawned solve session.
|
|
960
|
+
const argsWithLocale = injectLanguageIfMissing(args, solveLocale);
|
|
946
961
|
if (check.canStart && toolQueuedCount === 0) {
|
|
947
962
|
const startingMessage = await safeReply(ctx, formatStartingWorkSessionMessage({ infoBlock }), { reply_to_message_id: ctx.message.message_id });
|
|
948
|
-
await executeAndUpdateMessage(ctx, startingMessage, 'solve',
|
|
963
|
+
await executeAndUpdateMessage(ctx, startingMessage, 'solve', argsWithLocale, infoBlock, effectiveSolveIsolation, solveTool, solveUrlContext);
|
|
949
964
|
} else {
|
|
950
|
-
const queueItem = solveQueue.enqueue({ url: normalizedUrl, args, ctx, requester, infoBlock, tool: solveTool, perCommandIsolation: effectiveSolveIsolation, urlContext: solveUrlContext });
|
|
965
|
+
const queueItem = solveQueue.enqueue({ url: normalizedUrl, args: argsWithLocale, ctx, requester, infoBlock, tool: solveTool, perCommandIsolation: effectiveSolveIsolation, urlContext: solveUrlContext });
|
|
951
966
|
let queueMessage = `š Solve command queued (${solveTool} queue position #${toolQueuedCount + 1})\n\n${infoBlock}`; // tool-specific position (#1551)
|
|
952
967
|
if (check.reason) queueMessage += `\n\nā³ Waiting: ${escapeMarkdown(check.reason)}`;
|
|
953
968
|
const queuedMessage = await safeReply(ctx, queueMessage, { reply_to_message_id: ctx.message.message_id });
|
|
@@ -1111,7 +1126,9 @@ async function handleHiveCommand(ctx) {
|
|
|
1111
1126
|
}
|
|
1112
1127
|
|
|
1113
1128
|
const startingMessage = await safeReply(ctx, formatStartingWorkSessionMessage({ infoBlock }), { reply_to_message_id: ctx.message.message_id });
|
|
1114
|
-
|
|
1129
|
+
// Issue #378: propagate user's effective Telegram locale to the spawned hive session.
|
|
1130
|
+
const hiveArgsWithLocale = injectLanguageIfMissing(args, hiveLocale);
|
|
1131
|
+
await executeAndUpdateMessage(ctx, startingMessage, 'hive', hiveArgsWithLocale, infoBlock, effectiveHiveIsolation, hiveTool);
|
|
1115
1132
|
}
|
|
1116
1133
|
|
|
1117
1134
|
bot.command(/^hive$/i, handleHiveCommand);
|
|
@@ -82,8 +82,20 @@ async function editTelegramMessage(ctx, message, text) {
|
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
+
// Issue #378: inject --language LOCALE into spawn args if no language flag is
|
|
86
|
+
// already present, so spawned task sessions inherit the user's effective locale.
|
|
87
|
+
function injectLanguageIfMissing(args, locale) {
|
|
88
|
+
if (!locale || !args || !Array.isArray(args)) return args;
|
|
89
|
+
const langFlags = new Set(['--language', '--ui-language', '--work-language']);
|
|
90
|
+
for (const arg of args) {
|
|
91
|
+
const flag = arg.startsWith('--') ? arg.split('=')[0] : null;
|
|
92
|
+
if (flag && langFlags.has(flag)) return args;
|
|
93
|
+
}
|
|
94
|
+
return [...args, '--language', locale];
|
|
95
|
+
}
|
|
96
|
+
|
|
85
97
|
export function registerTaskCommands(bot, options) {
|
|
86
|
-
const { VERBOSE, taskEnabled, addBreadcrumb, isOldMessage, isGroupChat, isTopicAuthorized, buildAuthErrorMessage, isChatStopped, getStoppedChatRejectMessage, safeReply, executeAndUpdateMessage, createTaskIssue: createTaskIssueFn = createTaskIssue } = options;
|
|
98
|
+
const { VERBOSE, taskEnabled, addBreadcrumb, isOldMessage, isGroupChat, isTopicAuthorized, buildAuthErrorMessage, isChatStopped, getStoppedChatRejectMessage, safeReply, executeAndUpdateMessage, createTaskIssue: createTaskIssueFn = createTaskIssue, resolveLocale = null } = options;
|
|
87
99
|
|
|
88
100
|
async function handleTaskCommand(ctx) {
|
|
89
101
|
const commandName = getTaskCommandNameFromText(ctx.message?.text) || 'task';
|
|
@@ -179,7 +191,9 @@ export function registerTaskCommands(bot, options) {
|
|
|
179
191
|
|
|
180
192
|
const taskUrlContext = { owner: parsedIssue.owner, repo: parsedIssue.repo, number: parsedIssue.number, type: parsedIssue.type, normalized: parsedIssue.normalized || built.issueUrl };
|
|
181
193
|
const startingMessage = await safeReply(ctx, formatStartingWorkSessionMessage({ infoBlock }), { reply_to_message_id: ctx.message.message_id });
|
|
182
|
-
|
|
194
|
+
const taskLocale = resolveLocale ? resolveLocale(ctx) : null;
|
|
195
|
+
const argsForExec = injectLanguageIfMissing(filteredArgs, taskLocale);
|
|
196
|
+
await executeAndUpdateMessage(ctx, startingMessage, 'task', argsForExec, infoBlock, perCommandIsolation || null, getTaskToolFromArgs(argsForExec), taskUrlContext);
|
|
183
197
|
}
|
|
184
198
|
|
|
185
199
|
bot.command(
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Issue #378: shared helper that emits a "working language" directive to be
|
|
2
|
+
// appended to every tool's system prompt. The directive is empty for English
|
|
3
|
+
// (default), and tells the model to communicate with the user in the chosen
|
|
4
|
+
// work language for free-form text (PR/issue comments, commit messages, chat),
|
|
5
|
+
// while keeping code, identifiers, and CLI strings as-is.
|
|
6
|
+
|
|
7
|
+
import { getWorkLocale } from './i18n.lib.mjs';
|
|
8
|
+
|
|
9
|
+
const LOCALE_DISPLAY_NAMES = Object.freeze({
|
|
10
|
+
en: 'English',
|
|
11
|
+
ru: 'Russian',
|
|
12
|
+
zh: 'Chinese (Simplified)',
|
|
13
|
+
hi: 'Hindi',
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
export function buildWorkLanguageDirective(locale = getWorkLocale()) {
|
|
17
|
+
if (!locale || locale === 'en') return '';
|
|
18
|
+
const name = LOCALE_DISPLAY_NAMES[locale] || locale;
|
|
19
|
+
return `\n\nWorking language: ${name}. When you communicate with the user via comments, commit messages, pull request titles/descriptions, and chat replies, use ${name}. Code, identifiers, and command-line strings stay in their original form.`;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export default { buildWorkLanguageDirective };
|