sync: editable workflows from private repo

- Users can edit/create workflows from Settings → Workflows tab
- File-based storage for custom workflows
- Bundled workflows serve as fallback when no user file exists
- Added createEdge tool access for workflows (Quick Link)
- Cleaned up stale terminology in workflow prompts

Files synced:
- src/services/workflows/workflowFileService.ts (NEW)
- app/api/workflows/[key]/route.ts (NEW)
- src/services/workflows/registry.ts
- src/components/settings/WorkflowsViewer.tsx
- src/tools/infrastructure/registry.ts
- src/services/agents/wiseRAHExecutor.ts
- src/config/workflows/integrate.ts
- src/config/prompts/wise-rah.ts
This commit is contained in:
“BeeRad”
2026-01-04 16:30:25 +11:00
parent 8190df8cf2
commit a3647c0693
8 changed files with 804 additions and 100 deletions
+8 -5
View File
@@ -163,21 +163,24 @@ export class WiseRAHExecutor {
);
// Enforce read-only constraint - remove write tools EXCEPT for workflows
// Workflows (like integrate) need updateNode for direct content updates
const writeToolsToRemove = isWorkflow
? ['createNode', 'createEdge', 'updateEdge', 'embedContent', 'youtubeExtract', 'websiteExtract', 'paperExtract', 'delegateToWiseRAH']
// Workflows need updateNode for content updates and createEdge for Quick Link workflow
const writeToolsToRemove = isWorkflow
? ['createNode', 'updateEdge', 'embedContent', 'youtubeExtract', 'websiteExtract', 'paperExtract', 'delegateToWiseRAH']
: ['createNode', 'updateNode', 'createEdge', 'updateEdge', 'embedContent', 'youtubeExtract', 'websiteExtract', 'paperExtract', 'delegateToWiseRAH'];
writeToolsToRemove.forEach(toolName => {
if (toolName in wrappedTools) {
console.warn(`WiseRAHExecutor: ${toolName} detected in planner toolset. Removing to enforce read-only constraint.`);
delete wrappedTools[toolName];
}
});
if (isWorkflow && 'updateNode' in wrappedTools) {
console.log('✅ [WiseRAHExecutor] updateNode preserved for workflow execution');
}
if (isWorkflow && 'createEdge' in wrappedTools) {
console.log('✅ [WiseRAHExecutor] createEdge preserved for workflow execution');
}
console.log('🔒 [WiseRAHExecutor] Final tools after read-only enforcement:', Object.keys(wrappedTools));
console.log('📝 [WiseRAHExecutor] Starting manual agentic loop...');