@aviaratech/ai-delivery 0.3.22 → 0.3.24

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.
Files changed (131) hide show
  1. package/CONTRIBUTING.md +9 -0
  2. package/README.md +77 -442
  3. package/dist/agent.d.ts +5 -11
  4. package/dist/agent.js +4 -8
  5. package/dist/agent.js.map +1 -1
  6. package/dist/cli.js +59 -107
  7. package/dist/cli.js.map +1 -1
  8. package/dist/config/deliveryConfig.d.ts +44 -55
  9. package/dist/config/deliveryConfig.js +85 -88
  10. package/dist/config/deliveryConfig.js.map +1 -1
  11. package/dist/config/deliveryConfig.test.js +13 -5
  12. package/dist/config/deliveryConfig.test.js.map +1 -1
  13. package/dist/delivery/common.d.ts +4 -1
  14. package/dist/delivery/common.js +56 -8
  15. package/dist/delivery/common.js.map +1 -1
  16. package/dist/delivery/delivery.test.js +2 -3
  17. package/dist/delivery/delivery.test.js.map +1 -1
  18. package/dist/delivery/index.d.ts +0 -6
  19. package/dist/delivery/index.js +0 -3
  20. package/dist/delivery/index.js.map +1 -1
  21. package/dist/delivery/legacy.d.ts +8 -0
  22. package/dist/delivery/legacy.js +5 -0
  23. package/dist/delivery/legacy.js.map +1 -0
  24. package/dist/delivery/policy.js +2 -13
  25. package/dist/delivery/policy.js.map +1 -1
  26. package/dist/delivery/stage.d.ts +6 -0
  27. package/dist/delivery/stage.js +11 -2
  28. package/dist/delivery/stage.js.map +1 -1
  29. package/dist/directoryIndependent.test.d.ts +1 -0
  30. package/dist/directoryIndependent.test.js +262 -0
  31. package/dist/directoryIndependent.test.js.map +1 -0
  32. package/dist/dispatch.d.ts +29 -3
  33. package/dist/dispatch.js +160 -457
  34. package/dist/dispatch.js.map +1 -1
  35. package/dist/genericCompatibility.test.js +0 -35
  36. package/dist/genericCompatibility.test.js.map +1 -1
  37. package/dist/git.js +10 -3
  38. package/dist/git.js.map +1 -1
  39. package/dist/gitProcess.d.ts +6 -0
  40. package/dist/gitProcess.js +56 -0
  41. package/dist/gitProcess.js.map +1 -0
  42. package/dist/github/discovery.d.ts +1 -0
  43. package/dist/github/discovery.js +1 -1
  44. package/dist/github/discovery.js.map +1 -1
  45. package/dist/github/discovery.test.js +25 -20
  46. package/dist/github/discovery.test.js.map +1 -1
  47. package/dist/github/nativeIssueMetadata.d.ts +2 -2
  48. package/dist/github/nativeIssueMetadata.js.map +1 -1
  49. package/dist/github/projectDelivery.d.ts +1 -1
  50. package/dist/github/projectDelivery.js.map +1 -1
  51. package/dist/github/repo.d.ts +7 -1
  52. package/dist/github/repo.js +58 -2
  53. package/dist/github/repo.js.map +1 -1
  54. package/dist/issue.d.ts +11 -6
  55. package/dist/issue.js +136 -319
  56. package/dist/issue.js.map +1 -1
  57. package/dist/issueJournal.d.ts +1 -1
  58. package/dist/lifecycle.test.js +40 -7371
  59. package/dist/lifecycle.test.js.map +1 -1
  60. package/dist/logger.js +4 -4
  61. package/dist/logger.js.map +1 -1
  62. package/dist/mcp/index.js +2 -1
  63. package/dist/mcp/index.js.map +1 -1
  64. package/dist/mcp/tools.d.ts +27 -42
  65. package/dist/mcp/tools.js +34 -42
  66. package/dist/mcp/tools.js.map +1 -1
  67. package/dist/pluginInstaller.d.ts +51 -0
  68. package/dist/pluginInstaller.js +774 -0
  69. package/dist/pluginInstaller.js.map +1 -0
  70. package/dist/pluginInstaller.test.d.ts +1 -0
  71. package/dist/pluginInstaller.test.js +543 -0
  72. package/dist/pluginInstaller.test.js.map +1 -0
  73. package/dist/pluginPackaging.test.d.ts +1 -0
  74. package/dist/pluginPackaging.test.js +245 -0
  75. package/dist/pluginPackaging.test.js.map +1 -0
  76. package/dist/pr.d.ts +66 -114
  77. package/dist/pr.js +288 -1108
  78. package/dist/pr.js.map +1 -1
  79. package/dist/pr.test.js +295 -237
  80. package/dist/pr.test.js.map +1 -1
  81. package/dist/releaseReconciliation.test.d.ts +1 -0
  82. package/dist/releaseReconciliation.test.js +314 -0
  83. package/dist/releaseReconciliation.test.js.map +1 -0
  84. package/dist/review.d.ts +37 -7
  85. package/dist/review.js +106 -45
  86. package/dist/review.js.map +1 -1
  87. package/dist/review.test.js +30 -71
  88. package/dist/review.test.js.map +1 -1
  89. package/dist/services/agentReadinessService.d.ts +1 -1
  90. package/dist/services/agentReadinessService.js +2 -0
  91. package/dist/services/agentReadinessService.js.map +1 -1
  92. package/dist/services/deliveryAdmission.d.ts +4 -4
  93. package/dist/services/deliveryAdmission.js.map +1 -1
  94. package/dist/setup.d.ts +1 -0
  95. package/dist/setup.js +71 -10
  96. package/dist/setup.js.map +1 -1
  97. package/dist/setup.test.js +594 -204
  98. package/dist/setup.test.js.map +1 -1
  99. package/dist/start.test.d.ts +1 -0
  100. package/dist/start.test.js +72 -0
  101. package/dist/start.test.js.map +1 -0
  102. package/dist/stdoutRegression.test.d.ts +1 -0
  103. package/dist/stdoutRegression.test.js +326 -0
  104. package/dist/stdoutRegression.test.js.map +1 -0
  105. package/dist/verification.d.ts +62 -27
  106. package/dist/verification.js +172 -1337
  107. package/dist/verification.js.map +1 -1
  108. package/dist/worktree.d.ts +1 -31
  109. package/dist/worktree.js +5 -200
  110. package/dist/worktree.js.map +1 -1
  111. package/dist/worktreeTransition.d.ts +1 -1
  112. package/dist/worktreeTransition.js +10 -5
  113. package/dist/worktreeTransition.js.map +1 -1
  114. package/dist/worktreeTransition.test.js +2 -3
  115. package/dist/worktreeTransition.test.js.map +1 -1
  116. package/package.json +4 -4
  117. package/plugins/ai-delivery/.claude-plugin/plugin.json +6 -1
  118. package/plugins/ai-delivery/LICENSE +21 -0
  119. package/plugins/ai-delivery/README.md +4 -2
  120. package/plugins/ai-delivery/dist/mcp-launcher.js +19 -8
  121. package/plugins/ai-delivery/mcp.json +10 -0
  122. package/plugins/ai-delivery/plugin.json +10 -0
  123. package/plugins/ai-delivery/runtime/dist/THIRD-PARTY-NOTICES.md +1010 -0
  124. package/plugins/ai-delivery/runtime/dist/cli.js +276 -0
  125. package/plugins/ai-delivery/runtime/package.json +13 -0
  126. package/plugins/ai-delivery/skills/intake-create/SKILL.md +1 -1
  127. package/plugins/ai-delivery/skills/pr-handoff/SKILL.md +14 -21
  128. package/plugins/ai-delivery/skills/worktree-lifecycle/SKILL.md +12 -23
  129. package/dist/services/deliveryRecordService.d.ts +0 -47
  130. package/dist/services/deliveryRecordService.js +0 -199
  131. package/dist/services/deliveryRecordService.js.map +0 -1
@@ -0,0 +1,262 @@
1
+ import assert from 'node:assert/strict';
2
+ import { execFileSync } from 'node:child_process';
3
+ import { existsSync, mkdirSync, mkdtempSync, unlinkSync, rmSync, writeFileSync } from 'node:fs';
4
+ import { tmpdir } from 'node:os';
5
+ import { join } from 'node:path';
6
+ import { afterEach, describe, it, vi } from 'vitest';
7
+ import { loadDeliveryConfig, loadDeliverySettings } from './config/deliveryConfig.js';
8
+ import * as githubClients from './github/client.js';
9
+ import * as repository from './github/repo.js';
10
+ import * as gitCommands from './git.js';
11
+ import { executeTool } from './dispatch.js';
12
+ import { createAiDeliveryMcpServer, AI_DELIVERY_MCP_TOOLS } from './mcp/index.js';
13
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
14
+ import { InMemoryTransport } from '@modelcontextprotocol/sdk/inMemory.js';
15
+ import { syntheticDiscoveryClients, syntheticDiscoveryConfig } from './fixtures/discovery.js';
16
+ const userSettings = {
17
+ schemaVersion: 'ai-delivery.user@1',
18
+ roles: {
19
+ author: { authSource: 'personal', identity: 'host-author', credentialEnv: { token: 'SYNTHETIC_TOKEN' } },
20
+ reviewer: {
21
+ identity: 'app-reviewer',
22
+ credentialEnv: { appId: 'APP_ID', installationId: 'INSTALLATION_ID', privateKeyPath: 'KEY_PATH' },
23
+ },
24
+ },
25
+ project: 1,
26
+ checkoutRoots: [],
27
+ pointsField: 'Estimate',
28
+ priorityField: 'Urgency',
29
+ statusField: 'Flow',
30
+ statuses: { blocked: 'Waiting', done: 'Shipped', inProgress: 'Active', todo: 'Queued' },
31
+ };
32
+ describe('directory-independent user configuration', () => {
33
+ it('resolves an explicit repository in a non-Git directory without repository policy', async () => {
34
+ const root = mkdtempSync(join(tmpdir(), 'delivery-directory-'));
35
+ const previous = process.env.AI_DELIVERY_CONFIG;
36
+ try {
37
+ process.env.AI_DELIVERY_CONFIG = join(root, 'user.json');
38
+ writeFileSync(process.env.AI_DELIVERY_CONFIG, JSON.stringify(userSettings));
39
+ const loaded = await loadDeliveryConfig(root, {
40
+ repository: 'example/widget',
41
+ clients: syntheticDiscoveryClients(syntheticDiscoveryConfig),
42
+ });
43
+ assert.equal(loaded.config.repository, 'example/widget');
44
+ assert.equal(loaded.config.roles.author.identity, 'host-author');
45
+ assert.equal(loaded.configPath, process.env.AI_DELIVERY_CONFIG);
46
+ assert.equal('policy' in loaded.config, false);
47
+ }
48
+ finally {
49
+ if (previous === undefined)
50
+ delete process.env.AI_DELIVERY_CONFIG;
51
+ else
52
+ process.env.AI_DELIVERY_CONFIG = previous;
53
+ rmSync(root, { recursive: true, force: true });
54
+ }
55
+ });
56
+ it('never imports a tracked hostile policy while resolving a local checkout', async () => {
57
+ const root = mkdtempSync(join(tmpdir(), 'delivery-hostile-'));
58
+ const previous = process.env.AI_DELIVERY_CONFIG;
59
+ const sentinel = join(root, 'executed');
60
+ try {
61
+ execFileSync('git', ['init', '--quiet', root]);
62
+ execFileSync('git', ['remote', 'add', 'origin', 'https://github.com/example/widget.git'], { cwd: root });
63
+ writeFileSync(join(root, 'ai-delivery.policy.mjs'), `import {writeFileSync} from 'node:fs';writeFileSync(${JSON.stringify(sentinel)},'executed');export const deliverySettings={};`);
64
+ execFileSync('git', ['add', 'ai-delivery.policy.mjs'], { cwd: root });
65
+ process.env.AI_DELIVERY_CONFIG = join(root, 'user.json');
66
+ writeFileSync(process.env.AI_DELIVERY_CONFIG, JSON.stringify(userSettings));
67
+ await loadDeliverySettings(root);
68
+ for (const body of ['tracked', 'edited']) {
69
+ writeFileSync(join(root, 'ai-delivery.policy.mjs'), `import {writeFileSync} from 'node:fs';writeFileSync(${JSON.stringify(sentinel)},${JSON.stringify(body)});export const deliverySettings={};`);
70
+ await loadDeliveryConfig(root, {
71
+ repository: 'example/widget',
72
+ clients: syntheticDiscoveryClients(syntheticDiscoveryConfig),
73
+ });
74
+ }
75
+ assert.equal(existsSync(sentinel), false);
76
+ }
77
+ finally {
78
+ if (previous === undefined)
79
+ delete process.env.AI_DELIVERY_CONFIG;
80
+ else
81
+ process.env.AI_DELIVERY_CONFIG = previous;
82
+ rmSync(root, { recursive: true, force: true });
83
+ }
84
+ });
85
+ it('names a missing user setting before accessing Git or credentials', async () => {
86
+ const root = mkdtempSync(join(tmpdir(), 'delivery-setting-'));
87
+ const previous = process.env.AI_DELIVERY_CONFIG;
88
+ try {
89
+ process.env.AI_DELIVERY_CONFIG = join(root, 'user.json');
90
+ writeFileSync(process.env.AI_DELIVERY_CONFIG, JSON.stringify({ ...userSettings, roles: {} }));
91
+ await assert.rejects(loadDeliverySettings(root), /roles.author/u);
92
+ }
93
+ finally {
94
+ if (previous === undefined)
95
+ delete process.env.AI_DELIVERY_CONFIG;
96
+ else
97
+ process.env.AI_DELIVERY_CONFIG = previous;
98
+ rmSync(root, { recursive: true, force: true });
99
+ }
100
+ });
101
+ });
102
+ for (const path of [
103
+ 'schemaVersion',
104
+ 'roles.author',
105
+ 'roles.reviewer',
106
+ 'roles.author.identity',
107
+ 'roles.reviewer.identity',
108
+ 'roles.author.credentialEnv',
109
+ 'roles.reviewer.credentialEnv',
110
+ 'project',
111
+ 'checkoutRoots',
112
+ 'roles.author.credentialEnv.token',
113
+ 'roles.reviewer.credentialEnv.appId',
114
+ 'roles.reviewer.credentialEnv.installationId',
115
+ 'roles.reviewer.credentialEnv.privateKeyPath',
116
+ ]) {
117
+ it(`names missing ${path} in operator settings`, async () => {
118
+ const root = mkdtempSync(join(tmpdir(), 'delivery-required-'));
119
+ vi.stubEnv('AI_DELIVERY_CONFIG', join(root, 'user.json'));
120
+ const settings = structuredClone(userSettings);
121
+ const keys = path.split('.');
122
+ let target = settings;
123
+ for (const key of keys.slice(0, -1))
124
+ target = target[key];
125
+ delete target[keys.at(-1)];
126
+ writeFileSync(process.env.AI_DELIVERY_CONFIG, JSON.stringify(settings));
127
+ try {
128
+ await assert.rejects(loadDeliverySettings(root), (error) => error instanceof Error && error.message.includes(path));
129
+ }
130
+ finally {
131
+ rmSync(root, { recursive: true, force: true });
132
+ }
133
+ });
134
+ }
135
+ afterEach(() => {
136
+ vi.restoreAllMocks();
137
+ vi.unstubAllEnvs();
138
+ });
139
+ describe('per-call repository selection', () => {
140
+ it('selects matching origins A → B → A, prefers a matching current checkout and refuses ambiguous clones', () => {
141
+ const root = mkdtempSync(join(tmpdir(), 'delivery-checkouts-'));
142
+ const clone = (name, repo) => {
143
+ const path = join(root, name);
144
+ execFileSync('git', ['init', '-q', path]);
145
+ execFileSync('git', ['remote', 'add', 'origin', `https://github.com/${repo}.git`], { cwd: path });
146
+ return path;
147
+ };
148
+ try {
149
+ const a = clone('a', 'example/a'), b = clone('b', 'example/b');
150
+ const input = { launchDirectory: root, checkoutRoots: [root] };
151
+ assert.equal(repository.resolveCheckout({ ...input, repository: 'example/a' }), a);
152
+ assert.equal(repository.resolveCheckout({ ...input, repository: 'example/b' }), b);
153
+ assert.equal(repository.resolveCheckout({ ...input, repository: 'example/a' }), a);
154
+ clone('a-duplicate', 'example/a');
155
+ assert.throws(() => repository.resolveCheckout({ ...input, repository: 'example/a' }), /ambiguous/u);
156
+ assert.equal(repository.resolveCheckout({ ...input, repository: 'example/a', launchDirectory: a }), a);
157
+ assert.throws(() => repository.resolveCheckout({ ...input, repository: 'example/missing' }), /no matching/u);
158
+ }
159
+ finally {
160
+ rmSync(root, { recursive: true, force: true });
161
+ }
162
+ });
163
+ it('does not execute checkout filters or fsmonitor during local Git probes', () => {
164
+ const root = mkdtempSync(join(tmpdir(), 'delivery-hostile-git-'));
165
+ const sentinel = join(root, 'executed');
166
+ const git = (...args) => execFileSync('git', args, { cwd: root });
167
+ try {
168
+ git('init', '-q');
169
+ git('config', 'user.name', 'Synthetic');
170
+ git('config', 'user.email', 'synthetic@example.test');
171
+ writeFileSync(join(root, '.gitattributes'), '*.txt filter=hostile\n');
172
+ writeFileSync(join(root, 'change.txt'), 'original');
173
+ git('add', '.');
174
+ git('commit', '-qm', 'fixture');
175
+ const script = join(root, 'hostile.cjs');
176
+ writeFileSync(script, `require('node:fs').writeFileSync(${JSON.stringify(sentinel)},'executed');process.stdin.pipe(process.stdout);`);
177
+ git('config', 'filter.hostile.clean', `${process.execPath} ${script}`);
178
+ git('config', 'filter.hostile.smudge', `${process.execPath} ${script}`);
179
+ git('config', 'core.fsmonitor', `${process.execPath} ${script}`);
180
+ mkdirSync(join(root, '.git', 'hooks'), { recursive: true });
181
+ writeFileSync(join(root, 'change.txt'), 'changed');
182
+ git('hash-object', '--path', 'change.txt', 'change.txt');
183
+ assert.equal(existsSync(sentinel), true, 'fixture filter must be executable before the protected probe');
184
+ unlinkSync(sentinel);
185
+ gitCommands.git(root, 'hash-object', '--path', 'change.txt', 'change.txt');
186
+ assert.throws(() => gitCommands.assertClean(root));
187
+ assert.equal(existsSync(sentinel), false);
188
+ }
189
+ finally {
190
+ rmSync(root, { recursive: true, force: true });
191
+ }
192
+ });
193
+ it('routes direct dispatch and one MCP server A → B → A without launch Git or identity environment', async () => {
194
+ const root = mkdtempSync(join(tmpdir(), 'delivery-mcp-routing-'));
195
+ const visited = [];
196
+ vi.stubEnv('AI_DELIVERY_CONFIG', join(root, 'user.json'));
197
+ vi.stubEnv('AI_DELIVERY_IDENTITY', '');
198
+ writeFileSync(process.env.AI_DELIVERY_CONFIG, JSON.stringify(userSettings));
199
+ vi.spyOn(repository, 'resolveRepoFromRemote').mockImplementation(() => {
200
+ throw new Error('launch Git must never run');
201
+ });
202
+ vi.spyOn(gitCommands, 'git').mockImplementation(() => {
203
+ throw new Error('launch Git must never run');
204
+ });
205
+ vi.spyOn(githubClients, 'createDeliveryGitHubClients').mockImplementation(async (input) => ({
206
+ role: input.role,
207
+ authSource: 'personal',
208
+ graphql: (async (query, variables) => {
209
+ const repo = typeof variables.repo === 'string' ? variables.repo : 'a';
210
+ return syntheticDiscoveryClients({ ...syntheticDiscoveryConfig, repository: `example/${repo}` }).graphql(query, variables);
211
+ }),
212
+ rest: {
213
+ pulls: {
214
+ get: async (input) => {
215
+ visited.push(`${input.owner}/${input.repo}`);
216
+ return {
217
+ data: {
218
+ number: input.pull_number,
219
+ head: { sha: 'a'.repeat(40), ref: 'issue/17', repo: { full_name: `${input.owner}/${input.repo}` } },
220
+ base: { sha: 'b'.repeat(40), ref: 'main', repo: { full_name: `${input.owner}/${input.repo}` } },
221
+ state: 'open',
222
+ merged: false,
223
+ draft: true,
224
+ html_url: `https://github.com/${input.owner}/${input.repo}/pull/23`,
225
+ },
226
+ };
227
+ },
228
+ },
229
+ },
230
+ }));
231
+ const server = createAiDeliveryMcpServer({ repoRoot: root });
232
+ const client = new Client({ name: 'directory-fixture', version: '1' });
233
+ const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
234
+ try {
235
+ await server.connect(serverTransport);
236
+ await client.connect(clientTransport);
237
+ for (const repo of ['example/a', 'example/b', 'example/a']) {
238
+ const response = await client.callTool({ name: 'issue_pr_info', arguments: { repo, prNumber: 23 } });
239
+ assert.equal(response.isError, undefined);
240
+ }
241
+ await executeTool('issue_pr_info', { repo: 'example/b', prNumber: 23 }, { repoRoot: root });
242
+ assert.deepEqual(visited, ['example/a', 'example/b', 'example/a', 'example/b']);
243
+ assert.equal(vi.mocked(repository.resolveRepoFromRemote).mock.calls.length, 0);
244
+ const names = AI_DELIVERY_MCP_TOOLS.map((tool) => tool.name);
245
+ for (const removed of ['issue_develop', 'issue_verify', 'issue_worktree_create'])
246
+ assert.equal(names.includes(removed), false);
247
+ for (const retained of [
248
+ 'runtime_stage',
249
+ 'runtime_admit',
250
+ 'issue_worktree_transition_inspect',
251
+ 'issue_worktree_transition_apply',
252
+ ])
253
+ assert.equal(names.includes(retained), true);
254
+ }
255
+ finally {
256
+ await client.close();
257
+ await server.close();
258
+ rmSync(root, { recursive: true, force: true });
259
+ }
260
+ });
261
+ });
262
+ //# sourceMappingURL=directoryIndependent.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directoryIndependent.test.js","sourceRoot":"","sources":["../src/directoryIndependent.test.ts"],"names":[],"mappings":"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"}
@@ -8,9 +8,35 @@ export interface ExecutionContext {
8
8
  runtimeEntryPath?: string;
9
9
  signal?: AbortSignal;
10
10
  }
11
- /** @internal Preserve every accepted tracking field when completing a partially created issue. */
11
+ /** Preserve every accepted tracking field when completing a partially created issue. */
12
12
  export declare function resumedIssueUpdate(input: Record<string, unknown>): UpdateIssueInput;
13
13
  export declare function contextFor(input: ExecutionContext, commandName: string, role?: 'author' | 'reviewer'): Promise<import("./issue.js").DeliveryContext>;
14
- /** @internal Keep CLI and MCP start routing on the same native lifecycle owner. */
15
- export declare function startTrackedIssue(context: Awaited<ReturnType<typeof loadDeliveryContext>>, input: Record<string, unknown>, runtimeEntryPath?: string): Promise<Record<string, unknown>>;
14
+ /** GitHub owns branch linkage; hosts own worktree preparation. */
15
+ export declare function startTrackedIssue(context: Awaited<ReturnType<typeof loadDeliveryContext>>, input: Record<string, unknown>): Promise<{
16
+ status: string;
17
+ repository: string;
18
+ createdIssue: {
19
+ number: number;
20
+ title: string;
21
+ url: string;
22
+ } | undefined;
23
+ failure: {
24
+ phase: string;
25
+ message: string;
26
+ };
27
+ safeResume: {
28
+ tool: string;
29
+ arguments: {
30
+ repo: string;
31
+ issueNumber: number | undefined;
32
+ resumeCreated: boolean;
33
+ };
34
+ };
35
+ } | {
36
+ issueNumber: number;
37
+ repository: string;
38
+ branch: string;
39
+ headSha: string;
40
+ reused: boolean;
41
+ }>;
16
42
  export declare function executeTool(name: AiDeliveryMcpToolName, raw: unknown, execution: ExecutionContext): Promise<unknown>;