council-review 0.1.0
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/LICENSE +21 -0
- package/README.md +374 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +19 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli.d.ts +14 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +829 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +61 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +235 -0
- package/dist/config.js.map +1 -0
- package/dist/herdr.d.ts +36 -0
- package/dist/herdr.d.ts.map +1 -0
- package/dist/herdr.js +196 -0
- package/dist/herdr.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/levels.d.ts +9 -0
- package/dist/levels.d.ts.map +1 -0
- package/dist/levels.js +19 -0
- package/dist/levels.js.map +1 -0
- package/dist/merge.d.ts +90 -0
- package/dist/merge.d.ts.map +1 -0
- package/dist/merge.js +441 -0
- package/dist/merge.js.map +1 -0
- package/dist/node-guard.d.ts +9 -0
- package/dist/node-guard.d.ts.map +1 -0
- package/dist/node-guard.js +21 -0
- package/dist/node-guard.js.map +1 -0
- package/dist/panel.d.ts +89 -0
- package/dist/panel.d.ts.map +1 -0
- package/dist/panel.js +275 -0
- package/dist/panel.js.map +1 -0
- package/dist/picker.d.ts +24 -0
- package/dist/picker.d.ts.map +1 -0
- package/dist/picker.js +182 -0
- package/dist/picker.js.map +1 -0
- package/dist/providers.d.ts +66 -0
- package/dist/providers.d.ts.map +1 -0
- package/dist/providers.js +544 -0
- package/dist/providers.js.map +1 -0
- package/dist/report.d.ts +116 -0
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +493 -0
- package/dist/report.js.map +1 -0
- package/dist/resolve.d.ts +58 -0
- package/dist/resolve.d.ts.map +1 -0
- package/dist/resolve.js +147 -0
- package/dist/resolve.js.map +1 -0
- package/dist/reviewer-spawn.d.ts +67 -0
- package/dist/reviewer-spawn.d.ts.map +1 -0
- package/dist/reviewer-spawn.js +94 -0
- package/dist/reviewer-spawn.js.map +1 -0
- package/dist/reviewer-tools.d.ts +113 -0
- package/dist/reviewer-tools.d.ts.map +1 -0
- package/dist/reviewer-tools.js +557 -0
- package/dist/reviewer-tools.js.map +1 -0
- package/dist/runner.d.ts +79 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +811 -0
- package/dist/runner.js.map +1 -0
- package/dist/schema.d.ts +63 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +302 -0
- package/dist/schema.js.map +1 -0
- package/dist/scope.d.ts +40 -0
- package/dist/scope.d.ts.map +1 -0
- package/dist/scope.js +372 -0
- package/dist/scope.js.map +1 -0
- package/dist/snapshot.d.ts +57 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +471 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/status.d.ts +90 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +336 -0
- package/dist/status.js.map +1 -0
- package/dist/thinking.d.ts +53 -0
- package/dist/thinking.d.ts.map +1 -0
- package/dist/thinking.js +116 -0
- package/dist/thinking.js.map +1 -0
- package/package.json +81 -0
- package/src/bin.ts +20 -0
- package/src/cli.ts +996 -0
- package/src/config.ts +338 -0
- package/src/herdr.ts +231 -0
- package/src/index.ts +30 -0
- package/src/levels.ts +23 -0
- package/src/merge.ts +548 -0
- package/src/node-guard.ts +25 -0
- package/src/panel.ts +354 -0
- package/src/picker.ts +230 -0
- package/src/providers.ts +778 -0
- package/src/report.ts +594 -0
- package/src/resolve.ts +179 -0
- package/src/reviewer-spawn.ts +131 -0
- package/src/reviewer-tools.ts +715 -0
- package/src/runner.ts +1120 -0
- package/src/schema.ts +373 -0
- package/src/scope.ts +448 -0
- package/src/snapshot.ts +536 -0
- package/src/status.ts +470 -0
- package/src/thinking.ts +148 -0
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { type ThinkingLevel } from './levels.js';
|
|
2
|
+
export interface PanelEntry {
|
|
3
|
+
provider: string;
|
|
4
|
+
model: string;
|
|
5
|
+
thinking?: ThinkingLevel;
|
|
6
|
+
}
|
|
7
|
+
export interface CouncilConfig {
|
|
8
|
+
version: number;
|
|
9
|
+
baseBranch: string;
|
|
10
|
+
panel: PanelEntry[];
|
|
11
|
+
defaultThinkingLevel?: ThinkingLevel;
|
|
12
|
+
modelThinkingLevels?: Record<string, ThinkingLevel>;
|
|
13
|
+
includeContextFiles: boolean;
|
|
14
|
+
timeoutSeconds: number;
|
|
15
|
+
/** Per-reviewer output-token ceiling. `null` means no ceiling at all -- reviewers are then
|
|
16
|
+
* bounded only by `timeoutSeconds`. */
|
|
17
|
+
maxOutputTokens: number | null;
|
|
18
|
+
mergeWindow: number;
|
|
19
|
+
claimSimilarity: number;
|
|
20
|
+
failOn: 'critical' | 'high' | 'medium' | 'low' | 'none';
|
|
21
|
+
snapshot?: {
|
|
22
|
+
include?: string[];
|
|
23
|
+
};
|
|
24
|
+
vendorOverrides?: Record<string, string>;
|
|
25
|
+
retain?: number;
|
|
26
|
+
}
|
|
27
|
+
export interface IgnoreEntry {
|
|
28
|
+
fingerprint: string;
|
|
29
|
+
reason?: string;
|
|
30
|
+
addedAt?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface IgnoreFile {
|
|
33
|
+
version: number;
|
|
34
|
+
entries: IgnoreEntry[];
|
|
35
|
+
}
|
|
36
|
+
/** Thrown for every config/ignore-file problem. Never thrown for something the CLI can retry. */
|
|
37
|
+
export declare class ConfigError extends Error {
|
|
38
|
+
readonly exitCode: 2;
|
|
39
|
+
readonly keyPath?: string;
|
|
40
|
+
constructor(message: string, keyPath?: string);
|
|
41
|
+
}
|
|
42
|
+
export declare const SUPPORTED_CONFIG_VERSIONS: readonly number[];
|
|
43
|
+
/** The current version stamped onto a newly written config, alongside the documented defaults
|
|
44
|
+
* for every optional key. `panel` has no default: it is meaningless without a real selection.
|
|
45
|
+
* `maxOutputTokens` defaults to no ceiling (`null`): an omitted key is deliberately unbounded,
|
|
46
|
+
* not a forgotten number. */
|
|
47
|
+
export declare const CONFIG_DEFAULTS: Readonly<Partial<CouncilConfig>>;
|
|
48
|
+
export declare function configPath(projectRoot: string): string;
|
|
49
|
+
export declare function ignorePath(projectRoot: string): string;
|
|
50
|
+
export declare function loadConfig(projectRoot: string): CouncilConfig;
|
|
51
|
+
/**
|
|
52
|
+
* Merges `patch` over the document currently on disk (or over `{}` when none exists yet) and
|
|
53
|
+
* writes the result back. The merge is a shallow object spread over the *raw* JSON, not the
|
|
54
|
+
* typed `CouncilConfig` — so a key the current schema does not know about survives untouched,
|
|
55
|
+
* and any key present in `patch` replaces its previous value wholesale.
|
|
56
|
+
*/
|
|
57
|
+
export declare function writeConfig(projectRoot: string, patch: Partial<CouncilConfig>): void;
|
|
58
|
+
export declare function loadIgnore(projectRoot: string): IgnoreFile;
|
|
59
|
+
/** Appends `entry` unless its fingerprint is already present, in which case this is a no-op. */
|
|
60
|
+
export declare function appendIgnore(projectRoot: string, entry: IgnoreEntry): void;
|
|
61
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAaA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,oBAAoB,CAAC,EAAE,aAAa,CAAC;IACrC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACpD,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB;4CACwC;IACxC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IACxD,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,iGAAiG;AACjG,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,QAAQ,EAAG,CAAC,CAAU;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAEd,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;CAM9C;AAED,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAAQ,CAAC;AAEhE;;;6BAG6B;AAC7B,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAU3D,CAAC;AAEH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEtD;AAyJD,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CA6B7D;AAMD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAgBpF;AAMD,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CAiB1D;AAED,gGAAgG;AAChG,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAa1E"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loads, validates and writes `.council/config.json` and `.council/ignore.json`.
|
|
3
|
+
*
|
|
4
|
+
* Validation failures are reported as `ConfigError` (exit code 2) carrying the offending key
|
|
5
|
+
* path and the reason, per the CLI spec's "Configuration file contract". This module never
|
|
6
|
+
* calls `process.exit` itself — the CLI layer maps `ConfigError` to an exit code.
|
|
7
|
+
*/
|
|
8
|
+
import fs from 'node:fs';
|
|
9
|
+
import path from 'node:path';
|
|
10
|
+
import { Type } from '@sinclair/typebox';
|
|
11
|
+
import { Value } from '@sinclair/typebox/value';
|
|
12
|
+
import { isThinkingLevel } from './levels.js';
|
|
13
|
+
/** Thrown for every config/ignore-file problem. Never thrown for something the CLI can retry. */
|
|
14
|
+
export class ConfigError extends Error {
|
|
15
|
+
exitCode = 2;
|
|
16
|
+
keyPath;
|
|
17
|
+
constructor(message, keyPath) {
|
|
18
|
+
super(message);
|
|
19
|
+
this.name = 'ConfigError';
|
|
20
|
+
this.keyPath = keyPath;
|
|
21
|
+
Object.setPrototypeOf(this, ConfigError.prototype);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export const SUPPORTED_CONFIG_VERSIONS = [1];
|
|
25
|
+
/** The current version stamped onto a newly written config, alongside the documented defaults
|
|
26
|
+
* for every optional key. `panel` has no default: it is meaningless without a real selection.
|
|
27
|
+
* `maxOutputTokens` defaults to no ceiling (`null`): an omitted key is deliberately unbounded,
|
|
28
|
+
* not a forgotten number. */
|
|
29
|
+
export const CONFIG_DEFAULTS = Object.freeze({
|
|
30
|
+
version: 1,
|
|
31
|
+
baseBranch: 'main',
|
|
32
|
+
includeContextFiles: false,
|
|
33
|
+
timeoutSeconds: 600,
|
|
34
|
+
maxOutputTokens: null,
|
|
35
|
+
mergeWindow: 10,
|
|
36
|
+
claimSimilarity: 0.6,
|
|
37
|
+
failOn: 'high',
|
|
38
|
+
retain: 20,
|
|
39
|
+
});
|
|
40
|
+
export function configPath(projectRoot) {
|
|
41
|
+
return path.join(projectRoot, '.council', 'config.json');
|
|
42
|
+
}
|
|
43
|
+
export function ignorePath(projectRoot) {
|
|
44
|
+
return path.join(projectRoot, '.council', 'ignore.json');
|
|
45
|
+
}
|
|
46
|
+
// ---------------------------------------------------------------------------------------------
|
|
47
|
+
// Schema
|
|
48
|
+
//
|
|
49
|
+
// Thinking-level fields are typed `Type.String()` here — their *shape* is checked by TypeBox,
|
|
50
|
+
// their *vocabulary* is checked afterwards with `isThinkingLevel`, per the task brief, so an
|
|
51
|
+
// unknown level is reported with its own clear reason rather than folded into a generic
|
|
52
|
+
// "expected one of [...]" union-literal message.
|
|
53
|
+
// ---------------------------------------------------------------------------------------------
|
|
54
|
+
const PanelEntrySchema = Type.Object({
|
|
55
|
+
provider: Type.String(),
|
|
56
|
+
model: Type.String(),
|
|
57
|
+
thinking: Type.Optional(Type.String()),
|
|
58
|
+
});
|
|
59
|
+
const ConfigSchema = Type.Object({
|
|
60
|
+
version: Type.Number(),
|
|
61
|
+
baseBranch: Type.Optional(Type.String()),
|
|
62
|
+
panel: Type.Array(PanelEntrySchema),
|
|
63
|
+
defaultThinkingLevel: Type.Optional(Type.String()),
|
|
64
|
+
modelThinkingLevels: Type.Optional(Type.Record(Type.String(), Type.String())),
|
|
65
|
+
includeContextFiles: Type.Optional(Type.Boolean()),
|
|
66
|
+
timeoutSeconds: Type.Optional(Type.Integer({ minimum: 1 })),
|
|
67
|
+
maxOutputTokens: Type.Optional(Type.Union([Type.Integer({ minimum: 1 }), Type.Null()])),
|
|
68
|
+
mergeWindow: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
69
|
+
claimSimilarity: Type.Optional(Type.Number({ minimum: 0, maximum: 1 })),
|
|
70
|
+
failOn: Type.Optional(Type.Union([
|
|
71
|
+
Type.Literal('critical'),
|
|
72
|
+
Type.Literal('high'),
|
|
73
|
+
Type.Literal('medium'),
|
|
74
|
+
Type.Literal('low'),
|
|
75
|
+
Type.Literal('none'),
|
|
76
|
+
])),
|
|
77
|
+
snapshot: Type.Optional(Type.Object({
|
|
78
|
+
include: Type.Optional(Type.Array(Type.String())),
|
|
79
|
+
})),
|
|
80
|
+
vendorOverrides: Type.Optional(Type.Record(Type.String(), Type.String())),
|
|
81
|
+
retain: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
82
|
+
});
|
|
83
|
+
const IgnoreEntrySchema = Type.Object({
|
|
84
|
+
fingerprint: Type.String(),
|
|
85
|
+
reason: Type.Optional(Type.String()),
|
|
86
|
+
addedAt: Type.Optional(Type.String()),
|
|
87
|
+
});
|
|
88
|
+
const IgnoreFileSchema = Type.Object({
|
|
89
|
+
version: Type.Number(),
|
|
90
|
+
entries: Type.Array(IgnoreEntrySchema),
|
|
91
|
+
});
|
|
92
|
+
const IGNORE_FILE_VERSION = 1;
|
|
93
|
+
// ---------------------------------------------------------------------------------------------
|
|
94
|
+
// Config: read
|
|
95
|
+
// ---------------------------------------------------------------------------------------------
|
|
96
|
+
const NOT_FOUND = Symbol('config-file-not-found');
|
|
97
|
+
/** Reads and parses `file`, returning the `NOT_FOUND` sentinel when it does not exist. */
|
|
98
|
+
function tryReadJsonFile(file) {
|
|
99
|
+
let text;
|
|
100
|
+
try {
|
|
101
|
+
text = fs.readFileSync(file, 'utf8');
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
if (err.code === 'ENOENT') {
|
|
105
|
+
return NOT_FOUND;
|
|
106
|
+
}
|
|
107
|
+
throw new ConfigError(`Unable to read ${file}: ${err.message}`);
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
return JSON.parse(text);
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
throw new ConfigError(`Invalid JSON in ${file}: ${err.message}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Hard-errors on an unrecognised `version` before anything else in the document is interpreted
|
|
118
|
+
* — an unsupported version is never best-effort parsed. This runs ahead of the general schema
|
|
119
|
+
* check so a version mismatch is reported as a version problem, not a generic type error.
|
|
120
|
+
*/
|
|
121
|
+
function checkVersion(raw, file) {
|
|
122
|
+
const version = raw.version;
|
|
123
|
+
if (typeof version !== 'number' || !SUPPORTED_CONFIG_VERSIONS.includes(version)) {
|
|
124
|
+
throw new ConfigError(`Unsupported config version ${JSON.stringify(version)} in ${file}; ` +
|
|
125
|
+
`supported versions: ${SUPPORTED_CONFIG_VERSIONS.join(', ')}.`, '/version');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function checkThinkingLevels(raw) {
|
|
129
|
+
if (raw.defaultThinkingLevel !== undefined && !isThinkingLevel(raw.defaultThinkingLevel)) {
|
|
130
|
+
throw new ConfigError(`Invalid config at "/defaultThinkingLevel": unknown thinking level ` +
|
|
131
|
+
`${JSON.stringify(raw.defaultThinkingLevel)}`, '/defaultThinkingLevel');
|
|
132
|
+
}
|
|
133
|
+
if (raw.modelThinkingLevels) {
|
|
134
|
+
for (const [key, value] of Object.entries(raw.modelThinkingLevels)) {
|
|
135
|
+
if (!isThinkingLevel(value)) {
|
|
136
|
+
throw new ConfigError(`Invalid config at "/modelThinkingLevels/${key}": unknown thinking level ` +
|
|
137
|
+
`${JSON.stringify(value)}`, `/modelThinkingLevels/${key}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
raw.panel.forEach((entry, i) => {
|
|
142
|
+
if (entry.thinking !== undefined && !isThinkingLevel(entry.thinking)) {
|
|
143
|
+
throw new ConfigError(`Invalid config at "/panel/${i}/thinking": unknown thinking level ` +
|
|
144
|
+
`${JSON.stringify(entry.thinking)}`, `/panel/${i}/thinking`);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
function applyDefaults(raw) {
|
|
149
|
+
return {
|
|
150
|
+
version: raw.version,
|
|
151
|
+
baseBranch: raw.baseBranch ?? CONFIG_DEFAULTS.baseBranch,
|
|
152
|
+
panel: raw.panel,
|
|
153
|
+
defaultThinkingLevel: raw.defaultThinkingLevel,
|
|
154
|
+
modelThinkingLevels: raw.modelThinkingLevels,
|
|
155
|
+
includeContextFiles: raw.includeContextFiles ?? CONFIG_DEFAULTS.includeContextFiles,
|
|
156
|
+
timeoutSeconds: raw.timeoutSeconds ?? CONFIG_DEFAULTS.timeoutSeconds,
|
|
157
|
+
maxOutputTokens: raw.maxOutputTokens ?? CONFIG_DEFAULTS.maxOutputTokens,
|
|
158
|
+
mergeWindow: raw.mergeWindow ?? CONFIG_DEFAULTS.mergeWindow,
|
|
159
|
+
claimSimilarity: raw.claimSimilarity ?? CONFIG_DEFAULTS.claimSimilarity,
|
|
160
|
+
failOn: raw.failOn ?? CONFIG_DEFAULTS.failOn,
|
|
161
|
+
snapshot: raw.snapshot,
|
|
162
|
+
vendorOverrides: raw.vendorOverrides,
|
|
163
|
+
retain: raw.retain ?? CONFIG_DEFAULTS.retain,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
export function loadConfig(projectRoot) {
|
|
167
|
+
const file = configPath(projectRoot);
|
|
168
|
+
const raw = tryReadJsonFile(file);
|
|
169
|
+
if (raw === NOT_FOUND) {
|
|
170
|
+
throw new ConfigError(`No configuration found at ${file}. Run "council-review init" to create one.`);
|
|
171
|
+
}
|
|
172
|
+
if (raw === null || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
173
|
+
throw new ConfigError(`Invalid config in ${file}: expected a JSON object at the top level`);
|
|
174
|
+
}
|
|
175
|
+
const rawRecord = raw;
|
|
176
|
+
checkVersion(rawRecord, file);
|
|
177
|
+
const error = Value.Errors(ConfigSchema, raw).First();
|
|
178
|
+
if (error) {
|
|
179
|
+
throw new ConfigError(`Invalid config at "${error.path}": ${error.message} (got ${JSON.stringify(error.value)})`, error.path);
|
|
180
|
+
}
|
|
181
|
+
const validated = raw;
|
|
182
|
+
checkThinkingLevels(validated);
|
|
183
|
+
return applyDefaults(validated);
|
|
184
|
+
}
|
|
185
|
+
// ---------------------------------------------------------------------------------------------
|
|
186
|
+
// Config: write
|
|
187
|
+
// ---------------------------------------------------------------------------------------------
|
|
188
|
+
/**
|
|
189
|
+
* Merges `patch` over the document currently on disk (or over `{}` when none exists yet) and
|
|
190
|
+
* writes the result back. The merge is a shallow object spread over the *raw* JSON, not the
|
|
191
|
+
* typed `CouncilConfig` — so a key the current schema does not know about survives untouched,
|
|
192
|
+
* and any key present in `patch` replaces its previous value wholesale.
|
|
193
|
+
*/
|
|
194
|
+
export function writeConfig(projectRoot, patch) {
|
|
195
|
+
const file = configPath(projectRoot);
|
|
196
|
+
const raw = tryReadJsonFile(file);
|
|
197
|
+
let existing = {};
|
|
198
|
+
if (raw !== NOT_FOUND) {
|
|
199
|
+
if (raw === null || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
200
|
+
throw new ConfigError(`Invalid config in ${file}: expected a JSON object at the top level`);
|
|
201
|
+
}
|
|
202
|
+
existing = raw;
|
|
203
|
+
}
|
|
204
|
+
const merged = { ...existing, ...patch };
|
|
205
|
+
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
206
|
+
fs.writeFileSync(file, JSON.stringify(merged, null, 2) + '\n', 'utf8');
|
|
207
|
+
}
|
|
208
|
+
// ---------------------------------------------------------------------------------------------
|
|
209
|
+
// Ignore file
|
|
210
|
+
// ---------------------------------------------------------------------------------------------
|
|
211
|
+
export function loadIgnore(projectRoot) {
|
|
212
|
+
const file = ignorePath(projectRoot);
|
|
213
|
+
const raw = tryReadJsonFile(file);
|
|
214
|
+
if (raw === NOT_FOUND) {
|
|
215
|
+
return { version: IGNORE_FILE_VERSION, entries: [] };
|
|
216
|
+
}
|
|
217
|
+
const error = Value.Errors(IgnoreFileSchema, raw).First();
|
|
218
|
+
if (error) {
|
|
219
|
+
throw new ConfigError(`Invalid ignore file at "${error.path}": ${error.message} (got ${JSON.stringify(error.value)})`, error.path);
|
|
220
|
+
}
|
|
221
|
+
return raw;
|
|
222
|
+
}
|
|
223
|
+
/** Appends `entry` unless its fingerprint is already present, in which case this is a no-op. */
|
|
224
|
+
export function appendIgnore(projectRoot, entry) {
|
|
225
|
+
const file = ignorePath(projectRoot);
|
|
226
|
+
const current = loadIgnore(projectRoot);
|
|
227
|
+
const alreadyPresent = current.entries.some((e) => e.fingerprint === entry.fingerprint);
|
|
228
|
+
const entries = alreadyPresent
|
|
229
|
+
? current.entries
|
|
230
|
+
: [...current.entries, { addedAt: new Date().toISOString(), ...entry }];
|
|
231
|
+
const next = { version: current.version || IGNORE_FILE_VERSION, entries };
|
|
232
|
+
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
233
|
+
fs.writeFileSync(file, JSON.stringify(next, null, 2) + '\n', 'utf8');
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/herdr.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* True when running inside a herdr-managed pane. herdr injects `HERDR_ENV=1` (along with
|
|
3
|
+
* `HERDR_PANE_ID`, `HERDR_TAB_ID`, `HERDR_WORKSPACE_ID`, `HERDR_SOCKET_PATH`, `HERDR_BIN_PATH`)
|
|
4
|
+
* into every pane it manages; verified against herdr 0.8.2's own `--skill` documentation, which
|
|
5
|
+
* tells agents to gate on exactly this variable before issuing any control command.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isHerdrEnv(env?: NodeJS.ProcessEnv): boolean;
|
|
8
|
+
/** Test-only: clears the "notice already shown" latch between test cases. */
|
|
9
|
+
export declare function __resetHerdrNoticeForTests(): void;
|
|
10
|
+
/**
|
|
11
|
+
* Splits a new pane from the current one and runs `argv` inside it. The herdr CLI's own
|
|
12
|
+
* `--direction` flag only accepts `right` / `down` (side-by-side vs. stacked), not
|
|
13
|
+
* `horizontal` / `vertical`; `horizontal` maps to `right` and `vertical` maps to `down`.
|
|
14
|
+
*/
|
|
15
|
+
export declare function splitPaneAndRun(argv: readonly string[], direction?: 'horizontal' | 'vertical'): {
|
|
16
|
+
attempted: boolean;
|
|
17
|
+
};
|
|
18
|
+
/** Renames the current pane. `herdr pane rename` needs the pane id; herdr injects it as `HERDR_PANE_ID`. */
|
|
19
|
+
export declare function setPaneTitle(title: string): {
|
|
20
|
+
attempted: boolean;
|
|
21
|
+
};
|
|
22
|
+
/** Raises a herdr desktop notification. A no-op, without a notice, when suppressed by the caller. */
|
|
23
|
+
export declare function notifyComplete(message: string, suppressed: boolean): {
|
|
24
|
+
attempted: boolean;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Delivers the handoff prompt (already written to `promptPath` by the report writer) to a named
|
|
28
|
+
* herdr-managed agent. The existence check (`herdr agent get`) is synchronous so an unknown
|
|
29
|
+
* agent can be warned about immediately; delivery itself (`herdr agent prompt`, without `--wait`)
|
|
30
|
+
* is fired without being awaited, so the review's own completion never depends on the agent's
|
|
31
|
+
* response.
|
|
32
|
+
*/
|
|
33
|
+
export declare function handoffToAgent(agent: string, promptPath: string): {
|
|
34
|
+
attempted: boolean;
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=herdr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"herdr.d.ts","sourceRoot":"","sources":["../src/herdr.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAExE;AAcD,6EAA6E;AAC7E,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD;AAiDD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,SAAS,GAAE,YAAY,GAAG,UAAyB,GAClD;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CA0CxB;AAED,4GAA4G;AAC5G,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CAiBlE;AAED,qGAAqG;AACrG,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CAqB3F;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CAyCxF"}
|
package/dist/herdr.js
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
// Cooperation with the herdr pane environment (https://herdr.dev). Every interaction here is
|
|
2
|
+
// strictly optional: the tool must behave identically in a plain shell or in CI, where herdr is
|
|
3
|
+
// simply absent. Nothing in this module may throw into the caller's exit path — every herdr
|
|
4
|
+
// command is spawned defensively and a failure degrades to a printed warning, never an error.
|
|
5
|
+
import { spawn, spawnSync } from 'node:child_process';
|
|
6
|
+
import { readFileSync } from 'node:fs';
|
|
7
|
+
/** Resolves the herdr binary: `COUNCIL_HERDR_BIN` override, else `herdr` on `PATH`. */
|
|
8
|
+
function herdrBin(env = process.env) {
|
|
9
|
+
return env.COUNCIL_HERDR_BIN ?? 'herdr';
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* True when running inside a herdr-managed pane. herdr injects `HERDR_ENV=1` (along with
|
|
13
|
+
* `HERDR_PANE_ID`, `HERDR_TAB_ID`, `HERDR_WORKSPACE_ID`, `HERDR_SOCKET_PATH`, `HERDR_BIN_PATH`)
|
|
14
|
+
* into every pane it manages; verified against herdr 0.8.2's own `--skill` documentation, which
|
|
15
|
+
* tells agents to gate on exactly this variable before issuing any control command.
|
|
16
|
+
*/
|
|
17
|
+
export function isHerdrEnv(env = process.env) {
|
|
18
|
+
return env.HERDR_ENV === '1';
|
|
19
|
+
}
|
|
20
|
+
// Printed at most once per process, no matter how many herdr-flagged interactions are attempted
|
|
21
|
+
// outside a herdr environment (Scenario: "Notice is printed once").
|
|
22
|
+
let noticeShown = false;
|
|
23
|
+
function noticeOutsideHerdr() {
|
|
24
|
+
if (noticeShown)
|
|
25
|
+
return;
|
|
26
|
+
noticeShown = true;
|
|
27
|
+
console.error('council: herdr not detected (HERDR_ENV is not set) — herdr integration skipped; the review proceeds normally.');
|
|
28
|
+
}
|
|
29
|
+
/** Test-only: clears the "notice already shown" latch between test cases. */
|
|
30
|
+
export function __resetHerdrNoticeForTests() {
|
|
31
|
+
noticeShown = false;
|
|
32
|
+
}
|
|
33
|
+
function warn(message) {
|
|
34
|
+
console.error(`council: herdr warning: ${message}`);
|
|
35
|
+
}
|
|
36
|
+
/** Runs one herdr subcommand synchronously, swallowing every failure into a result flag. */
|
|
37
|
+
function runHerdrSync(args) {
|
|
38
|
+
const bin = herdrBin();
|
|
39
|
+
let result;
|
|
40
|
+
try {
|
|
41
|
+
result = spawnSync(bin, args, { encoding: 'utf8' });
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
return { ok: false, stdout: '', message: err.message };
|
|
45
|
+
}
|
|
46
|
+
if (result.error) {
|
|
47
|
+
return { ok: false, stdout: '', message: result.error.message };
|
|
48
|
+
}
|
|
49
|
+
if (typeof result.status === 'number' && result.status !== 0) {
|
|
50
|
+
const detail = (result.stderr || result.stdout || `exit code ${result.status}`).trim();
|
|
51
|
+
return { ok: false, stdout: result.stdout ?? '', message: detail };
|
|
52
|
+
}
|
|
53
|
+
return { ok: true, stdout: result.stdout ?? '' };
|
|
54
|
+
}
|
|
55
|
+
/** Pulls `.result.pane.pane_id` out of a `herdr pane split` JSON response. */
|
|
56
|
+
function extractPaneId(stdout) {
|
|
57
|
+
try {
|
|
58
|
+
const parsed = JSON.parse(stdout);
|
|
59
|
+
const paneId = parsed.result?.pane?.pane_id;
|
|
60
|
+
return typeof paneId === 'string' ? paneId : null;
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Set on the delegated pane's launched process (and again, belt-and-suspenders, as a literal
|
|
67
|
+
// `env` prefix on the command run inside it) so that when the review re-enters this module from
|
|
68
|
+
// inside the pane just created for it, splitPaneAndRun refuses to split a second time. This is
|
|
69
|
+
// enforced entirely within this module rather than relying on the CLI to omit a pane-requesting
|
|
70
|
+
// flag on the delegated invocation.
|
|
71
|
+
const DELEGATED_MARKER = 'COUNCIL_HERDR_DELEGATED';
|
|
72
|
+
/**
|
|
73
|
+
* Splits a new pane from the current one and runs `argv` inside it. The herdr CLI's own
|
|
74
|
+
* `--direction` flag only accepts `right` / `down` (side-by-side vs. stacked), not
|
|
75
|
+
* `horizontal` / `vertical`; `horizontal` maps to `right` and `vertical` maps to `down`.
|
|
76
|
+
*/
|
|
77
|
+
export function splitPaneAndRun(argv, direction = 'horizontal') {
|
|
78
|
+
if (!isHerdrEnv()) {
|
|
79
|
+
noticeOutsideHerdr();
|
|
80
|
+
return { attempted: false };
|
|
81
|
+
}
|
|
82
|
+
if (process.env[DELEGATED_MARKER] === '1') {
|
|
83
|
+
// Already running inside a pane created for a delegated review; never split again.
|
|
84
|
+
return { attempted: false };
|
|
85
|
+
}
|
|
86
|
+
const herdrDirection = direction === 'vertical' ? 'down' : 'right';
|
|
87
|
+
const split = runHerdrSync([
|
|
88
|
+
'pane',
|
|
89
|
+
'split',
|
|
90
|
+
'--current',
|
|
91
|
+
'--direction',
|
|
92
|
+
herdrDirection,
|
|
93
|
+
'--cwd',
|
|
94
|
+
process.cwd(),
|
|
95
|
+
'--no-focus',
|
|
96
|
+
]);
|
|
97
|
+
if (!split.ok) {
|
|
98
|
+
warn(`could not split a pane for the review: ${split.message}`);
|
|
99
|
+
return { attempted: true };
|
|
100
|
+
}
|
|
101
|
+
const paneId = extractPaneId(split.stdout);
|
|
102
|
+
if (!paneId) {
|
|
103
|
+
warn('herdr pane split did not return a pane id; review was not delegated to a new pane');
|
|
104
|
+
return { attempted: true };
|
|
105
|
+
}
|
|
106
|
+
// `env COUNCIL_HERDR_DELEGATED=1 <argv...>` guarantees the delegated process sees the marker
|
|
107
|
+
// regardless of whether herdr's own environment propagation persists across `pane run` calls.
|
|
108
|
+
const run = runHerdrSync(['pane', 'run', paneId, 'env', `${DELEGATED_MARKER}=1`, ...argv]);
|
|
109
|
+
if (!run.ok) {
|
|
110
|
+
warn(`could not run the review in the split pane: ${run.message}`);
|
|
111
|
+
}
|
|
112
|
+
return { attempted: true };
|
|
113
|
+
}
|
|
114
|
+
/** Renames the current pane. `herdr pane rename` needs the pane id; herdr injects it as `HERDR_PANE_ID`. */
|
|
115
|
+
export function setPaneTitle(title) {
|
|
116
|
+
if (!isHerdrEnv()) {
|
|
117
|
+
noticeOutsideHerdr();
|
|
118
|
+
return { attempted: false };
|
|
119
|
+
}
|
|
120
|
+
const paneId = process.env.HERDR_PANE_ID;
|
|
121
|
+
if (!paneId) {
|
|
122
|
+
warn('HERDR_PANE_ID is not set; skipping pane title');
|
|
123
|
+
return { attempted: true };
|
|
124
|
+
}
|
|
125
|
+
const result = runHerdrSync(['pane', 'rename', paneId, title]);
|
|
126
|
+
if (!result.ok) {
|
|
127
|
+
warn(`could not set the pane title: ${result.message}`);
|
|
128
|
+
}
|
|
129
|
+
return { attempted: true };
|
|
130
|
+
}
|
|
131
|
+
/** Raises a herdr desktop notification. A no-op, without a notice, when suppressed by the caller. */
|
|
132
|
+
export function notifyComplete(message, suppressed) {
|
|
133
|
+
if (!isHerdrEnv()) {
|
|
134
|
+
noticeOutsideHerdr();
|
|
135
|
+
return { attempted: false };
|
|
136
|
+
}
|
|
137
|
+
if (suppressed) {
|
|
138
|
+
return { attempted: false };
|
|
139
|
+
}
|
|
140
|
+
const result = runHerdrSync([
|
|
141
|
+
'notification',
|
|
142
|
+
'show',
|
|
143
|
+
'Council review complete',
|
|
144
|
+
'--body',
|
|
145
|
+
message,
|
|
146
|
+
]);
|
|
147
|
+
if (!result.ok) {
|
|
148
|
+
warn(`could not raise the completion notification: ${result.message}`);
|
|
149
|
+
}
|
|
150
|
+
return { attempted: true };
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Delivers the handoff prompt (already written to `promptPath` by the report writer) to a named
|
|
154
|
+
* herdr-managed agent. The existence check (`herdr agent get`) is synchronous so an unknown
|
|
155
|
+
* agent can be warned about immediately; delivery itself (`herdr agent prompt`, without `--wait`)
|
|
156
|
+
* is fired without being awaited, so the review's own completion never depends on the agent's
|
|
157
|
+
* response.
|
|
158
|
+
*/
|
|
159
|
+
export function handoffToAgent(agent, promptPath) {
|
|
160
|
+
if (!isHerdrEnv()) {
|
|
161
|
+
noticeOutsideHerdr();
|
|
162
|
+
return { attempted: false };
|
|
163
|
+
}
|
|
164
|
+
const bin = herdrBin();
|
|
165
|
+
const check = runHerdrSync(['agent', 'get', agent]);
|
|
166
|
+
if (!check.ok) {
|
|
167
|
+
warn(`herdr agent "${agent}" was not found; the handoff prompt remains written at ${promptPath} for manual use`);
|
|
168
|
+
return { attempted: true };
|
|
169
|
+
}
|
|
170
|
+
let text;
|
|
171
|
+
try {
|
|
172
|
+
text = readFileSync(promptPath, 'utf8');
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
warn(`could not read the handoff prompt at ${promptPath}: ${err.message}`);
|
|
176
|
+
return { attempted: true };
|
|
177
|
+
}
|
|
178
|
+
// Deliberately not awaited: `spawn`, not `spawnSync`, and no `--wait` flag, so a slow or
|
|
179
|
+
// non-responding agent never delays the review command's own exit.
|
|
180
|
+
try {
|
|
181
|
+
const child = spawn(bin, ['agent', 'prompt', agent, text], { stdio: 'ignore' });
|
|
182
|
+
child.on('error', (err) => {
|
|
183
|
+
warn(`could not deliver the handoff prompt to "${agent}": ${err.message}`);
|
|
184
|
+
});
|
|
185
|
+
child.on('exit', (code) => {
|
|
186
|
+
if (code !== 0) {
|
|
187
|
+
warn(`herdr agent prompt to "${agent}" exited with code ${code}`);
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
warn(`could not deliver the handoff prompt to "${agent}": ${err.message}`);
|
|
193
|
+
}
|
|
194
|
+
return { attempted: true };
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=herdr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"herdr.js","sourceRoot":"","sources":["../src/herdr.ts"],"names":[],"mappings":"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"}
|