cc-codeconductor 0.3.1 → 0.3.2
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/dist/index.js
CHANGED
|
@@ -7044,7 +7044,7 @@ function getExitCode(error) {
|
|
|
7044
7044
|
// package.json
|
|
7045
7045
|
var package_default = {
|
|
7046
7046
|
name: "cc-codeconductor",
|
|
7047
|
-
version: "0.3.
|
|
7047
|
+
version: "0.3.2",
|
|
7048
7048
|
description: "A multi-agent orchestration framework for AI-assisted software engineering workflows.",
|
|
7049
7049
|
keywords: [
|
|
7050
7050
|
"ai",
|
|
@@ -11867,6 +11867,11 @@ function mergeManagedBlock(existing, incoming) {
|
|
|
11867
11867
|
if (!existing) {
|
|
11868
11868
|
return { content: incoming, action: "written" };
|
|
11869
11869
|
}
|
|
11870
|
+
const hasBegin = existing.includes(MANAGED_BEGIN_MARKER);
|
|
11871
|
+
const hasEnd = existing.includes(MANAGED_END_MARKER);
|
|
11872
|
+
if (!hasBegin && !hasEnd) {
|
|
11873
|
+
return { content: incoming, action: "written" };
|
|
11874
|
+
}
|
|
11870
11875
|
validateMarkers(existing, "existing content");
|
|
11871
11876
|
const existingBlock = getManagedBlockRange(existing);
|
|
11872
11877
|
const incomingBlock = getManagedBlockRange(incoming);
|
|
@@ -12149,6 +12154,66 @@ async function validateAgentFileSizes(basePath, isGlobal) {
|
|
|
12149
12154
|
}
|
|
12150
12155
|
return largeFiles;
|
|
12151
12156
|
}
|
|
12157
|
+
async function validateAgentMarkers(basePath, isGlobal) {
|
|
12158
|
+
const targetsToCheck = [
|
|
12159
|
+
"opencode",
|
|
12160
|
+
"claude",
|
|
12161
|
+
"codex",
|
|
12162
|
+
"gemini",
|
|
12163
|
+
"cursor",
|
|
12164
|
+
"agy"
|
|
12165
|
+
];
|
|
12166
|
+
const results = [];
|
|
12167
|
+
for (const target of targetsToCheck) {
|
|
12168
|
+
const isInstalled = await isTargetInstalled(target, basePath, isGlobal);
|
|
12169
|
+
if (!isInstalled) {
|
|
12170
|
+
continue;
|
|
12171
|
+
}
|
|
12172
|
+
let manifest;
|
|
12173
|
+
try {
|
|
12174
|
+
manifest = await loadManifest(target);
|
|
12175
|
+
} catch {
|
|
12176
|
+
continue;
|
|
12177
|
+
}
|
|
12178
|
+
for (const entry of manifest.entries) {
|
|
12179
|
+
const strategy = isGlobal && entry.globalStrategy ? entry.globalStrategy : entry.strategy;
|
|
12180
|
+
if (strategy !== "merge-managed") {
|
|
12181
|
+
continue;
|
|
12182
|
+
}
|
|
12183
|
+
let resolvedEntry = entry;
|
|
12184
|
+
let targetBaseDir = basePath;
|
|
12185
|
+
if (target === "agy" && isGlobal) {
|
|
12186
|
+
targetBaseDir = join3(homedir2(), ".gemini", "config");
|
|
12187
|
+
resolvedEntry = {
|
|
12188
|
+
...entry,
|
|
12189
|
+
dest: entry.dest.replace(/^\.agents\/?/, "")
|
|
12190
|
+
};
|
|
12191
|
+
}
|
|
12192
|
+
const files = await resolveEntryFiles(resolvedEntry, PRESETS_DIR, targetBaseDir);
|
|
12193
|
+
for (const { dest } of files) {
|
|
12194
|
+
try {
|
|
12195
|
+
const content = await readFile5(dest, "utf-8");
|
|
12196
|
+
const beginCount = content.split(MANAGED_BEGIN_MARKER).length - 1;
|
|
12197
|
+
const endCount = content.split(MANAGED_END_MARKER).length - 1;
|
|
12198
|
+
if (beginCount === 0 && endCount === 0) {
|
|
12199
|
+
results.push({ path: dest, error: "Missing managed markers" });
|
|
12200
|
+
} else if (beginCount !== 1 || endCount !== 1) {
|
|
12201
|
+
results.push({
|
|
12202
|
+
path: dest,
|
|
12203
|
+
error: "Must contain exactly one managed begin marker and one managed end marker"
|
|
12204
|
+
});
|
|
12205
|
+
} else if (content.indexOf(MANAGED_BEGIN_MARKER) > content.indexOf(MANAGED_END_MARKER)) {
|
|
12206
|
+
results.push({
|
|
12207
|
+
path: dest,
|
|
12208
|
+
error: "Managed markers are in the wrong order"
|
|
12209
|
+
});
|
|
12210
|
+
}
|
|
12211
|
+
} catch {}
|
|
12212
|
+
}
|
|
12213
|
+
}
|
|
12214
|
+
}
|
|
12215
|
+
return results;
|
|
12216
|
+
}
|
|
12152
12217
|
async function fileContentDiffers(pathA, pathB) {
|
|
12153
12218
|
try {
|
|
12154
12219
|
const contentA = await readFile5(pathA, "utf-8");
|
|
@@ -12476,6 +12541,22 @@ async function doctorCommand(options) {
|
|
|
12476
12541
|
message: "All agent files (AGENTS.md/CLAUDE.md) are under 40KB"
|
|
12477
12542
|
});
|
|
12478
12543
|
}
|
|
12544
|
+
const missingMarkersLocal = await validateAgentMarkers(projectRoot, false);
|
|
12545
|
+
const missingMarkersGlobal = await validateAgentMarkers(homedir3(), true);
|
|
12546
|
+
const allMissingMarkers = [...missingMarkersLocal, ...missingMarkersGlobal];
|
|
12547
|
+
if (allMissingMarkers.length > 0) {
|
|
12548
|
+
checks.push({
|
|
12549
|
+
name: "agent-file-markers",
|
|
12550
|
+
status: "warn",
|
|
12551
|
+
message: `The following files have missing or invalid managed markers: ${allMissingMarkers.map((f) => `${f.path} (${f.error})`).join(", ")}`
|
|
12552
|
+
});
|
|
12553
|
+
} else {
|
|
12554
|
+
checks.push({
|
|
12555
|
+
name: "agent-file-markers",
|
|
12556
|
+
status: "pass",
|
|
12557
|
+
message: "All agent files have valid managed markers"
|
|
12558
|
+
});
|
|
12559
|
+
}
|
|
12479
12560
|
const securityCompatibility = await loadTargetSecurityCompatibility();
|
|
12480
12561
|
for (const compatibility of securityCompatibility) {
|
|
12481
12562
|
checks.push({
|
package/package.json
CHANGED
package/presets/claude/CLAUDE.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
<!-- CODECONDUCTOR:BEGIN managed -->
|
|
2
|
+
|
|
1
3
|
# CodeConductor — Multi-Agent Orchestration Framework
|
|
2
4
|
|
|
3
5
|
**Tagline:** Stop prompting. Start orchestrating.
|
|
@@ -666,3 +668,5 @@ extending capabilities, apply `.claude/skills/find-skills/SKILL.md`.
|
|
|
666
668
|
- If the task type differs from the previous one, execute "/clear" before
|
|
667
669
|
starting.
|
|
668
670
|
- Delegate verbose operations to sub-agents.
|
|
671
|
+
|
|
672
|
+
<!-- CODECONDUCTOR:END managed -->
|