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 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
@@ -2,7 +2,7 @@
2
2
  * Constants and tool path configurations
3
3
  */
4
4
 
5
- const VERSION = '0.45.10';
5
+ const VERSION = '0.45.12';
6
6
 
7
7
  // Tool-specific path configurations
8
8
  const TOOL_PATHS = {
@@ -19,7 +19,38 @@ function loadWorkstreams(installDir) {
19
19
  const wsPath = getWorkstreamsPath(installDir);
20
20
  if (fs.existsSync(wsPath)) {
21
21
  try {
22
- return JSON.parse(fs.readFileSync(wsPath, 'utf8'));
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.10",
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",