coder-config 0.45.10 → 0.45.12
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/config-loader.js +3 -1
- package/lib/constants.js +1 -1
- package/lib/workstreams.js +32 -1
- package/package.json +1 -1
package/config-loader.js
CHANGED
|
@@ -28,7 +28,7 @@ const { init, show } = require('./lib/init');
|
|
|
28
28
|
const { memoryList, memoryInit, memoryAdd, memorySearch } = require('./lib/memory');
|
|
29
29
|
const { envList, envSet, envUnset } = require('./lib/env');
|
|
30
30
|
const { getProjectsRegistryPath, loadProjectsRegistry, saveProjectsRegistry, projectList, projectAdd, projectRemove } = require('./lib/projects');
|
|
31
|
-
const { getWorkstreamsPath, loadWorkstreams, saveWorkstreams, workstreamList, workstreamCreate, workstreamUpdate, workstreamDelete, workstreamUse, workstreamActive, workstreamAddProject, workstreamRemoveProject, workstreamInject, workstreamDetect, workstreamGet, getActiveWorkstream, countWorkstreamsForProject, workstreamInstallHook, workstreamInstallHookGemini, workstreamInstallHookCodex, workstreamDeactivate, workstreamCheckPath, getSettingsPath, loadSettings, saveSettings, workstreamAddTrigger, workstreamRemoveTrigger, workstreamSetAutoActivate, setGlobalAutoActivate, shouldAutoActivate, workstreamCheckFolder, workstreamInstallCdHook, workstreamUninstallCdHook, workstreamCdHookStatus } = require('./lib/workstreams');
|
|
31
|
+
const { getWorkstreamsPath, loadWorkstreams, saveWorkstreams, workstreamList, workstreamCreate, workstreamUpdate, workstreamDelete, workstreamUse, workstreamActive, workstreamAddProject, workstreamRemoveProject, workstreamInject, workstreamDetect, workstreamGet, getActiveWorkstream, countWorkstreamsForProject, workstreamInstallHook, workstreamInstallHookGemini, workstreamInstallHookCodex, workstreamDeactivate, workstreamCheckPath, getSettingsPath, loadSettings, saveSettings, workstreamAddTrigger, workstreamRemoveTrigger, workstreamSetAutoActivate, setGlobalAutoActivate, shouldAutoActivate, workstreamCheckFolder, workstreamInstallCdHook, workstreamUninstallCdHook, workstreamCdHookStatus, generateRulesFromRepos, generateRulesWithClaude } = require('./lib/workstreams');
|
|
32
32
|
const { getActivityPath, getDefaultActivity, loadActivity, saveActivity, detectProjectRoot, activityLog, activitySummary, generateWorkstreamName, activitySuggestWorkstreams, activityClear } = require('./lib/activity');
|
|
33
33
|
const { getLoopsPath, loadLoops, saveLoops, loadLoopState, saveLoopState, loadHistory, saveHistory, loopList, loopCreate, loopGet, loopUpdate, loopDelete, loopStart, loopPause, loopResume, loopCancel, loopApprove, loopComplete, loopFail, loopStatus, loopHistory, loopConfig, getActiveLoop, recordIteration, saveClarifications, savePlan, loadClarifications, loadPlan, loopInject, archiveLoop } = require('./lib/loops');
|
|
34
34
|
const { getSessionStatus, showSessionStatus, flushContext, clearContext, installHooks: sessionInstallHooks, getFlushedContext, installFlushCommand, installAll: sessionInstallAll, SESSION_DIR, FLUSHED_CONTEXT_FILE } = require('./lib/sessions');
|
|
@@ -206,6 +206,8 @@ class ClaudeConfigManager {
|
|
|
206
206
|
workstreamInstallCdHook() { return workstreamInstallCdHook(); }
|
|
207
207
|
workstreamUninstallCdHook() { return workstreamUninstallCdHook(); }
|
|
208
208
|
workstreamCdHookStatus() { return workstreamCdHookStatus(); }
|
|
209
|
+
generateRulesFromRepos(projects) { return generateRulesFromRepos(projects); }
|
|
210
|
+
generateRulesWithClaude(projects) { return generateRulesWithClaude(projects); }
|
|
209
211
|
|
|
210
212
|
// Loops (Ralph Loop)
|
|
211
213
|
getLoopsPath() { return getLoopsPath(this.installDir); }
|
package/lib/constants.js
CHANGED
package/lib/workstreams.js
CHANGED
|
@@ -19,7 +19,38 @@ function loadWorkstreams(installDir) {
|
|
|
19
19
|
const wsPath = getWorkstreamsPath(installDir);
|
|
20
20
|
if (fs.existsSync(wsPath)) {
|
|
21
21
|
try {
|
|
22
|
-
|
|
22
|
+
const data = JSON.parse(fs.readFileSync(wsPath, 'utf8'));
|
|
23
|
+
|
|
24
|
+
// Auto-repair corrupted workstreams (v0.45.9 bug where name became an object)
|
|
25
|
+
let needsSave = false;
|
|
26
|
+
if (data.workstreams) {
|
|
27
|
+
data.workstreams = data.workstreams.map(ws => {
|
|
28
|
+
if (ws.name && typeof ws.name === 'object' && ws.name.name) {
|
|
29
|
+
// Extract the real values from the nested object
|
|
30
|
+
const fixed = {
|
|
31
|
+
...ws,
|
|
32
|
+
name: ws.name.name,
|
|
33
|
+
projects: ws.name.projects?.length ? ws.name.projects : ws.projects,
|
|
34
|
+
rules: ws.name.rules || ws.rules,
|
|
35
|
+
};
|
|
36
|
+
needsSave = true;
|
|
37
|
+
console.log(`[Workstreams] Auto-repaired corrupted workstream: ${fixed.name}`);
|
|
38
|
+
return fixed;
|
|
39
|
+
}
|
|
40
|
+
return ws;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Save repaired data
|
|
45
|
+
if (needsSave) {
|
|
46
|
+
const dir = path.dirname(wsPath);
|
|
47
|
+
if (!fs.existsSync(dir)) {
|
|
48
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
49
|
+
}
|
|
50
|
+
fs.writeFileSync(wsPath, JSON.stringify(data, null, 2) + '\n');
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return data;
|
|
23
54
|
} catch (e) {
|
|
24
55
|
return { workstreams: [], activeId: null, lastUsedByProject: {} };
|
|
25
56
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "coder-config",
|
|
3
|
-
"version": "0.45.
|
|
3
|
+
"version": "0.45.12",
|
|
4
4
|
"description": "Configuration manager for AI coding tools - Claude Code, Gemini CLI, Codex CLI, Antigravity. Manage MCPs, rules, permissions, memory, and workstreams.",
|
|
5
5
|
"author": "regression.io",
|
|
6
6
|
"main": "config-loader.js",
|