agent-merge-broker 0.8.1 → 0.10.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/README.md +35 -8
- package/dist/bootstrap.d.ts +17 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +267 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/broker.d.ts +14 -1
- package/dist/broker.d.ts.map +1 -1
- package/dist/broker.js +438 -90
- package/dist/broker.js.map +1 -1
- package/dist/cli.js +50 -10
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +14 -2
- package/dist/config.js.map +1 -1
- package/dist/git.d.ts +1 -0
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +3 -0
- package/dist/git.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/process.d.ts +15 -0
- package/dist/process.d.ts.map +1 -1
- package/dist/process.js +100 -12
- package/dist/process.js.map +1 -1
- package/dist/publisher.d.ts +15 -0
- package/dist/publisher.d.ts.map +1 -1
- package/dist/publisher.js +8 -0
- package/dist/publisher.js.map +1 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +39 -3
- package/dist/service.js.map +1 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +32 -16
- package/dist/store.js.map +1 -1
- package/dist/types.d.ts +27 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/validation.d.ts +4 -0
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +64 -48
- package/dist/validation.js.map +1 -1
- package/docs/ARCHITECTURE.md +12 -0
- package/docs/GETTING_STARTED.md +268 -0
- package/docs/RELEASING.md +1 -1
- package/docs/SECURITY.md +10 -2
- package/examples/two-agents/README.md +39 -0
- package/examples/two-agents/run.sh +143 -0
- package/package.json +3 -1
- package/schemas/config.schema.json +22 -5
package/README.md
CHANGED
|
@@ -46,9 +46,10 @@ It is deliberately **not** an agent framework and **not** a replacement for prot
|
|
|
46
46
|
|
|
47
47
|
`0.3.0` was the first public release: the local broker core, the GitHub CLI publishing adapter with auto-merge, and the remote provenance verifier.
|
|
48
48
|
|
|
49
|
-
`0.
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
`0.10.0` is current. Installation now detects declared repository validation, installs the agent
|
|
50
|
+
contract, provisions authenticated provenance, and remains idempotent on repeat runs. Native
|
|
51
|
+
architecture execution and isolated transaction caches prevent cross-architecture Swift build
|
|
52
|
+
contamination without rerunning the same complete gate.
|
|
52
53
|
|
|
53
54
|
The on-disk state, receipt, and provenance formats are versioned, but compatibility is not guaranteed until `1.0.0`. Expect format migrations before then.
|
|
54
55
|
|
|
@@ -78,10 +79,19 @@ npm run build
|
|
|
78
79
|
npm link
|
|
79
80
|
```
|
|
80
81
|
|
|
81
|
-
`init` writes
|
|
82
|
+
`init` writes three portable files into the application:
|
|
82
83
|
|
|
83
84
|
- `.merge-broker/config.json` — repository policy and commands
|
|
84
85
|
- `.merge-broker/agent-instructions.md` — a reusable worker contract
|
|
86
|
+
- `AGENTS.md` — a managed pointer that makes repository agents use that contract
|
|
87
|
+
|
|
88
|
+
Initialization deterministically selects existing `verify`, `ci`, `check`, `lint`, `typecheck`,
|
|
89
|
+
`test`, and `build` scripts from JavaScript package manifests, plus SwiftPM tests. It never creates
|
|
90
|
+
commands, Xcode schemes, destinations, or project policy that the repository did not declare.
|
|
91
|
+
Anything it cannot prove is printed as an explicit configuration item. Re-running `init` repairs
|
|
92
|
+
missing generated integration files and old unsigned defaults, but preserves configured validators
|
|
93
|
+
and owner-written `AGENTS.md` content. Use `--no-detect` or `--no-agent-contract` only when an
|
|
94
|
+
installer or repository template owns those concerns itself.
|
|
85
95
|
|
|
86
96
|
It also creates an Ed25519 provenance private key, mode `0600`, under Git's common runtime directory.
|
|
87
97
|
Only its public key is written to the committed configuration. Runtime state, receipt records,
|
|
@@ -90,11 +100,14 @@ worktree sees the same broker authority.
|
|
|
90
100
|
|
|
91
101
|
## Quick start
|
|
92
102
|
|
|
93
|
-
|
|
103
|
+
For a guided rollout—including validator, publication, service, recovery, and protected-branch
|
|
104
|
+
recipes—start with [Getting started](docs/GETTING_STARTED.md).
|
|
105
|
+
|
|
106
|
+
Initialize an existing Git repository, review the detected policy, and commit the installation:
|
|
94
107
|
|
|
95
108
|
```bash
|
|
96
109
|
merge-broker init --base main --base-ref origin/main --remote origin
|
|
97
|
-
git add .merge-broker && git commit -m 'Configure authenticated merge brokerage'
|
|
110
|
+
git add .merge-broker AGENTS.md && git commit -m 'Configure authenticated merge brokerage'
|
|
98
111
|
merge-broker doctor
|
|
99
112
|
```
|
|
100
113
|
|
|
@@ -211,7 +224,7 @@ installing dependencies:
|
|
|
211
224
|
with:
|
|
212
225
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
213
226
|
fetch-depth: 0
|
|
214
|
-
- uses: WeSpitfire/agent-merge-broker/verify@v0.
|
|
227
|
+
- uses: WeSpitfire/agent-merge-broker/verify@v0.10.0
|
|
215
228
|
```
|
|
216
229
|
|
|
217
230
|
The check verifies the Ed25519 signature, branch and batch identity, real base history, one-file
|
|
@@ -336,6 +349,11 @@ branch, and return its tasks to `submitted` without spending their attempt budge
|
|
|
336
349
|
recover` performs that reconciliation explicitly. `unlock --force` remains only for an owner that
|
|
337
350
|
cannot be proven gone and must follow confirming no integration is active.
|
|
338
351
|
|
|
352
|
+
Candidate revisions also carry a durable intent before the broker moves their branch. If a process
|
|
353
|
+
stops after the branch update but before state finalization, `recover` compares the real PR/local
|
|
354
|
+
head with the old and new candidate SHAs and safely finishes or rolls back the transition. An
|
|
355
|
+
unexpected third SHA is never guessed at and remains visible in `doctor`.
|
|
356
|
+
|
|
339
357
|
## Housekeeping
|
|
340
358
|
|
|
341
359
|
`state.json` is rewritten in full on every transaction, including heartbeats, so completed work should not accumulate in it forever:
|
|
@@ -435,14 +453,23 @@ Validators receive these environment variables:
|
|
|
435
453
|
- `MERGE_BROKER_BASE_SHA`
|
|
436
454
|
- `MERGE_BROKER_HEAD_SHA`
|
|
437
455
|
- `MERGE_BROKER_BATCH_ID`
|
|
456
|
+
- `MERGE_BROKER_CACHE_DIR`, an isolated cache shared by validators in one integration transaction
|
|
438
457
|
|
|
439
|
-
Commands may also use the shell-safe placeholders `{taskId}` and `{files}`. Validator output
|
|
458
|
+
Commands may also use the shell-safe placeholders `{taskId}` and `{files}`. Validator output is
|
|
459
|
+
captured with a fixed memory bound and retained in state with that cap. A timeout terminates the
|
|
460
|
+
validator process group on POSIX rather than leaving shell descendants behind.
|
|
440
461
|
|
|
441
462
|
`merge-broker validate` runs these same broker-side validators against a working tree, so a worker
|
|
442
463
|
can get the local integration answer before submitting rather than a weaker approximation of it. It reports
|
|
443
464
|
`MERGE_BROKER_BATCH_ID=local`, which a validator can branch on if it needs to behave differently
|
|
444
465
|
outside a batch.
|
|
445
466
|
|
|
467
|
+
A validator may set `"executionArchitecture": "native"` to run under the hardware architecture on
|
|
468
|
+
macOS when Node itself is translated by Rosetta. Detected SwiftPM validators use this mode and put
|
|
469
|
+
their scratch build under `MERGE_BROKER_CACHE_DIR`, preventing Intel and Apple Silicon artifacts
|
|
470
|
+
from contaminating each other without rebuilding between the focused and authoritative stages of
|
|
471
|
+
the same integration transaction.
|
|
472
|
+
|
|
446
473
|
The JSON schemas in [`schemas/`](schemas/) can be used by editors, adapters, and independent receipt producers.
|
|
447
474
|
|
|
448
475
|
### One authoritative CI pass
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { BrokerConfig, ValidatorConfig } from "./types.js";
|
|
2
|
+
export interface BootstrapPlan {
|
|
3
|
+
ecosystems: string[];
|
|
4
|
+
focused: ValidatorConfig[];
|
|
5
|
+
authoritative: ValidatorConfig[];
|
|
6
|
+
serializedPatterns: string[];
|
|
7
|
+
unresolved: string[];
|
|
8
|
+
}
|
|
9
|
+
export interface AgentContractResult {
|
|
10
|
+
path: string;
|
|
11
|
+
changed: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function detectBootstrapPlan(root: string): Promise<BootstrapPlan>;
|
|
14
|
+
export declare function applyBootstrapPlan(config: BrokerConfig, plan: BootstrapPlan): boolean;
|
|
15
|
+
export declare function installAgentContract(root: string): Promise<AgentContractResult>;
|
|
16
|
+
export declare function hasAgentContract(root: string): Promise<boolean>;
|
|
17
|
+
//# sourceMappingURL=bootstrap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAyBhE,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,aAAa,EAAE,eAAe,EAAE,CAAC;IACjC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAoLD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA2B9E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAkBrF;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAoBrF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKrE"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import { access, readFile, readdir, writeFile } from "node:fs/promises";
|
|
4
|
+
import { constants } from "node:fs";
|
|
5
|
+
import { BrokerError } from "./errors.js";
|
|
6
|
+
const AGENT_BLOCK_START = "<!-- agent-merge-broker:start -->";
|
|
7
|
+
const AGENT_BLOCK_END = "<!-- agent-merge-broker:end -->";
|
|
8
|
+
const AGENT_BLOCK = `${AGENT_BLOCK_START}
|
|
9
|
+
## Agent Merge Broker
|
|
10
|
+
|
|
11
|
+
This repository uses Agent Merge Broker as its implementation-integration authority. Before editing,
|
|
12
|
+
read \`.merge-broker/agent-instructions.md\` and follow its claim, lease, candidate, and revision
|
|
13
|
+
protocol. Workers do not push implementation branches, open pull requests, or merge their own work.
|
|
14
|
+
${AGENT_BLOCK_END}`;
|
|
15
|
+
const IGNORED_DIRECTORIES = new Set([
|
|
16
|
+
".git",
|
|
17
|
+
".build",
|
|
18
|
+
".next",
|
|
19
|
+
".swiftpm",
|
|
20
|
+
"DerivedData",
|
|
21
|
+
"dist",
|
|
22
|
+
"build",
|
|
23
|
+
"node_modules",
|
|
24
|
+
"vendor",
|
|
25
|
+
]);
|
|
26
|
+
async function exists(target) {
|
|
27
|
+
try {
|
|
28
|
+
await access(target, constants.F_OK);
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function posix(relativePath) {
|
|
36
|
+
return relativePath.split(path.sep).join("/");
|
|
37
|
+
}
|
|
38
|
+
function shellQuote(value) {
|
|
39
|
+
return `'${value.replaceAll("'", `'"'"'`)}'`;
|
|
40
|
+
}
|
|
41
|
+
async function discoverFiles(root, maxDepth = 4) {
|
|
42
|
+
const files = [];
|
|
43
|
+
async function visit(directory, depth) {
|
|
44
|
+
if (depth > maxDepth)
|
|
45
|
+
return;
|
|
46
|
+
const entries = await readdir(directory, { withFileTypes: true });
|
|
47
|
+
for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {
|
|
48
|
+
if (entry.isSymbolicLink())
|
|
49
|
+
continue;
|
|
50
|
+
const absolute = path.join(directory, entry.name);
|
|
51
|
+
const relative = posix(path.relative(root, absolute));
|
|
52
|
+
if (entry.isDirectory()) {
|
|
53
|
+
if (!IGNORED_DIRECTORIES.has(entry.name))
|
|
54
|
+
await visit(absolute, depth + 1);
|
|
55
|
+
}
|
|
56
|
+
else if (entry.isFile()) {
|
|
57
|
+
files.push(relative);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
await visit(root, 0);
|
|
62
|
+
return files.sort();
|
|
63
|
+
}
|
|
64
|
+
const PACKAGE_LOCKS = ["pnpm-lock.yaml", "yarn.lock", "bun.lock", "bun.lockb", "package-lock.json"];
|
|
65
|
+
function packageManager(files, packageJson, directory) {
|
|
66
|
+
const declared = typeof packageJson.packageManager === "string"
|
|
67
|
+
? packageJson.packageManager.split("@")[0]
|
|
68
|
+
: undefined;
|
|
69
|
+
if (declared && new Set(["npm", "pnpm", "yarn", "bun"]).has(declared))
|
|
70
|
+
return declared;
|
|
71
|
+
let candidate = directory;
|
|
72
|
+
while (true) {
|
|
73
|
+
const at = (name) => files.has(candidate === "." ? name : `${candidate}/${name}`);
|
|
74
|
+
if (at("pnpm-lock.yaml"))
|
|
75
|
+
return "pnpm";
|
|
76
|
+
if (at("yarn.lock"))
|
|
77
|
+
return "yarn";
|
|
78
|
+
if (at("bun.lock") || at("bun.lockb"))
|
|
79
|
+
return "bun";
|
|
80
|
+
if (at("package-lock.json"))
|
|
81
|
+
return "npm";
|
|
82
|
+
if (candidate === ".")
|
|
83
|
+
break;
|
|
84
|
+
candidate = posix(path.dirname(candidate));
|
|
85
|
+
}
|
|
86
|
+
return "npm";
|
|
87
|
+
}
|
|
88
|
+
function runScript(manager, script, directory) {
|
|
89
|
+
const prefix = directory === "." ? "" : ` --dir ${shellQuote(directory)}`;
|
|
90
|
+
if (manager === "pnpm")
|
|
91
|
+
return `pnpm${prefix} run ${shellQuote(script)}`;
|
|
92
|
+
if (manager === "yarn") {
|
|
93
|
+
return directory === "."
|
|
94
|
+
? `yarn run ${shellQuote(script)}`
|
|
95
|
+
: `yarn --cwd ${shellQuote(directory)} run ${shellQuote(script)}`;
|
|
96
|
+
}
|
|
97
|
+
if (manager === "bun") {
|
|
98
|
+
return directory === "."
|
|
99
|
+
? `bun run ${shellQuote(script)}`
|
|
100
|
+
: `bun --cwd ${shellQuote(directory)} run ${shellQuote(script)}`;
|
|
101
|
+
}
|
|
102
|
+
return directory === "."
|
|
103
|
+
? `npm run ${shellQuote(script)}`
|
|
104
|
+
: `npm --prefix ${shellQuote(directory)} run ${shellQuote(script)}`;
|
|
105
|
+
}
|
|
106
|
+
function packagePaths(directory) {
|
|
107
|
+
return directory === "." ? ["**/*"] : [`${directory}/**`];
|
|
108
|
+
}
|
|
109
|
+
async function packageValidators(root, packageFiles, files) {
|
|
110
|
+
const focused = [];
|
|
111
|
+
const authoritative = [];
|
|
112
|
+
const ecosystems = [];
|
|
113
|
+
const unresolved = [];
|
|
114
|
+
let rootComplete = false;
|
|
115
|
+
for (const packageFile of packageFiles) {
|
|
116
|
+
let manifest;
|
|
117
|
+
try {
|
|
118
|
+
manifest = JSON.parse(await readFile(path.join(root, packageFile), "utf8"));
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
unresolved.push(`${packageFile} is not valid JSON; JavaScript validation was not configured.`);
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
const directory = posix(path.dirname(packageFile));
|
|
125
|
+
const label = directory === "." ? "workspace" : directory;
|
|
126
|
+
const scripts = manifest.scripts && typeof manifest.scripts === "object"
|
|
127
|
+
? manifest.scripts
|
|
128
|
+
: {};
|
|
129
|
+
const manager = packageManager(files, manifest, directory);
|
|
130
|
+
ecosystems.push(`${manager}:${label}`);
|
|
131
|
+
const exact = (name) => typeof scripts[name] === "string";
|
|
132
|
+
const selected = ["lint", "typecheck", "type-check", "test", "build"].filter(exact);
|
|
133
|
+
for (const script of selected) {
|
|
134
|
+
const validator = {
|
|
135
|
+
name: `${label} ${script}`,
|
|
136
|
+
command: runScript(manager, script, directory),
|
|
137
|
+
timeoutSeconds: script === "build" ? 1_200 : 900,
|
|
138
|
+
};
|
|
139
|
+
if (script === "lint" || script === "typecheck" || script === "type-check") {
|
|
140
|
+
focused.push({ ...validator, paths: packagePaths(directory), timeoutSeconds: 600 });
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
const completeScript = ["verify", "ci", "check"].find(exact);
|
|
144
|
+
if (completeScript) {
|
|
145
|
+
if (directory === "." || !rootComplete) {
|
|
146
|
+
authoritative.push({
|
|
147
|
+
name: `${label} ${completeScript}`,
|
|
148
|
+
command: runScript(manager, completeScript, directory),
|
|
149
|
+
timeoutSeconds: 1_200,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
if (directory === ".")
|
|
153
|
+
rootComplete = true;
|
|
154
|
+
}
|
|
155
|
+
else if (!rootComplete) {
|
|
156
|
+
authoritative.push(...selected.map((script) => ({
|
|
157
|
+
name: `${label} ${script}`,
|
|
158
|
+
command: runScript(manager, script, directory),
|
|
159
|
+
timeoutSeconds: script === "build" ? 1_200 : 900,
|
|
160
|
+
})));
|
|
161
|
+
}
|
|
162
|
+
if (!rootComplete && !completeScript && selected.length === 0) {
|
|
163
|
+
unresolved.push(`${packageFile} declares no recognized verify, ci, check, lint, typecheck, test, or build script.`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return { ecosystems, focused, authoritative, unresolved, rootComplete };
|
|
167
|
+
}
|
|
168
|
+
function swiftValidators(packageFiles) {
|
|
169
|
+
return packageFiles.map((packageFile) => {
|
|
170
|
+
const directory = posix(path.dirname(packageFile));
|
|
171
|
+
const label = directory === "." ? "Swift workspace" : `Swift ${directory}`;
|
|
172
|
+
const packageArgument = directory === "." ? "" : ` --package-path ${shellQuote(directory)}`;
|
|
173
|
+
const cacheKey = createHash("sha256").update(directory).digest("hex").slice(0, 12);
|
|
174
|
+
return {
|
|
175
|
+
name: `${label} tests`,
|
|
176
|
+
command: `swift test${packageArgument} --scratch-path "$MERGE_BROKER_CACHE_DIR/swift-${cacheKey}"`,
|
|
177
|
+
paths: directory === "."
|
|
178
|
+
? ["**/*.swift", "Package.swift", "Package.resolved"]
|
|
179
|
+
: [`${directory}/**/*.swift`, `${directory}/Package.swift`, `${directory}/Package.resolved`],
|
|
180
|
+
timeoutSeconds: 1_200,
|
|
181
|
+
executionArchitecture: "native",
|
|
182
|
+
};
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
function deduplicateValidators(validators) {
|
|
186
|
+
const seen = new Set();
|
|
187
|
+
return validators.filter((validator) => {
|
|
188
|
+
const key = `${validator.command}\0${JSON.stringify(validator.paths ?? [])}`;
|
|
189
|
+
if (seen.has(key))
|
|
190
|
+
return false;
|
|
191
|
+
seen.add(key);
|
|
192
|
+
return true;
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
export async function detectBootstrapPlan(root) {
|
|
196
|
+
const discovered = await discoverFiles(root);
|
|
197
|
+
const files = new Set(discovered);
|
|
198
|
+
const packageFiles = discovered
|
|
199
|
+
.filter((file) => file === "package.json" || file.endsWith("/package.json"))
|
|
200
|
+
.sort((left, right) => left === "package.json" ? -1 : right === "package.json" ? 1 : left.localeCompare(right));
|
|
201
|
+
const packages = await packageValidators(root, packageFiles, files);
|
|
202
|
+
const swiftPackages = discovered.filter((file) => file === "Package.swift" || file.endsWith("/Package.swift"));
|
|
203
|
+
const swift = swiftValidators(swiftPackages);
|
|
204
|
+
const ecosystems = [...packages.ecosystems, ...swiftPackages.map((file) => `swift:${posix(path.dirname(file))}`)].sort();
|
|
205
|
+
const focused = deduplicateValidators([...packages.focused, ...swift]);
|
|
206
|
+
const authoritative = deduplicateValidators([
|
|
207
|
+
...packages.authoritative,
|
|
208
|
+
...(packages.rootComplete ? [] : swift.map(({ paths: _paths, ...item }) => item)),
|
|
209
|
+
]);
|
|
210
|
+
const serializedPatterns = [
|
|
211
|
+
...discovered.filter((file) => PACKAGE_LOCKS.includes(path.posix.basename(file))),
|
|
212
|
+
...swiftPackages.map((file) => posix(path.join(path.dirname(file), "Package.resolved"))),
|
|
213
|
+
].sort();
|
|
214
|
+
const unresolved = [...packages.unresolved];
|
|
215
|
+
if (discovered.some((file) => file.endsWith(".xcodeproj/project.pbxproj") || file.endsWith(".xcworkspace/contents.xcworkspacedata"))) {
|
|
216
|
+
unresolved.push("Xcode project detected, but no destination or scheme was inferred. Add an explicit xcodebuild validator.");
|
|
217
|
+
}
|
|
218
|
+
if (focused.length === 0 && authoritative.length === 0) {
|
|
219
|
+
unresolved.push("No supported validation entry point was detected; configure validation before integrating work.");
|
|
220
|
+
}
|
|
221
|
+
return { ecosystems, focused, authoritative, serializedPatterns, unresolved };
|
|
222
|
+
}
|
|
223
|
+
export function applyBootstrapPlan(config, plan) {
|
|
224
|
+
let changed = false;
|
|
225
|
+
if (config.validation.authority === "broker" &&
|
|
226
|
+
config.validation.focused.length === 0 &&
|
|
227
|
+
config.validation.authoritative.length === 0 &&
|
|
228
|
+
plan.authoritative.length > 0) {
|
|
229
|
+
config.validation.focused = plan.focused;
|
|
230
|
+
config.validation.authoritative = plan.authoritative;
|
|
231
|
+
changed = true;
|
|
232
|
+
}
|
|
233
|
+
const serialized = [...new Set([...config.leases.serializedPatterns, ...plan.serializedPatterns])].sort();
|
|
234
|
+
if (JSON.stringify(serialized) !== JSON.stringify(config.leases.serializedPatterns)) {
|
|
235
|
+
config.leases.serializedPatterns = serialized;
|
|
236
|
+
changed = true;
|
|
237
|
+
}
|
|
238
|
+
return changed;
|
|
239
|
+
}
|
|
240
|
+
export async function installAgentContract(root) {
|
|
241
|
+
const target = path.join(root, "AGENTS.md");
|
|
242
|
+
const current = (await exists(target)) ? await readFile(target, "utf8") : "";
|
|
243
|
+
const start = current.indexOf(AGENT_BLOCK_START);
|
|
244
|
+
const end = current.indexOf(AGENT_BLOCK_END);
|
|
245
|
+
if ((start >= 0) !== (end >= 0) || (start >= 0 && end < start)) {
|
|
246
|
+
throw new BrokerError("INVALID_AGENT_CONTRACT", `The managed Merge Broker block in ${target} is incomplete; restore both marker lines before re-running init.`);
|
|
247
|
+
}
|
|
248
|
+
let next;
|
|
249
|
+
if (start >= 0 && end >= start) {
|
|
250
|
+
next = `${current.slice(0, start)}${AGENT_BLOCK}${current.slice(end + AGENT_BLOCK_END.length)}`;
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
next = `${current.trimEnd()}${current.trim() ? "\n\n" : ""}${AGENT_BLOCK}\n`;
|
|
254
|
+
}
|
|
255
|
+
if (next === current)
|
|
256
|
+
return { path: target, changed: false };
|
|
257
|
+
await writeFile(target, next, "utf8");
|
|
258
|
+
return { path: target, changed: true };
|
|
259
|
+
}
|
|
260
|
+
export async function hasAgentContract(root) {
|
|
261
|
+
const target = path.join(root, "AGENTS.md");
|
|
262
|
+
if (!(await exists(target)))
|
|
263
|
+
return false;
|
|
264
|
+
const contents = await readFile(target, "utf8");
|
|
265
|
+
return contents.includes(AGENT_BLOCK_START) && contents.includes(AGENT_BLOCK_END);
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
package/dist/broker.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { GitRepository } from "./git.js";
|
|
2
|
+
import { type AgentContractResult, type BootstrapPlan } from "./bootstrap.js";
|
|
2
3
|
import { StateStore, type LockStatus } from "./store.js";
|
|
4
|
+
import { type ForgePublisher } from "./publisher.js";
|
|
3
5
|
import { type HookInstallation } from "./hooks.js";
|
|
4
6
|
import { type ServiceInstallation } from "./service.js";
|
|
5
7
|
import type { BatchRecord, BrokerConfig, BrokerState, IntegrationOptions, IntegrationResult, LocalValidationResult, RefreshResult, RevisionResult, RecoveryResult, PruneOptions, PruneResult, SchedulePlan, TaskRecord } from "./types.js";
|
|
@@ -24,17 +26,27 @@ export declare class MergeBroker {
|
|
|
24
26
|
readonly repo: GitRepository;
|
|
25
27
|
readonly config: BrokerConfig;
|
|
26
28
|
readonly store: StateStore;
|
|
29
|
+
readonly publisher: ForgePublisher;
|
|
27
30
|
private constructor();
|
|
28
|
-
static open(cwd?: string
|
|
31
|
+
static open(cwd?: string, options?: {
|
|
32
|
+
publisher?: ForgePublisher;
|
|
33
|
+
}): Promise<MergeBroker>;
|
|
29
34
|
static initialize(cwd?: string, options?: {
|
|
30
35
|
baseBranch?: string;
|
|
31
36
|
baseRef?: string;
|
|
32
37
|
remote?: string;
|
|
33
38
|
force?: boolean;
|
|
39
|
+
detect?: boolean;
|
|
40
|
+
agentContract?: boolean;
|
|
34
41
|
}): Promise<{
|
|
35
42
|
repoRoot: string;
|
|
36
43
|
configPath: string;
|
|
37
44
|
created: boolean;
|
|
45
|
+
updated: boolean;
|
|
46
|
+
operational: boolean;
|
|
47
|
+
signingConfigured: boolean;
|
|
48
|
+
bootstrap?: BootstrapPlan;
|
|
49
|
+
agentContract?: AgentContractResult;
|
|
38
50
|
}>;
|
|
39
51
|
/**
|
|
40
52
|
* Enables authenticated provenance for an existing repository or rotates/imports its identity.
|
|
@@ -96,6 +108,7 @@ export declare class MergeBroker {
|
|
|
96
108
|
cwd?: string;
|
|
97
109
|
}): Promise<LocalValidationResult>;
|
|
98
110
|
integrate(options?: IntegrationOptions): Promise<IntegrationResult>;
|
|
111
|
+
private writeRevisionArtifacts;
|
|
99
112
|
private recoverAbandonedIntegrationsLocked;
|
|
100
113
|
/**
|
|
101
114
|
* Recovers durable `running` state left by a killed integration process. Acquiring the integration
|
package/dist/broker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../src/broker.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../src/broker.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAKL,KAAK,mBAAmB,EACxB,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAsB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAO7E,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;AAQxB,OAAO,EAAgC,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAOL,KAAK,mBAAmB,EACzB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,WAAW,EAGX,YAAY,EACZ,WAAW,EAEX,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,cAAc,EACd,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EAGX,MAAM,YAAY,CAAC;AA2YpB,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8FAA8F;IAC9F,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,WAAW;IACtB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IAEnC,OAAO,eAUN;IAED,OAAa,IAAI,CACf,GAAG,SAAgB,EACnB,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,cAAc,CAAA;KAAO,GAC3C,OAAO,CAAC,WAAW,CAAC,CAMtB;IAED,OAAa,UAAU,CACrB,GAAG,SAAgB,EACnB,OAAO,GAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,aAAa,CAAC,EAAE,OAAO,CAAC;KACpB,GACL,OAAO,CAAC;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,EAAE,OAAO,CAAC;QACrB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,SAAS,CAAC,EAAE,aAAa,CAAC;QAC1B,aAAa,CAAC,EAAE,mBAAmB,CAAC;KACrC,CAAC,CAqCD;IAED;;;OAGG;IACG,sBAAsB,CAAC,OAAO,GAAE;QACpC,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,MAAM,CAAC,EAAE,OAAO,CAAC;KACb,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAiBtE;YAEa,2BAA2B;IAqCnC,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CA8BhE;IAEK,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAwEvG;IAEK,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAgBlE;IAEK,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA2B5F;IAEK,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAuBxG;IAEK,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAyBvG;IAEK,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA0BnE;YAEa,kBAAkB;IAqD1B,UAAU,CACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EAAE,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GACpC,OAAO,CAAC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CA+EpD;IAEK,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,CAElC;IAEK,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAE9C;IAEK,IAAI,CAAC,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAKzF;IAED;;;;;;;;;;OAUG;IACG,mBAAmB,CACvB,OAAO,GAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,SAAS,GAAG,eAAe,GAAG,KAAK,CAAC;QAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,GAAG,CAAC,EAAE,MAAM,CAAC;KACT,GACL,OAAO,CAAC,qBAAqB,CAAC,CAkDhC;IAEK,SAAS,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA8S5E;YAEa,sBAAsB;YA+BtB,kCAAkC;IAmKhD;;;OAGG;IACG,4BAA4B,IAAI,OAAO,CAAC,cAAc,CAAC,CAE5D;IAEK,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAmFnD;IAEK,kBAAkB,CACtB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAC5B,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GACA,OAAO,CAAC,WAAW,CAAC,CAgEtB;IAEK,cAAc,CAClB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,GACA,OAAO,CAAC,WAAW,CAAC,CAoCtB;IAEK,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;KACf,GACA,OAAO,CAAC,WAAW,CAAC,CAiItB;IAEK,qBAAqB,CACzB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GACA,OAAO,CAAC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CA0DtF;IAEK,UAAU,CACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EAAE,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GACpC,OAAO,CAAC,cAAc,CAAC,CA4OzB;IAEK,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA2OhD;IAEK,oBAAoB,IAAI,OAAO,CAAC;QACpC,MAAM,EAAE,WAAW,EAAE,CAAC;QACtB,MAAM,EAAE,WAAW,EAAE,CAAC;QACtB,SAAS,EAAE,WAAW,EAAE,CAAC;QACzB,MAAM,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACnD,CAAC,CAkBD;IAED;;;;;;;OAOG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA0BjE;IAED;;;;;;;;;;;;;;OAcG;IACG,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAO,GAClC,OAAO,CAAC,aAAa,CAAC,CAmFxB;IAEK,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,SAAQ,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAsCjG;IAEK,cAAc,IAAI,OAAO,CAAC;QAC9B,SAAS,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC;YAAC,KAAK,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACjG,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,qBAAqB,EAAE,MAAM,EAAE,CAAC;KACjC,CAAC,CAgCD;IAED;;;;OAIG;IACG,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAoC5D;IAEK,YAAY,CAAC,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAOpG;IAED;;;;;;OAMG;IACG,cAAc,CAAC,OAAO,GAAE;QAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC;KACb,GAAG,OAAO,CAAC,mBAAmB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CA+BvF;IAEK,YAAY,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAE1C;IAEK,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAStF;IAEK,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAyChD;IAEK,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAgR/C;CACF"}
|