rrce-workflow 0.3.34 → 0.3.36
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/agent-core/prompts/design.md +34 -2
- package/dist/index.js +26 -8
- package/package.json +1 -1
|
@@ -360,9 +360,41 @@ After saving plan:
|
|
|
360
360
|
|
|
361
361
|
**Wait for user response** before taking any action.
|
|
362
362
|
|
|
363
|
-
### 2.9 Handoff Execution (
|
|
363
|
+
### 2.9 Handoff Execution (ONLY AFTER EXPLICIT USER CONFIRMATION)
|
|
364
364
|
|
|
365
|
-
|
|
365
|
+
**STOP: Do NOT proceed with the code below unless:**
|
|
366
|
+
1. User explicitly answered "y"/"yes"/"yeah"/"sure"/"go ahead" to "Ready to develop?"
|
|
367
|
+
2. You have verified their response is affirmative
|
|
368
|
+
|
|
369
|
+
**If user said "n", "no", or any ambiguous response:**
|
|
370
|
+
- Update task metadata
|
|
371
|
+
- Emit completion signal
|
|
372
|
+
- END SESSION immediately
|
|
373
|
+
|
|
374
|
+
The following code block is provided **for reference only**. Do NOT execute unless user explicitly confirmed:
|
|
375
|
+
|
|
376
|
+
```javascript
|
|
377
|
+
// REFERENCE CODE - EXECUTE ONLY AFTER USER CONFIRMATION
|
|
378
|
+
task({
|
|
379
|
+
description: "Develop {{TASK_SLUG}}",
|
|
380
|
+
prompt: `TASK_SLUG={{TASK_SLUG}}
|
|
381
|
+
WORKSPACE_NAME={{WORKSPACE_NAME}}
|
|
382
|
+
RRCE_DATA={{RRCE_DATA}}
|
|
383
|
+
WORKSPACE_ROOT={{WORKSPACE_ROOT}}
|
|
384
|
+
RRCE_HOME={{RRCE_HOME}}
|
|
385
|
+
|
|
386
|
+
## CONTEXT (DO NOT RE-SEARCH)
|
|
387
|
+
- Design complete: research + planning saved
|
|
388
|
+
- Task count: <X> tasks planned
|
|
389
|
+
- Artifacts: research/{{TASK_SLUG}}-research.md, planning/{{TASK_SLUG}}-plan.md
|
|
390
|
+
|
|
391
|
+
Execute the planned tasks. Return completion signal when done.`,
|
|
392
|
+
subagent_type: "rrce_develop",
|
|
393
|
+
session_id: `develop-{{TASK_SLUG}}`
|
|
394
|
+
})
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
**IMPORTANT:** Use resolved path values (RRCE_DATA, etc.) from orchestrator. Do not use placeholder variables in delegation prompt.
|
|
366
398
|
|
|
367
399
|
```javascript
|
|
368
400
|
task({
|
package/dist/index.js
CHANGED
|
@@ -283,6 +283,7 @@ function scanKnownProjects(projects, excludeWorkspace) {
|
|
|
283
283
|
if (p.name === excludeWorkspace) continue;
|
|
284
284
|
const localConfigPath = path3.join(p.path, ".rrce-workflow", "config.yaml");
|
|
285
285
|
if (fs3.existsSync(localConfigPath)) {
|
|
286
|
+
migrateSemanticSearch(localConfigPath);
|
|
286
287
|
const config = parseWorkspaceConfig(localConfigPath);
|
|
287
288
|
const fullPath = path3.join(p.path, ".rrce-workflow");
|
|
288
289
|
const knowledgePath = path3.join(fullPath, "knowledge");
|
|
@@ -335,6 +336,7 @@ function scanKnownPaths(paths, excludeWorkspace) {
|
|
|
335
336
|
if (!fs3.existsSync(p)) continue;
|
|
336
337
|
const localConfigPath = path3.join(p, ".rrce-workflow", "config.yaml");
|
|
337
338
|
if (fs3.existsSync(localConfigPath)) {
|
|
339
|
+
migrateSemanticSearch(localConfigPath);
|
|
338
340
|
const config = parseWorkspaceConfig(localConfigPath);
|
|
339
341
|
if (config?.name === excludeWorkspace) continue;
|
|
340
342
|
const fullPath = path3.join(p, ".rrce-workflow");
|
|
@@ -376,6 +378,7 @@ function scanGlobalStorage(excludeWorkspace) {
|
|
|
376
378
|
const refsPath = path3.join(projectDataPath, "refs");
|
|
377
379
|
const tasksPath = path3.join(projectDataPath, "tasks");
|
|
378
380
|
const configPath = path3.join(projectDataPath, "config.yaml");
|
|
381
|
+
migrateSemanticSearch(configPath);
|
|
379
382
|
const config = parseWorkspaceConfig(configPath);
|
|
380
383
|
projects.push({
|
|
381
384
|
name: config?.name || entry.name,
|
|
@@ -459,7 +462,7 @@ function parseWorkspaceConfig(configPath) {
|
|
|
459
462
|
}
|
|
460
463
|
}
|
|
461
464
|
const semanticSearchMatch = content.match(/semantic_search:\s*\n\s*enabled:\s*(true|false)/);
|
|
462
|
-
const semanticSearchEnabled = semanticSearchMatch ? semanticSearchMatch[1] === "true" :
|
|
465
|
+
const semanticSearchEnabled = semanticSearchMatch ? semanticSearchMatch[1] === "true" : true;
|
|
463
466
|
return {
|
|
464
467
|
name: nameMatch?.[1]?.trim() || path3.basename(path3.dirname(path3.dirname(configPath))),
|
|
465
468
|
sourcePath: sourcePathMatch?.[1]?.trim(),
|
|
@@ -471,6 +474,20 @@ function parseWorkspaceConfig(configPath) {
|
|
|
471
474
|
return null;
|
|
472
475
|
}
|
|
473
476
|
}
|
|
477
|
+
function migrateSemanticSearch(configPath) {
|
|
478
|
+
try {
|
|
479
|
+
const content = fs3.readFileSync(configPath, "utf-8");
|
|
480
|
+
const semanticSearchMatch = content.match(/semantic_search:\s*\n\s*enabled:\s*(true|false)/);
|
|
481
|
+
if (semanticSearchMatch) {
|
|
482
|
+
return false;
|
|
483
|
+
}
|
|
484
|
+
const updatedContent = content.trimEnd() + "\n\nsemantic_search:\n enabled: true\n";
|
|
485
|
+
fs3.writeFileSync(configPath, updatedContent, "utf-8");
|
|
486
|
+
return true;
|
|
487
|
+
} catch {
|
|
488
|
+
return false;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
474
491
|
function findClosestProject(projects, cwd = process.cwd()) {
|
|
475
492
|
const matches = projects.map((p) => {
|
|
476
493
|
let matchPath = "";
|
|
@@ -1324,6 +1341,10 @@ var init_types = __esm({
|
|
|
1324
1341
|
knowledge: true,
|
|
1325
1342
|
tasks: true,
|
|
1326
1343
|
refs: true
|
|
1344
|
+
},
|
|
1345
|
+
semanticSearch: {
|
|
1346
|
+
enabled: true,
|
|
1347
|
+
model: "Xenova/all-MiniLM-L6-v2"
|
|
1327
1348
|
}
|
|
1328
1349
|
}
|
|
1329
1350
|
};
|
|
@@ -5688,11 +5709,11 @@ async function handleConfigure() {
|
|
|
5688
5709
|
}
|
|
5689
5710
|
const selectedPaths = selected;
|
|
5690
5711
|
logger.info("Configure: User selected projects by path", selectedPaths);
|
|
5691
|
-
let enableSemanticSearch =
|
|
5712
|
+
let enableSemanticSearch = true;
|
|
5692
5713
|
if (selectedPaths.length > 0) {
|
|
5693
5714
|
const shouldEnable = await confirm2({
|
|
5694
5715
|
message: "Enable Semantic Search (Local Mini RAG)?",
|
|
5695
|
-
initialValue:
|
|
5716
|
+
initialValue: true
|
|
5696
5717
|
});
|
|
5697
5718
|
if (isCancel3(shouldEnable)) return;
|
|
5698
5719
|
enableSemanticSearch = shouldEnable;
|
|
@@ -8179,13 +8200,10 @@ tools:
|
|
|
8179
8200
|
opencode: ${config.tools.includes("opencode")}
|
|
8180
8201
|
copilot: ${config.tools.includes("copilot")}
|
|
8181
8202
|
antigravity: ${config.tools.includes("antigravity")}
|
|
8182
|
-
|
|
8183
|
-
if (config.enableRAG) {
|
|
8184
|
-
content += `
|
|
8203
|
+
|
|
8185
8204
|
semantic_search:
|
|
8186
8205
|
enabled: true
|
|
8187
8206
|
`;
|
|
8188
|
-
}
|
|
8189
8207
|
if (config.linkedProjects.length > 0) {
|
|
8190
8208
|
content += `
|
|
8191
8209
|
linked_projects:
|
|
@@ -8208,7 +8226,7 @@ async function registerWithMCP(config, workspacePath, workspaceName) {
|
|
|
8208
8226
|
true,
|
|
8209
8227
|
void 0,
|
|
8210
8228
|
workspacePath,
|
|
8211
|
-
|
|
8229
|
+
{ enabled: true, model: "Xenova/all-MiniLM-L6-v2" }
|
|
8212
8230
|
);
|
|
8213
8231
|
saveMCPConfig2(mcpConfig);
|
|
8214
8232
|
} catch (e) {
|