@aviaratech/ai-delivery 0.3.23 → 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 (112) hide show
  1. package/CONTRIBUTING.md +9 -0
  2. package/README.md +56 -447
  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 +12 -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.js +7 -2
  14. package/dist/delivery/common.js.map +1 -1
  15. package/dist/delivery/delivery.test.js +2 -3
  16. package/dist/delivery/delivery.test.js.map +1 -1
  17. package/dist/delivery/index.d.ts +0 -6
  18. package/dist/delivery/index.js +0 -3
  19. package/dist/delivery/index.js.map +1 -1
  20. package/dist/delivery/legacy.d.ts +8 -0
  21. package/dist/delivery/legacy.js +5 -0
  22. package/dist/delivery/legacy.js.map +1 -0
  23. package/dist/delivery/policy.js +2 -13
  24. package/dist/delivery/policy.js.map +1 -1
  25. package/dist/directoryIndependent.test.d.ts +1 -0
  26. package/dist/directoryIndependent.test.js +262 -0
  27. package/dist/directoryIndependent.test.js.map +1 -0
  28. package/dist/dispatch.d.ts +29 -3
  29. package/dist/dispatch.js +160 -457
  30. package/dist/dispatch.js.map +1 -1
  31. package/dist/genericCompatibility.test.js +0 -35
  32. package/dist/genericCompatibility.test.js.map +1 -1
  33. package/dist/git.js +10 -3
  34. package/dist/git.js.map +1 -1
  35. package/dist/gitProcess.d.ts +6 -0
  36. package/dist/gitProcess.js +56 -0
  37. package/dist/gitProcess.js.map +1 -0
  38. package/dist/github/discovery.d.ts +1 -0
  39. package/dist/github/discovery.js +1 -1
  40. package/dist/github/discovery.js.map +1 -1
  41. package/dist/github/discovery.test.js +25 -20
  42. package/dist/github/discovery.test.js.map +1 -1
  43. package/dist/github/nativeIssueMetadata.d.ts +2 -2
  44. package/dist/github/nativeIssueMetadata.js.map +1 -1
  45. package/dist/github/projectDelivery.d.ts +1 -1
  46. package/dist/github/projectDelivery.js.map +1 -1
  47. package/dist/github/repo.d.ts +7 -1
  48. package/dist/github/repo.js +58 -2
  49. package/dist/github/repo.js.map +1 -1
  50. package/dist/issue.d.ts +11 -6
  51. package/dist/issue.js +136 -319
  52. package/dist/issue.js.map +1 -1
  53. package/dist/issueJournal.d.ts +1 -1
  54. package/dist/lifecycle.test.js +40 -7371
  55. package/dist/lifecycle.test.js.map +1 -1
  56. package/dist/logger.js +4 -4
  57. package/dist/logger.js.map +1 -1
  58. package/dist/mcp/tools.d.ts +26 -42
  59. package/dist/mcp/tools.js +33 -42
  60. package/dist/mcp/tools.js.map +1 -1
  61. package/dist/pluginInstaller.d.ts +1 -1
  62. package/dist/pluginPackaging.test.js +129 -0
  63. package/dist/pluginPackaging.test.js.map +1 -1
  64. package/dist/pr.d.ts +66 -114
  65. package/dist/pr.js +288 -1108
  66. package/dist/pr.js.map +1 -1
  67. package/dist/pr.test.js +295 -237
  68. package/dist/pr.test.js.map +1 -1
  69. package/dist/releaseReconciliation.test.d.ts +1 -0
  70. package/dist/releaseReconciliation.test.js +314 -0
  71. package/dist/releaseReconciliation.test.js.map +1 -0
  72. package/dist/review.d.ts +37 -7
  73. package/dist/review.js +106 -45
  74. package/dist/review.js.map +1 -1
  75. package/dist/review.test.js +30 -71
  76. package/dist/review.test.js.map +1 -1
  77. package/dist/services/agentReadinessService.d.ts +1 -1
  78. package/dist/services/agentReadinessService.js +2 -0
  79. package/dist/services/agentReadinessService.js.map +1 -1
  80. package/dist/services/deliveryAdmission.d.ts +4 -4
  81. package/dist/services/deliveryAdmission.js.map +1 -1
  82. package/dist/setup.test.js +10 -5
  83. package/dist/setup.test.js.map +1 -1
  84. package/dist/start.test.d.ts +1 -0
  85. package/dist/start.test.js +72 -0
  86. package/dist/start.test.js.map +1 -0
  87. package/dist/stdoutRegression.test.d.ts +1 -0
  88. package/dist/stdoutRegression.test.js +326 -0
  89. package/dist/stdoutRegression.test.js.map +1 -0
  90. package/dist/verification.d.ts +1 -27
  91. package/dist/verification.js +5 -1332
  92. package/dist/verification.js.map +1 -1
  93. package/dist/worktree.d.ts +1 -31
  94. package/dist/worktree.js +5 -200
  95. package/dist/worktree.js.map +1 -1
  96. package/dist/worktreeTransition.d.ts +1 -1
  97. package/dist/worktreeTransition.js +10 -5
  98. package/dist/worktreeTransition.js.map +1 -1
  99. package/dist/worktreeTransition.test.js +2 -3
  100. package/dist/worktreeTransition.test.js.map +1 -1
  101. package/package.json +1 -1
  102. package/plugins/ai-delivery/.claude-plugin/plugin.json +2 -2
  103. package/plugins/ai-delivery/README.md +3 -3
  104. package/plugins/ai-delivery/plugin.json +1 -1
  105. package/plugins/ai-delivery/runtime/dist/cli.js +50 -59
  106. package/plugins/ai-delivery/runtime/package.json +1 -1
  107. package/plugins/ai-delivery/skills/intake-create/SKILL.md +1 -1
  108. package/plugins/ai-delivery/skills/pr-handoff/SKILL.md +14 -21
  109. package/plugins/ai-delivery/skills/worktree-lifecycle/SKILL.md +12 -23
  110. package/dist/services/deliveryRecordService.d.ts +0 -47
  111. package/dist/services/deliveryRecordService.js +0 -199
  112. package/dist/services/deliveryRecordService.js.map +0 -1
@@ -0,0 +1,326 @@
1
+ import assert from 'node:assert/strict';
2
+ import { execFileSync } from 'node:child_process';
3
+ import { Console } from 'node:console';
4
+ import { mkdtempSync, realpathSync, rmSync, writeFileSync } from 'node:fs';
5
+ import { tmpdir } from 'node:os';
6
+ import { join } from 'node:path';
7
+ import { Octokit } from '@octokit/rest';
8
+ import { afterEach, test, vi } from 'vitest';
9
+ import { parseDeliveryConfig } from './config/deliveryConfig.js';
10
+ import { syntheticDiscoveryConfig } from './fixtures/discovery.js';
11
+ import { replaceParentIssue } from './github/relationships.js';
12
+ import { CLIError, handleCommandError, logDebug, logError, logInfo, logProgress, logSuccess, logWarn, setLogsSuppressed, } from './logger.js';
13
+ import { addWorktreeEntry, removeWorktreeEntry } from './services/worktreeRegistry.js';
14
+ // Project/field metadata is unrelated to stream routing. Keep these provider
15
+ // adapters local while exercising real parent linking, issue start and dispatch.
16
+ vi.mock('./github/nativeIssueMetadata.js', async (importOriginal) => ({
17
+ ...(await importOriginal()),
18
+ getConfiguredNativeIssueMetadata: async () => ({ points: 2 }),
19
+ setConfiguredNativeIssueMetadata: async () => ({ points: 2 }),
20
+ clearConfiguredNativeIssuePoints: async () => { },
21
+ }));
22
+ vi.mock('./github/projectDelivery.js', async (importOriginal) => ({
23
+ ...(await importOriginal()),
24
+ getIssueProjectStatus: async () => null,
25
+ syncIssueProjectStatus: async () => null,
26
+ }));
27
+ afterEach(() => {
28
+ vi.restoreAllMocks();
29
+ vi.unstubAllEnvs();
30
+ setLogsSuppressed(false);
31
+ });
32
+ function fixture(developmentFails = false) {
33
+ const root = realpathSync(mkdtempSync(join(tmpdir(), 'ai-delivery-stdout-')));
34
+ const git = (...args) => execFileSync('git', args, { cwd: root, encoding: 'utf8' }).trim();
35
+ git('init', '-q', '-b', 'main');
36
+ git('config', 'user.name', 'Synthetic Delivery');
37
+ git('config', 'user.email', 'delivery@example.test');
38
+ writeFileSync(join(root, 'artifact.txt'), 'synthetic\n');
39
+ git('add', 'artifact.txt');
40
+ git('commit', '-qm', 'synthetic base');
41
+ git('remote', 'add', 'origin', 'https://github.com/example/widget.git');
42
+ git('update-ref', 'refs/remotes/origin/main', git('rev-parse', 'HEAD'));
43
+ git('symbolic-ref', 'refs/remotes/origin/HEAD', 'refs/remotes/origin/main');
44
+ let parent = null;
45
+ const issue = {
46
+ id: 170,
47
+ number: 17,
48
+ node_id: 'ISSUE-17',
49
+ title: 'Synthetic change',
50
+ body: '## Outcome\nDeliver a verified synthetic change to the local repository.\n\n## Scope\n- `artifact.txt`\n\n## Acceptance Criteria\n- [ ] Change works\n- [ ] Review passes\n\n## Verification\nRun `node --version`.',
51
+ state: 'open',
52
+ html_url: 'https://github.com/example/widget/issues/17',
53
+ labels: [],
54
+ type: { name: 'Task' },
55
+ };
56
+ const rest = new Octokit();
57
+ Object.assign(rest.issues, {
58
+ get: async ({ issue_number }) => ({
59
+ data: issue_number === 17
60
+ ? { ...issue, state: developmentFails ? 'closed' : 'open' }
61
+ : { ...issue, number: issue_number, id: issue_number * 10, node_id: `ISSUE-${String(issue_number)}` },
62
+ }),
63
+ create: async () => ({ data: issue }),
64
+ listForRepo: async () => ({ data: [] }),
65
+ update: async () => ({ data: issue }),
66
+ listSubIssues: async () => ({ data: parent === null ? [] : [issue] }),
67
+ addSubIssue: async ({ issue_number }) => {
68
+ parent = issue_number;
69
+ return { data: issue };
70
+ },
71
+ });
72
+ Object.assign(rest, { paginate: async () => (parent === null ? [] : [issue]) });
73
+ const clients = {
74
+ authSource: 'personal',
75
+ role: 'author',
76
+ rest,
77
+ graphql: (async (query) => {
78
+ const page = { nodes: [], pageInfo: { endCursor: null, hasNextPage: false } };
79
+ if (query.includes('blockedBy(')) {
80
+ return {
81
+ repository: {
82
+ issue: {
83
+ blockedBy: page,
84
+ parent: parent === null
85
+ ? null
86
+ : { id: 'ISSUE-5', number: parent, repository: { nameWithOwner: 'example/widget' } },
87
+ },
88
+ },
89
+ };
90
+ }
91
+ if (query.includes('blocking('))
92
+ return { repository: { issue: { blocking: page } } };
93
+ if (query.includes('subIssues('))
94
+ return { repository: { issue: { subIssues: page } } };
95
+ throw new Error('Unexpected synthetic stdout query.');
96
+ }),
97
+ };
98
+ const config = parseDeliveryConfig({
99
+ ...syntheticDiscoveryConfig,
100
+ schemaVersion: 'ai-delivery.config@2',
101
+ policy: { contract: 'RepositoryDeliveryPolicy@1', module: './policy.mjs' },
102
+ roles: {
103
+ author: { identity: 'host-author', authSource: 'personal', credentialEnv: { token: 'AUTHOR_TOKEN' } },
104
+ reviewer: {
105
+ identity: 'synthetic-reviewer',
106
+ credentialEnv: {
107
+ appId: 'REVIEWER_APP_ID',
108
+ installationId: 'REVIEWER_INSTALLATION_ID',
109
+ privateKeyPath: 'REVIEWER_KEY_PATH',
110
+ },
111
+ },
112
+ },
113
+ commandPolicy: {
114
+ checks: { format: 'REQUIRED', gitClean: 'REQUIRED', lint: 'REQUIRED', test: 'REQUIRED', typecheck: 'REQUIRED' },
115
+ timeoutsMs: { lint: 60000, test: 60000, typecheck: 60000 },
116
+ },
117
+ });
118
+ return {
119
+ context: { root, repo: { owner: 'example', repo: 'widget' }, clients, config },
120
+ cleanup: () => rmSync(root, { recursive: true, force: true }),
121
+ };
122
+ }
123
+ function captureStreams() {
124
+ const output = { stdout: '', stderr: '' };
125
+ const previousConsole = globalThis.console;
126
+ // Vitest intercepts console calls before they reach process streams. Use a
127
+ // native console so the byte-level capture matches an actual CLI process.
128
+ globalThis.console = new Console(process.stdout, process.stderr);
129
+ const out = vi.spyOn(process.stdout, 'write').mockImplementation((value) => {
130
+ output.stdout += String(value);
131
+ return true;
132
+ });
133
+ const err = vi.spyOn(process.stderr, 'write').mockImplementation((value) => {
134
+ output.stderr += String(value);
135
+ return true;
136
+ });
137
+ return {
138
+ output,
139
+ restore: () => {
140
+ out.mockRestore();
141
+ err.mockRestore();
142
+ globalThis.console = previousConsole;
143
+ },
144
+ };
145
+ }
146
+ test('parent replacement emits its diagnostic on stderr without writing any stdout bytes', async () => {
147
+ const f = fixture();
148
+ const capture = captureStreams();
149
+ try {
150
+ await replaceParentIssue({ ...f.context.clients, repo: f.context.repo, issueNumber: 17, parentIssueNumber: 5 });
151
+ assert.equal(capture.output.stdout, '');
152
+ assert.match(capture.output.stderr, /Linked issue #17 as sub-issue of issue #5\./u);
153
+ }
154
+ finally {
155
+ capture.restore();
156
+ f.cleanup();
157
+ }
158
+ });
159
+ test.each(['add', 'remove'])('registry %s emits its diagnostic without writing any stdout bytes', async (operation) => {
160
+ const f = fixture();
161
+ const row = {
162
+ path: join(f.context.root, '.worktrees', 'synthetic'),
163
+ branch: 'issue/17',
164
+ type: 'issue',
165
+ issueNumber: 17,
166
+ identity: 'host-author',
167
+ status: 'active',
168
+ createdAt: '2026-10-08T00:00:00Z',
169
+ updatedAt: '2026-10-08T00:00:00Z',
170
+ };
171
+ const capture = captureStreams();
172
+ try {
173
+ await addWorktreeEntry(row, f.context.root);
174
+ if (operation === 'remove') {
175
+ capture.output.stdout = '';
176
+ capture.output.stderr = '';
177
+ assert.equal(await removeWorktreeEntry(row.path, f.context.root), true);
178
+ }
179
+ assert.equal(capture.output.stdout, '');
180
+ assert.match(capture.output.stderr, operation === 'add' ? /Added to worktree registry:/u : /Removed from worktree registry:/u);
181
+ }
182
+ finally {
183
+ capture.restore();
184
+ f.cleanup();
185
+ }
186
+ });
187
+ async function runCli(context, args) {
188
+ vi.resetModules();
189
+ const configuration = await import('./config/deliveryConfig.js');
190
+ const issues = await import('./issue.js');
191
+ const admission = await import('./services/deliveryAdmission.js');
192
+ const prs = await import('./pr.js');
193
+ const dispatch = await import('./dispatch.js');
194
+ vi.spyOn(configuration, 'loadDeliverySettings').mockResolvedValue({
195
+ ...context.config,
196
+ configPath: 'synthetic-user.json',
197
+ checkoutRoots: [],
198
+ overrides: { schemaVersion: 'ai-delivery.config@2' },
199
+ sourceDigest: 'synthetic',
200
+ });
201
+ vi.spyOn(issues, 'loadDeliveryContext').mockResolvedValue(context);
202
+ // Synthetic authorization seams: these tests exercise streams, not live access.
203
+ vi.spyOn(admission, 'assertDeliveryRuntimeAdmitted').mockResolvedValue({});
204
+ vi.spyOn(prs, 'preflightReviewRoute').mockResolvedValue({});
205
+ const argv = process.argv;
206
+ const exitCode = process.exitCode;
207
+ const capture = captureStreams();
208
+ let completed = () => { };
209
+ let failed = () => { };
210
+ const resultWritten = new Promise((resolve, reject) => {
211
+ completed = resolve;
212
+ failed = reject;
213
+ });
214
+ const execute = dispatch.executeTool;
215
+ vi.spyOn(dispatch, 'executeTool').mockImplementation(async (...input) => {
216
+ try {
217
+ return await execute(...input);
218
+ }
219
+ catch (error) {
220
+ failed(error);
221
+ throw error;
222
+ }
223
+ });
224
+ vi.spyOn(process.stdout, 'write').mockImplementation((value) => {
225
+ capture.output.stdout += String(value);
226
+ // Wait for the result, not the earlier diagnostic chunk that reproduces #74.
227
+ if (String(value).startsWith('{'))
228
+ completed();
229
+ return true;
230
+ });
231
+ try {
232
+ process.exitCode = undefined;
233
+ process.argv = [process.execPath, 'ai-delivery', '--repo-root', context.root, '--identity', 'host-author', ...args];
234
+ await import('./cli.js');
235
+ await resultWritten;
236
+ return { ...capture.output, exitCode: process.exitCode };
237
+ }
238
+ finally {
239
+ capture.restore();
240
+ vi.restoreAllMocks();
241
+ process.argv = argv;
242
+ process.exitCode = exitCode;
243
+ }
244
+ }
245
+ test('parent update through the CLI entry produces one parseable JSON result', async () => {
246
+ const f = fixture();
247
+ try {
248
+ const output = await runCli(f.context, ['update', '--issue', '17', '--parent', '5']);
249
+ const result = JSON.parse(output.stdout);
250
+ assert.equal(result.issueNumber, 17);
251
+ assert.equal(result.parentIssueNumber, 5);
252
+ assert.equal(output.exitCode, undefined);
253
+ assert.match(output.stderr, /Linked issue #17 as sub-issue of issue #5\./u);
254
+ }
255
+ finally {
256
+ f.cleanup();
257
+ }
258
+ });
259
+ test('failed remote branch start after parent linking preserves parseable CLI recovery JSON and nonzero exit', async () => {
260
+ const f = fixture(true);
261
+ try {
262
+ const output = await runCli(f.context, [
263
+ 'start',
264
+ '--title',
265
+ 'Synthetic change',
266
+ '--body',
267
+ '## Outcome\nDeliver a verified synthetic change to the local repository.\n\n## Scope\n- `artifact.txt`\n\n## Acceptance Criteria\n- [ ] Change works\n- [ ] Review passes\n\n## Verification\nRun `node --version`.',
268
+ '--parent',
269
+ '5',
270
+ ]);
271
+ const result = JSON.parse(output.stdout);
272
+ assert.equal(result.status, 'created-not-started');
273
+ assert.equal(result.createdIssue.number, 17);
274
+ assert.equal(result.failure.phase, 'branch-or-journal');
275
+ assert.match(result.failure.message, /open GitHub issue/u);
276
+ assert.equal(result.safeResume.arguments.issueNumber, 17);
277
+ assert.equal(result.safeResume.arguments.parentIssueNumber, 5);
278
+ assert.equal(result.safeResume.arguments.resumeCreated, true);
279
+ assert.equal(output.exitCode, 1);
280
+ assert.match(output.stderr, /Linked issue #17 as sub-issue of issue #5\./u);
281
+ }
282
+ finally {
283
+ f.cleanup();
284
+ }
285
+ });
286
+ test('all enabled diagnostics preserve their content on stderr', () => {
287
+ vi.stubEnv('DEBUG', '1');
288
+ const capture = captureStreams();
289
+ try {
290
+ logDebug('debug proof');
291
+ logInfo('info proof');
292
+ logSuccess('success proof');
293
+ logWarn('warning proof');
294
+ logError('error proof');
295
+ logProgress('progress proof');
296
+ handleCommandError(new CLIError('failure proof', { hint: 'retry proof' }));
297
+ assert.equal(capture.output.stdout, '');
298
+ for (const message of ['debug', 'info', 'success', 'warning', 'error', 'progress', 'failure', 'retry']) {
299
+ assert.match(capture.output.stderr, new RegExp(`${message} proof`, 'u'));
300
+ }
301
+ }
302
+ finally {
303
+ capture.restore();
304
+ }
305
+ });
306
+ test('MCP suppression still silences diagnostics while retaining errors and recovery hints on stderr', () => {
307
+ vi.stubEnv('DEBUG', 'true');
308
+ setLogsSuppressed(true);
309
+ const capture = captureStreams();
310
+ try {
311
+ logDebug('hidden');
312
+ logInfo('hidden');
313
+ logSuccess('hidden');
314
+ logWarn('hidden');
315
+ logProgress('hidden');
316
+ handleCommandError(new CLIError('visible error', { hint: 'visible recovery' }));
317
+ assert.equal(capture.output.stdout, '');
318
+ assert.doesNotMatch(capture.output.stderr, /hidden/u);
319
+ assert.match(capture.output.stderr, /visible error/u);
320
+ assert.match(capture.output.stderr, /visible recovery/u);
321
+ }
322
+ finally {
323
+ capture.restore();
324
+ }
325
+ });
326
+ //# sourceMappingURL=stdoutRegression.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdoutRegression.test.js","sourceRoot":"","sources":["../src/stdoutRegression.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { type RepositoryApprovalBinding, type RepositoryClassificationReceipt, type RepositoryDeliveryEvidence, type RepositoryMergeReadback, type RepositoryStageAggregate, type RepositoryStageReceipt } from './delivery/index.js';
2
+ import { type RepositoryClassificationReceipt, type RepositoryStageAggregate, type RepositoryStageReceipt } from './delivery/legacy.js';
3
3
  export interface VerificationRun {
4
4
  aggregate: RepositoryStageAggregate;
5
5
  classification: RepositoryClassificationReceipt;
@@ -131,30 +131,6 @@ export declare function runStageCommand(repoRoot: string, argv: readonly string[
131
131
  failedOutput?(bytes: Buffer): string;
132
132
  stdoutOnly?: boolean;
133
133
  }): Promise<Buffer>;
134
- export declare function verifyIssue(input: {
135
- personalAuth?: boolean;
136
- admittedResourceClasses?: readonly string[];
137
- issueNumber: number;
138
- repoRoot: string;
139
- resourceBounds?: VerificationResourceBounds;
140
- signal?: AbortSignal;
141
- }): Promise<VerificationRun>;
142
- export declare function createIssuePhaseEvidence(input: {
143
- personalAuth?: boolean;
144
- approval?: RepositoryApprovalBinding;
145
- issueNumber: number;
146
- mergeReadback?: RepositoryMergeReadback;
147
- phase: 'verify' | 'publish' | 'merge';
148
- repoRoot: string;
149
- }): Promise<RepositoryDeliveryEvidence>;
150
- export declare function loadVerifiedRun(repoRoot: string, issueNumber: number): VerificationRun;
151
- /** @internal Preservation-only read; the continuation owner validates custody and terminal lineage. */
152
- export declare function loadHistoricalMergedRun(repoRoot: string, headSha: string): {
153
- run: VerificationRun;
154
- path: string;
155
- };
156
- /** Recover an exact merged run after worktree removal interrupted terminal recording. */
157
- export declare function loadRemovedMergedRun(primaryRepoRoot: string, issueNumber: number): VerificationRun;
158
134
  declare const SourceArtifactSchema: z.ZodObject<{
159
135
  path: z.ZodString;
160
136
  digest: z.ZodString;
@@ -290,8 +266,6 @@ declare const IssueSourcePhaseReceiptSchema: z.ZodObject<{
290
266
  }, z.core.$strict>>;
291
267
  }, z.core.$strict>;
292
268
  export type IssueSourcePhaseReceipt = z.infer<typeof IssueSourcePhaseReceiptSchema>;
293
- /** Run an authorized, frozen source graph under the registered issue's existing writer fence. */
294
- export declare function withIssueSourcePhase(supplied: IssueSourcePhaseInput, operation: (context: IssueSourcePhaseContext) => Promise<void>): Promise<IssueSourcePhaseReceipt>;
295
269
  /** @internal Runtime setup shares the existing writer, ownership handshake and bounded command runner. */
296
270
  export declare function withRuntimeSetupWriter<T>(root: string, operation: (runner: {
297
271
  assertQuiescent(): void;