cc-codeconductor 0.4.0 → 0.4.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.
- package/dist/index.js +33 -34
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -12000,10 +12000,9 @@ var init_agy_installer = __esm(() => {
|
|
|
12000
12000
|
|
|
12001
12001
|
// src/core/filesystem/credential-guard.ts
|
|
12002
12002
|
import { readFile as readFile7 } from "node:fs/promises";
|
|
12003
|
-
import { resolve as resolve6 } from "node:path";
|
|
12004
12003
|
async function loadPolicyPatterns() {
|
|
12005
12004
|
try {
|
|
12006
|
-
const content = await readFile7(
|
|
12005
|
+
const content = await readFile7(POLICY_PATH, "utf-8");
|
|
12007
12006
|
const parsed = $parse(content);
|
|
12008
12007
|
if (Array.isArray(parsed.secretPatterns) && parsed.secretPatterns.length > 0) {
|
|
12009
12008
|
return parsed.secretPatterns;
|
|
@@ -12035,9 +12034,10 @@ async function loadCredentialPatterns(config) {
|
|
|
12035
12034
|
}
|
|
12036
12035
|
return DEFAULT_SECRET_PATTERNS;
|
|
12037
12036
|
}
|
|
12038
|
-
var DEFAULT_SECRET_PATTERNS
|
|
12037
|
+
var DEFAULT_SECRET_PATTERNS;
|
|
12039
12038
|
var init_credential_guard = __esm(() => {
|
|
12040
12039
|
init_dist();
|
|
12040
|
+
init_package_paths();
|
|
12041
12041
|
DEFAULT_SECRET_PATTERNS = [
|
|
12042
12042
|
"password",
|
|
12043
12043
|
"secret",
|
|
@@ -12048,7 +12048,6 @@ var init_credential_guard = __esm(() => {
|
|
|
12048
12048
|
"auth[_-]?token",
|
|
12049
12049
|
"private[_-]?key"
|
|
12050
12050
|
];
|
|
12051
|
-
POLICY_PATH2 = resolve6(import.meta.dir, "..", "..", "..", "policy.yml");
|
|
12052
12051
|
});
|
|
12053
12052
|
|
|
12054
12053
|
// src/core/filesystem/file-writer.ts
|
|
@@ -12135,7 +12134,7 @@ init_errors();
|
|
|
12135
12134
|
// package.json
|
|
12136
12135
|
var package_default = {
|
|
12137
12136
|
name: "cc-codeconductor",
|
|
12138
|
-
version: "0.4.
|
|
12137
|
+
version: "0.4.1",
|
|
12139
12138
|
description: "A multi-agent orchestration framework for AI-assisted software engineering workflows.",
|
|
12140
12139
|
keywords: [
|
|
12141
12140
|
"ai",
|
|
@@ -13800,13 +13799,13 @@ async function doctorCommand(options) {
|
|
|
13800
13799
|
// src/commands/init.command.ts
|
|
13801
13800
|
import { access as access3, mkdir as mkdir3, readFile as readFile8, writeFile as writeFile3 } from "node:fs/promises";
|
|
13802
13801
|
import { homedir as homedir5 } from "node:os";
|
|
13803
|
-
import { basename, resolve as
|
|
13802
|
+
import { basename, resolve as resolve7 } from "node:path";
|
|
13804
13803
|
|
|
13805
13804
|
// src/core/config/config-writer.ts
|
|
13806
13805
|
init_dist();
|
|
13807
13806
|
init_errors();
|
|
13808
13807
|
import { access as access2, mkdir as mkdir2, writeFile as writeFile2 } from "node:fs/promises";
|
|
13809
|
-
import { resolve as
|
|
13808
|
+
import { resolve as resolve6 } from "node:path";
|
|
13810
13809
|
|
|
13811
13810
|
// src/core/config/codeconductor-config.ts
|
|
13812
13811
|
init_credential_guard();
|
|
@@ -13847,9 +13846,9 @@ var CONFIG_DIR = ".codeconductor";
|
|
|
13847
13846
|
var CONFIG_FILE2 = "config.yml";
|
|
13848
13847
|
async function writeConfig(projectRoot, config = {}, force = false) {
|
|
13849
13848
|
try {
|
|
13850
|
-
const configDir =
|
|
13849
|
+
const configDir = resolve6(projectRoot, CONFIG_DIR);
|
|
13851
13850
|
await mkdir2(configDir, { recursive: true });
|
|
13852
|
-
const configPath =
|
|
13851
|
+
const configPath = resolve6(configDir, CONFIG_FILE2);
|
|
13853
13852
|
if (!force) {
|
|
13854
13853
|
try {
|
|
13855
13854
|
await access2(configPath);
|
|
@@ -14075,7 +14074,7 @@ async function initCommand(options) {
|
|
|
14075
14074
|
}
|
|
14076
14075
|
async function resolvePresetsToCopy() {
|
|
14077
14076
|
const sources = [];
|
|
14078
|
-
const bundledCouncil =
|
|
14077
|
+
const bundledCouncil = resolve7(SRC_PRESETS_DIR, "council", "council.yml");
|
|
14079
14078
|
if (await fileExists2(bundledCouncil)) {
|
|
14080
14079
|
sources.push({ name: "council.yml", sourcePath: bundledCouncil });
|
|
14081
14080
|
}
|
|
@@ -14086,11 +14085,11 @@ async function resolvePresetsToCopy() {
|
|
|
14086
14085
|
return sources;
|
|
14087
14086
|
}
|
|
14088
14087
|
async function copyPresets(baseDir, presets, force) {
|
|
14089
|
-
const presetsDir =
|
|
14088
|
+
const presetsDir = resolve7(baseDir, ".codeconductor", "presets");
|
|
14090
14089
|
await mkdir3(presetsDir, { recursive: true });
|
|
14091
14090
|
const copied = [];
|
|
14092
14091
|
for (const preset of presets) {
|
|
14093
|
-
const destPath =
|
|
14092
|
+
const destPath = resolve7(presetsDir, preset.name);
|
|
14094
14093
|
if (!force && await fileExists2(destPath)) {
|
|
14095
14094
|
continue;
|
|
14096
14095
|
}
|
|
@@ -14123,7 +14122,7 @@ init_claude_installer();
|
|
|
14123
14122
|
init_codex_installer();
|
|
14124
14123
|
init_opencode_installer();
|
|
14125
14124
|
import { homedir as homedir6 } from "node:os";
|
|
14126
|
-
import { resolve as
|
|
14125
|
+
import { resolve as resolve8 } from "node:path";
|
|
14127
14126
|
init_file_writer();
|
|
14128
14127
|
init_preset_loader();
|
|
14129
14128
|
|
|
@@ -14193,12 +14192,12 @@ async function installCommand(options) {
|
|
|
14193
14192
|
let targetPath = f.path;
|
|
14194
14193
|
let targetBase = baseDir;
|
|
14195
14194
|
if ((t === "agy" || t === "gemini") && isGlobal) {
|
|
14196
|
-
targetBase =
|
|
14195
|
+
targetBase = resolve8(homedir6(), ".gemini", "config");
|
|
14197
14196
|
targetPath = targetPath.replace(/^\.agents\/?/, "");
|
|
14198
14197
|
}
|
|
14199
14198
|
return {
|
|
14200
14199
|
...f,
|
|
14201
|
-
path:
|
|
14200
|
+
path: resolve8(targetBase, targetPath)
|
|
14202
14201
|
};
|
|
14203
14202
|
});
|
|
14204
14203
|
const results = await writeGeneratedFiles(resolvedFiles, writeOptions);
|
|
@@ -14309,7 +14308,7 @@ async function installPresetCommand(options) {
|
|
|
14309
14308
|
|
|
14310
14309
|
// src/commands/install-lsp.command.ts
|
|
14311
14310
|
import { homedir as homedir8 } from "node:os";
|
|
14312
|
-
import { resolve as
|
|
14311
|
+
import { resolve as resolve9 } from "node:path";
|
|
14313
14312
|
|
|
14314
14313
|
// src/core/lsp/lsp-config-utils.ts
|
|
14315
14314
|
function getLanguageServerConfig(lspIds) {
|
|
@@ -14846,7 +14845,7 @@ async function installLspCommand(options) {
|
|
|
14846
14845
|
const generatedFiles = generator.generate(installReport.results);
|
|
14847
14846
|
const resolvedFiles = generatedFiles.map((f) => ({
|
|
14848
14847
|
...f,
|
|
14849
|
-
path:
|
|
14848
|
+
path: resolve9(baseDir, f.path)
|
|
14850
14849
|
}));
|
|
14851
14850
|
const results = await writeGeneratedFiles(resolvedFiles, writeOptions);
|
|
14852
14851
|
for (const result of results) {
|
|
@@ -15209,7 +15208,7 @@ async function helpCommand(options) {
|
|
|
15209
15208
|
|
|
15210
15209
|
// src/commands/seo-audit.command.ts
|
|
15211
15210
|
import { writeFile as writeFile6, mkdir as mkdir7 } from "node:fs/promises";
|
|
15212
|
-
import { dirname as dirname4, resolve as
|
|
15211
|
+
import { dirname as dirname4, resolve as resolve10 } from "node:path";
|
|
15213
15212
|
|
|
15214
15213
|
// src/infrastructure/http/safe-fetch.ts
|
|
15215
15214
|
import { lookup } from "node:dns/promises";
|
|
@@ -15296,7 +15295,7 @@ async function safeFetch(urlString, options = {}) {
|
|
|
15296
15295
|
}
|
|
15297
15296
|
}
|
|
15298
15297
|
async function delay(ms) {
|
|
15299
|
-
return new Promise((
|
|
15298
|
+
return new Promise((resolve10) => setTimeout(resolve10, ms));
|
|
15300
15299
|
}
|
|
15301
15300
|
|
|
15302
15301
|
// src/infrastructure/parsers/sitemap-parser.ts
|
|
@@ -16500,12 +16499,12 @@ async function seoAuditCommand(options) {
|
|
|
16500
16499
|
formattedOutput = formatCli(report);
|
|
16501
16500
|
}
|
|
16502
16501
|
if (output) {
|
|
16503
|
-
const outputPath =
|
|
16502
|
+
const outputPath = resolve10(options.projectRoot, output);
|
|
16504
16503
|
await mkdir7(dirname4(outputPath), { recursive: true });
|
|
16505
16504
|
await writeFile6(outputPath, formattedOutput, "utf-8");
|
|
16506
16505
|
} else if (format === "markdown") {
|
|
16507
16506
|
const timestamp = new Date().toISOString().replace(/[:.]/g, "-").slice(0, 19);
|
|
16508
|
-
const defaultPath =
|
|
16507
|
+
const defaultPath = resolve10(options.projectRoot, "seo-reports", `audit-report-${timestamp}.md`);
|
|
16509
16508
|
await mkdir7(dirname4(defaultPath), { recursive: true });
|
|
16510
16509
|
await writeFile6(defaultPath, formattedOutput, "utf-8");
|
|
16511
16510
|
process.stderr.write(`Report saved to: ${defaultPath}
|
|
@@ -16519,7 +16518,7 @@ async function seoAuditCommand(options) {
|
|
|
16519
16518
|
command: "seo audit",
|
|
16520
16519
|
report,
|
|
16521
16520
|
output: formattedOutput,
|
|
16522
|
-
outputFile: output ?
|
|
16521
|
+
outputFile: output ? resolve10(options.projectRoot, output) : format === "markdown" ? resolve10(options.projectRoot, "seo-reports") : undefined
|
|
16523
16522
|
}
|
|
16524
16523
|
};
|
|
16525
16524
|
} catch (error) {
|
|
@@ -16536,7 +16535,7 @@ async function seoAuditCommand(options) {
|
|
|
16536
16535
|
|
|
16537
16536
|
// src/commands/seo-llms.command.ts
|
|
16538
16537
|
import { writeFile as writeFile7, mkdir as mkdir8 } from "node:fs/promises";
|
|
16539
|
-
import { dirname as dirname5, resolve as
|
|
16538
|
+
import { dirname as dirname5, resolve as resolve11 } from "node:path";
|
|
16540
16539
|
|
|
16541
16540
|
// src/domain/seo/llms-generator.ts
|
|
16542
16541
|
function extractTitle2(html) {
|
|
@@ -16679,7 +16678,7 @@ async function seoLlmsCommand(options) {
|
|
|
16679
16678
|
}
|
|
16680
16679
|
}) : await generateLlmsTxtFromUrl(url);
|
|
16681
16680
|
process.stderr.write("\r" + " ".repeat(80) + "\r");
|
|
16682
|
-
const outputPath = output ?
|
|
16681
|
+
const outputPath = output ? resolve11(options.projectRoot, output) : resolve11(options.projectRoot, "llms.txt");
|
|
16683
16682
|
await mkdir8(dirname5(outputPath), { recursive: true });
|
|
16684
16683
|
await writeFile7(outputPath, result.content, "utf-8");
|
|
16685
16684
|
process.stderr.write(`Generated: ${outputPath} (${result.entries.length} entries)
|
|
@@ -16708,7 +16707,7 @@ async function seoLlmsCommand(options) {
|
|
|
16708
16707
|
|
|
16709
16708
|
// src/commands/update.command.ts
|
|
16710
16709
|
import { homedir as homedir9 } from "node:os";
|
|
16711
|
-
import { resolve as
|
|
16710
|
+
import { resolve as resolve12, dirname as dirname6 } from "node:path";
|
|
16712
16711
|
import { mkdir as mkdir9, readFile as readFile10, writeFile as writeFile8, stat as stat3 } from "node:fs/promises";
|
|
16713
16712
|
init_package_paths();
|
|
16714
16713
|
async function updateCommand(options) {
|
|
@@ -16775,8 +16774,8 @@ async function updateCommand(options) {
|
|
|
16775
16774
|
}
|
|
16776
16775
|
const updated = [];
|
|
16777
16776
|
if (updateResults.council) {
|
|
16778
|
-
const localCouncil =
|
|
16779
|
-
const bundledCouncil =
|
|
16777
|
+
const localCouncil = resolve12(basePath, ".codeconductor", "presets", "council.yml");
|
|
16778
|
+
const bundledCouncil = resolve12(SRC_PRESETS_DIR, "council", "council.yml");
|
|
16780
16779
|
try {
|
|
16781
16780
|
const content = await readFile10(bundledCouncil, "utf-8");
|
|
16782
16781
|
await mkdir9(dirname6(localCouncil), { recursive: true });
|
|
@@ -16787,7 +16786,7 @@ async function updateCommand(options) {
|
|
|
16787
16786
|
}
|
|
16788
16787
|
}
|
|
16789
16788
|
if (updateResults.policy) {
|
|
16790
|
-
const localPolicy =
|
|
16789
|
+
const localPolicy = resolve12(basePath, ".codeconductor", "presets", "policy.yml");
|
|
16791
16790
|
try {
|
|
16792
16791
|
const content = await readFile10(POLICY_PATH, "utf-8");
|
|
16793
16792
|
await mkdir9(dirname6(localPolicy), { recursive: true });
|
|
@@ -16843,12 +16842,12 @@ async function updateCommand(options) {
|
|
|
16843
16842
|
let targetPath = f.path;
|
|
16844
16843
|
let targetBase = basePath;
|
|
16845
16844
|
if ((targetName === "agy" || targetName === "gemini") && isGlobal) {
|
|
16846
|
-
targetBase =
|
|
16845
|
+
targetBase = resolve12(homedir9(), ".gemini", "config");
|
|
16847
16846
|
targetPath = targetPath.replace(/^\.agents\/?/, "");
|
|
16848
16847
|
}
|
|
16849
16848
|
return {
|
|
16850
16849
|
...f,
|
|
16851
|
-
path:
|
|
16850
|
+
path: resolve12(targetBase, targetPath)
|
|
16852
16851
|
};
|
|
16853
16852
|
});
|
|
16854
16853
|
const filesToWrite = resolvedFiles.filter((f) => t.files.includes(f.path));
|
|
@@ -16876,13 +16875,13 @@ async function updateCommand(options) {
|
|
|
16876
16875
|
for (const s of updateResults.skills) {
|
|
16877
16876
|
newSkillsLock[s.id] = s.latestVersion;
|
|
16878
16877
|
}
|
|
16879
|
-
let lockDest =
|
|
16878
|
+
let lockDest = resolve12(basePath, ".codeconductor", "skills-lock.json");
|
|
16880
16879
|
try {
|
|
16881
|
-
const statAgents = await stat3(
|
|
16880
|
+
const statAgents = await stat3(resolve12(basePath, ".agents"));
|
|
16882
16881
|
if (statAgents.isDirectory()) {
|
|
16883
|
-
const statCodeConductor = await stat3(
|
|
16882
|
+
const statCodeConductor = await stat3(resolve12(basePath, ".codeconductor")).catch(() => null);
|
|
16884
16883
|
if (!statCodeConductor) {
|
|
16885
|
-
lockDest =
|
|
16884
|
+
lockDest = resolve12(basePath, ".agents", "skills-lock.json");
|
|
16886
16885
|
}
|
|
16887
16886
|
}
|
|
16888
16887
|
} catch {}
|