@aviaratech/ai-delivery 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/CONTRIBUTING.md +47 -0
  2. package/LICENSE +21 -0
  3. package/README.md +84 -0
  4. package/dist/agent.d.ts +17 -0
  5. package/dist/agent.js +16 -0
  6. package/dist/agent.js.map +1 -0
  7. package/dist/cli.d.ts +2 -0
  8. package/dist/cli.js +314 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/cliResult.d.ts +2 -0
  11. package/dist/cliResult.js +12 -0
  12. package/dist/cliResult.js.map +1 -0
  13. package/dist/cliResult.test.d.ts +1 -0
  14. package/dist/cliResult.test.js +30 -0
  15. package/dist/cliResult.test.js.map +1 -0
  16. package/dist/config/deliveryConfig.d.ts +113 -0
  17. package/dist/config/deliveryConfig.js +261 -0
  18. package/dist/config/deliveryConfig.js.map +1 -0
  19. package/dist/config/deliveryConfig.test.d.ts +1 -0
  20. package/dist/config/deliveryConfig.test.js +355 -0
  21. package/dist/config/deliveryConfig.test.js.map +1 -0
  22. package/dist/delivery/common.d.ts +28 -0
  23. package/dist/delivery/common.js +117 -0
  24. package/dist/delivery/common.js.map +1 -0
  25. package/dist/delivery/delivery.test.d.ts +1 -0
  26. package/dist/delivery/delivery.test.js +234 -0
  27. package/dist/delivery/delivery.test.js.map +1 -0
  28. package/dist/delivery/evidence.d.ts +92 -0
  29. package/dist/delivery/evidence.js +126 -0
  30. package/dist/delivery/evidence.js.map +1 -0
  31. package/dist/delivery/index.d.ts +8 -0
  32. package/dist/delivery/index.js +5 -0
  33. package/dist/delivery/index.js.map +1 -0
  34. package/dist/delivery/policy.d.ts +237 -0
  35. package/dist/delivery/policy.js +246 -0
  36. package/dist/delivery/policy.js.map +1 -0
  37. package/dist/delivery/stage.d.ts +125 -0
  38. package/dist/delivery/stage.js +218 -0
  39. package/dist/delivery/stage.js.map +1 -0
  40. package/dist/dispatch.d.ts +15 -0
  41. package/dist/dispatch.js +397 -0
  42. package/dist/dispatch.js.map +1 -0
  43. package/dist/errors.d.ts +4 -0
  44. package/dist/errors.js +9 -0
  45. package/dist/errors.js.map +1 -0
  46. package/dist/genericCompatibility.test.d.ts +1 -0
  47. package/dist/genericCompatibility.test.js +92 -0
  48. package/dist/genericCompatibility.test.js.map +1 -0
  49. package/dist/git.d.ts +13 -0
  50. package/dist/git.js +65 -0
  51. package/dist/git.js.map +1 -0
  52. package/dist/github/client.d.ts +34 -0
  53. package/dist/github/client.js +143 -0
  54. package/dist/github/client.js.map +1 -0
  55. package/dist/github/commandIdentityPolicy.d.ts +13 -0
  56. package/dist/github/commandIdentityPolicy.js +46 -0
  57. package/dist/github/commandIdentityPolicy.js.map +1 -0
  58. package/dist/github/nativeIssueMetadata.d.ts +78 -0
  59. package/dist/github/nativeIssueMetadata.js +249 -0
  60. package/dist/github/nativeIssueMetadata.js.map +1 -0
  61. package/dist/github/projectDelivery.d.ts +68 -0
  62. package/dist/github/projectDelivery.js +540 -0
  63. package/dist/github/projectDelivery.js.map +1 -0
  64. package/dist/github/relationships.d.ts +69 -0
  65. package/dist/github/relationships.js +395 -0
  66. package/dist/github/relationships.js.map +1 -0
  67. package/dist/github/repo.d.ts +8 -0
  68. package/dist/github/repo.js +34 -0
  69. package/dist/github/repo.js.map +1 -0
  70. package/dist/index.d.ts +2 -0
  71. package/dist/index.js +3 -0
  72. package/dist/index.js.map +1 -0
  73. package/dist/issue.d.ts +86 -0
  74. package/dist/issue.js +347 -0
  75. package/dist/issue.js.map +1 -0
  76. package/dist/lifecycle.test.d.ts +1 -0
  77. package/dist/lifecycle.test.js +1118 -0
  78. package/dist/lifecycle.test.js.map +1 -0
  79. package/dist/logger.d.ts +21 -0
  80. package/dist/logger.js +86 -0
  81. package/dist/logger.js.map +1 -0
  82. package/dist/mcp/index.d.ts +5 -0
  83. package/dist/mcp/index.js +46 -0
  84. package/dist/mcp/index.js.map +1 -0
  85. package/dist/mcp/tools.d.ts +162 -0
  86. package/dist/mcp/tools.js +154 -0
  87. package/dist/mcp/tools.js.map +1 -0
  88. package/dist/pr.d.ts +146 -0
  89. package/dist/pr.js +972 -0
  90. package/dist/pr.js.map +1 -0
  91. package/dist/pr.test.d.ts +1 -0
  92. package/dist/pr.test.js +252 -0
  93. package/dist/pr.test.js.map +1 -0
  94. package/dist/review.d.ts +104 -0
  95. package/dist/review.js +228 -0
  96. package/dist/review.js.map +1 -0
  97. package/dist/review.test.d.ts +1 -0
  98. package/dist/review.test.js +327 -0
  99. package/dist/review.test.js.map +1 -0
  100. package/dist/services/agentReadinessService.d.ts +17 -0
  101. package/dist/services/agentReadinessService.js +225 -0
  102. package/dist/services/agentReadinessService.js.map +1 -0
  103. package/dist/services/deliveryAdmission.d.ts +33 -0
  104. package/dist/services/deliveryAdmission.js +122 -0
  105. package/dist/services/deliveryAdmission.js.map +1 -0
  106. package/dist/services/deliveryRecordService.d.ts +47 -0
  107. package/dist/services/deliveryRecordService.js +199 -0
  108. package/dist/services/deliveryRecordService.js.map +1 -0
  109. package/dist/services/legacyIssueMigration.d.ts +46 -0
  110. package/dist/services/legacyIssueMigration.js +313 -0
  111. package/dist/services/legacyIssueMigration.js.map +1 -0
  112. package/dist/services/worktreeRegistry.d.ts +67 -0
  113. package/dist/services/worktreeRegistry.js +545 -0
  114. package/dist/services/worktreeRegistry.js.map +1 -0
  115. package/dist/terminalMessages.d.ts +13 -0
  116. package/dist/terminalMessages.js +43 -0
  117. package/dist/terminalMessages.js.map +1 -0
  118. package/dist/utils/atomicJson.d.ts +6 -0
  119. package/dist/utils/atomicJson.js +78 -0
  120. package/dist/utils/atomicJson.js.map +1 -0
  121. package/dist/utils/filesystem.d.ts +9 -0
  122. package/dist/utils/filesystem.js +19 -0
  123. package/dist/utils/filesystem.js.map +1 -0
  124. package/dist/utils/lockfile.d.ts +12 -0
  125. package/dist/utils/lockfile.js +78 -0
  126. package/dist/utils/lockfile.js.map +1 -0
  127. package/dist/verification.d.ts +24 -0
  128. package/dist/verification.js +227 -0
  129. package/dist/verification.js.map +1 -0
  130. package/dist/worktree.d.ts +44 -0
  131. package/dist/worktree.js +255 -0
  132. package/dist/worktree.js.map +1 -0
  133. package/package.json +82 -0
  134. package/plugins/ai-delivery/.claude-plugin/plugin.json +6 -0
  135. package/plugins/ai-delivery/.mcp.json +8 -0
  136. package/plugins/ai-delivery/README.md +5 -0
  137. package/plugins/ai-delivery/dist/mcp-launcher.js +22 -0
  138. package/plugins/ai-delivery/skills/intake-create/SKILL.md +26 -0
  139. package/plugins/ai-delivery/skills/pr-handoff/SKILL.md +28 -0
  140. package/plugins/ai-delivery/skills/worktree-lifecycle/SKILL.md +24 -0
@@ -0,0 +1,249 @@
1
+ import { DeliveryError } from '../errors.js';
2
+ export const NATIVE_ISSUE_API_VERSION = '2026-03-10';
3
+ export function nativeIssueSettingsFromDeliveryConfig(config) {
4
+ return {
5
+ points: {
6
+ databaseId: config.native.points.databaseId,
7
+ name: config.native.points.name,
8
+ values: config.native.points.values.map((value) => Number(value)),
9
+ },
10
+ priority: {
11
+ databaseId: config.native.priority.databaseId,
12
+ name: config.native.priority.name,
13
+ values: config.native.priority.values,
14
+ },
15
+ };
16
+ }
17
+ export function validateConfiguredNativeTracking(input) {
18
+ const { config } = input;
19
+ if (!config.native.issueTypes.includes(input.issueType)) {
20
+ throw new DeliveryError(`Unsupported native issue type ${input.issueType}.`);
21
+ }
22
+ const settings = nativeIssueSettingsFromDeliveryConfig(config);
23
+ if (!settings.points.values.includes(input.points)) {
24
+ throw new DeliveryError(`Unsupported native ${settings.points.name} value.`);
25
+ }
26
+ if (!settings.priority.values.includes(input.priority)) {
27
+ throw new DeliveryError(`Unsupported native ${settings.priority.name} value.`);
28
+ }
29
+ for (const [name, value] of [
30
+ ['milestone', input.milestone],
31
+ ['parent', input.parentIssueNumber],
32
+ ...(input.blockedBy ?? []).map((value) => ['blocker', value]),
33
+ ]) {
34
+ assertPositiveNativeNumber(name, value);
35
+ }
36
+ if (input.issueNumber !== undefined &&
37
+ (input.parentIssueNumber === input.issueNumber || (input.blockedBy ?? []).includes(input.issueNumber))) {
38
+ throw new DeliveryError('An issue cannot be its own parent or blocker.');
39
+ }
40
+ if (new Set(input.blockedBy ?? []).size !== (input.blockedBy ?? []).length) {
41
+ throw new DeliveryError('Native blockers must be unique.');
42
+ }
43
+ }
44
+ function assertPositiveNativeNumber(name, value) {
45
+ if (value !== undefined && (!Number.isSafeInteger(value) || value <= 0)) {
46
+ throw new DeliveryError(`Native ${name} must be a positive issue or milestone number.`);
47
+ }
48
+ }
49
+ const apiHeaders = { 'X-GitHub-Api-Version': NATIVE_ISSUE_API_VERSION };
50
+ export async function clearConfiguredNativeIssuePoints(input) {
51
+ const existing = await getConfiguredNativeIssueMetadata(input);
52
+ if (existing.points === undefined) {
53
+ return;
54
+ }
55
+ const catalog = input.catalog ?? (await getConfiguredNativeIssueFieldCatalog(input));
56
+ assertCatalogMatchesSettings(catalog, input.settings);
57
+ await input.rest.request('DELETE /repos/{owner}/{repo}/issues/{issue_number}/issue-field-values/{issue_field_id}', {
58
+ headers: apiHeaders,
59
+ issue_field_id: catalog.points.id,
60
+ issue_number: input.issueNumber,
61
+ owner: input.owner,
62
+ repo: input.repo,
63
+ });
64
+ const readback = await getConfiguredNativeIssueMetadata(input);
65
+ if (readback.points !== undefined) {
66
+ throw new DeliveryError(`Native issue metadata readback retained Points ${String(readback.points)} after clearing issue #${String(input.issueNumber)}.`);
67
+ }
68
+ }
69
+ export async function getConfiguredNativeIssueFieldCatalog(input) {
70
+ const response = await input.rest.request('GET /orgs/{org}/issue-fields', {
71
+ headers: apiHeaders,
72
+ org: input.org,
73
+ });
74
+ return resolveNativeIssueFieldCatalog(response.data, input.settings);
75
+ }
76
+ export async function getConfiguredNativeIssueMetadata(input) {
77
+ const response = await input.rest.request('GET /repos/{owner}/{repo}/issues/{issue_number}/issue-field-values', {
78
+ headers: apiHeaders,
79
+ issue_number: input.issueNumber,
80
+ owner: input.owner,
81
+ repo: input.repo,
82
+ });
83
+ return parseConfiguredNativeIssueMetadata(response.data, input.settings);
84
+ }
85
+ export function parseConfiguredNativeIssueMetadata(raw, settings) {
86
+ if (!Array.isArray(raw)) {
87
+ throw new DeliveryError('GitHub returned an invalid issue-field value payload.');
88
+ }
89
+ const metadata = {};
90
+ const seen = new Set();
91
+ for (const candidate of raw) {
92
+ if (typeof candidate !== 'object' || candidate === null) {
93
+ continue;
94
+ }
95
+ const value = candidate;
96
+ const name = value.issue_field_name;
97
+ assertConfiguredReadbackField({ seen, settings, value });
98
+ if (name === settings.points.name) {
99
+ metadata.points = parseConfiguredPoints(value, settings);
100
+ }
101
+ else if (name === settings.priority.name) {
102
+ metadata.priority = parseConfiguredPriority(value, settings);
103
+ }
104
+ }
105
+ return metadata;
106
+ }
107
+ export function resolveNativeIssueFieldCatalog(raw, settings) {
108
+ if (!Array.isArray(raw)) {
109
+ throw new DeliveryError('GitHub returned an invalid organization issue-field payload.');
110
+ }
111
+ const fields = raw.filter((value) => typeof value === 'object' && value !== null);
112
+ return {
113
+ points: resolveSingleSelectField({
114
+ expectedId: settings.points.databaseId,
115
+ expectedValues: settings.points.values.map(String),
116
+ fields,
117
+ name: settings.points.name,
118
+ }),
119
+ priority: resolveSingleSelectField({
120
+ expectedId: settings.priority.databaseId,
121
+ expectedValues: settings.priority.values,
122
+ fields,
123
+ name: settings.priority.name,
124
+ }),
125
+ };
126
+ }
127
+ export async function setConfiguredNativeIssueMetadata(input) {
128
+ if (input.metadata.points === undefined && input.metadata.priority === undefined) {
129
+ return {};
130
+ }
131
+ const catalog = input.catalog ?? (await getConfiguredNativeIssueFieldCatalog(input));
132
+ assertCatalogMatchesSettings(catalog, input.settings);
133
+ const issueFieldValues = [];
134
+ if (input.metadata.points !== undefined) {
135
+ if (!input.settings.points.values.includes(input.metadata.points)) {
136
+ throw new DeliveryError(`Unsupported ${input.settings.points.name} value.`);
137
+ }
138
+ issueFieldValues.push({ field_id: catalog.points.id, value: String(input.metadata.points) });
139
+ }
140
+ if (input.metadata.priority !== undefined) {
141
+ if (!input.settings.priority.values.includes(input.metadata.priority)) {
142
+ throw new DeliveryError(`Unsupported ${input.settings.priority.name} value.`);
143
+ }
144
+ issueFieldValues.push({ field_id: catalog.priority.id, value: input.metadata.priority });
145
+ }
146
+ if (issueFieldValues.length === 0) {
147
+ return {};
148
+ }
149
+ const response = await input.rest.request('POST /repos/{owner}/{repo}/issues/{issue_number}/issue-field-values', {
150
+ headers: apiHeaders,
151
+ issue_field_values: issueFieldValues,
152
+ issue_number: input.issueNumber,
153
+ owner: input.owner,
154
+ repo: input.repo,
155
+ });
156
+ const readback = parseConfiguredNativeIssueMetadata(response.data, input.settings);
157
+ assertReadback(input.metadata, readback);
158
+ return readback;
159
+ }
160
+ function assertCatalogMatchesSettings(catalog, settings) {
161
+ for (const field of ['points', 'priority']) {
162
+ const actual = catalog[field];
163
+ const expected = settings[field];
164
+ if (!Number.isSafeInteger(actual.id) ||
165
+ actual.id <= 0 ||
166
+ actual.name !== expected.name ||
167
+ String(actual.id) !== expected.databaseId) {
168
+ throw new DeliveryError(`Native ${expected.name} catalog does not match configured issue field.`);
169
+ }
170
+ }
171
+ if (catalog.points.id === catalog.priority.id) {
172
+ throw new DeliveryError('Native Points and Priority catalogs must select distinct issue fields.');
173
+ }
174
+ }
175
+ function assertConfiguredReadbackField(input) {
176
+ const { seen, settings, value } = input;
177
+ const name = value.issue_field_name;
178
+ if (name !== settings.points.name && name !== settings.priority.name)
179
+ return;
180
+ if (seen.has(name)) {
181
+ throw new DeliveryError(`GitHub returned duplicate native ${name} field values.`);
182
+ }
183
+ seen.add(name);
184
+ if (value.data_type !== 'single_select') {
185
+ throw new DeliveryError(`Native ${name} readback must be a constrained single-select field value.`);
186
+ }
187
+ const expectedId = name === settings.points.name ? settings.points.databaseId : settings.priority.databaseId;
188
+ if (expectedId !== undefined && String(value.issue_field_id) !== expectedId) {
189
+ throw new DeliveryError(`Native ${name} readback does not match configured issue field.`);
190
+ }
191
+ }
192
+ function assertReadback(expected, actual) {
193
+ for (const key of ['points', 'priority']) {
194
+ if (expected[key] !== undefined && actual[key] !== expected[key]) {
195
+ throw new DeliveryError(`Native issue metadata readback mismatch for ${key}: expected ${String(expected[key])}, found ${String(actual[key])}.`);
196
+ }
197
+ }
198
+ }
199
+ function parseConfiguredPoints(value, settings) {
200
+ const rendered = readFieldValue(value);
201
+ const points = typeof rendered === 'number' ? rendered : Number(rendered);
202
+ if (!Number.isSafeInteger(points) ||
203
+ !settings.points.values.includes(points) ||
204
+ (settings.points.databaseId !== undefined && String(rendered) !== String(points))) {
205
+ throw new DeliveryError(`GitHub returned unsupported ${settings.points.name} value ${String(rendered)}.`);
206
+ }
207
+ return points;
208
+ }
209
+ function parseConfiguredPriority(value, settings) {
210
+ const rendered = readFieldValue(value);
211
+ if (typeof rendered !== 'string' || !settings.priority.values.includes(rendered)) {
212
+ throw new DeliveryError(`GitHub returned unsupported ${settings.priority.name} value ${String(rendered)}.`);
213
+ }
214
+ return rendered;
215
+ }
216
+ function readFieldValue(value) {
217
+ if (typeof value.single_select_option === 'object' && value.single_select_option !== null) {
218
+ const option = value.single_select_option;
219
+ if (option.name !== undefined) {
220
+ return option.name;
221
+ }
222
+ }
223
+ return value.value;
224
+ }
225
+ function resolveSingleSelectField({ expectedId, expectedValues, fields, name, }) {
226
+ const matches = fields.filter((field) => field.name === name);
227
+ if (matches.length !== 1) {
228
+ throw new DeliveryError(`Expected exactly one native ${name} issue field, found ${String(matches.length)}.`);
229
+ }
230
+ const [field] = matches;
231
+ if (field === undefined || field.data_type !== 'single_select' || !Number.isSafeInteger(field.id)) {
232
+ throw new DeliveryError(`Native ${name} must be a constrained single-select issue field.`);
233
+ }
234
+ if (expectedId !== undefined && String(field.id) !== expectedId) {
235
+ throw new DeliveryError(`Native ${name} does not match configured issue field ${expectedId}.`);
236
+ }
237
+ if (expectedValues !== undefined) {
238
+ const options = Array.isArray(field.options)
239
+ ? field.options.map((option) => typeof option === 'object' && option !== null ? option.name : null)
240
+ : [];
241
+ if (options.length !== expectedValues.length ||
242
+ new Set(options).size !== expectedValues.length ||
243
+ options.some((option) => typeof option !== 'string' || !expectedValues.includes(option))) {
244
+ throw new DeliveryError(`Native ${name} options do not match configured values.`);
245
+ }
246
+ }
247
+ return { dataType: 'single_select', id: field.id, name };
248
+ }
249
+ //# sourceMappingURL=nativeIssueMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nativeIssueMetadata.js","sourceRoot":"","sources":["../../src/github/nativeIssueMetadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import type { graphql as GraphQLType } from '@octokit/graphql';
2
+ import type { DeliveryConfig } from '../config/deliveryConfig.js';
3
+ export declare const PROJECT_DELIVERY_STATUSES: readonly ["Todo", "In Progress", "Blocked", "Done"];
4
+ export interface ProjectDeliverySettings {
5
+ number: number;
6
+ points: {
7
+ databaseId: string;
8
+ name: string;
9
+ values: readonly string[];
10
+ };
11
+ priority: {
12
+ databaseId: string;
13
+ name: string;
14
+ values: readonly string[];
15
+ };
16
+ statuses: Record<ProjectDeliveryStatus, string>;
17
+ statusField: string;
18
+ title: string;
19
+ }
20
+ export type ProjectDeliveryStatus = (typeof PROJECT_DELIVERY_STATUSES)[number];
21
+ export interface ProjectDeliveryArchiveReadback {
22
+ archived: true;
23
+ itemId: string;
24
+ }
25
+ export interface ProjectDeliveryConfiguration {
26
+ pointsFieldId: string;
27
+ priorityFieldId: string;
28
+ projectId: string;
29
+ projectNumber: number;
30
+ settings: ProjectDeliverySettings;
31
+ statusFieldId: string;
32
+ statusOptionIds: Record<ProjectDeliveryStatus, string>;
33
+ title: string;
34
+ writable: boolean;
35
+ }
36
+ export interface ProjectDeliveryRestoreReadback {
37
+ archived: false;
38
+ itemId: string;
39
+ }
40
+ export interface ProjectDeliveryStatusReadback {
41
+ itemId: string;
42
+ status: ProjectDeliveryStatus;
43
+ }
44
+ interface ProjectDeliveryInput {
45
+ configuration?: ProjectDeliveryConfiguration;
46
+ graphql: typeof GraphQLType;
47
+ issueNodeId: string;
48
+ org: string;
49
+ settings?: ProjectDeliverySettings;
50
+ }
51
+ export declare function archiveIssueProjectItem(input: ProjectDeliveryInput): Promise<null | ProjectDeliveryArchiveReadback>;
52
+ export declare function getIssueProjectStatus(input: ProjectDeliveryInput): Promise<null | ProjectDeliveryStatusReadback>;
53
+ export declare function getProjectDeliveryConfiguration(input: {
54
+ graphql: typeof GraphQLType;
55
+ org: string;
56
+ requireWritable?: boolean;
57
+ settings: ProjectDeliverySettings;
58
+ }): Promise<ProjectDeliveryConfiguration>;
59
+ export declare function projectSettingsFromDeliveryConfig(config: DeliveryConfig): ProjectDeliverySettings;
60
+ export declare function resolveProjectDeliveryConfiguration(raw: unknown, options: {
61
+ requireWritable?: boolean;
62
+ settings: ProjectDeliverySettings;
63
+ }): ProjectDeliveryConfiguration;
64
+ export declare function restoreIssueProjectItem(input: ProjectDeliveryInput): Promise<null | ProjectDeliveryRestoreReadback>;
65
+ export declare function syncIssueProjectStatus(input: ProjectDeliveryInput & {
66
+ status: ProjectDeliveryStatus;
67
+ }): Promise<ProjectDeliveryStatusReadback>;
68
+ export {};