@tiqora/tiqora 0.0.4-dev → 0.0.6-dev
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/_tiqora/agents/dev.md +2 -2
- package/_tiqora/agents/pm.md +2 -2
- package/_tiqora/agents/sm.md +2 -2
- package/_tiqora/workflows/4-implementation/create-story/checklist.md +5 -3
- package/_tiqora/workflows/4-implementation/create-story/instructions.xml +5 -4
- package/_tiqora/workflows/4-implementation/dev-story/checklist.md +4 -2
- package/_tiqora/workflows/4-implementation/dev-story/instructions.xml +85 -47
- package/dist/index.cjs +15 -17
- package/dist/index.mjs +15 -17
- package/package.json +1 -1
package/_tiqora/agents/dev.md
CHANGED
|
@@ -12,9 +12,9 @@ You must fully embody this agent persona and follow activation rules exactly.
|
|
|
12
12
|
<step n="2">Load project config from {project-root}/.tiqora.yaml (required).</step>
|
|
13
13
|
<step n="3">Load profile config from ~/.tiqora/config.yaml when available (optional).</step>
|
|
14
14
|
<step n="4">Merge effective config as profile (base) + project (override).</step>
|
|
15
|
-
<step n="5">Apply defaults when missing: user_name=Developer, idle_threshold_minutes=15, communication_language=
|
|
15
|
+
<step n="5">Apply defaults when missing: user_name=Developer, idle_threshold_minutes=15, communication_language=Français, document_language=English.</step>
|
|
16
16
|
<step n="6">Validate required project keys: pm_tool, git_host, branch_pattern. If missing, halt with a blocking error.</step>
|
|
17
|
-
<step n="7">Communicate in communication_language. Generate
|
|
17
|
+
<step n="7">Communicate in communication_language. Generate PM documents and reports (Jira, MR Report) in document_language. Keep internal artifacts (runs, challenge) in English.</step>
|
|
18
18
|
<step n="8">Do not start coding from chat only. Route delivery execution through a workflow command.</step>
|
|
19
19
|
<step n="9">When a menu item has workflow="path/to/workflow.yaml": always load {project-root}/_tiqora/core/tasks/workflow.xml, pass workflow-config, then execute all steps in order. If the workflow path does not exist, clearly report it is not implemented yet.</step>
|
|
20
20
|
<step n="10">Apply operational reflexes by default for delivery work: PM MCP context, branch creation/switching, MR preparation, and sync queue handling.</step>
|
package/_tiqora/agents/pm.md
CHANGED
|
@@ -12,9 +12,9 @@ You must fully embody this agent persona and follow activation rules exactly.
|
|
|
12
12
|
<step n="2">Load project config from {project-root}/.tiqora.yaml (required).</step>
|
|
13
13
|
<step n="3">Load profile config from ~/.tiqora/config.yaml when available (optional).</step>
|
|
14
14
|
<step n="4">Merge effective config as profile (base) + project (override).</step>
|
|
15
|
-
<step n="5">Apply defaults when missing: user_name=Developer, idle_threshold_minutes=15, communication_language=
|
|
15
|
+
<step n="5">Apply defaults when missing: user_name=Developer, idle_threshold_minutes=15, communication_language=Français, document_language=English.</step>
|
|
16
16
|
<step n="6">Validate required project keys: pm_tool, git_host, branch_pattern. If missing, halt with a blocking error.</step>
|
|
17
|
-
<step n="7">Communicate in communication_language. Generate
|
|
17
|
+
<step n="7">Communicate in communication_language. Generate PM documents in document_language. Keep internal artifacts in English.</step>
|
|
18
18
|
<step n="8">Anchor decisions in user value, measurable outcomes, and scope boundaries.</step>
|
|
19
19
|
<step n="9">When a menu item has workflow="path/to/workflow.yaml": always load {project-root}/_tiqora/core/tasks/workflow.xml, pass workflow-config, then execute all steps in order. If the workflow path does not exist, clearly report it is not implemented yet.</step>
|
|
20
20
|
<step n="10">Apply operational reflexes for product delivery: MCP ticket creation/update, branch naming alignment, MR acceptance quality, and sync fallback.</step>
|
package/_tiqora/agents/sm.md
CHANGED
|
@@ -12,9 +12,9 @@ You must fully embody this agent persona and follow activation rules exactly.
|
|
|
12
12
|
<step n="2">Load project config from {project-root}/.tiqora.yaml (required).</step>
|
|
13
13
|
<step n="3">Load profile config from ~/.tiqora/config.yaml when available (optional).</step>
|
|
14
14
|
<step n="4">Merge effective config as profile (base) + project (override).</step>
|
|
15
|
-
<step n="5">Apply defaults when missing: user_name=Developer, idle_threshold_minutes=15, communication_language=
|
|
15
|
+
<step n="5">Apply defaults when missing: user_name=Developer, idle_threshold_minutes=15, communication_language=Français, document_language=English.</step>
|
|
16
16
|
<step n="6">Validate required project keys: pm_tool, git_host, branch_pattern. If missing, halt with a blocking error.</step>
|
|
17
|
-
<step n="7">Communicate in communication_language. Keep
|
|
17
|
+
<step n="7">Communicate in communication_language. Generate PM documents in document_language. Keep internal artifacts in English.</step>
|
|
18
18
|
<step n="8">Do not implement code directly. Route development work to /tiq:workflow:dev-story.</step>
|
|
19
19
|
<step n="9">When a menu item has workflow="path/to/workflow.yaml": always load {project-root}/_tiqora/core/tasks/workflow.xml, pass workflow-config, then execute all steps in order. If the workflow path does not exist, clearly report it is not implemented yet.</step>
|
|
20
20
|
<step n="10">Apply operational reflexes for flow control: MCP ticket hygiene, branch policy enforcement, MR readiness gate, and sync queue visibility.</step>
|
|
@@ -70,10 +70,12 @@ validation-criticality: "HIGH"
|
|
|
70
70
|
- [ ] Includes all discussion details (problem, outcome, ACs, scope, etc).
|
|
71
71
|
- [ ] Includes metadata (pm_tool, git_host, document_language, created_at).
|
|
72
72
|
|
|
73
|
-
## 9) Communication
|
|
73
|
+
## 9) Communication and Languages
|
|
74
74
|
|
|
75
|
-
- [ ] Conversation in `communication_language` (
|
|
76
|
-
- [ ] Story
|
|
75
|
+
- [ ] Conversation with user in `communication_language` (from config).
|
|
76
|
+
- [ ] Story content (Jira ticket, descriptions, comments) in `document_language`.
|
|
77
|
+
- [ ] Internal JSON artifacts (.tiqora/ files) in ENGLISH (agent performance).
|
|
78
|
+
- [ ] Commits in ENGLISH (dev standard).
|
|
77
79
|
- [ ] Clear next steps offered (dev-story, view, etc).
|
|
78
80
|
|
|
79
81
|
## Final Result
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
<critical>The workflow execution engine is governed by: {project-root}/_tiqora/core/tasks/workflow.xml</critical>
|
|
3
3
|
<critical>You MUST have already loaded and processed: {installed_path}/workflow.yaml</critical>
|
|
4
4
|
<critical>YOU MUST ALWAYS SPEAK OUTPUT in the configured communication_language resolved from merged tiqora config.</critical>
|
|
5
|
-
<critical>
|
|
6
|
-
<critical>
|
|
5
|
+
<critical>Generate all PM-facing content (Jira ticket, descriptions, comments) in {{document_language}}.</critical>
|
|
6
|
+
<critical>Keep internal data files (.tiqora/ runs, JSON artifacts, field keys) in ENGLISH for agent performance.</critical>
|
|
7
|
+
<critical>Commits are ALWAYS in ENGLISH (dev standard). This is non-negotiable.</critical>
|
|
7
8
|
<critical>Execute ALL steps in exact order; do NOT skip steps.</critical>
|
|
8
9
|
|
|
9
10
|
<step n="1" goal="Load configuration">
|
|
@@ -88,7 +89,7 @@ Tell me about what you want to build or fix. What's the idea?</ask>
|
|
|
88
89
|
- Make it clear and searchable
|
|
89
90
|
</action>
|
|
90
91
|
|
|
91
|
-
<action>Generate story description
|
|
92
|
+
<action>Generate story description in {{document_language}} as a clean summary of our conversation:
|
|
92
93
|
"## Problem Statement
|
|
93
94
|
|
|
94
95
|
{{problem_statement}}
|
|
@@ -201,7 +202,7 @@ Choose:
|
|
|
201
202
|
- created_at timestamp
|
|
202
203
|
- status: "created_in_jira"
|
|
203
204
|
</action>
|
|
204
|
-
<action if="pm_tool is not none">Post creation comment to Jira issue
|
|
205
|
+
<action if="pm_tool is not none">Post creation comment to Jira issue in {{document_language}}:
|
|
205
206
|
"✓ Story created via Tiqora create-story workflow
|
|
206
207
|
|
|
207
208
|
Ready for:
|
|
@@ -94,8 +94,10 @@ validation-criticality: "HIGHEST"
|
|
|
94
94
|
## 10) Communication and Languages
|
|
95
95
|
|
|
96
96
|
- [ ] User-facing communication in `communication_language` (from config).
|
|
97
|
-
- [ ] Technical artifacts (challenge, implementation) in ENGLISH for
|
|
98
|
-
- [ ]
|
|
97
|
+
- [ ] Technical agent artifacts (challenge.md, implementation notes) in ENGLISH for agent performance.
|
|
98
|
+
- [ ] PM-facing content (Jira comments, MR Report) in `document_language`.
|
|
99
|
+
- [ ] Internal data files (.tiqora/ runs, JSON) in ENGLISH (agent performance).
|
|
100
|
+
- [ ] Commits in ENGLISH (dev standard).
|
|
99
101
|
- [ ] Output concise; no unnecessary internal execution noise.
|
|
100
102
|
|
|
101
103
|
## 11) Final Artifact Structure
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
<critical>The workflow execution engine is governed by: {project-root}/_tiqora/core/tasks/workflow.xml</critical>
|
|
3
3
|
<critical>You MUST have already loaded and processed: {installed_path}/workflow.yaml</critical>
|
|
4
4
|
<critical>YOU MUST ALWAYS SPEAK OUTPUT in the configured communication_language resolved from merged tiqora config.</critical>
|
|
5
|
-
<critical>Generate technical artifacts (challenge, implementation, validation) in ENGLISH for
|
|
6
|
-
<critical>Generate
|
|
5
|
+
<critical>Generate technical agent artifacts (challenge.md, implementation notes, validation) in ENGLISH for agent performance.</critical>
|
|
6
|
+
<critical>Generate all PM-facing content (Jira comments, MR Report) in {{document_language}}.</critical>
|
|
7
|
+
<critical>Commits are ALWAYS in ENGLISH (dev standard). This is non-negotiable.</critical>
|
|
7
8
|
<critical>Execute ALL steps in exact order; do NOT skip steps.</critical>
|
|
8
9
|
<critical>Do not report "completed" until all implementation, validation, and PM sync activities are truly finished.</critical>
|
|
9
10
|
|
|
@@ -95,7 +96,7 @@
|
|
|
95
96
|
</check>
|
|
96
97
|
|
|
97
98
|
<check if="ticket is clear and challenge passes">
|
|
98
|
-
<action if="pm_tool is not none and ticket was retrieved">Post challenge summary comment on ticket
|
|
99
|
+
<action if="pm_tool is not none and ticket was retrieved">Post challenge summary comment on ticket in {{document_language}}:
|
|
99
100
|
"✓ Challenge Gate PASSED
|
|
100
101
|
- Scope: [1-2 sentences on what will be built]
|
|
101
102
|
- Approach: [1-2 sentences on technical direction]
|
|
@@ -160,71 +161,92 @@
|
|
|
160
161
|
Fixes {{ticketId}}"
|
|
161
162
|
</action>
|
|
162
163
|
|
|
164
|
+
<action>Push branch to remote immediately after commit: git push -u origin {{branchName}}</action>
|
|
165
|
+
|
|
163
166
|
<action>Update run state: mark implementation_completed_at timestamp.</action>
|
|
164
167
|
|
|
165
168
|
<output>[WORKFLOW] ✓ Implementation complete | Changes committed to {{branchName}}</output>
|
|
166
169
|
</step>
|
|
167
170
|
|
|
168
171
|
<step n="7" goal="Generate MR Report and request developer validation">
|
|
169
|
-
<critical>MR Report is
|
|
172
|
+
<critical>MR Report is MANDATORY. Create file, display to developer, and get explicit approval before proceeding.</critical>
|
|
170
173
|
|
|
171
|
-
<action>
|
|
174
|
+
<action>STEP 7.1: Analyze all changes made since branch creation.
|
|
175
|
+
1. Run: git diff {{branch_base}}..HEAD
|
|
176
|
+
2. Identify all modified files
|
|
177
|
+
3. Note test additions/modifications
|
|
178
|
+
4. Understand the overall implementation scope
|
|
179
|
+
</action>
|
|
172
180
|
|
|
173
|
-
<action>Generate MR Report
|
|
181
|
+
<action>STEP 7.2: Generate comprehensive MR Report content in {{document_language}}.
|
|
182
|
+
Use git diff analysis to fill in concrete details for each section:
|
|
174
183
|
|
|
175
|
-
**Title**: [Brief summary of what was implemented]
|
|
184
|
+
**Title**: [Brief summary of what was implemented, extracted from commit message and challenge scope]
|
|
176
185
|
|
|
177
186
|
**Description**:
|
|
178
|
-
[1-2 paragraphs
|
|
187
|
+
[1-2 paragraphs: What problem does this solve? What was implemented? Why this approach?]
|
|
179
188
|
|
|
180
189
|
**Technical Choices**:
|
|
181
|
-
- [Key
|
|
182
|
-
- [Key
|
|
183
|
-
- [
|
|
190
|
+
- [Key decision 1 with justification]
|
|
191
|
+
- [Key decision 2 with justification]
|
|
192
|
+
- [Libraries/tools introduced and why]
|
|
184
193
|
|
|
185
|
-
**Changes Made
|
|
186
|
-
- [File
|
|
187
|
-
- [File
|
|
188
|
-
[List
|
|
194
|
+
**Changes Made** (from git diff):
|
|
195
|
+
- [File 1]: [What changed and why]
|
|
196
|
+
- [File 2]: [What changed and why]
|
|
197
|
+
[List ALL significant files changed]
|
|
189
198
|
|
|
190
199
|
**Testing**:
|
|
191
|
-
- Unit tests: [
|
|
192
|
-
- Integration tests: [
|
|
193
|
-
- Manual testing
|
|
200
|
+
- Unit tests: [List files and what they test]
|
|
201
|
+
- Integration tests: [If applicable]
|
|
202
|
+
- Manual testing: [Step-by-step verification instructions]
|
|
194
203
|
|
|
195
204
|
**How to Run**:
|
|
196
|
-
1. [
|
|
197
|
-
2. [Build
|
|
198
|
-
3. [
|
|
205
|
+
1. [Setup prerequisites]
|
|
206
|
+
2. [Build command]
|
|
207
|
+
3. [Run command to demonstrate feature]
|
|
199
208
|
4. [Expected output/behavior]
|
|
200
209
|
|
|
201
210
|
**Deployment Notes**:
|
|
202
|
-
- [
|
|
203
|
-
-
|
|
204
|
-
-
|
|
205
|
-
-
|
|
211
|
+
- Migrations: [Yes/No - describe if yes]
|
|
212
|
+
- Environment variables: [List if any]
|
|
213
|
+
- Breaking changes: [Yes/No - describe if yes]
|
|
214
|
+
- Rollback plan: [How to rollback if needed]
|
|
206
215
|
|
|
207
216
|
**Reviewed By**: [Developer name]
|
|
208
|
-
**Reviewed At**: [
|
|
217
|
+
**Reviewed At**: [Current timestamp]
|
|
209
218
|
</action>
|
|
210
219
|
|
|
211
|
-
<action>
|
|
220
|
+
<action>STEP 7.3: WRITE the MR Report file to {workflow_runs_dir}/{{runId}}-mr-report.md with the generated content.</action>
|
|
221
|
+
|
|
222
|
+
<action>STEP 7.4: Display the MR Report to the developer and ask for explicit validation.</action>
|
|
212
223
|
|
|
213
|
-
<ask
|
|
214
|
-
[ ] Are technical choices explained clearly?
|
|
215
|
-
[ ] Are testing instructions complete and accurate?
|
|
216
|
-
[ ] Are deployment notes accurate?
|
|
224
|
+
<ask>✓ MR Report generated and saved to: {workflow_runs_dir}/{{runId}}-mr-report.md
|
|
217
225
|
|
|
218
|
-
|
|
226
|
+
Please review carefully:
|
|
227
|
+
- [ ] Title and description accurately reflect the work?
|
|
228
|
+
- [ ] All files changed are documented?
|
|
229
|
+
- [ ] Testing instructions are clear and complete?
|
|
230
|
+
- [ ] Deployment notes are accurate?
|
|
219
231
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
232
|
+
What would you like to do? (approve/edit/regenerate)</ask>
|
|
233
|
+
|
|
234
|
+
<check if="developer chooses edit">
|
|
235
|
+
<action>Ask developer what needs to be changed in the report.</action>
|
|
236
|
+
<action>Apply the requested edits to the MR Report file.</action>
|
|
237
|
+
<action>Display updated report and re-ask for validation.</action>
|
|
223
238
|
</check>
|
|
224
239
|
|
|
225
|
-
<
|
|
240
|
+
<check if="developer chooses regenerate">
|
|
241
|
+
<action>Ask developer for guidance on what should be different.</action>
|
|
242
|
+
<action>Re-generate MR Report with new guidance and save to file.</action>
|
|
243
|
+
<action>Display updated report and re-ask for validation.</action>
|
|
244
|
+
</check>
|
|
226
245
|
|
|
227
|
-
<
|
|
246
|
+
<check if="developer chooses approve">
|
|
247
|
+
<action>STEP 7.5: Mark run state: mr_report_approved_at = now, mr_report_path = {workflow_runs_dir}/{{runId}}-mr-report.md</action>
|
|
248
|
+
<output>[WORKFLOW] ✓ MR Report approved and saved</output>
|
|
249
|
+
</check>
|
|
228
250
|
</step>
|
|
229
251
|
|
|
230
252
|
<step n="8" goal="Validate definition of done checklist">
|
|
@@ -244,17 +266,33 @@
|
|
|
244
266
|
Store as {{total_worklog_minutes}}.
|
|
245
267
|
</action>
|
|
246
268
|
|
|
247
|
-
<!-- STEP 9.2: Create
|
|
248
|
-
<action>
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
-
|
|
252
|
-
-
|
|
253
|
-
|
|
254
|
-
|
|
269
|
+
<!-- STEP 9.2: Create MR (branch already pushed in step 6) -->
|
|
270
|
+
<action>STEP 9.2a: Attempt to create MR/PR in {{git_host}} using available tools:
|
|
271
|
+
- If {{git_host}} == "github": Use GitHub CLI (gh pr create) or GitHub API MCP if available
|
|
272
|
+
- If {{git_host}} == "gitlab": Use GitLab CLI (gitlab) or GitLab API MCP if available
|
|
273
|
+
- If {{git_host}} == "gitea": Use Gitea API or CLI if available
|
|
274
|
+
- MR/PR Details:
|
|
275
|
+
* Title: "[{{ticketId}}] " + [MR Report title from step 7]
|
|
276
|
+
* Description: [Full MR Report content from {workflow_runs_dir}/{{runId}}-mr-report.md]
|
|
277
|
+
* Target branch: {{branch_base}} (usually main/master)
|
|
278
|
+
* Source branch: {{branchName}}
|
|
255
279
|
</action>
|
|
256
280
|
|
|
257
|
-
<
|
|
281
|
+
<check if="MR/PR creation succeeds via CLI or MCP">
|
|
282
|
+
<action>Capture MR/PR URL as {{mr_url}}.</action>
|
|
283
|
+
</check>
|
|
284
|
+
|
|
285
|
+
<check if="MR/PR creation fails or no tools available">
|
|
286
|
+
<action>STEP 9.2b (Fallback): Generate MR/PR draft template for manual creation.
|
|
287
|
+
1. Create {workflow_runs_dir}/{{runId}}-mr-draft.md with:
|
|
288
|
+
- MR URL template: https://gitlab.com/{{project}}/{{repo}}/-/merge_requests/new?merge_request[source_branch]={{branchName}}&merge_request[target_branch]={{branch_base}}
|
|
289
|
+
- Pre-filled MR details (title, description from MR Report)
|
|
290
|
+
- Instructions: "Copy the content below into GitLab to create the MR manually"
|
|
291
|
+
2. Display to user: "⚠️ MR/PR cannot be created automatically. Here's a draft for manual creation:"
|
|
292
|
+
3. Ask user to create MR manually and provide the URL when done.
|
|
293
|
+
4. Once user provides URL, capture as {{mr_url}}.
|
|
294
|
+
</action>
|
|
295
|
+
</check>
|
|
258
296
|
|
|
259
297
|
<!-- STEP 9.3: Transition Jira to Review -->
|
|
260
298
|
<action if="pm_tool is not none and ticket was retrieved">
|
|
@@ -263,7 +301,7 @@
|
|
|
263
301
|
|
|
264
302
|
<!-- STEP 9.4: Push Final Jira Sync -->
|
|
265
303
|
<action if="pm_tool is not none and ticket was retrieved">
|
|
266
|
-
Add final completion comment to ticket
|
|
304
|
+
Add final completion comment to ticket in {{document_language}}:
|
|
267
305
|
"✓ IMPLEMENTATION COMPLETE
|
|
268
306
|
|
|
269
307
|
Branch: {{branchName}}
|
package/dist/index.cjs
CHANGED
|
@@ -663,8 +663,8 @@ var import_node_os2 = require("os");
|
|
|
663
663
|
var import_node_path4 = require("path");
|
|
664
664
|
var DEFAULT_IDLE_THRESHOLD_MINUTES = 15;
|
|
665
665
|
var DEFAULT_USER_NAME = "Developer";
|
|
666
|
-
var DEFAULT_COMMUNICATION_LANGUAGE = "
|
|
667
|
-
var DEFAULT_DOCUMENT_LANGUAGE = "
|
|
666
|
+
var DEFAULT_COMMUNICATION_LANGUAGE = "Fran\xE7ais";
|
|
667
|
+
var DEFAULT_DOCUMENT_LANGUAGE = "English";
|
|
668
668
|
var PROJECT_INIT_CONFIG_FILE = ".tiqora.yaml";
|
|
669
669
|
var GLOBAL_USER_CONFIG_FILE = ".tiqora/config.yaml";
|
|
670
670
|
function createProjectInitConfigYaml(answers) {
|
|
@@ -672,10 +672,15 @@ function createProjectInitConfigYaml(answers) {
|
|
|
672
672
|
if (branchPattern.length === 0) {
|
|
673
673
|
throw new Error("Branch pattern cannot be empty.");
|
|
674
674
|
}
|
|
675
|
+
const documentLanguage = normalizeLanguageValue(
|
|
676
|
+
answers.documentLanguage ?? DEFAULT_DOCUMENT_LANGUAGE,
|
|
677
|
+
"document_language"
|
|
678
|
+
);
|
|
675
679
|
const lines = [
|
|
676
680
|
`pm_tool: ${answers.pmTool}`,
|
|
677
681
|
`git_host: ${answers.gitHost}`,
|
|
678
|
-
`branch_pattern: '${escapeSingleQuotes(branchPattern)}'
|
|
682
|
+
`branch_pattern: '${escapeSingleQuotes(branchPattern)}'`,
|
|
683
|
+
`document_language: '${escapeSingleQuotes(documentLanguage)}'`
|
|
679
684
|
];
|
|
680
685
|
if (answers.pmTool === "jira") {
|
|
681
686
|
const jira = answers.jira;
|
|
@@ -707,15 +712,10 @@ function createGlobalUserConfigYaml(answers) {
|
|
|
707
712
|
answers.communicationLanguage ?? DEFAULT_COMMUNICATION_LANGUAGE,
|
|
708
713
|
"communication_language"
|
|
709
714
|
);
|
|
710
|
-
const documentLanguage = normalizeLanguageValue(
|
|
711
|
-
answers.documentLanguage ?? DEFAULT_DOCUMENT_LANGUAGE,
|
|
712
|
-
"document_language"
|
|
713
|
-
);
|
|
714
715
|
return [
|
|
715
716
|
`user_name: '${escapeSingleQuotes(userName)}'`,
|
|
716
717
|
`idle_threshold_minutes: ${idleThresholdMinutes}`,
|
|
717
718
|
`communication_language: '${escapeSingleQuotes(communicationLanguage)}'`,
|
|
718
|
-
`document_language: '${escapeSingleQuotes(documentLanguage)}'`,
|
|
719
719
|
""
|
|
720
720
|
].join("\n");
|
|
721
721
|
}
|
|
@@ -1180,7 +1180,7 @@ async function defaultCollectInitAnswers(context) {
|
|
|
1180
1180
|
}
|
|
1181
1181
|
const branchPatternAnswer = await (0, import_prompts3.text)({
|
|
1182
1182
|
message: "Branch naming pattern:",
|
|
1183
|
-
|
|
1183
|
+
initialValue: context.suggestedBranchPattern,
|
|
1184
1184
|
placeholder: "feature/*",
|
|
1185
1185
|
validate(value) {
|
|
1186
1186
|
if (value.trim().length === 0) {
|
|
@@ -1215,9 +1215,8 @@ async function defaultCollectInitAnswers(context) {
|
|
|
1215
1215
|
return null;
|
|
1216
1216
|
}
|
|
1217
1217
|
const communicationLanguageAnswer = await (0, import_prompts3.text)({
|
|
1218
|
-
message: "Agent response language:",
|
|
1219
|
-
|
|
1220
|
-
placeholder: "fr",
|
|
1218
|
+
message: "Agent response language (e.g. Fran\xE7ais, English, Espa\xF1ol):",
|
|
1219
|
+
initialValue: context.existingConfig?.communicationLanguage ?? DEFAULT_COMMUNICATION_LANGUAGE,
|
|
1221
1220
|
validate(value) {
|
|
1222
1221
|
if (value.trim().length === 0) {
|
|
1223
1222
|
return "Language cannot be empty.";
|
|
@@ -1230,9 +1229,8 @@ async function defaultCollectInitAnswers(context) {
|
|
|
1230
1229
|
return null;
|
|
1231
1230
|
}
|
|
1232
1231
|
const documentLanguageAnswer = await (0, import_prompts3.text)({
|
|
1233
|
-
message: "Document output language:",
|
|
1234
|
-
|
|
1235
|
-
placeholder: "fr",
|
|
1232
|
+
message: "Document output language (e.g. Fran\xE7ais, English, Espa\xF1ol):",
|
|
1233
|
+
initialValue: context.existingConfig?.documentLanguage ?? DEFAULT_DOCUMENT_LANGUAGE,
|
|
1236
1234
|
validate(value) {
|
|
1237
1235
|
if (value.trim().length === 0) {
|
|
1238
1236
|
return "Language cannot be empty.";
|
|
@@ -1299,8 +1297,8 @@ var PROJECT_CONFIG_FILE = ".tiqora.yaml";
|
|
|
1299
1297
|
var GLOBAL_CONFIG_FILE = ".tiqora/config.yaml";
|
|
1300
1298
|
var MISSING_CONFIG_ERROR_MESSAGE = "\u2717 No .tiqora.yaml found. Run npx tiqora init first.";
|
|
1301
1299
|
var DEFAULT_USER_NAME2 = "Developer";
|
|
1302
|
-
var DEFAULT_COMMUNICATION_LANGUAGE2 = "
|
|
1303
|
-
var DEFAULT_DOCUMENT_LANGUAGE2 = "
|
|
1300
|
+
var DEFAULT_COMMUNICATION_LANGUAGE2 = "Fran\xE7ais";
|
|
1301
|
+
var DEFAULT_DOCUMENT_LANGUAGE2 = "English";
|
|
1304
1302
|
var REQUIRED_CONFIG_KEYS = [
|
|
1305
1303
|
"pm_tool",
|
|
1306
1304
|
"git_host",
|
package/dist/index.mjs
CHANGED
|
@@ -671,8 +671,8 @@ import { homedir as homedir2 } from "os";
|
|
|
671
671
|
import { resolve as resolve4 } from "path";
|
|
672
672
|
var DEFAULT_IDLE_THRESHOLD_MINUTES = 15;
|
|
673
673
|
var DEFAULT_USER_NAME = "Developer";
|
|
674
|
-
var DEFAULT_COMMUNICATION_LANGUAGE = "
|
|
675
|
-
var DEFAULT_DOCUMENT_LANGUAGE = "
|
|
674
|
+
var DEFAULT_COMMUNICATION_LANGUAGE = "Fran\xE7ais";
|
|
675
|
+
var DEFAULT_DOCUMENT_LANGUAGE = "English";
|
|
676
676
|
var PROJECT_INIT_CONFIG_FILE = ".tiqora.yaml";
|
|
677
677
|
var GLOBAL_USER_CONFIG_FILE = ".tiqora/config.yaml";
|
|
678
678
|
function createProjectInitConfigYaml(answers) {
|
|
@@ -680,10 +680,15 @@ function createProjectInitConfigYaml(answers) {
|
|
|
680
680
|
if (branchPattern.length === 0) {
|
|
681
681
|
throw new Error("Branch pattern cannot be empty.");
|
|
682
682
|
}
|
|
683
|
+
const documentLanguage = normalizeLanguageValue(
|
|
684
|
+
answers.documentLanguage ?? DEFAULT_DOCUMENT_LANGUAGE,
|
|
685
|
+
"document_language"
|
|
686
|
+
);
|
|
683
687
|
const lines = [
|
|
684
688
|
`pm_tool: ${answers.pmTool}`,
|
|
685
689
|
`git_host: ${answers.gitHost}`,
|
|
686
|
-
`branch_pattern: '${escapeSingleQuotes(branchPattern)}'
|
|
690
|
+
`branch_pattern: '${escapeSingleQuotes(branchPattern)}'`,
|
|
691
|
+
`document_language: '${escapeSingleQuotes(documentLanguage)}'`
|
|
687
692
|
];
|
|
688
693
|
if (answers.pmTool === "jira") {
|
|
689
694
|
const jira = answers.jira;
|
|
@@ -715,15 +720,10 @@ function createGlobalUserConfigYaml(answers) {
|
|
|
715
720
|
answers.communicationLanguage ?? DEFAULT_COMMUNICATION_LANGUAGE,
|
|
716
721
|
"communication_language"
|
|
717
722
|
);
|
|
718
|
-
const documentLanguage = normalizeLanguageValue(
|
|
719
|
-
answers.documentLanguage ?? DEFAULT_DOCUMENT_LANGUAGE,
|
|
720
|
-
"document_language"
|
|
721
|
-
);
|
|
722
723
|
return [
|
|
723
724
|
`user_name: '${escapeSingleQuotes(userName)}'`,
|
|
724
725
|
`idle_threshold_minutes: ${idleThresholdMinutes}`,
|
|
725
726
|
`communication_language: '${escapeSingleQuotes(communicationLanguage)}'`,
|
|
726
|
-
`document_language: '${escapeSingleQuotes(documentLanguage)}'`,
|
|
727
727
|
""
|
|
728
728
|
].join("\n");
|
|
729
729
|
}
|
|
@@ -1194,7 +1194,7 @@ async function defaultCollectInitAnswers(context) {
|
|
|
1194
1194
|
}
|
|
1195
1195
|
const branchPatternAnswer = await text2({
|
|
1196
1196
|
message: "Branch naming pattern:",
|
|
1197
|
-
|
|
1197
|
+
initialValue: context.suggestedBranchPattern,
|
|
1198
1198
|
placeholder: "feature/*",
|
|
1199
1199
|
validate(value) {
|
|
1200
1200
|
if (value.trim().length === 0) {
|
|
@@ -1229,9 +1229,8 @@ async function defaultCollectInitAnswers(context) {
|
|
|
1229
1229
|
return null;
|
|
1230
1230
|
}
|
|
1231
1231
|
const communicationLanguageAnswer = await text2({
|
|
1232
|
-
message: "Agent response language:",
|
|
1233
|
-
|
|
1234
|
-
placeholder: "fr",
|
|
1232
|
+
message: "Agent response language (e.g. Fran\xE7ais, English, Espa\xF1ol):",
|
|
1233
|
+
initialValue: context.existingConfig?.communicationLanguage ?? DEFAULT_COMMUNICATION_LANGUAGE,
|
|
1235
1234
|
validate(value) {
|
|
1236
1235
|
if (value.trim().length === 0) {
|
|
1237
1236
|
return "Language cannot be empty.";
|
|
@@ -1244,9 +1243,8 @@ async function defaultCollectInitAnswers(context) {
|
|
|
1244
1243
|
return null;
|
|
1245
1244
|
}
|
|
1246
1245
|
const documentLanguageAnswer = await text2({
|
|
1247
|
-
message: "Document output language:",
|
|
1248
|
-
|
|
1249
|
-
placeholder: "fr",
|
|
1246
|
+
message: "Document output language (e.g. Fran\xE7ais, English, Espa\xF1ol):",
|
|
1247
|
+
initialValue: context.existingConfig?.documentLanguage ?? DEFAULT_DOCUMENT_LANGUAGE,
|
|
1250
1248
|
validate(value) {
|
|
1251
1249
|
if (value.trim().length === 0) {
|
|
1252
1250
|
return "Language cannot be empty.";
|
|
@@ -1313,8 +1311,8 @@ var PROJECT_CONFIG_FILE = ".tiqora.yaml";
|
|
|
1313
1311
|
var GLOBAL_CONFIG_FILE = ".tiqora/config.yaml";
|
|
1314
1312
|
var MISSING_CONFIG_ERROR_MESSAGE = "\u2717 No .tiqora.yaml found. Run npx tiqora init first.";
|
|
1315
1313
|
var DEFAULT_USER_NAME2 = "Developer";
|
|
1316
|
-
var DEFAULT_COMMUNICATION_LANGUAGE2 = "
|
|
1317
|
-
var DEFAULT_DOCUMENT_LANGUAGE2 = "
|
|
1314
|
+
var DEFAULT_COMMUNICATION_LANGUAGE2 = "Fran\xE7ais";
|
|
1315
|
+
var DEFAULT_DOCUMENT_LANGUAGE2 = "English";
|
|
1318
1316
|
var REQUIRED_CONFIG_KEYS = [
|
|
1319
1317
|
"pm_tool",
|
|
1320
1318
|
"git_host",
|
package/package.json
CHANGED