chorus-codes 0.8.42 → 0.8.44
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/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +1 -1
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/connect/page_client-reference-manifest.js +1 -1
- package/.next/server/app/demo/[scenario]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/new/page_client-reference-manifest.js +1 -1
- package/.next/server/app/new.html +1 -1
- package/.next/server/app/new.rsc +1 -1
- package/.next/server/app/new.segments/_full.segment.rsc +1 -1
- package/.next/server/app/new.segments/_head.segment.rsc +1 -1
- package/.next/server/app/new.segments/_index.segment.rsc +1 -1
- package/.next/server/app/new.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/new.segments/new/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/new.segments/new.segment.rsc +1 -1
- package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/server/app/onboarding.html +1 -1
- package/.next/server/app/onboarding.rsc +1 -1
- package/.next/server/app/onboarding.segments/_full.segment.rsc +1 -1
- package/.next/server/app/onboarding.segments/_head.segment.rsc +1 -1
- package/.next/server/app/onboarding.segments/_index.segment.rsc +1 -1
- package/.next/server/app/onboarding.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/onboarding.segments/onboarding.segment.rsc +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/personas/page_client-reference-manifest.js +1 -1
- package/.next/server/app/personas.html +1 -1
- package/.next/server/app/personas.rsc +1 -1
- package/.next/server/app/personas.segments/_full.segment.rsc +1 -1
- package/.next/server/app/personas.segments/_head.segment.rsc +1 -1
- package/.next/server/app/personas.segments/_index.segment.rsc +1 -1
- package/.next/server/app/personas.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/personas.segments/personas/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/personas.segments/personas.segment.rsc +1 -1
- package/.next/server/app/runs/[runId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/runs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/permissions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +1 -1
- package/.next/server/app/settings.segments/_full.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/server/app/templates/page_client-reference-manifest.js +1 -1
- package/.next/server/app/templates.html +1 -1
- package/.next/server/app/templates.rsc +1 -1
- package/.next/server/app/templates.segments/_full.segment.rsc +1 -1
- package/.next/server/app/templates.segments/_head.segment.rsc +1 -1
- package/.next/server/app/templates.segments/_index.segment.rsc +1 -1
- package/.next/server/app/templates.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/templates.segments/templates/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/templates.segments/templates.segment.rsc +1 -1
- package/.next/server/app-paths-manifest.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/trace +20 -20
- package/.next/trace-build +1 -1
- package/dist/cli/commands/audit.js +201 -0
- package/dist/cli/commands/audit.js.map +1 -0
- package/dist/cli/commands/start.js +87 -1
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/update.js +123 -1
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/lib/audit-pack.js +408 -0
- package/dist/lib/audit-pack.js.map +1 -0
- package/package.json +1 -1
- /package/.next/static/{PMumb0KgX0BaE-POyj5i_ → wtStgSmENkySuN6zbUBM6}/_buildManifest.js +0 -0
- /package/.next/static/{PMumb0KgX0BaE-POyj5i_ → wtStgSmENkySuN6zbUBM6}/_ssgManifest.js +0 -0
package/dist/cli/index.js
CHANGED
|
@@ -9,6 +9,7 @@ const open_browser_js_1 = require("./open-browser.js");
|
|
|
9
9
|
const os_1 = __importDefault(require("os"));
|
|
10
10
|
const path_1 = __importDefault(require("path"));
|
|
11
11
|
const daemon_discovery_js_1 = require("../lib/daemon-discovery.js");
|
|
12
|
+
const audit_js_1 = require("./commands/audit.js");
|
|
12
13
|
const diagnose_js_1 = require("./commands/diagnose.js");
|
|
13
14
|
const doctor_js_1 = require("./commands/doctor.js");
|
|
14
15
|
const init_js_1 = require("./commands/init.js");
|
|
@@ -65,6 +66,7 @@ program.addHelpText('beforeAll', () => {
|
|
|
65
66
|
(0, diagnose_js_1.registerDiagnoseCommand)(program);
|
|
66
67
|
(0, update_js_1.registerUpdateCommand)(program);
|
|
67
68
|
(0, quickstart_js_1.registerQuickstartCommand)(program);
|
|
69
|
+
(0, audit_js_1.registerAuditCommand)(program);
|
|
68
70
|
program
|
|
69
71
|
.command('ui')
|
|
70
72
|
.description('Open the Chorus web UI in default browser')
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;AAAA,yCAAoC;AACpC,4CAAoB;AACpB,uDAAgD;AAChD,4CAAoB;AACpB,gDAAwB;AACxB,oEAA+D;AAC/D,wDAAiE;AACjE,oDAA6D;AAC7D,gDAAyD;AACzD,4DAAqE;AACrE,kDAA2D;AAC3D,oDAA6D;AAC7D,gDAAyD;AACzD,oDAA6D;AAC7D,qDAA2E;AAC3E,2CAAkC;AAClC,mCAAsC;AAEtC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,0DAA0D,CAAC;KACvE,OAAO,CAAC,eAAG,CAAC,OAAO,CAAC,CAAC;AAExB,mEAAmE;AACnE,oEAAoE;AACpE,uEAAuE;AACvE,mEAAmE;AACnE,WAAW;AACX,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,EAAE;IACpC,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAEzC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;YACL,EAAE;YACF,KAAK,WAAG,CAAC,MAAM,IAAI,SAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,SAAC,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAAE;YACzF,EAAE;YACF,OAAO,SAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,SAAC,CAAC,GAAG,CAAC,+DAA+D,CAAC,EAAE;YAC5H,OAAO,SAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,SAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,EAAE;YAC5F,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,EAAE;YACF,KAAK,WAAG,CAAC,OAAO,IAAI,SAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,SAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE;YAChF,EAAE;YACF,OAAO,SAAC,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YAC/B,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,IAAA,6BAAmB,EAAC,OAAO,CAAC,CAAC;AAC7B,IAAA,+BAAoB,EAAC,OAAO,CAAC,CAAC;AAC9B,IAAA,6BAAmB,EAAC,OAAO,CAAC,CAAC;AAC7B,IAAA,iCAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,iCAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,qCAAuB,EAAC,OAAO,CAAC,CAAC;AACjC,IAAA,iCAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,yCAAyB,EAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.AuditPackError = exports.AUDIT_MAX_FILE_LINES = exports.AUDIT_MAX_TOTAL_BYTES = exports.AUDIT_MAX_FILES = void 0;
|
|
37
|
+
exports.walkAuditPath = walkAuditPath;
|
|
38
|
+
exports.assembleAuditArtifact = assembleAuditArtifact;
|
|
39
|
+
exports.focusParagraph = focusParagraph;
|
|
40
|
+
exports.buildAuditWork = buildAuditWork;
|
|
41
|
+
/**
|
|
42
|
+
* Audit-pack assembly.
|
|
43
|
+
*
|
|
44
|
+
* Pure helpers for `chorus audit <path>`. Walk a path, read files,
|
|
45
|
+
* concatenate into a single artifact string the existing review-only
|
|
46
|
+
* substrate can consume.
|
|
47
|
+
*
|
|
48
|
+
* No HTTP, no daemon, no subprocess — only fs reads from a user-supplied
|
|
49
|
+
* path with the same defence-in-depth checks used by `packAttachedFiles`
|
|
50
|
+
* (no symlinks, no traversal, regular files only).
|
|
51
|
+
*
|
|
52
|
+
* Caps are intentionally aggressive. Audit's job is to narrow scope
|
|
53
|
+
* enough that a 5-reviewer fleet can produce useful findings on a
|
|
54
|
+
* single subsystem — not to scan a whole repo. Refuse early with a
|
|
55
|
+
* clear "narrow scope further" message when limits are exceeded.
|
|
56
|
+
*/
|
|
57
|
+
const fs = __importStar(require("fs"));
|
|
58
|
+
const path = __importStar(require("path"));
|
|
59
|
+
/** Max number of files surveyed in one audit. */
|
|
60
|
+
exports.AUDIT_MAX_FILES = 50;
|
|
61
|
+
/** Max total bytes (across all files) emitted into the artifact. */
|
|
62
|
+
exports.AUDIT_MAX_TOTAL_BYTES = 200 * 1024;
|
|
63
|
+
/** Max lines retained per file before head+tail truncation kicks in. */
|
|
64
|
+
exports.AUDIT_MAX_FILE_LINES = 2000;
|
|
65
|
+
/** Lines retained from the head when a file is truncated. */
|
|
66
|
+
const TRUNCATION_HEAD_LINES = 1500;
|
|
67
|
+
/** Lines retained from the tail when a file is truncated. */
|
|
68
|
+
const TRUNCATION_TAIL_LINES = 500;
|
|
69
|
+
/**
|
|
70
|
+
* Extensions audit will read. Everything else is skipped silently and
|
|
71
|
+
* surfaced in the trailing "skipped" section. Lockfiles and binary
|
|
72
|
+
* formats are never useful in an audit artifact.
|
|
73
|
+
*/
|
|
74
|
+
/**
|
|
75
|
+
* Filename-based exclusions that run after the extension check.
|
|
76
|
+
* Lockfiles pass the .json / .yaml / .yml extension filter but are
|
|
77
|
+
* spec-banned ("Lockfiles and binary formats are never useful in an
|
|
78
|
+
* audit artifact" — planning/audit-mode.md). Convergent self-review
|
|
79
|
+
* (3/8 reviewers on PR #58) caught the divergence between spec and
|
|
80
|
+
* implementation. Match case-insensitively for cross-platform safety.
|
|
81
|
+
*/
|
|
82
|
+
const LOCKFILE_NAMES = new Set([
|
|
83
|
+
'package-lock.json',
|
|
84
|
+
'yarn.lock',
|
|
85
|
+
'pnpm-lock.yaml',
|
|
86
|
+
'cargo.lock',
|
|
87
|
+
'composer.lock',
|
|
88
|
+
'gemfile.lock',
|
|
89
|
+
'poetry.lock',
|
|
90
|
+
'go.sum',
|
|
91
|
+
]);
|
|
92
|
+
const ALLOWED_EXTENSIONS = new Set([
|
|
93
|
+
'.ts',
|
|
94
|
+
'.tsx',
|
|
95
|
+
'.js',
|
|
96
|
+
'.jsx',
|
|
97
|
+
'.mjs',
|
|
98
|
+
'.cjs',
|
|
99
|
+
'.py',
|
|
100
|
+
'.go',
|
|
101
|
+
'.rs',
|
|
102
|
+
'.java',
|
|
103
|
+
'.kt',
|
|
104
|
+
'.swift',
|
|
105
|
+
'.rb',
|
|
106
|
+
'.php',
|
|
107
|
+
'.c',
|
|
108
|
+
'.cpp',
|
|
109
|
+
'.h',
|
|
110
|
+
'.hpp',
|
|
111
|
+
'.cs',
|
|
112
|
+
'.sql',
|
|
113
|
+
'.sh',
|
|
114
|
+
'.bash',
|
|
115
|
+
'.yaml',
|
|
116
|
+
'.yml',
|
|
117
|
+
'.toml',
|
|
118
|
+
'.json',
|
|
119
|
+
'.md',
|
|
120
|
+
]);
|
|
121
|
+
/**
|
|
122
|
+
* Directories pruned at walk time. Keeps node_modules and build output
|
|
123
|
+
* out of the artifact even when the user points audit at a project
|
|
124
|
+
* root.
|
|
125
|
+
*/
|
|
126
|
+
const PRUNE_DIRS = new Set([
|
|
127
|
+
'node_modules',
|
|
128
|
+
'.git',
|
|
129
|
+
'dist',
|
|
130
|
+
'build',
|
|
131
|
+
'.next',
|
|
132
|
+
'__pycache__',
|
|
133
|
+
'.venv',
|
|
134
|
+
'venv',
|
|
135
|
+
'target',
|
|
136
|
+
'vendor',
|
|
137
|
+
'.turbo',
|
|
138
|
+
'coverage',
|
|
139
|
+
'.cache',
|
|
140
|
+
]);
|
|
141
|
+
/** Pure-error class for distinguishable failure modes in tests + callers. */
|
|
142
|
+
class AuditPackError extends Error {
|
|
143
|
+
code;
|
|
144
|
+
constructor(code, message) {
|
|
145
|
+
super(message);
|
|
146
|
+
this.code = code;
|
|
147
|
+
this.name = 'AuditPackError';
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
exports.AuditPackError = AuditPackError;
|
|
151
|
+
/**
|
|
152
|
+
* Walk a path and return absolute file paths under it. Resolves a single
|
|
153
|
+
* file to a one-element list; a directory is recursively walked with
|
|
154
|
+
* PRUNE_DIRS removed. Symlinks are rejected. Never crosses out of the
|
|
155
|
+
* input root.
|
|
156
|
+
*/
|
|
157
|
+
function walkAuditPath(rootAbs) {
|
|
158
|
+
const stat = fs.lstatSync(rootAbs);
|
|
159
|
+
if (stat.isSymbolicLink()) {
|
|
160
|
+
throw new AuditPackError('symlink_root', `audit path is a symlink — refusing to follow: ${rootAbs}`);
|
|
161
|
+
}
|
|
162
|
+
if (stat.isFile())
|
|
163
|
+
return [rootAbs];
|
|
164
|
+
if (!stat.isDirectory()) {
|
|
165
|
+
throw new AuditPackError('not_a_file_or_dir', `audit path is not a file or directory: ${rootAbs}`);
|
|
166
|
+
}
|
|
167
|
+
const out = [];
|
|
168
|
+
const stack = [rootAbs];
|
|
169
|
+
while (stack.length > 0) {
|
|
170
|
+
const dir = stack.pop();
|
|
171
|
+
let entries;
|
|
172
|
+
try {
|
|
173
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
for (const entry of entries) {
|
|
179
|
+
const full = path.join(dir, entry.name);
|
|
180
|
+
if (entry.isSymbolicLink())
|
|
181
|
+
continue;
|
|
182
|
+
if (entry.isDirectory()) {
|
|
183
|
+
// PRUNE_DIRS match is case-insensitive — Windows / macOS have
|
|
184
|
+
// case-insensitive filesystems and a folder named `Node_modules`
|
|
185
|
+
// should still get pruned. readdirSync never returns `.` or `..`
|
|
186
|
+
// as Dirent.name, so no `!== '.'` guard is needed.
|
|
187
|
+
if (PRUNE_DIRS.has(entry.name.toLowerCase()))
|
|
188
|
+
continue;
|
|
189
|
+
if (entry.name.startsWith('.'))
|
|
190
|
+
continue;
|
|
191
|
+
stack.push(full);
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
if (entry.isFile()) {
|
|
195
|
+
if (entry.name.startsWith('.'))
|
|
196
|
+
continue;
|
|
197
|
+
if (LOCKFILE_NAMES.has(entry.name.toLowerCase()))
|
|
198
|
+
continue;
|
|
199
|
+
out.push(full);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
out.sort();
|
|
204
|
+
return out;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Read a file safely (O_NOFOLLOW on POSIX, lstat-then-read on Windows).
|
|
208
|
+
* Returns null on any failure or skip condition — callers decide whether
|
|
209
|
+
* to surface that as a skipped file or hard error.
|
|
210
|
+
*
|
|
211
|
+
* TOCTOU note: the read goes through the same fd we opened with
|
|
212
|
+
* O_NOFOLLOW, not the path string. A prior revision opened a fd, ran
|
|
213
|
+
* fstat, then re-read via readFileSync(path) — convergent self-review
|
|
214
|
+
* (5/8 reviewers on PR #58) flagged that a symlink swap between the
|
|
215
|
+
* stat and the re-read would defeat the O_NOFOLLOW guard. Reading from
|
|
216
|
+
* the fd closes the window.
|
|
217
|
+
*/
|
|
218
|
+
function readFileSafe(abs) {
|
|
219
|
+
try {
|
|
220
|
+
if (process.platform !== 'win32') {
|
|
221
|
+
let fd = -1;
|
|
222
|
+
try {
|
|
223
|
+
fd = fs.openSync(abs, fs.constants.O_RDONLY | fs.constants.O_NOFOLLOW);
|
|
224
|
+
const stat = fs.fstatSync(fd);
|
|
225
|
+
if (!stat.isFile())
|
|
226
|
+
return null;
|
|
227
|
+
return fs.readFileSync(fd, 'utf-8');
|
|
228
|
+
}
|
|
229
|
+
finally {
|
|
230
|
+
if (fd >= 0)
|
|
231
|
+
fs.closeSync(fd);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
// Windows fallback: lstat-then-read. The race window here is wider
|
|
236
|
+
// (no atomic O_NOFOLLOW equivalent) but Windows isn't the primary
|
|
237
|
+
// target for chorus audits. Documented as best-effort.
|
|
238
|
+
const lstat = fs.lstatSync(abs);
|
|
239
|
+
if (lstat.isSymbolicLink() || !lstat.isFile())
|
|
240
|
+
return null;
|
|
241
|
+
return fs.readFileSync(abs, 'utf-8');
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
/** Truncate a file's content head+tail with an elision marker. */
|
|
249
|
+
function truncateFileBody(body) {
|
|
250
|
+
const lines = body.split('\n');
|
|
251
|
+
if (lines.length <= exports.AUDIT_MAX_FILE_LINES) {
|
|
252
|
+
return { body, truncated: false, originalLines: lines.length };
|
|
253
|
+
}
|
|
254
|
+
const head = lines.slice(0, TRUNCATION_HEAD_LINES).join('\n');
|
|
255
|
+
const tail = lines.slice(lines.length - TRUNCATION_TAIL_LINES).join('\n');
|
|
256
|
+
const elided = lines.length - TRUNCATION_HEAD_LINES - TRUNCATION_TAIL_LINES;
|
|
257
|
+
return {
|
|
258
|
+
body: `${head}\n\n... [${elided} lines elided] ...\n\n${tail}`,
|
|
259
|
+
truncated: true,
|
|
260
|
+
originalLines: lines.length,
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
/** Strip leading dot from extension; empty extension returns ''. */
|
|
264
|
+
function extLangHint(ext) {
|
|
265
|
+
return ext.startsWith('.') ? ext.slice(1) : ext;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Build the audit artifact from a list of absolute file paths under a
|
|
269
|
+
* root. Files outside `rootAbs` are rejected. Enforces all caps and
|
|
270
|
+
* surfaces both included and skipped files in the result.
|
|
271
|
+
*/
|
|
272
|
+
function assembleAuditArtifact(rootAbs, files, opts) {
|
|
273
|
+
if (files.length === 0) {
|
|
274
|
+
throw new AuditPackError('no_files_matched', `no files matched under ${rootAbs} — check the path or extension allowlist`);
|
|
275
|
+
}
|
|
276
|
+
// Filter by extension allowlist + lockfile blocklist; keep the
|
|
277
|
+
// rejected ones for surfacing. Also enforces root-containment:
|
|
278
|
+
// every file must live under `rootAbs` (closing the docstring
|
|
279
|
+
// promise that a prior revision left unimplemented — 4/8 reviewers
|
|
280
|
+
// on PR #58 flagged this as a path-traversal hole when callers
|
|
281
|
+
// bypass walkAuditPath).
|
|
282
|
+
const eligible = [];
|
|
283
|
+
const skipped = [];
|
|
284
|
+
for (const abs of files) {
|
|
285
|
+
if (!abs.startsWith(rootAbs + path.sep) && abs !== rootAbs) {
|
|
286
|
+
throw new AuditPackError('outside_root', `file is outside the audit root (rootAbs=${rootAbs}, file=${abs})`);
|
|
287
|
+
}
|
|
288
|
+
const base = path.basename(abs).toLowerCase();
|
|
289
|
+
if (LOCKFILE_NAMES.has(base)) {
|
|
290
|
+
skipped.push(abs);
|
|
291
|
+
continue;
|
|
292
|
+
}
|
|
293
|
+
if (ALLOWED_EXTENSIONS.has(path.extname(abs).toLowerCase())) {
|
|
294
|
+
eligible.push(abs);
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
skipped.push(abs);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
if (eligible.length === 0) {
|
|
301
|
+
throw new AuditPackError('no_files_matched', `no files matched the extension allowlist under ${rootAbs} — audit reads source code only`);
|
|
302
|
+
}
|
|
303
|
+
if (eligible.length > exports.AUDIT_MAX_FILES) {
|
|
304
|
+
throw new AuditPackError('too_many_files', `audit matched ${eligible.length} files; cap is ${exports.AUDIT_MAX_FILES}. Narrow the scope (point at a subdirectory or specific file).`);
|
|
305
|
+
}
|
|
306
|
+
// Read + truncate. Build content blocks and tally bytes.
|
|
307
|
+
const blocks = [];
|
|
308
|
+
const includedRel = [];
|
|
309
|
+
const skippedRel = skipped.map((abs) => toDisplay(rootAbs, abs));
|
|
310
|
+
let totalBytes = 0;
|
|
311
|
+
for (const abs of eligible) {
|
|
312
|
+
const display = toDisplay(rootAbs, abs);
|
|
313
|
+
const body = readFileSafe(abs);
|
|
314
|
+
if (body === null) {
|
|
315
|
+
skippedRel.push(`${display} (read failed)`);
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
318
|
+
const { body: bodyOut, truncated, originalLines } = truncateFileBody(body);
|
|
319
|
+
// Build the full markdown block before measuring. Counting only the
|
|
320
|
+
// raw file body underestimated the artifact size by header + fence
|
|
321
|
+
// overhead (~80-120 bytes per file). Convergent self-review (3/8 on
|
|
322
|
+
// PR #58) flagged that AuditPackResult.totalBytes — documented as
|
|
323
|
+
// "bytes of file content emitted into the artifact" — must reflect
|
|
324
|
+
// what actually gets POSTed, not just the body, so the cap and the
|
|
325
|
+
// reported number stay apples-to-apples.
|
|
326
|
+
const ext = extLangHint(path.extname(display));
|
|
327
|
+
const header = truncated
|
|
328
|
+
? `## \`${display}\` (${originalLines} lines, truncated)`
|
|
329
|
+
: `## \`${display}\` (${originalLines} lines)`;
|
|
330
|
+
const block = `${header}\n\n\`\`\`${ext}\n${bodyOut}\n\`\`\``;
|
|
331
|
+
const bytes = Buffer.byteLength(block, 'utf-8');
|
|
332
|
+
if (totalBytes + bytes > exports.AUDIT_MAX_TOTAL_BYTES) {
|
|
333
|
+
const after = includedRel.length === 0
|
|
334
|
+
? 'before including any files'
|
|
335
|
+
: `after ${includedRel.length} file${includedRel.length === 1 ? '' : 's'}`;
|
|
336
|
+
throw new AuditPackError('too_many_bytes', `audit content would exceed ${exports.AUDIT_MAX_TOTAL_BYTES}-byte cap ${after}. Narrow the scope.`);
|
|
337
|
+
}
|
|
338
|
+
blocks.push(block);
|
|
339
|
+
totalBytes += bytes;
|
|
340
|
+
includedRel.push(display);
|
|
341
|
+
}
|
|
342
|
+
if (includedRel.length === 0) {
|
|
343
|
+
throw new AuditPackError('all_files_unreadable', `every candidate file under ${rootAbs} failed to read — check permissions or symlink layout`);
|
|
344
|
+
}
|
|
345
|
+
const heading = `# Audit: ${opts.scope}`;
|
|
346
|
+
const intro = opts.focusParagraph ? `\n${opts.focusParagraph.trim()}\n` : '';
|
|
347
|
+
const skipNote = skippedRel.length > 0
|
|
348
|
+
? `\n---\n\n**Skipped (${skippedRel.length} file${skippedRel.length === 1 ? '' : 's'} — extension not in allowlist or read failed):**\n${skippedRel.map((p) => `- \`${p}\``).join('\n')}\n`
|
|
349
|
+
: '';
|
|
350
|
+
const artifact = `${heading}\n${intro}\n---\n\n${blocks.join('\n\n')}\n${skipNote}`;
|
|
351
|
+
return {
|
|
352
|
+
artifact,
|
|
353
|
+
filesIncluded: includedRel,
|
|
354
|
+
filesSkipped: skippedRel,
|
|
355
|
+
totalBytes,
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
/** Display path: relative to root if under it, else basename. */
|
|
359
|
+
function toDisplay(rootAbs, fileAbs) {
|
|
360
|
+
const rel = path.relative(rootAbs, fileAbs);
|
|
361
|
+
if (!rel || rel.startsWith('..'))
|
|
362
|
+
return path.basename(fileAbs);
|
|
363
|
+
return rel;
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Focus-paragraph map. Pure data so the CLI flag handler and tests
|
|
367
|
+
* stay aligned. `all` returns undefined — no paragraph injected.
|
|
368
|
+
*/
|
|
369
|
+
function focusParagraph(focus) {
|
|
370
|
+
switch (focus) {
|
|
371
|
+
case 'security':
|
|
372
|
+
return 'Focus on: authentication, authorization, input validation, secret handling, injection vectors, SSRF, race conditions, and any place the code trusts external input.';
|
|
373
|
+
case 'correctness':
|
|
374
|
+
return 'Focus on: off-by-one errors, null/undefined handling, race conditions, error swallowing, and edge cases the happy path obscures.';
|
|
375
|
+
case 'performance':
|
|
376
|
+
return 'Focus on: N+1 patterns, unnecessary work in hot paths, blocking I/O on event loops, and unbounded memory growth.';
|
|
377
|
+
case 'maintainability':
|
|
378
|
+
return 'Focus on: code that future maintainers will struggle with — unclear naming, hidden coupling, missing types, dead branches, and abstractions that do not pay rent.';
|
|
379
|
+
case 'all':
|
|
380
|
+
case '':
|
|
381
|
+
case undefined:
|
|
382
|
+
return undefined;
|
|
383
|
+
default:
|
|
384
|
+
// Unknown focus value — caller validates upstream; here we just
|
|
385
|
+
// pass it through as a free-form paragraph so power users can
|
|
386
|
+
// pipe arbitrary framing in if they want.
|
|
387
|
+
return focus;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Build the audit `work` brief — the framing reviewers see in their
|
|
392
|
+
* ask.md before the artifact. This is what turns review-only into
|
|
393
|
+
* audit-mode without any runner changes.
|
|
394
|
+
*/
|
|
395
|
+
function buildAuditWork(scope, focusPara) {
|
|
396
|
+
const lines = [];
|
|
397
|
+
lines.push(`You are auditing existing production code (scope: ${scope}).`);
|
|
398
|
+
lines.push('');
|
|
399
|
+
lines.push('This code already ships. Your job is to find real bugs, security risks, and correctness issues — not style nits. Be specific: file:line, what is wrong, what would fix it.');
|
|
400
|
+
if (focusPara) {
|
|
401
|
+
lines.push('');
|
|
402
|
+
lines.push(focusPara);
|
|
403
|
+
}
|
|
404
|
+
lines.push('');
|
|
405
|
+
lines.push('List your findings as a markdown list sorted high → low severity, then end your review with "approve" if you found nothing high-severity, or "request changes" if you did.');
|
|
406
|
+
return lines.join('\n');
|
|
407
|
+
}
|
|
408
|
+
//# sourceMappingURL=audit-pack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-pack.js","sourceRoot":"","sources":["../../src/lib/audit-pack.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chorus-codes",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.44",
|
|
4
4
|
"description": "Driver-agnostic multi-LLM peer review for code decisions. Bring your own CLI; Chorus convenes 2-4 other LLMs to review the work before you ship.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "99x Agency",
|
|
File without changes
|
|
File without changes
|