@aviaratech/ai-delivery 0.1.0 → 0.2.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/CONTRIBUTING.md +1 -1
- package/README.md +122 -34
- package/dist/agent.d.ts +4 -1
- package/dist/agent.js +2 -1
- package/dist/agent.js.map +1 -1
- package/dist/cli.js +19 -5
- package/dist/cli.js.map +1 -1
- package/dist/config/deliveryConfig.d.ts +102 -4
- package/dist/config/deliveryConfig.js +120 -31
- package/dist/config/deliveryConfig.js.map +1 -1
- package/dist/config/deliveryConfig.test.js +9 -7
- package/dist/config/deliveryConfig.test.js.map +1 -1
- package/dist/dispatch.js +49 -24
- package/dist/dispatch.js.map +1 -1
- package/dist/fixtures/discovery.d.ts +74 -0
- package/dist/fixtures/discovery.js +94 -0
- package/dist/fixtures/discovery.js.map +1 -0
- package/dist/git.d.ts +1 -1
- package/dist/git.js +13 -9
- package/dist/git.js.map +1 -1
- package/dist/github/client.d.ts +1 -1
- package/dist/github/commandIdentityPolicy.d.ts +1 -1
- package/dist/github/discovery.d.ts +22 -0
- package/dist/github/discovery.js +226 -0
- package/dist/github/discovery.js.map +1 -0
- package/dist/github/discovery.test.d.ts +1 -0
- package/dist/github/discovery.test.js +195 -0
- package/dist/github/discovery.test.js.map +1 -0
- package/dist/github/projectDelivery.d.ts +5 -0
- package/dist/github/projectDelivery.js +48 -8
- package/dist/github/projectDelivery.js.map +1 -1
- package/dist/github/repo.d.ts +3 -2
- package/dist/github/repo.js +24 -7
- package/dist/github/repo.js.map +1 -1
- package/dist/issue.d.ts +6 -1
- package/dist/issue.js +23 -3
- package/dist/issue.js.map +1 -1
- package/dist/lifecycle.test.js +180 -31
- package/dist/lifecycle.test.js.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/tools.d.ts +1 -1
- package/dist/pr.js +25 -13
- package/dist/pr.js.map +1 -1
- package/dist/pr.test.js +3 -0
- package/dist/pr.test.js.map +1 -1
- package/dist/services/deliveryAdmission.d.ts +5 -2
- package/dist/services/deliveryAdmission.js +5 -4
- package/dist/services/deliveryAdmission.js.map +1 -1
- package/dist/verification.d.ts +2 -0
- package/dist/verification.js +3 -3
- package/dist/verification.js.map +1 -1
- package/dist/worktree.d.ts +4 -0
- package/dist/worktree.js +9 -7
- package/dist/worktree.js.map +1 -1
- package/package.json +1 -1
- package/plugins/ai-delivery/.claude-plugin/plugin.json +2 -2
package/dist/issue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../src/issue.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../src/issue.ts"],"names":[],"mappings":"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"}
|
package/dist/lifecycle.test.js
CHANGED
|
@@ -4,15 +4,18 @@ import { createHash } from 'node:crypto';
|
|
|
4
4
|
import { cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, readlinkSync, readdirSync, realpathSync, rmSync, symlinkSync, unlinkSync, writeFileSync, } from 'node:fs';
|
|
5
5
|
import { tmpdir } from 'node:os';
|
|
6
6
|
import { dirname, join } from 'node:path';
|
|
7
|
-
import { test } from 'vitest';
|
|
7
|
+
import { test, vi } from 'vitest';
|
|
8
|
+
import { syntheticDiscoveryClients, syntheticOverrides } from './fixtures/discovery.js';
|
|
9
|
+
import { Octokit } from '@octokit/rest';
|
|
8
10
|
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
9
11
|
import { InMemoryTransport } from '@modelcontextprotocol/sdk/inMemory.js';
|
|
10
12
|
import { AI_DELIVERY_MCP_TOOLS } from './mcp/tools.js';
|
|
11
13
|
import { createAiDeliveryMcpServer } from './mcp/index.js';
|
|
12
|
-
import { loadDeliveryConfig } from './config/deliveryConfig.js';
|
|
14
|
+
import { loadDeliveryConfig, parseDeliveryConfig } from './config/deliveryConfig.js';
|
|
13
15
|
import { digestValue } from './delivery/index.js';
|
|
14
16
|
import { executeTool, resumedIssueUpdate, startTrackedIssue } from './dispatch.js';
|
|
15
|
-
import { gitCommonDir } from './git.js';
|
|
17
|
+
import { defaultBaseRef, gitCommonDir } from './git.js';
|
|
18
|
+
import * as githubClient from './github/client.js';
|
|
16
19
|
import { createIssue, developIssue, listIssueSubissues, readyCheck, resumeCreatedIssue, updateIssue, } from './issue.js';
|
|
17
20
|
import { checkoutPr, finishIssue, listPrs, mergePr, prChecks, publishPr, submitFormalReview } from './pr.js';
|
|
18
21
|
import { updateIssueWorktreeDelivery } from './services/worktreeRegistry.js';
|
|
@@ -20,6 +23,24 @@ import { assertDeliveryRuntimeAdmitted } from './services/deliveryAdmission.js';
|
|
|
20
23
|
import { getDeliveryRecords } from './services/deliveryRecordService.js';
|
|
21
24
|
import { createIssuePhaseEvidence, verifyIssue } from './verification.js';
|
|
22
25
|
import { cleanupNonIssueWorktree, prepareIssueWorktree, preparePrWorktree, prepareStandaloneWorktree, } from './worktree.js';
|
|
26
|
+
vi.mock('./github/client.js', async (importOriginal) => {
|
|
27
|
+
const actual = await importOriginal();
|
|
28
|
+
return {
|
|
29
|
+
...actual,
|
|
30
|
+
createDeliveryGitHubClients: async (input) => ({
|
|
31
|
+
...syntheticDiscoveryClients(),
|
|
32
|
+
authSource: 'app',
|
|
33
|
+
role: input.role,
|
|
34
|
+
rest: new Octokit({
|
|
35
|
+
request: {
|
|
36
|
+
fetch: async () => {
|
|
37
|
+
throw new Error('Unexpected network request in synthetic lifecycle test.');
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
}),
|
|
41
|
+
}),
|
|
42
|
+
};
|
|
43
|
+
});
|
|
23
44
|
function git(root, ...args) {
|
|
24
45
|
return execFileSync('git', args, { cwd: root, encoding: 'utf8' }).trim();
|
|
25
46
|
}
|
|
@@ -43,8 +64,9 @@ function directoryHash(path) {
|
|
|
43
64
|
visit(path, '');
|
|
44
65
|
return digestValue(entries);
|
|
45
66
|
}
|
|
46
|
-
function fixture(options = {}) {
|
|
67
|
+
async function fixture(options = {}) {
|
|
47
68
|
const root = realpathSync(mkdtempSync(join(tmpdir(), 'ai-delivery-lifecycle-')));
|
|
69
|
+
const remoteName = options.remote ?? 'origin';
|
|
48
70
|
const counter = join(root, '.git', 'stage-count.txt');
|
|
49
71
|
const secondCounter = join(root, '.git', 'second-stage-count.txt');
|
|
50
72
|
const failSecond = join(root, '.git', 'fail-second-stage');
|
|
@@ -53,7 +75,7 @@ function fixture(options = {}) {
|
|
|
53
75
|
git(root, 'config', 'user.name', 'Synthetic Delivery');
|
|
54
76
|
git(root, 'config', 'user.email', 'delivery@example.test');
|
|
55
77
|
git(root, 'init', '--bare', '-q', join(root, '.git', 'remote.git'));
|
|
56
|
-
git(root, 'remote', 'add',
|
|
78
|
+
git(root, 'remote', 'add', remoteName, join(root, '.git', 'remote.git'));
|
|
57
79
|
writeFileSync(join(root, '.gitignore'), '.issue-cli/\n.worktrees/\n');
|
|
58
80
|
writeFileSync(join(root, 'artifact.txt'), 'synthetic proof\n');
|
|
59
81
|
const config = {
|
|
@@ -95,9 +117,9 @@ function fixture(options = {}) {
|
|
|
95
117
|
identity: 'synthetic-reviewer',
|
|
96
118
|
},
|
|
97
119
|
},
|
|
98
|
-
schemaVersion: 'ai-delivery.config@
|
|
120
|
+
schemaVersion: 'ai-delivery.config@2',
|
|
99
121
|
};
|
|
100
|
-
writeFileSync(join(root, 'ai-delivery.config.json'), `${JSON.stringify(config)}\n`);
|
|
122
|
+
writeFileSync(join(root, 'ai-delivery.config.json'), `${JSON.stringify({ ...syntheticOverrides(parseDeliveryConfig(config)), ...(options.divergentOrigin ? { remote: remoteName } : {}) })}\n`);
|
|
101
123
|
writeFileSync(join(root, 'policy.mjs'), `
|
|
102
124
|
import { createHash } from 'node:crypto';
|
|
103
125
|
import { readFileSync } from 'node:fs';
|
|
@@ -109,6 +131,7 @@ const stable = value => Array.isArray(value) ? '[' + value.map(stable).join(',')
|
|
|
109
131
|
const digest = value => 'sha256:' + createHash('sha256').update(stable(value)).digest('hex');
|
|
110
132
|
const bytes = value => 'sha256:' + createHash('sha256').update(value).digest('hex');
|
|
111
133
|
const policyDigest = bytes(readFileSync(fileURLToPath(import.meta.url)));
|
|
134
|
+
export const deliverySettings = ${JSON.stringify({ roles: config.roles, commandPolicy: config.commandPolicy })};
|
|
112
135
|
export default {
|
|
113
136
|
schemaVersion: 'RepositoryDeliveryPolicy@1',
|
|
114
137
|
classifyExactRange(input) {
|
|
@@ -140,8 +163,16 @@ export default {
|
|
|
140
163
|
`);
|
|
141
164
|
git(root, 'add', '.');
|
|
142
165
|
git(root, 'commit', '-qm', 'synthetic base');
|
|
143
|
-
git(root, 'push', '-q',
|
|
144
|
-
git(root, 'fetch', '-q',
|
|
166
|
+
git(root, 'push', '-q', remoteName, 'main');
|
|
167
|
+
git(root, 'fetch', '-q', remoteName, 'main');
|
|
168
|
+
git(root, 'config', `url.${join(root, '.git', 'remote.git')}.insteadOf`, 'https://github.com/example/widget.git');
|
|
169
|
+
git(root, 'remote', 'set-url', remoteName, 'https://github.com/example/widget.git');
|
|
170
|
+
if (options.divergentOrigin) {
|
|
171
|
+
git(root, 'remote', 'add', 'origin', 'https://github.com/other/unrelated.git');
|
|
172
|
+
const unrelated = git(root, 'commit-tree', 'HEAD^{tree}', '-m', 'Unrelated origin root');
|
|
173
|
+
git(root, 'update-ref', 'refs/remotes/origin/main', unrelated);
|
|
174
|
+
git(root, 'symbolic-ref', 'refs/remotes/origin/HEAD', 'refs/remotes/origin/main');
|
|
175
|
+
}
|
|
145
176
|
const runtimeRoot = join(root, '.git', 'synthetic-runtime');
|
|
146
177
|
const runtimeEntryPath = join(runtimeRoot, 'package', 'dist', 'cli.js');
|
|
147
178
|
const packagePath = join(runtimeRoot, 'package', 'package.json');
|
|
@@ -153,12 +184,12 @@ export default {
|
|
|
153
184
|
writeFileSync(runtimeEntryPath, 'synthetic CLI bytes\n');
|
|
154
185
|
writeFileSync(packagePath, JSON.stringify({ name: '@aviaratech/ai-delivery', version: '0.1.0' }));
|
|
155
186
|
writeFileSync(mcpLauncherPath, 'synthetic MCP launcher bytes\n');
|
|
156
|
-
writeFileSync(pluginManifestPath, JSON.stringify({ name: 'ai-delivery', packageVersion: '0.1.0', deliveryCapabilityVersion:
|
|
187
|
+
writeFileSync(pluginManifestPath, JSON.stringify({ name: 'ai-delivery', packageVersion: '0.1.0', deliveryCapabilityVersion: 2 }));
|
|
157
188
|
const content = {
|
|
158
|
-
capability: { cli:
|
|
189
|
+
capability: { cli: 2, mcp: 2 },
|
|
159
190
|
cliPath: runtimeEntryPath,
|
|
160
191
|
cliSha256: sha256(runtimeEntryPath),
|
|
161
|
-
configDigest: loadDeliveryConfig(root).configDigest,
|
|
192
|
+
configDigest: (await loadDeliveryConfig(root)).configDigest,
|
|
162
193
|
mcpLauncherPath,
|
|
163
194
|
mcpLauncherSha256: sha256(mcpLauncherPath),
|
|
164
195
|
packageVersion: '0.1.0',
|
|
@@ -167,7 +198,7 @@ export default {
|
|
|
167
198
|
pluginManifestPath,
|
|
168
199
|
pluginManifestSha256: sha256(pluginManifestPath),
|
|
169
200
|
repository: 'example/widget',
|
|
170
|
-
schemaVersion: 'ai-delivery.runtime-admission@
|
|
201
|
+
schemaVersion: 'ai-delivery.runtime-admission@2',
|
|
171
202
|
sourceArchiveSha256: digestValue('synthetic archive'),
|
|
172
203
|
sourceCommit: git(root, 'rev-parse', 'HEAD'),
|
|
173
204
|
};
|
|
@@ -182,15 +213,15 @@ export default {
|
|
|
182
213
|
}
|
|
183
214
|
}
|
|
184
215
|
test('installed CLI and MCP admission fails before a worktree mutation on source or capability drift', async () => {
|
|
185
|
-
const { root, runtimeEntryPath } = fixture();
|
|
216
|
+
const { root, runtimeEntryPath } = await fixture();
|
|
186
217
|
try {
|
|
187
|
-
const input = { repoRoot: root, runtimeEntryPath };
|
|
218
|
+
const input = { repoRoot: root, runtimeEntryPath, identity: 'synthetic-author' };
|
|
188
219
|
const path = join(root, '.git', 'ai-delivery', 'runtime-admission.json');
|
|
189
220
|
const original = readFileSync(path, 'utf8');
|
|
190
|
-
assert.equal(assertDeliveryRuntimeAdmitted(input).capability.mcp,
|
|
221
|
+
assert.equal((await assertDeliveryRuntimeAdmitted(input)).capability.mcp, 2);
|
|
191
222
|
const changedModule = join(dirname(runtimeEntryPath), 'mutated.js');
|
|
192
223
|
writeFileSync(changedModule, 'unadmitted module bytes\n');
|
|
193
|
-
assert.
|
|
224
|
+
await assert.rejects(assertDeliveryRuntimeAdmitted(input), /source, capability or repository admission/u);
|
|
194
225
|
rmSync(changedModule);
|
|
195
226
|
rmSync(path);
|
|
196
227
|
await assert.rejects(executeTool('issue_worktree_create', { name: 'scratch-admission', branch: 'scratch/admission' }, input), /runtime admission/u);
|
|
@@ -204,14 +235,122 @@ test('installed CLI and MCP admission fails before a worktree mutation on source
|
|
|
204
235
|
const { admissionId: _old, ...content } = admission;
|
|
205
236
|
const mismatched = { ...content, mcpLauncherSha256: sha256(launcherPath), capability: { cli: 1, mcp: 2 } };
|
|
206
237
|
writeFileSync(path, JSON.stringify({ ...mismatched, admissionId: digestValue(mismatched) }));
|
|
207
|
-
assert.
|
|
238
|
+
await assert.rejects(assertDeliveryRuntimeAdmitted(input), /source, capability or repository admission/u);
|
|
239
|
+
}
|
|
240
|
+
finally {
|
|
241
|
+
rmSync(root, { recursive: true, force: true });
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
test('effective policy settings drift invalidates admission even when the policy wrapper is unchanged', async () => {
|
|
245
|
+
const { root, runtimeEntryPath } = await fixture();
|
|
246
|
+
const policyPath = join(root, 'policy.mjs');
|
|
247
|
+
const authorEnv = 'AI_DELIVERY_TEST_DYNAMIC_AUTHOR';
|
|
248
|
+
const checkEnv = 'AI_DELIVERY_TEST_DYNAMIC_CHECK';
|
|
249
|
+
const previousAuthor = process.env[authorEnv];
|
|
250
|
+
const previousCheck = process.env[checkEnv];
|
|
251
|
+
try {
|
|
252
|
+
delete process.env[authorEnv];
|
|
253
|
+
delete process.env[checkEnv];
|
|
254
|
+
writeFileSync(policyPath, readFileSync(policyPath, 'utf8') +
|
|
255
|
+
`
|
|
256
|
+
Object.defineProperty(deliverySettings.roles.author, 'identity', { get: () => process.env.${authorEnv} ?? 'synthetic-author' });
|
|
257
|
+
Object.defineProperty(deliverySettings.commandPolicy.checks, 'test', { get: () => process.env.${checkEnv} ?? 'REQUIRED' });
|
|
258
|
+
`);
|
|
259
|
+
const admissionPath = join(root, '.git', 'ai-delivery', 'runtime-admission.json');
|
|
260
|
+
const { admissionId: _id, ...content } = JSON.parse(readFileSync(admissionPath, 'utf8'));
|
|
261
|
+
const baseline = await loadDeliveryConfig(root);
|
|
262
|
+
const admitted = { ...content, configDigest: baseline.configDigest };
|
|
263
|
+
writeFileSync(admissionPath, JSON.stringify({ ...admitted, admissionId: digestValue(admitted) }));
|
|
264
|
+
await assertDeliveryRuntimeAdmitted({ repoRoot: root, runtimeEntryPath });
|
|
265
|
+
const originalBytes = readFileSync(policyPath, 'utf8');
|
|
266
|
+
for (const [key, value] of [
|
|
267
|
+
[authorEnv, 'changed-author'],
|
|
268
|
+
[checkEnv, 'SKIP'],
|
|
269
|
+
]) {
|
|
270
|
+
process.env[key] = value;
|
|
271
|
+
assert.notEqual((await loadDeliveryConfig(root)).configDigest, baseline.configDigest);
|
|
272
|
+
await assert.rejects(assertDeliveryRuntimeAdmitted({ repoRoot: root, runtimeEntryPath }), /source, capability or repository admission/u);
|
|
273
|
+
delete process.env[key];
|
|
274
|
+
}
|
|
275
|
+
assert.equal(readFileSync(policyPath, 'utf8'), originalBytes);
|
|
276
|
+
}
|
|
277
|
+
finally {
|
|
278
|
+
if (previousAuthor === undefined)
|
|
279
|
+
delete process.env[authorEnv];
|
|
280
|
+
else
|
|
281
|
+
process.env[authorEnv] = previousAuthor;
|
|
282
|
+
if (previousCheck === undefined)
|
|
283
|
+
delete process.env[checkEnv];
|
|
284
|
+
else
|
|
285
|
+
process.env[checkEnv] = previousCheck;
|
|
286
|
+
rmSync(root, { recursive: true, force: true });
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
test('a changed discovered Project identity invalidates the installed admission', async () => {
|
|
290
|
+
const { root, runtimeEntryPath } = await fixture();
|
|
291
|
+
const base = syntheticDiscoveryClients();
|
|
292
|
+
const graphql = async (query, variables) => {
|
|
293
|
+
const result = await base.graphql(query, variables);
|
|
294
|
+
if (query.includes('query ProjectDeliveryConfiguration')) {
|
|
295
|
+
result.organization.projectV2.id = 'REPLACED-PROJECT';
|
|
296
|
+
}
|
|
297
|
+
return result;
|
|
298
|
+
};
|
|
299
|
+
const mocked = vi.spyOn(githubClient, 'createDeliveryGitHubClients').mockResolvedValueOnce({
|
|
300
|
+
authSource: 'app',
|
|
301
|
+
role: 'author',
|
|
302
|
+
rest: new Octokit(),
|
|
303
|
+
graphql: graphql,
|
|
304
|
+
});
|
|
305
|
+
try {
|
|
306
|
+
await assert.rejects(assertDeliveryRuntimeAdmitted({ repoRoot: root, runtimeEntryPath }), /source, capability or repository admission/u);
|
|
307
|
+
assert.equal(existsSync(join(root, '.worktrees')), false);
|
|
208
308
|
}
|
|
209
309
|
finally {
|
|
310
|
+
mocked.mockRestore();
|
|
311
|
+
rmSync(root, { recursive: true, force: true });
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
test('CLI dispatch and MCP reject ambiguous discovery with the same error before mutation', async () => {
|
|
315
|
+
const { root, runtimeEntryPath } = await fixture();
|
|
316
|
+
const path = join(root, 'ai-delivery.config.json');
|
|
317
|
+
const overrides = JSON.parse(readFileSync(path, 'utf8'));
|
|
318
|
+
delete overrides.project;
|
|
319
|
+
writeFileSync(path, JSON.stringify(overrides));
|
|
320
|
+
const base = syntheticDiscoveryClients();
|
|
321
|
+
const graphql = async (query, variables) => {
|
|
322
|
+
if (query.includes('projectsV2(first:'))
|
|
323
|
+
return { repository: { projectsV2: { nodes: [], pageInfo: { hasNextPage: false, endCursor: null } } } };
|
|
324
|
+
return base.graphql(query, variables);
|
|
325
|
+
};
|
|
326
|
+
const mocked = vi.spyOn(githubClient, 'createDeliveryGitHubClients').mockResolvedValue({
|
|
327
|
+
authSource: 'app',
|
|
328
|
+
role: 'author',
|
|
329
|
+
rest: new Octokit(),
|
|
330
|
+
graphql: graphql,
|
|
331
|
+
});
|
|
332
|
+
const execution = { repoRoot: root, runtimeEntryPath, identity: 'synthetic-author' };
|
|
333
|
+
const server = createAiDeliveryMcpServer(execution);
|
|
334
|
+
const client = new Client({ name: 'synthetic-discovery-client', version: '1.0.0' });
|
|
335
|
+
try {
|
|
336
|
+
await assert.rejects(executeTool('issue_create', { title: 'Ambiguous destination' }, execution), /Discovered 0 compatible linked Projects/u);
|
|
337
|
+
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
|
|
338
|
+
await server.connect(serverTransport);
|
|
339
|
+
await client.connect(clientTransport);
|
|
340
|
+
const result = await client.callTool({ name: 'issue_create', arguments: { title: 'Ambiguous destination' } });
|
|
341
|
+
assert.equal(result.isError, true);
|
|
342
|
+
assert.match(JSON.stringify(result.content), /Discovered 0 compatible linked Projects/u);
|
|
343
|
+
assert.equal(existsSync(join(root, '.worktrees')), false);
|
|
344
|
+
}
|
|
345
|
+
finally {
|
|
346
|
+
await client.close();
|
|
347
|
+
await server.close();
|
|
348
|
+
mocked.mockRestore();
|
|
210
349
|
rmSync(root, { recursive: true, force: true });
|
|
211
350
|
}
|
|
212
351
|
});
|
|
213
352
|
test('an old active issue remains pinned while a new row uses the same canonical registry', async () => {
|
|
214
|
-
const { root } = fixture();
|
|
353
|
+
const { root } = await fixture();
|
|
215
354
|
try {
|
|
216
355
|
const oldPath = join(root, '.worktrees', 'issue-17');
|
|
217
356
|
git(root, 'worktree', 'add', '-b', 'issue/17', oldPath, 'main');
|
|
@@ -244,7 +383,7 @@ test('an old active issue remains pinned while a new row uses the same canonical
|
|
|
244
383
|
const relationshipContext = {
|
|
245
384
|
root,
|
|
246
385
|
repo: { owner: 'example', repo: 'widget' },
|
|
247
|
-
config: loadDeliveryConfig(root).config,
|
|
386
|
+
config: (await loadDeliveryConfig(root)).config,
|
|
248
387
|
clients: {
|
|
249
388
|
rest: {
|
|
250
389
|
issues: {
|
|
@@ -289,7 +428,7 @@ test('an old active issue remains pinned while a new row uses the same canonical
|
|
|
289
428
|
}
|
|
290
429
|
});
|
|
291
430
|
test('synthetic cutover restores exact pre-write state and resumes an incomplete verification stage', async () => {
|
|
292
|
-
const { root, counter, secondCounter, failSecond } = fixture({ twoStages: true });
|
|
431
|
+
const { root, counter, secondCounter, failSecond } = await fixture({ twoStages: true });
|
|
293
432
|
const backup = mkdtempSync(join(tmpdir(), 'ai-delivery-cutover-backup-'));
|
|
294
433
|
try {
|
|
295
434
|
const row = await prepareIssueWorktree({
|
|
@@ -313,19 +452,19 @@ test('synthetic cutover restores exact pre-write state and resumes an incomplete
|
|
|
313
452
|
const evidenceBefore = directoryHash(evidencePath);
|
|
314
453
|
const pointerBefore = readlinkSync(current);
|
|
315
454
|
const currentCli = join(current, 'package', 'dist', 'cli.js');
|
|
316
|
-
assert.equal(assertDeliveryRuntimeAdmitted({ repoRoot: root, runtimeEntryPath: currentCli }).capability.cli,
|
|
455
|
+
assert.equal((await assertDeliveryRuntimeAdmitted({ repoRoot: root, runtimeEntryPath: currentCli })).capability.cli, 2);
|
|
317
456
|
cpSync(oldRelease, newRelease, { recursive: true });
|
|
318
457
|
writeFileSync(join(newRelease, 'package', 'dist', 'cli.js'), 'unadmitted CLI bytes\n');
|
|
319
458
|
unlinkSync(current);
|
|
320
459
|
symlinkSync(newRelease, current);
|
|
321
|
-
await assert.rejects(executeTool('issue_worktree_create', { branch: 'scratch/cutover', name: 'scratch-cutover' }, { repoRoot: root, runtimeEntryPath: currentCli }), /source, capability or repository admission/u);
|
|
460
|
+
await assert.rejects(executeTool('issue_worktree_create', { branch: 'scratch/cutover', name: 'scratch-cutover' }, { repoRoot: root, runtimeEntryPath: currentCli, identity: 'synthetic-author' }), /source, capability or repository admission/u);
|
|
322
461
|
assert.equal(existsSync(join(root, '.worktrees', 'scratch-cutover')), false);
|
|
323
462
|
assert.equal(directoryHash(registryPath), registryBefore);
|
|
324
463
|
assert.equal(directoryHash(evidencePath), evidenceBefore);
|
|
325
464
|
unlinkSync(current);
|
|
326
465
|
symlinkSync(pointerBefore, current);
|
|
327
466
|
assert.equal(readlinkSync(current), pointerBefore);
|
|
328
|
-
assertDeliveryRuntimeAdmitted({ repoRoot: root, runtimeEntryPath: currentCli });
|
|
467
|
+
await assertDeliveryRuntimeAdmitted({ repoRoot: root, runtimeEntryPath: currentCli });
|
|
329
468
|
const uninterrupted = await verifyIssue({ issueNumber: 17, repoRoot: row.path });
|
|
330
469
|
assert.equal(readFileSync(counter, 'utf8'), '1');
|
|
331
470
|
assert.equal(readFileSync(secondCounter, 'utf8'), '1');
|
|
@@ -386,7 +525,7 @@ test('synthetic cutover restores exact pre-write state and resumes an incomplete
|
|
|
386
525
|
}
|
|
387
526
|
});
|
|
388
527
|
test('issue worktree verification resumes a completed stage and rejects changed inputs', async () => {
|
|
389
|
-
const { root, counter, runtimeEntryPath } = fixture();
|
|
528
|
+
const { root, counter, runtimeEntryPath } = await fixture();
|
|
390
529
|
try {
|
|
391
530
|
await assert.rejects(executeTool('issue_create', { title: 'Wrong repository', repo: 'other/widget' }, { repoRoot: root }), /Repository selector must match/u);
|
|
392
531
|
const row = await prepareIssueWorktree({
|
|
@@ -469,7 +608,7 @@ test('issue worktree verification resumes a completed stage and rejects changed
|
|
|
469
608
|
}
|
|
470
609
|
});
|
|
471
610
|
test('scratch start derives safe names and reports the requested worktree', async () => {
|
|
472
|
-
const { root, runtimeEntryPath } = fixture();
|
|
611
|
+
const { root, runtimeEntryPath } = await fixture();
|
|
473
612
|
try {
|
|
474
613
|
const first = (await executeTool('issue_start', { scratch: true, request: 'Investigate button layout' }, { repoRoot: root, runtimeEntryPath, identity: 'synthetic-author' }));
|
|
475
614
|
assert.equal(first.mode, 'scratch');
|
|
@@ -543,10 +682,17 @@ test('MCP request rejects unsupported legacy options before lifecycle dispatch',
|
|
|
543
682
|
await server.close();
|
|
544
683
|
}
|
|
545
684
|
});
|
|
546
|
-
test(
|
|
547
|
-
|
|
685
|
+
test.each([
|
|
686
|
+
{ remote: 'origin', divergentOrigin: false },
|
|
687
|
+
{ remote: 'upstream', divergentOrigin: false },
|
|
688
|
+
{ remote: 'upstream', divergentOrigin: true },
|
|
689
|
+
])('synthetic lifecycle finishes with remote $remote and divergent origin $divergentOrigin', async (routing) => {
|
|
690
|
+
const { root } = await fixture(routing);
|
|
691
|
+
const remoteName = routing.remote;
|
|
692
|
+
assert.equal(defaultBaseRef(root, remoteName), `refs/remotes/${remoteName}/main`);
|
|
548
693
|
const remote = join(root, '.git', 'remote.git');
|
|
549
|
-
const
|
|
694
|
+
const configuration = await loadDeliveryConfig(root);
|
|
695
|
+
const config = configuration.config;
|
|
550
696
|
const baseSha = git(root, 'rev-parse', 'main');
|
|
551
697
|
const issueNumber = 17;
|
|
552
698
|
const prNumber = 23;
|
|
@@ -639,6 +785,7 @@ test('synthetic issue traverses native intake, readiness, receipt-bound App revi
|
|
|
639
785
|
options: [],
|
|
640
786
|
issueField: {
|
|
641
787
|
__typename: 'IssueFieldSingleSelect',
|
|
788
|
+
id: 'ISSUE-FIELD-101',
|
|
642
789
|
fullDatabaseId: '101',
|
|
643
790
|
name: 'Estimate',
|
|
644
791
|
options: ['1', '2', '4'].map((name) => ({ id: name, name })),
|
|
@@ -652,6 +799,7 @@ test('synthetic issue traverses native intake, readiness, receipt-bound App revi
|
|
|
652
799
|
options: [],
|
|
653
800
|
issueField: {
|
|
654
801
|
__typename: 'IssueFieldSingleSelect',
|
|
802
|
+
id: 'ISSUE-FIELD-102',
|
|
655
803
|
fullDatabaseId: '102',
|
|
656
804
|
name: 'Urgency',
|
|
657
805
|
options: ['High', 'Low'].map((name) => ({ id: name, name })),
|
|
@@ -853,7 +1001,7 @@ test('synthetic issue traverses native intake, readiness, receipt-bound App revi
|
|
|
853
1001
|
createCommit: async (input) => {
|
|
854
1002
|
calls.push('git:createCommit');
|
|
855
1003
|
mergeSha = git(root, 'commit-tree', input.tree, '-p', input.parents[0], '-p', input.parents[1], '-m', input.message);
|
|
856
|
-
git(root, 'push', '-q',
|
|
1004
|
+
git(root, 'push', '-q', remoteName, `${mergeSha}:refs/heads/merge-object`);
|
|
857
1005
|
return { data: { sha: mergeSha } };
|
|
858
1006
|
},
|
|
859
1007
|
getCommit: async () => ({
|
|
@@ -881,6 +1029,7 @@ test('synthetic issue traverses native intake, readiness, receipt-bound App revi
|
|
|
881
1029
|
root,
|
|
882
1030
|
repo: { owner: 'example', repo: 'widget' },
|
|
883
1031
|
config,
|
|
1032
|
+
configuration,
|
|
884
1033
|
clients: {
|
|
885
1034
|
authSource: 'app',
|
|
886
1035
|
role: 'author',
|
|
@@ -967,7 +1116,7 @@ test('synthetic issue traverses native intake, readiness, receipt-bound App revi
|
|
|
967
1116
|
await assert.rejects(publishPr(context, { issueNumber }), /Git push requires the selected author GitHub App installation token/);
|
|
968
1117
|
// The public push requires a real author App installation token. Bind a synthetic
|
|
969
1118
|
// publication at that external boundary so the remaining public phases run offline.
|
|
970
|
-
git(row.path, 'push', '-q',
|
|
1119
|
+
git(row.path, 'push', '-q', remoteName, `${headSha}:refs/heads/issue/17`);
|
|
971
1120
|
const publishEvidence = await createIssuePhaseEvidence({ issueNumber, phase: 'publish', repoRoot: row.path });
|
|
972
1121
|
const publicationContent = {
|
|
973
1122
|
baseSha,
|