@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
package/dist/logger.js CHANGED
@@ -9,20 +9,20 @@ export const logDebug = (message) => {
9
9
  return;
10
10
  }
11
11
  if (process.env.DEBUG === 'true' || process.env.DEBUG === '1') {
12
- console.log(chalk.gray(formatTerminalLogLine('debug', message)));
12
+ console.error(chalk.gray(formatTerminalLogLine('debug', message)));
13
13
  }
14
14
  };
15
15
  export const logInfo = (message) => {
16
16
  if (logsSuppressed) {
17
17
  return;
18
18
  }
19
- console.log(chalk.blue(formatTerminalLogLine('info', message)));
19
+ console.error(chalk.blue(formatTerminalLogLine('info', message)));
20
20
  };
21
21
  export const logSuccess = (message) => {
22
22
  if (logsSuppressed) {
23
23
  return;
24
24
  }
25
- console.log(chalk.green(formatTerminalLogLine('success', message)));
25
+ console.error(chalk.green(formatTerminalLogLine('success', message)));
26
26
  };
27
27
  export const logWarn = (message) => {
28
28
  if (logsSuppressed) {
@@ -74,7 +74,7 @@ export const handleCommandError = (error) => {
74
74
  if (error instanceof CLIError && typeof error.hint === 'string' && error.hint.trim().length > 0) {
75
75
  const hintLine = `💡 Recovery: ${error.hint}`;
76
76
  if (logsSuppressed) {
77
- // logInfo writes to stdout and is silenced in JSON/MCP modes; route the
77
+ // logInfo is silenced in MCP mode; route the
78
78
  // recovery hint to stderr so failures stay diagnosable.
79
79
  console.error(chalk.blue(formatTerminalLogLine('info', hintLine)));
80
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,UAAmB,EAAQ,EAAE;IAC7D,cAAc,GAAG,UAAU,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAe,EAAE,EAAE;IAC1C,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;QAC9D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,EAAE;IACzC,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,EAAE;IAC5C,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,EAAE;IACzC,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAe,EAAE,EAAE;IAC1C,4EAA4E;IAC5E,yEAAyE;IACzE,2BAA2B;IAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAQ,EAAE;IACnD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AACtF,CAAC,CAAC;AAeF,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,CAA2B;IAC/B,IAAI,CAAsC;IAC1C,IAAI,CAAqB;IAElC,YAAY,OAAe,EAAE,UAA2B,EAAE;QACxD,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9F,KAAK,CAAC,eAAe,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAU,EAAE;IACpD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAc,EAAQ,EAAE;IACzD,QAAQ,CAAC,KAAK,YAAY,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,IAAI,KAAK,YAAY,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChG,MAAM,QAAQ,GAAG,gBAAgB,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,cAAc,EAAE,CAAC;YACnB,6CAA6C;YAC7C,wDAAwD;YACxD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;AACH,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- export declare const AI_DELIVERY_MCP_CONTRACT_VERSION: "ai-delivery.mcp@1";
2
+ export declare const AI_DELIVERY_MCP_CONTRACT_VERSION: "ai-delivery.mcp@2";
3
3
  export declare const AI_DELIVERY_MCP_TOOLS: readonly [{
4
4
  readonly name: "issue_comment";
5
5
  readonly commandName: "comment";
@@ -7,8 +7,8 @@ export declare const AI_DELIVERY_MCP_TOOLS: readonly [{
7
7
  readonly inputSchema: z.ZodObject<{
8
8
  kind: z.ZodEnum<{
9
9
  start: "start";
10
- progress: "progress";
11
10
  blocker: "blocker";
11
+ progress: "progress";
12
12
  decision: "decision";
13
13
  closeout: "closeout";
14
14
  }>;
@@ -33,6 +33,7 @@ export declare const AI_DELIVERY_MCP_TOOLS: readonly [{
33
33
  evidence: z.ZodArray<z.ZodURL>;
34
34
  details: z.ZodOptional<z.ZodString>;
35
35
  lengthCap: z.ZodOptional<z.ZodNumber>;
36
+ repo: z.ZodOptional<z.ZodString>;
36
37
  }, z.core.$strict>;
37
38
  }, {
38
39
  readonly name: "runtime_stage";
@@ -50,6 +51,7 @@ export declare const AI_DELIVERY_MCP_TOOLS: readonly [{
50
51
  maxNewOutputBytes: z.ZodNumber;
51
52
  maxCapturedOutputBytes: z.ZodOptional<z.ZodNumber>;
52
53
  }, z.core.$strict>>;
54
+ repo: z.ZodOptional<z.ZodString>;
53
55
  identity: z.ZodOptional<z.ZodString>;
54
56
  expectedSourceCommit: z.ZodString;
55
57
  expectedConfigDigest: z.ZodString;
@@ -63,6 +65,7 @@ export declare const AI_DELIVERY_MCP_TOOLS: readonly [{
63
65
  authority: z.ZodLiteral<"runtime:admit">;
64
66
  stageId: z.ZodString;
65
67
  expectedPriorAdmissionSha256: z.ZodNullable<z.ZodString>;
68
+ repo: z.ZodOptional<z.ZodString>;
66
69
  identity: z.ZodOptional<z.ZodString>;
67
70
  expectedSourceCommit: z.ZodString;
68
71
  expectedConfigDigest: z.ZodString;
@@ -87,7 +90,7 @@ export declare const AI_DELIVERY_MCP_TOOLS: readonly [{
87
90
  }, {
88
91
  readonly name: "issue_start";
89
92
  readonly commandName: "start";
90
- readonly description: "Create or resume a tracked issue and optionally prepare its worktree";
93
+ readonly description: "Create or resume a tracked issue and its GitHub-linked branch";
91
94
  readonly inputSchema: z.ZodObject<{
92
95
  body: z.ZodOptional<z.ZodOptional<z.ZodString>>;
93
96
  issueType: z.ZodOptional<z.ZodOptional<z.ZodString>>;
@@ -96,9 +99,8 @@ export declare const AI_DELIVERY_MCP_TOOLS: readonly [{
96
99
  title: z.ZodOptional<z.ZodString>;
97
100
  issueNumber: z.ZodOptional<z.ZodNumber>;
98
101
  request: z.ZodOptional<z.ZodString>;
99
- develop: z.ZodOptional<z.ZodBoolean>;
102
+ requestId: z.ZodOptional<z.ZodString>;
100
103
  resumeCreated: z.ZodOptional<z.ZodBoolean>;
101
- scratch: z.ZodOptional<z.ZodBoolean>;
102
104
  branch: z.ZodOptional<z.ZodString>;
103
105
  blockedBy: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
104
106
  labels: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -112,6 +114,7 @@ export declare const AI_DELIVERY_MCP_TOOLS: readonly [{
112
114
  readonly description: "List repository issues with native filters, named organization fields and pagination";
113
115
  readonly inputSchema: z.ZodObject<{
114
116
  query: z.ZodOptional<z.ZodString>;
117
+ repo: z.ZodOptional<z.ZodString>;
115
118
  state: z.ZodOptional<z.ZodEnum<{
116
119
  closed: "closed";
117
120
  all: "all";
@@ -136,6 +139,7 @@ export declare const AI_DELIVERY_MCP_TOOLS: readonly [{
136
139
  readonly description: "Search literal issue text in the selected repository with native filters and pagination";
137
140
  readonly inputSchema: z.ZodObject<{
138
141
  query: z.ZodString;
142
+ repo: z.ZodOptional<z.ZodString>;
139
143
  state: z.ZodOptional<z.ZodEnum<{
140
144
  closed: "closed";
141
145
  all: "all";
@@ -159,6 +163,7 @@ export declare const AI_DELIVERY_MCP_TOOLS: readonly [{
159
163
  readonly commandName: "update";
160
164
  readonly description: "Update native issue fields and exact relationship sets with readback";
161
165
  readonly inputSchema: z.ZodObject<{
166
+ repo: z.ZodOptional<z.ZodString>;
162
167
  blockedBy: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
163
168
  body: z.ZodOptional<z.ZodString>;
164
169
  issueNumber: z.ZodNumber;
@@ -185,10 +190,10 @@ export declare const AI_DELIVERY_MCP_TOOLS: readonly [{
185
190
  }, {
186
191
  readonly name: "issue_info";
187
192
  readonly commandName: "info";
188
- readonly description: "Read live issue metadata, relationships, Project status and registered worktree";
193
+ readonly description: "Read live issue metadata, relationships and Project status";
189
194
  readonly inputSchema: z.ZodObject<{
190
195
  issueNumber: z.ZodNumber;
191
- cached: z.ZodOptional<z.ZodBoolean>;
196
+ repo: z.ZodOptional<z.ZodString>;
192
197
  }, z.core.$strict>;
193
198
  }, {
194
199
  readonly name: "issue_ready_check";
@@ -198,45 +203,25 @@ export declare const AI_DELIVERY_MCP_TOOLS: readonly [{
198
203
  issueNumber: z.ZodNumber;
199
204
  repo: z.ZodOptional<z.ZodString>;
200
205
  }, z.core.$strict>;
201
- }, {
202
- readonly name: "issue_develop";
203
- readonly commandName: "develop";
204
- readonly description: "Prepare the one registered issue worktree after readiness passes";
205
- readonly inputSchema: z.ZodObject<{
206
- issueNumber: z.ZodNumber;
207
- assignee: z.ZodOptional<z.ZodString>;
208
- }, z.core.$strict>;
209
- }, {
210
- readonly name: "issue_verify";
211
- readonly commandName: "verify";
212
- readonly description: "Resume exact-head policy stages and produce versioned delivery evidence";
213
- readonly inputSchema: z.ZodObject<{
214
- issueNumber: z.ZodNumber;
215
- admit: z.ZodOptional<z.ZodArray<z.ZodString>>;
216
- prepublicationReview: z.ZodOptional<z.ZodString>;
217
- resourceBounds: z.ZodOptional<z.ZodObject<{
218
- maxAggregateRssBytes: z.ZodNumber;
219
- maxNewOutputBytes: z.ZodOptional<z.ZodNumber>;
220
- minFreeDiskBytes: z.ZodNumber;
221
- outputRoots: z.ZodOptional<z.ZodArray<z.ZodString>>;
222
- }, z.core.$strict>>;
223
- }, z.core.$strict>;
224
206
  }, {
225
207
  readonly name: "issue_pr_create";
226
208
  readonly commandName: "pr:create";
227
- readonly description: "Publish a verified draft or promote the unchanged reviewed PR";
209
+ readonly description: "Create or reuse a PR from its GitHub-linked issue branch";
228
210
  readonly inputSchema: z.ZodObject<{
211
+ repo: z.ZodOptional<z.ZodString>;
229
212
  issueNumber: z.ZodNumber;
230
213
  body: z.ZodOptional<z.ZodString>;
231
214
  draft: z.ZodOptional<z.ZodBoolean>;
232
215
  dryRun: z.ZodOptional<z.ZodBoolean>;
233
216
  title: z.ZodOptional<z.ZodString>;
217
+ headBranch: z.ZodOptional<z.ZodString>;
234
218
  }, z.core.$strict>;
235
219
  }, {
236
220
  readonly name: "issue_pr_info";
237
221
  readonly commandName: "pr:info";
238
- readonly description: "Inspect a PR by PR number or by its registered issue branch";
222
+ readonly description: "Inspect a PR by number or its GitHub-linked issue branch";
239
223
  readonly inputSchema: z.ZodObject<{
224
+ repo: z.ZodOptional<z.ZodString>;
240
225
  issueNumber: z.ZodOptional<z.ZodNumber>;
241
226
  prNumber: z.ZodOptional<z.ZodNumber>;
242
227
  }, z.core.$strict>;
@@ -245,6 +230,7 @@ export declare const AI_DELIVERY_MCP_TOOLS: readonly [{
245
230
  readonly commandName: "pr:review";
246
231
  readonly description: "Submit one existing exact-head independent review with the reviewer App role";
247
232
  readonly inputSchema: z.ZodObject<{
233
+ repo: z.ZodOptional<z.ZodString>;
248
234
  issueNumber: z.ZodNumber;
249
235
  prNumber: z.ZodNumber;
250
236
  artifact: z.ZodString;
@@ -256,8 +242,10 @@ export declare const AI_DELIVERY_MCP_TOOLS: readonly [{
256
242
  readonly commandName: "pr:merge";
257
243
  readonly description: "Guarded exact-head merge with live blocker, check and review readback";
258
244
  readonly inputSchema: z.ZodObject<{
245
+ repo: z.ZodOptional<z.ZodString>;
259
246
  issueNumber: z.ZodNumber;
260
247
  prNumber: z.ZodNumber;
248
+ reviewedHeadSha: z.ZodOptional<z.ZodString>;
261
249
  strategy: z.ZodOptional<z.ZodEnum<{
262
250
  merge: "merge";
263
251
  squash: "squash";
@@ -268,10 +256,12 @@ export declare const AI_DELIVERY_MCP_TOOLS: readonly [{
268
256
  }, {
269
257
  readonly name: "issue_finish";
270
258
  readonly commandName: "finish";
271
- readonly description: "Resume merge, issue completion and non-force worktree cleanup";
259
+ readonly description: "Resume a guarded merge and close its issue after merged-PR readback";
272
260
  readonly inputSchema: z.ZodObject<{
261
+ repo: z.ZodOptional<z.ZodString>;
273
262
  issueNumber: z.ZodNumber;
274
263
  prNumber: z.ZodNumber;
264
+ reviewedHeadSha: z.ZodOptional<z.ZodString>;
275
265
  strategy: z.ZodOptional<z.ZodEnum<{
276
266
  merge: "merge";
277
267
  squash: "squash";
@@ -279,27 +269,20 @@ export declare const AI_DELIVERY_MCP_TOOLS: readonly [{
279
269
  }>>;
280
270
  dryRun: z.ZodOptional<z.ZodBoolean>;
281
271
  }, z.core.$strict>;
282
- }, {
283
- readonly name: "issue_worktree_create";
284
- readonly commandName: "worktree:create";
285
- readonly description: "Prepare one explicit standalone worktree without an issue";
286
- readonly inputSchema: z.ZodObject<{
287
- name: z.ZodString;
288
- branch: z.ZodString;
289
- }, z.core.$strict>;
290
272
  }, {
291
273
  readonly name: "issue_worktree_transition_inspect";
292
274
  readonly commandName: "worktree:transition:inspect";
293
275
  readonly description: "Read a legacy issue row, original evidence and exact closure gaps without changing ownership";
294
276
  readonly inputSchema: z.ZodObject<{
277
+ repo: z.ZodOptional<z.ZodString>;
295
278
  issueNumber: z.ZodNumber;
296
279
  purpose: z.ZodEnum<{
297
280
  "active-resume": "active-resume";
298
281
  "merged-cleanup": "merged-cleanup";
299
282
  }>;
300
283
  disposition: z.ZodOptional<z.ZodEnum<{
301
- remove: "remove";
302
284
  retain: "retain";
285
+ remove: "remove";
303
286
  }>>;
304
287
  terminalPrNumber: z.ZodOptional<z.ZodNumber>;
305
288
  retainedHoldCommentIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
@@ -311,6 +294,7 @@ export declare const AI_DELIVERY_MCP_TOOLS: readonly [{
311
294
  readonly commandName: "worktree:transition:apply";
312
295
  readonly description: "Apply or resume one exact independently accepted transition with immutable preservation and closure proof";
313
296
  readonly inputSchema: z.ZodObject<{
297
+ repo: z.ZodOptional<z.ZodString>;
314
298
  authority: z.ZodLiteral<"worktree:transition">;
315
299
  planPath: z.ZodString;
316
300
  expectedPlanId: z.ZodString;
package/dist/mcp/tools.js CHANGED
@@ -1,8 +1,12 @@
1
1
  import { z } from 'zod';
2
2
  import { JournalInputSchema } from '../issueJournal.js';
3
3
  const Positive = z.number().int().positive();
4
- const Labels = z.array(z.string().regex(/^(?:area|risk):[^\s:]+$/u));
5
- export const AI_DELIVERY_MCP_CONTRACT_VERSION = 'ai-delivery.mcp@1';
4
+ const Labels = z.array(z.string().trim().min(1));
5
+ const Repo = z
6
+ .string()
7
+ .regex(/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/u)
8
+ .optional();
9
+ export const AI_DELIVERY_MCP_CONTRACT_VERSION = 'ai-delivery.mcp@2';
6
10
  const Tracking = {
7
11
  blockedBy: z.array(Positive).optional(),
8
12
  body: z.string().optional(),
@@ -19,6 +23,7 @@ const Tracking = {
19
23
  title: z.string().trim().min(1).max(256),
20
24
  };
21
25
  const IssueListing = {
26
+ repo: Repo,
22
27
  state: z.enum(['open', 'closed', 'all']).optional(),
23
28
  labels: z
24
29
  .array(z
@@ -40,6 +45,7 @@ const SearchText = z
40
45
  .max(256)
41
46
  .regex(/^[^"\\\r\n]+$/u);
42
47
  const RuntimeController = {
48
+ repo: Repo,
43
49
  identity: z.string().min(1).optional(),
44
50
  expectedSourceCommit: z.string().regex(/^[a-f0-9]{40}$/u),
45
51
  expectedConfigDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/u),
@@ -50,7 +56,7 @@ export const AI_DELIVERY_MCP_TOOLS = [
50
56
  name: 'issue_comment',
51
57
  commandName: 'comment',
52
58
  description: 'Post a typed issue journal with authoritative comment readback',
53
- inputSchema: JournalInputSchema,
59
+ inputSchema: JournalInputSchema.extend({ repo: Repo }),
54
60
  },
55
61
  {
56
62
  name: 'runtime_stage',
@@ -102,7 +108,7 @@ export const AI_DELIVERY_MCP_TOOLS = [
102
108
  {
103
109
  name: 'issue_start',
104
110
  commandName: 'start',
105
- description: 'Create or resume a tracked issue and optionally prepare its worktree',
111
+ description: 'Create or resume a tracked issue and its GitHub-linked branch',
106
112
  inputSchema: z.strictObject({
107
113
  ...Tracking,
108
114
  body: Tracking.body.optional(),
@@ -112,9 +118,8 @@ export const AI_DELIVERY_MCP_TOOLS = [
112
118
  title: Tracking.title.optional(),
113
119
  issueNumber: Positive.optional(),
114
120
  request: z.string().min(1).optional(),
115
- develop: z.boolean().optional(),
121
+ requestId: z.string().trim().min(1).max(256).optional(),
116
122
  resumeCreated: z.boolean().optional(),
117
- scratch: z.boolean().optional(),
118
123
  branch: z.string().min(1).optional(),
119
124
  }),
120
125
  },
@@ -136,6 +141,7 @@ export const AI_DELIVERY_MCP_TOOLS = [
136
141
  description: 'Update native issue fields and exact relationship sets with readback',
137
142
  inputSchema: z
138
143
  .strictObject({
144
+ repo: Repo,
139
145
  blockedBy: z.array(Positive).optional(),
140
146
  body: z.string().optional(),
141
147
  issueNumber: Positive,
@@ -157,8 +163,8 @@ export const AI_DELIVERY_MCP_TOOLS = [
157
163
  {
158
164
  name: 'issue_info',
159
165
  commandName: 'info',
160
- description: 'Read live issue metadata, relationships, Project status and registered worktree',
161
- inputSchema: z.strictObject({ issueNumber: Positive, cached: z.boolean().optional() }),
166
+ description: 'Read live issue metadata, relationships and Project status',
167
+ inputSchema: z.strictObject({ issueNumber: Positive, repo: Repo }),
162
168
  },
163
169
  {
164
170
  name: 'issue_ready_check',
@@ -166,53 +172,32 @@ export const AI_DELIVERY_MCP_TOOLS = [
166
172
  description: 'Evaluate deterministic readiness from live native issue state',
167
173
  inputSchema: z.strictObject({ issueNumber: Positive, repo: Tracking.repo }),
168
174
  },
169
- {
170
- name: 'issue_develop',
171
- commandName: 'develop',
172
- description: 'Prepare the one registered issue worktree after readiness passes',
173
- inputSchema: z.strictObject({ issueNumber: Positive, assignee: z.string().min(1).optional() }),
174
- },
175
- {
176
- name: 'issue_verify',
177
- commandName: 'verify',
178
- description: 'Resume exact-head policy stages and produce versioned delivery evidence',
179
- inputSchema: z.strictObject({
180
- issueNumber: Positive,
181
- admit: z.array(z.string().min(1)).optional(),
182
- prepublicationReview: z.string().min(1).optional(),
183
- resourceBounds: z
184
- .strictObject({
185
- maxAggregateRssBytes: z.number().int().positive().safe(),
186
- maxNewOutputBytes: z.number().int().positive().safe().optional(),
187
- minFreeDiskBytes: z.number().int().positive().safe(),
188
- outputRoots: z.array(z.string().min(1)).min(1).optional(),
189
- })
190
- .optional(),
191
- }),
192
- },
193
175
  {
194
176
  name: 'issue_pr_create',
195
177
  commandName: 'pr:create',
196
- description: 'Publish a verified draft or promote the unchanged reviewed PR',
178
+ description: 'Create or reuse a PR from its GitHub-linked issue branch',
197
179
  inputSchema: z.strictObject({
180
+ repo: Repo,
198
181
  issueNumber: Positive,
199
182
  body: z.string().min(1).optional(),
200
183
  draft: z.boolean().optional(),
201
184
  dryRun: z.boolean().optional(),
202
185
  title: z.string().min(1).optional(),
186
+ headBranch: z.string().min(1).optional(),
203
187
  }),
204
188
  },
205
189
  {
206
190
  name: 'issue_pr_info',
207
191
  commandName: 'pr:info',
208
- description: 'Inspect a PR by PR number or by its registered issue branch',
209
- inputSchema: z.strictObject({ issueNumber: Positive.optional(), prNumber: Positive.optional() }),
192
+ description: 'Inspect a PR by number or its GitHub-linked issue branch',
193
+ inputSchema: z.strictObject({ repo: Repo, issueNumber: Positive.optional(), prNumber: Positive.optional() }),
210
194
  },
211
195
  {
212
196
  name: 'issue_pr_review',
213
197
  commandName: 'pr:review',
214
198
  description: 'Submit one existing exact-head independent review with the reviewer App role',
215
199
  inputSchema: z.strictObject({
200
+ repo: Repo,
216
201
  issueNumber: Positive,
217
202
  prNumber: Positive,
218
203
  artifact: z.string().min(1),
@@ -225,8 +210,13 @@ export const AI_DELIVERY_MCP_TOOLS = [
225
210
  commandName: 'pr:merge',
226
211
  description: 'Guarded exact-head merge with live blocker, check and review readback',
227
212
  inputSchema: z.strictObject({
213
+ repo: Repo,
228
214
  issueNumber: Positive,
229
215
  prNumber: Positive,
216
+ reviewedHeadSha: z
217
+ .string()
218
+ .regex(/^[a-f0-9]{40}$/u)
219
+ .optional(),
230
220
  strategy: z.enum(['merge', 'squash', 'rebase']).optional(),
231
221
  dryRun: z.boolean().optional(),
232
222
  }),
@@ -234,25 +224,25 @@ export const AI_DELIVERY_MCP_TOOLS = [
234
224
  {
235
225
  name: 'issue_finish',
236
226
  commandName: 'finish',
237
- description: 'Resume merge, issue completion and non-force worktree cleanup',
227
+ description: 'Resume a guarded merge and close its issue after merged-PR readback',
238
228
  inputSchema: z.strictObject({
229
+ repo: Repo,
239
230
  issueNumber: Positive,
240
231
  prNumber: Positive,
232
+ reviewedHeadSha: z
233
+ .string()
234
+ .regex(/^[a-f0-9]{40}$/u)
235
+ .optional(),
241
236
  strategy: z.enum(['merge', 'squash', 'rebase']).optional(),
242
237
  dryRun: z.boolean().optional(),
243
238
  }),
244
239
  },
245
- {
246
- name: 'issue_worktree_create',
247
- commandName: 'worktree:create',
248
- description: 'Prepare one explicit standalone worktree without an issue',
249
- inputSchema: z.strictObject({ name: z.string().min(1), branch: z.string().min(1) }),
250
- },
251
240
  {
252
241
  name: 'issue_worktree_transition_inspect',
253
242
  commandName: 'worktree:transition:inspect',
254
243
  description: 'Read a legacy issue row, original evidence and exact closure gaps without changing ownership',
255
244
  inputSchema: z.strictObject({
245
+ repo: Repo,
256
246
  issueNumber: Positive,
257
247
  purpose: z.enum(['active-resume', 'merged-cleanup']),
258
248
  disposition: z.enum(['retain', 'remove']).optional(),
@@ -267,6 +257,7 @@ export const AI_DELIVERY_MCP_TOOLS = [
267
257
  commandName: 'worktree:transition:apply',
268
258
  description: 'Apply or resume one exact independently accepted transition with immutable preservation and closure proof',
269
259
  inputSchema: z.strictObject({
260
+ repo: Repo,
270
261
  authority: z.literal('worktree:transition'),
271
262
  planPath: z.string().min(1),
272
263
  expectedPlanId: z.string().regex(/^sha256:[a-f0-9]{64}$/u),
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
@@ -13,8 +13,8 @@ declare const InputSchema: z.ZodObject<{
13
13
  }>;
14
14
  scope: z.ZodEnum<{
15
15
  project: "project";
16
- user: "user";
17
16
  local: "local";
17
+ user: "user";
18
18
  }>;
19
19
  version: z.ZodOptional<z.ZodString>;
20
20
  dryRun: z.ZodDefault<z.ZodBoolean>;
@@ -11,8 +11,137 @@ import pkg from '../package.json' with { type: 'json' };
11
11
  import { AI_DELIVERY_MCP_TOOLS } from './mcp/tools.js';
12
12
  import { buildRuntimeAdmission, validateRuntimeAdmission } from './services/deliveryAdmission.js';
13
13
  import { retainedWorktreeTransitionProducerDigest } from './verification.js';
14
+ import { syntheticDiscoveryConfig } from './fixtures/discovery.js';
14
15
  const packageRoot = fileURLToPath(new URL('../', import.meta.url));
15
16
  const pluginRoot = join(packageRoot, 'plugins', 'ai-delivery');
17
+ test('README and delivery skill CLI examples name supported commands and required options', () => {
18
+ const cli = readFileSync(join(packageRoot, 'src', 'cli.ts'), 'utf8');
19
+ const declarations = [...cli.matchAll(/\.command\('([^']+)'\)/gu)];
20
+ const required = new Map(declarations.map((match) => {
21
+ const next = cli.indexOf('.command(', match.index + match[0].length);
22
+ return [
23
+ match[1],
24
+ [...cli.slice(match.index, next < 0 ? undefined : next).matchAll(/\.requiredOption\('--([a-z0-9-]+)/gu)].map((option) => `--${option[1]}`),
25
+ ];
26
+ }));
27
+ const globals = new Set(['--repo', '--repo-root', '--identity']);
28
+ for (const path of [
29
+ 'README.md',
30
+ 'plugins/ai-delivery/skills/worktree-lifecycle/SKILL.md',
31
+ 'plugins/ai-delivery/skills/pr-handoff/SKILL.md',
32
+ ]) {
33
+ const source = readFileSync(join(packageRoot, path), 'utf8').replace(/\\\r?\n\s*/gu, ' ');
34
+ for (const match of source.matchAll(/^ai-delivery\s+(.+)$/gmu)) {
35
+ const words = match[1].split(/\s+/u);
36
+ let index = 0;
37
+ while (globals.has(words[index] ?? ''))
38
+ index += 2;
39
+ const command = words[index];
40
+ const subcommand = command === 'plugin' ? words[index + 1] : undefined;
41
+ const help = execFileSync(process.execPath, [join(packageRoot, 'dist', 'cli.js'), command, ...(subcommand === undefined ? [] : [subcommand]), '--help'], { encoding: 'utf8', maxBuffer: 65536 });
42
+ for (const flag of required.get(command) ?? [])
43
+ assert.ok(words.includes(flag), `${path}: ${command} requires ${flag}`);
44
+ for (const flag of words.filter((word) => word.startsWith('--')))
45
+ assert.ok(globals.has(flag) || help.includes(flag), `${path}: ${command} does not support ${flag}`);
46
+ }
47
+ }
48
+ });
49
+ for (const launchCheckout of [false, true]) {
50
+ test(`the bundled launcher creates and updates repository B from ${launchCheckout ? 'checkout A' : 'a non-Git directory'} without an identity environment`, async () => {
51
+ const directory = realpathSync(mkdtempSync(join(tmpdir(), 'delivery-launch-routing-')));
52
+ if (launchCheckout) {
53
+ execFileSync('git', ['init', '-q', directory]);
54
+ execFileSync('git', ['remote', 'add', 'origin', 'https://github.com/example/a.git'], { cwd: directory });
55
+ }
56
+ const preload = join(directory, 'mock-github.mjs');
57
+ const calls = join(directory, 'requests.json');
58
+ const settings = join(directory, 'user.json');
59
+ writeFileSync(settings, JSON.stringify({
60
+ schemaVersion: 'ai-delivery.user@1',
61
+ roles: {
62
+ author: { authSource: 'personal', identity: 'operator', credentialEnv: { token: 'SYNTHETIC_TOKEN' } },
63
+ reviewer: {
64
+ identity: 'reviewer',
65
+ credentialEnv: { appId: 'REVIEW_APP', installationId: 'REVIEW_INSTALL', privateKeyPath: 'REVIEW_KEY' },
66
+ },
67
+ },
68
+ project: 1,
69
+ checkoutRoots: [],
70
+ pointsField: 'Estimate',
71
+ priorityField: 'Urgency',
72
+ statusField: 'Flow',
73
+ statuses: syntheticDiscoveryConfig.native.project.statuses,
74
+ }));
75
+ writeFileSync(preload, `
76
+ import {writeFileSync} from 'node:fs';
77
+ import {syntheticDiscoveryClients} from ${JSON.stringify(new URL('./fixtures/discovery.js', import.meta.url).href)};
78
+ const configuration=${JSON.stringify(syntheticDiscoveryConfig)};
79
+ const requests=[];
80
+ let issue={id:117,number:17,node_id:'ISSUE17',title:'Widget',body:'',state:'open',labels:[],html_url:'https://github.com/example/b/issues/17'};
81
+ const page=nodes=>({nodes,pageInfo:{hasNextPage:false,endCursor:null}});
82
+ globalThis.fetch=async(url,init)=>{
83
+ const path=new URL(String(url)).pathname;const method=init?.method??'GET';
84
+ requests.push({path,method});writeFileSync(${JSON.stringify(calls)},JSON.stringify(requests));
85
+ const json=init?.body?JSON.parse(init.body):{};
86
+ let data;
87
+ if(path==='/graphql'){
88
+ const query=json.query;
89
+ if(query.includes('ProjectDeliveryItems'))data={organization:{projectV2:{items:page([{id:'ITEM17',isArchived:false,content:{id:'ISSUE17'},fieldValueByName:{name:'Queued',optionId:'STATUS-0'}}])}}};
90
+ else if(query.includes('blockedBy('))data={repository:{issue:{parent:null,blockedBy:page([])}}};
91
+ else data=await syntheticDiscoveryClients({...configuration,repository:'example/'+(json.variables?.repo??'b')}).graphql(query,json.variables);
92
+ return new Response(JSON.stringify({data}),{status:200,headers:{'content-type':'application/json'}});
93
+ }
94
+ if(path.endsWith('/labels'))data=[{name:'enhancement'},{name:'bug'}];
95
+ else if(path.endsWith('/issue-field-values'))data=[];
96
+ else if(path.endsWith('/issues')&&method==='POST'){issue={...issue,...json};data=issue;}
97
+ else if(path.endsWith('/issues/17')){if(method==='PATCH')issue={...issue,...json};data=issue;}
98
+ else throw new Error('Unexpected synthetic request '+method+' '+path);
99
+ return new Response(JSON.stringify(data),{status:200,headers:{'content-type':'application/json'}});
100
+ };
101
+ `);
102
+ const transport = new StdioClientTransport({
103
+ command: process.execPath,
104
+ args: [join(pluginRoot, 'dist', 'mcp-launcher.js')],
105
+ cwd: directory,
106
+ env: {
107
+ PATH: process.env.PATH ?? '',
108
+ TMPDIR: tmpdir(),
109
+ AI_DELIVERY_CONFIG: settings,
110
+ SYNTHETIC_TOKEN: 'inert-personal-token',
111
+ NODE_OPTIONS: `--v8-pool-size=1 --import=${preload}`,
112
+ },
113
+ stderr: 'pipe',
114
+ });
115
+ const client = new Client({ name: 'actual-launch-routing', version: '1' });
116
+ try {
117
+ await client.connect(transport, { timeout: 30000 });
118
+ const created = await client.callTool({
119
+ name: 'issue_create',
120
+ arguments: { repo: 'example/b', title: 'Widget', labels: ['enhancement'] },
121
+ });
122
+ assert.equal(created.isError, undefined, JSON.stringify(created));
123
+ const updated = await client.callTool({
124
+ name: 'issue_update',
125
+ arguments: { repo: 'example/b', issueNumber: 17, labels: ['bug'] },
126
+ });
127
+ assert.equal(updated.isError, undefined, JSON.stringify(updated));
128
+ const unknown = await client.callTool({
129
+ name: 'issue_create',
130
+ arguments: { repo: 'example/b', title: 'Unknown', labels: ['missing-label'] },
131
+ });
132
+ assert.equal(unknown.isError, true);
133
+ assert.match(JSON.stringify(unknown), /Unknown repository label.*missing-label/u);
134
+ const requests = JSON.parse(readFileSync(calls, 'utf8'));
135
+ assert.equal(requests.filter((call) => call.path.endsWith('/issues') && call.method === 'POST').length, 1);
136
+ assert.equal(existsSync(join(directory, '.issue-cli')), false);
137
+ }
138
+ finally {
139
+ await client.close();
140
+ await transport.close();
141
+ rmSync(directory, { recursive: true, force: true });
142
+ }
143
+ });
144
+ }
16
145
  test('CLI reports the selected package version', () => {
17
146
  const displayed = execFileSync(process.execPath, [join(packageRoot, 'dist', 'cli.js'), '--version'], {
18
147
  encoding: 'utf8',