great-cto 3.67.0 → 3.67.1

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "great-cto",
3
3
  "description": "You already have the agent. This is everything around it. great_cto runs Claude Code as a pipeline of 72 specialist agents \u2014 an independent model checks each stage before the next builds on it, spending caps refuse rather than warn, and three decisions stay yours: what gets built, how, and whether it ships.",
4
- "version": "3.67.0",
4
+ "version": "3.67.1",
5
5
  "author": {
6
6
  "name": "Alexander Velikiy",
7
7
  "url": "https://hashnode.com/@Greatcto"
@@ -52,17 +52,26 @@ export function projectCodexState(state) {
52
52
  export function listCodexRuns({ root = null, store = codexRunStore() } = {}) {
53
53
  let canonicalRoot = null;
54
54
  if (root) canonicalRoot = realpathSync(root);
55
- if (!existsSync(store)) return { state: 'absent', runs: [], unreadable: 0 };
56
- const runs = []; let unreadable = 0;
55
+ if (!existsSync(store)) return { state: 'absent', runs: [], unreadable: 0, orphaned: 0 };
56
+ const runs = []; let unreadable = 0; let orphaned = 0;
57
57
  for (const name of readdirSync(store).filter(name => /^[0-9a-f-]{36}\.json$/.test(name)).sort()) {
58
58
  try {
59
59
  const state = JSON.parse(readFileSync(join(store, name), 'utf8'));
60
60
  if (state.id !== name.slice(0, -5) || state.version !== 1 || typeof state.root !== 'string') { unreadable += 1; continue; }
61
- if (canonicalRoot && realpathSync(state.root) !== canonicalRoot) continue;
61
+ if (canonicalRoot) {
62
+ // A run whose project directory was deleted was read fine — it belongs
63
+ // to no project that exists, so it is not this one. Calling it
64
+ // unreadable told every board "membership is unknown" for test runs
65
+ // from /tmp removed weeks earlier.
66
+ let runRoot;
67
+ try { runRoot = realpathSync(state.root); }
68
+ catch (error) { if (error.code === 'ENOENT') { orphaned += 1; continue; } throw error; }
69
+ if (runRoot !== canonicalRoot) continue;
70
+ }
62
71
  runs.push(projectCodexState(state));
63
72
  } catch { unreadable += 1; }
64
73
  }
65
- return { state: unreadable ? 'degraded' : 'ok', runs: runs.reverse(), unreadable };
74
+ return { state: unreadable ? 'degraded' : 'ok', runs: runs.reverse(), unreadable, orphaned };
66
75
  }
67
76
 
68
77
  const commandStatus = (bin, args, run = spawnSync) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "great-cto",
3
- "version": "3.67.0",
3
+ "version": "3.67.1",
4
4
  "description": "One command install for the great_cto Claude Code plugin. Auto-detects your stack, picks the right archetype, bootstraps PROJECT.md.",
5
5
  "keywords": [
6
6
  "claude-code",