@localizeaso/cli 0.1.0-preview.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/package.json +35 -0
- package/packages/asc-shared/dist/app-store-review.d.ts +610 -0
- package/packages/asc-shared/dist/app-store-review.d.ts.map +1 -0
- package/packages/asc-shared/dist/app-store-review.js +242 -0
- package/packages/asc-shared/dist/aso-keyword-map.d.ts +94 -0
- package/packages/asc-shared/dist/aso-keyword-map.d.ts.map +1 -0
- package/packages/asc-shared/dist/aso-keyword-map.js +292 -0
- package/packages/asc-shared/dist/constants.d.ts +15 -0
- package/packages/asc-shared/dist/constants.d.ts.map +1 -0
- package/packages/asc-shared/dist/constants.js +130 -0
- package/packages/asc-shared/dist/cross-localization.d.ts +29 -0
- package/packages/asc-shared/dist/cross-localization.d.ts.map +1 -0
- package/packages/asc-shared/dist/cross-localization.js +189 -0
- package/packages/asc-shared/dist/dedupe.d.ts +17 -0
- package/packages/asc-shared/dist/dedupe.d.ts.map +1 -0
- package/packages/asc-shared/dist/dedupe.js +104 -0
- package/packages/asc-shared/dist/design-tokens.d.ts +83 -0
- package/packages/asc-shared/dist/design-tokens.d.ts.map +1 -0
- package/packages/asc-shared/dist/design-tokens.js +73 -0
- package/packages/asc-shared/dist/index.d.ts +16 -0
- package/packages/asc-shared/dist/index.d.ts.map +1 -0
- package/packages/asc-shared/dist/index.js +16 -0
- package/packages/asc-shared/dist/keywords.d.ts +48 -0
- package/packages/asc-shared/dist/keywords.d.ts.map +1 -0
- package/packages/asc-shared/dist/keywords.js +376 -0
- package/packages/asc-shared/dist/limits.d.ts +11 -0
- package/packages/asc-shared/dist/limits.d.ts.map +1 -0
- package/packages/asc-shared/dist/limits.js +9 -0
- package/packages/asc-shared/dist/locales.d.ts +10 -0
- package/packages/asc-shared/dist/locales.d.ts.map +1 -0
- package/packages/asc-shared/dist/locales.js +314 -0
- package/packages/asc-shared/dist/monetization-boundary.d.ts +148 -0
- package/packages/asc-shared/dist/monetization-boundary.d.ts.map +1 -0
- package/packages/asc-shared/dist/monetization-boundary.js +365 -0
- package/packages/asc-shared/dist/post-approval-paths.d.ts +30 -0
- package/packages/asc-shared/dist/post-approval-paths.d.ts.map +1 -0
- package/packages/asc-shared/dist/post-approval-paths.js +25 -0
- package/packages/asc-shared/dist/review-gate-summary.d.ts +166 -0
- package/packages/asc-shared/dist/review-gate-summary.d.ts.map +1 -0
- package/packages/asc-shared/dist/review-gate-summary.js +354 -0
- package/packages/asc-shared/dist/reviewer-feedback.d.ts +19 -0
- package/packages/asc-shared/dist/reviewer-feedback.d.ts.map +1 -0
- package/packages/asc-shared/dist/reviewer-feedback.js +94 -0
- package/packages/asc-shared/dist/screenshot-review.d.ts +478 -0
- package/packages/asc-shared/dist/screenshot-review.d.ts.map +1 -0
- package/packages/asc-shared/dist/screenshot-review.js +17 -0
- package/packages/asc-shared/dist/supabase.types.d.ts +541 -0
- package/packages/asc-shared/dist/supabase.types.d.ts.map +1 -0
- package/packages/asc-shared/dist/supabase.types.js +5 -0
- package/packages/asc-shared/dist/validation.d.ts +42 -0
- package/packages/asc-shared/dist/validation.d.ts.map +1 -0
- package/packages/asc-shared/dist/validation.js +113 -0
- package/scripts/ensure-shared-build.mjs +76 -0
- package/scripts/export-astro-mcp-apps.mjs +841 -0
- package/scripts/localizeaso.mjs +2100 -0
- package/scripts/review-agent.mjs +9092 -0
- package/scripts/review-mcp.mjs +5931 -0
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
export const LOCALIZEASO_AGENT_PASS_PACKAGING_DECISION = {
|
|
2
|
+
defaultPaidPlan: 'agent',
|
|
3
|
+
defaultPaidPlanLabel: 'Agent Pass',
|
|
4
|
+
freeToolRole: 'acquisition_and_trust',
|
|
5
|
+
recommendedFreeTool: 'pricing_parity_cli',
|
|
6
|
+
pricingParityCliRole: 'Use pricing parity, Astro CSV import, keyword-context conversion, and manifest generation as the useful free/OSS CLI wedge; charge when the user creates a persistent LocalizeASO review job with consent UI, history, Figma/apply handoffs, app slots, or hosted submit.',
|
|
7
|
+
openSourceBoundary: 'Open-source local setup, keyword conversion, pricing-parity manifests, prompt/template generation, and already-approved local asc handoff helpers. Keep backend persistence, review history, consent screens, Figma apply plans, hosted AI, app slots, and hosted submit in paid LocalizeASO passes.',
|
|
8
|
+
primaryRevenueSurface: 'Human review/consent screens with current/proposed/final diffs, keyword evidence, warnings, approval receipts, review history, Figma apply plans, app slots, local asc handoffs after approval, and optional hosted AI or hosted submit convenience.',
|
|
9
|
+
freeToolIncludes: [
|
|
10
|
+
'local setup',
|
|
11
|
+
'Astro/CSV keyword conversion',
|
|
12
|
+
'prompt/template generation',
|
|
13
|
+
'pricing parity manifests',
|
|
14
|
+
],
|
|
15
|
+
byoPaidIncludes: [
|
|
16
|
+
'persistent review jobs',
|
|
17
|
+
'human review/consent screens with diffs and signal evidence',
|
|
18
|
+
'review history',
|
|
19
|
+
'approval receipts',
|
|
20
|
+
'reviewer feedback',
|
|
21
|
+
'Figma apply plans',
|
|
22
|
+
'app slots',
|
|
23
|
+
'local asc handoffs after human approval',
|
|
24
|
+
],
|
|
25
|
+
hostedUpsellIncludes: [
|
|
26
|
+
'hosted submit-only pass for BYO/Codex proposals after human approval',
|
|
27
|
+
'LocalizeASO-hosted AI proposal generation',
|
|
28
|
+
'hosted App Store Connect upload/submit convenience after human approval',
|
|
29
|
+
'larger app or team coverage',
|
|
30
|
+
],
|
|
31
|
+
defaultPricingModel: 'one_time_or_lifetime_byo_agent_pass',
|
|
32
|
+
recommendedOneTimePrices: {
|
|
33
|
+
agent: '$29',
|
|
34
|
+
submit: '$39',
|
|
35
|
+
launch: '$49',
|
|
36
|
+
global: '$149',
|
|
37
|
+
portfolio: '$299',
|
|
38
|
+
},
|
|
39
|
+
avoidPositioning: [
|
|
40
|
+
'usage-based LocalizeASO AI pricing for BYO Codex/AI runs',
|
|
41
|
+
'promising hosted submit inside Agent Pass',
|
|
42
|
+
'requiring App Store Connect credentials for proposal review',
|
|
43
|
+
],
|
|
44
|
+
};
|
|
45
|
+
export function localizeAsoAgentPassPackagingDecision() {
|
|
46
|
+
return {
|
|
47
|
+
...LOCALIZEASO_AGENT_PASS_PACKAGING_DECISION,
|
|
48
|
+
freeToolIncludes: [...LOCALIZEASO_AGENT_PASS_PACKAGING_DECISION.freeToolIncludes],
|
|
49
|
+
byoPaidIncludes: [...LOCALIZEASO_AGENT_PASS_PACKAGING_DECISION.byoPaidIncludes],
|
|
50
|
+
hostedUpsellIncludes: [...LOCALIZEASO_AGENT_PASS_PACKAGING_DECISION.hostedUpsellIncludes],
|
|
51
|
+
recommendedOneTimePrices: {
|
|
52
|
+
...LOCALIZEASO_AGENT_PASS_PACKAGING_DECISION.recommendedOneTimePrices,
|
|
53
|
+
},
|
|
54
|
+
avoidPositioning: [...LOCALIZEASO_AGENT_PASS_PACKAGING_DECISION.avoidPositioning],
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function buildLocalizeAsoPackageMatrix(packaging) {
|
|
58
|
+
const prices = packaging.recommendedOneTimePrices;
|
|
59
|
+
return [
|
|
60
|
+
{
|
|
61
|
+
id: 'free_local_cli',
|
|
62
|
+
label: 'Free/local CLI',
|
|
63
|
+
distribution: 'free',
|
|
64
|
+
purchaseModel: 'free_preview',
|
|
65
|
+
aiCostOwner: 'none',
|
|
66
|
+
appStoreConnectCredentialMode: 'not_required',
|
|
67
|
+
persistentReviewJobs: false,
|
|
68
|
+
reviewHistory: false,
|
|
69
|
+
figmaApplyPlans: false,
|
|
70
|
+
appSlotsIncluded: false,
|
|
71
|
+
appSlotLimit: 0,
|
|
72
|
+
hostedAi: false,
|
|
73
|
+
hostedSubmit: false,
|
|
74
|
+
localAscHandoffAfterApproval: true,
|
|
75
|
+
includes: [
|
|
76
|
+
'pricing parity JSON and manifest conversion',
|
|
77
|
+
'Astro/CSV keyword context conversion',
|
|
78
|
+
'prompt and proposal-template generation from exported bundles',
|
|
79
|
+
'already-approved local asc handoff helpers',
|
|
80
|
+
],
|
|
81
|
+
excludes: [
|
|
82
|
+
'persistent backend review jobs',
|
|
83
|
+
'human consent screen persistence',
|
|
84
|
+
'review history',
|
|
85
|
+
'Figma apply plans',
|
|
86
|
+
'hosted AI',
|
|
87
|
+
'hosted App Store Connect submit',
|
|
88
|
+
],
|
|
89
|
+
bestFor: 'Acquisition, trust, and local setup before the user creates a persisted LocalizeASO review job.',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
id: 'agent_pass',
|
|
93
|
+
label: 'Agent Pass',
|
|
94
|
+
distribution: 'paid',
|
|
95
|
+
purchaseModel: 'one_time_or_lifetime',
|
|
96
|
+
priceAnchor: prices.agent,
|
|
97
|
+
aiCostOwner: 'customer',
|
|
98
|
+
appStoreConnectCredentialMode: 'local_human_after_approval',
|
|
99
|
+
persistentReviewJobs: true,
|
|
100
|
+
reviewHistory: true,
|
|
101
|
+
figmaApplyPlans: true,
|
|
102
|
+
appSlotsIncluded: true,
|
|
103
|
+
appSlotLimit: 1,
|
|
104
|
+
hostedAi: false,
|
|
105
|
+
hostedSubmit: false,
|
|
106
|
+
localAscHandoffAfterApproval: true,
|
|
107
|
+
includes: [
|
|
108
|
+
'BYO Codex/AI proposal workflow',
|
|
109
|
+
'metadata, keyword, screenshot, and pricing review jobs',
|
|
110
|
+
'human review/consent screens with diffs and signal evidence',
|
|
111
|
+
'review history and reviewer feedback',
|
|
112
|
+
'Figma apply plans after approval',
|
|
113
|
+
'paid app slot for persisted review work',
|
|
114
|
+
'local asc handoffs after approval',
|
|
115
|
+
],
|
|
116
|
+
excludes: ['LocalizeASO-hosted AI proposal generation', 'hosted App Store Connect submit'],
|
|
117
|
+
bestFor: 'Developers who already pay for Codex or another AI agent and want LocalizeASO to store the review, consent, history, and handoff layer.',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
id: 'submit_pass',
|
|
121
|
+
label: 'Submit Pass',
|
|
122
|
+
distribution: 'paid',
|
|
123
|
+
purchaseModel: 'one_time_hosted_submit_credit_or_subscription',
|
|
124
|
+
priceAnchor: prices.submit,
|
|
125
|
+
aiCostOwner: 'customer',
|
|
126
|
+
appStoreConnectCredentialMode: 'hosted_after_approval',
|
|
127
|
+
persistentReviewJobs: true,
|
|
128
|
+
reviewHistory: true,
|
|
129
|
+
figmaApplyPlans: true,
|
|
130
|
+
appSlotsIncluded: true,
|
|
131
|
+
appSlotLimit: 1,
|
|
132
|
+
hostedAi: false,
|
|
133
|
+
hostedSubmit: true,
|
|
134
|
+
localAscHandoffAfterApproval: true,
|
|
135
|
+
includes: [
|
|
136
|
+
'BYO Codex/AI proposals',
|
|
137
|
+
'review history and consent screens',
|
|
138
|
+
'paid app slot for persisted review work',
|
|
139
|
+
'hosted App Store Connect upload/submit after approval',
|
|
140
|
+
],
|
|
141
|
+
excludes: ['LocalizeASO-hosted AI proposal generation', 'submit before human approval'],
|
|
142
|
+
bestFor: 'Users who want to keep proposal generation on their own AI subscription but pay LocalizeASO for approved hosted App Store Connect convenience.',
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
id: 'hosted_ai_pass',
|
|
146
|
+
label: 'Hosted AI Pass',
|
|
147
|
+
distribution: 'paid',
|
|
148
|
+
purchaseModel: 'one_time_hosted_ai_credit_or_subscription',
|
|
149
|
+
priceAnchor: prices.launch,
|
|
150
|
+
aiCostOwner: 'localizeaso',
|
|
151
|
+
appStoreConnectCredentialMode: 'local_human_after_approval',
|
|
152
|
+
persistentReviewJobs: true,
|
|
153
|
+
reviewHistory: true,
|
|
154
|
+
figmaApplyPlans: true,
|
|
155
|
+
appSlotsIncluded: true,
|
|
156
|
+
appSlotLimit: 1,
|
|
157
|
+
hostedAi: true,
|
|
158
|
+
hostedSubmit: false,
|
|
159
|
+
localAscHandoffAfterApproval: true,
|
|
160
|
+
includes: [
|
|
161
|
+
'LocalizeASO-hosted AI proposal generation',
|
|
162
|
+
'review history and consent screens',
|
|
163
|
+
'paid app slot for persisted review work',
|
|
164
|
+
'local asc handoffs after approval',
|
|
165
|
+
],
|
|
166
|
+
excludes: ['hosted App Store Connect submit unless the chosen pass includes it'],
|
|
167
|
+
bestFor: 'Users who want LocalizeASO to spend hosted AI for proposal generation but do not need hosted submit convenience.',
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
id: 'hosted_full_pass',
|
|
171
|
+
label: 'Hosted LocalizeASO Pass',
|
|
172
|
+
distribution: 'paid',
|
|
173
|
+
purchaseModel: 'one_time_hosted_credit_or_subscription',
|
|
174
|
+
priceAnchor: prices.global,
|
|
175
|
+
aiCostOwner: 'localizeaso',
|
|
176
|
+
appStoreConnectCredentialMode: 'hosted_after_approval',
|
|
177
|
+
persistentReviewJobs: true,
|
|
178
|
+
reviewHistory: true,
|
|
179
|
+
figmaApplyPlans: true,
|
|
180
|
+
appSlotsIncluded: true,
|
|
181
|
+
appSlotLimit: 2,
|
|
182
|
+
hostedAi: true,
|
|
183
|
+
hostedSubmit: true,
|
|
184
|
+
localAscHandoffAfterApproval: true,
|
|
185
|
+
includes: [
|
|
186
|
+
'LocalizeASO-hosted AI proposal generation',
|
|
187
|
+
'review history and consent screens',
|
|
188
|
+
'Figma apply plans after approval',
|
|
189
|
+
'paid app slot for persisted review work',
|
|
190
|
+
'hosted App Store Connect upload/submit after approval',
|
|
191
|
+
],
|
|
192
|
+
excludes: ['approval-free apply or submit'],
|
|
193
|
+
bestFor: 'Teams that want both hosted proposal generation and hosted App Store Connect convenience after human approval.',
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
id: 'portfolio_pass',
|
|
197
|
+
label: 'Portfolio Pass',
|
|
198
|
+
distribution: 'paid',
|
|
199
|
+
purchaseModel: 'one_time_hosted_credit_or_subscription',
|
|
200
|
+
priceAnchor: prices.portfolio,
|
|
201
|
+
aiCostOwner: 'localizeaso',
|
|
202
|
+
appStoreConnectCredentialMode: 'hosted_after_approval',
|
|
203
|
+
persistentReviewJobs: true,
|
|
204
|
+
reviewHistory: true,
|
|
205
|
+
figmaApplyPlans: true,
|
|
206
|
+
appSlotsIncluded: true,
|
|
207
|
+
appSlotLimit: 10,
|
|
208
|
+
hostedAi: true,
|
|
209
|
+
hostedSubmit: true,
|
|
210
|
+
localAscHandoffAfterApproval: true,
|
|
211
|
+
includes: [
|
|
212
|
+
'LocalizeASO-hosted AI proposal generation',
|
|
213
|
+
'portfolio review history and consent screens',
|
|
214
|
+
'Figma apply plans after approval',
|
|
215
|
+
'up to 10 paid app slots for persisted review work',
|
|
216
|
+
'hosted App Store Connect upload/submit after approval',
|
|
217
|
+
],
|
|
218
|
+
excludes: ['approval-free apply or submit'],
|
|
219
|
+
bestFor: 'Developers or teams managing a portfolio of App Store listings that need hosted proposal generation, history, and post-approval submit convenience.',
|
|
220
|
+
},
|
|
221
|
+
];
|
|
222
|
+
}
|
|
223
|
+
function buildLocalizeAsoValueLedger() {
|
|
224
|
+
return {
|
|
225
|
+
byoAgentOneTime: {
|
|
226
|
+
purchaseModel: 'cheap_one_time_or_lifetime',
|
|
227
|
+
aiCostOwner: 'customer',
|
|
228
|
+
includes: [
|
|
229
|
+
'BYO Codex/AI proposal generation',
|
|
230
|
+
'persistent backend review jobs',
|
|
231
|
+
'review history and approval receipts',
|
|
232
|
+
'human review UI with current/proposed/final diffs',
|
|
233
|
+
'Figma apply-plan comfort after approval',
|
|
234
|
+
'paid app slot for persisted review work',
|
|
235
|
+
'local asc handoff runbooks after approval',
|
|
236
|
+
],
|
|
237
|
+
excludes: [
|
|
238
|
+
'LocalizeASO-hosted AI spend',
|
|
239
|
+
'hosted App Store Connect upload/submit convenience',
|
|
240
|
+
'approval-free apply or submit',
|
|
241
|
+
],
|
|
242
|
+
},
|
|
243
|
+
hostedConvenience: {
|
|
244
|
+
purchaseModel: 'paid_hosted_credit_or_subscription',
|
|
245
|
+
aiCostOwner: 'localizeaso_or_customer_for_submit_only',
|
|
246
|
+
includes: [
|
|
247
|
+
'LocalizeASO-hosted proposal generation when the pass includes hosted AI',
|
|
248
|
+
'hosted backend review history and reviewer feedback',
|
|
249
|
+
'Figma comfort handoffs and apply plans after approval',
|
|
250
|
+
'paid app slots for persisted review work',
|
|
251
|
+
'hosted App Store Connect upload/submit convenience after approval',
|
|
252
|
+
],
|
|
253
|
+
excludes: [
|
|
254
|
+
'using hosted AI budget for BYO-only Agent Pass runs',
|
|
255
|
+
'collecting App Store Connect credentials before they are needed',
|
|
256
|
+
'submit, schedule, publish, or apply before human approval',
|
|
257
|
+
],
|
|
258
|
+
},
|
|
259
|
+
approvalGate: {
|
|
260
|
+
appliesBefore: 'figma_apply_or_app_store_connect_submit',
|
|
261
|
+
required: true,
|
|
262
|
+
agentCanBypass: false,
|
|
263
|
+
notes: [
|
|
264
|
+
'agents may generate proposals and refinements only',
|
|
265
|
+
'humans must approve the exact apply plan before Figma apply or App Store Connect submit',
|
|
266
|
+
'post-approval runbooks stay human-only even when hosted convenience is available',
|
|
267
|
+
],
|
|
268
|
+
},
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
export function buildLocalizeAsoMonetizationBoundary(reviewKind, options = {}) {
|
|
272
|
+
const packaging = localizeAsoAgentPassPackagingDecision();
|
|
273
|
+
return {
|
|
274
|
+
kind: 'localizeaso_monetization_boundary',
|
|
275
|
+
reviewKind,
|
|
276
|
+
...(options.reviewSurface ? { reviewSurface: options.reviewSurface } : {}),
|
|
277
|
+
freeLocalDistribution: {
|
|
278
|
+
purpose: 'OSS/free CLI distribution and agent onboarding',
|
|
279
|
+
recommendedFreeTool: packaging.recommendedFreeTool,
|
|
280
|
+
pricingParityCliRole: packaging.pricingParityCliRole,
|
|
281
|
+
openSourceBoundary: packaging.openSourceBoundary,
|
|
282
|
+
includes: [
|
|
283
|
+
'local pricing-parity manifest conversion',
|
|
284
|
+
'local Astro/CSV keyword-context conversion',
|
|
285
|
+
'local prompt and proposal-template generation from already exported bundles',
|
|
286
|
+
'local asc handoff execution after a human has approved exported changes',
|
|
287
|
+
],
|
|
288
|
+
excludes: [
|
|
289
|
+
'persistent LocalizeASO review jobs',
|
|
290
|
+
'backend review history',
|
|
291
|
+
'Figma apply-plan handoff',
|
|
292
|
+
'hosted AI proposal runs',
|
|
293
|
+
'hosted App Store Connect upload/submit convenience',
|
|
294
|
+
],
|
|
295
|
+
},
|
|
296
|
+
localAgentSafe: [
|
|
297
|
+
'pricing-parity-manifest',
|
|
298
|
+
'keyword-context-from-csv',
|
|
299
|
+
'keyword-prompt',
|
|
300
|
+
'proposal-template',
|
|
301
|
+
],
|
|
302
|
+
passRequired: {
|
|
303
|
+
reviewJobs: 'Agent Pass or hosted LocalizeASO pass',
|
|
304
|
+
reviewHistory: 'Agent Pass or hosted LocalizeASO pass',
|
|
305
|
+
figmaPlugin: 'Agent Pass or hosted LocalizeASO pass',
|
|
306
|
+
pricingReview: 'Agent Pass or hosted LocalizeASO pass with pricing review access',
|
|
307
|
+
appSlots: 'Agent Pass or hosted LocalizeASO pass with enough app slots',
|
|
308
|
+
hostedAi: 'hosted LocalizeASO pass only',
|
|
309
|
+
hostedSubmit: 'Submit Pass or hosted LocalizeASO pass',
|
|
310
|
+
},
|
|
311
|
+
agentPass: {
|
|
312
|
+
purchaseModel: 'one_time_or_lifetime',
|
|
313
|
+
aiCostOwner: 'customer',
|
|
314
|
+
hostedAiIncluded: false,
|
|
315
|
+
submitMode: 'local_asc_handoff_after_human_approval',
|
|
316
|
+
bestFor: 'Developers who bring Codex, another AI agent, Astro keyword research, and local asc/App Store Connect tooling.',
|
|
317
|
+
},
|
|
318
|
+
hostedPass: {
|
|
319
|
+
purchaseModel: 'one_time_hosted_credit_or_subscription',
|
|
320
|
+
aiCostOwner: 'localizeaso',
|
|
321
|
+
hostedAiIncluded: true,
|
|
322
|
+
submitMode: 'hosted_submit_after_human_approval',
|
|
323
|
+
bestFor: 'Teams that want both LocalizeASO-hosted proposal runs and hosted App Store Connect submit convenience.',
|
|
324
|
+
},
|
|
325
|
+
hostedSubmitPass: {
|
|
326
|
+
purchaseModel: 'one_time_hosted_submit_credit_or_subscription',
|
|
327
|
+
aiCostOwner: 'customer',
|
|
328
|
+
hostedAiIncluded: false,
|
|
329
|
+
submitMode: 'hosted_submit_after_human_approval',
|
|
330
|
+
bestFor: 'Developers who bring Codex or another AI agent for proposals but want LocalizeASO to perform the approved App Store Connect upload/submit step.',
|
|
331
|
+
},
|
|
332
|
+
hostedAiPass: {
|
|
333
|
+
purchaseModel: 'one_time_hosted_ai_credit_or_subscription',
|
|
334
|
+
aiCostOwner: 'localizeaso',
|
|
335
|
+
hostedAiIncluded: true,
|
|
336
|
+
submitMode: 'local_asc_or_hosted_submit_after_human_approval',
|
|
337
|
+
bestFor: 'Users who want LocalizeASO-hosted proposal generation; hosted submit remains a separate consent-gated capability unless bundled.',
|
|
338
|
+
},
|
|
339
|
+
revenueModel: {
|
|
340
|
+
defaultMotion: 'Use the free/open CLI as acquisition and trust, sell Agent Pass as the default BYO-agent product, and reserve hosted passes for LocalizeASO-paid AI or hosted App Store Connect convenience.',
|
|
341
|
+
freeSurface: 'Keep local setup, Astro CSV conversion, prompt/template generation, pricing-parity manifests, and already-approved local asc handoffs useful without checkout.',
|
|
342
|
+
paidSurface: 'Charge for persistent review jobs, human review/consent screens with diffs and signal evidence, approval history, reviewer feedback, Figma apply plans, app slots, hosted proposal allowance, and hosted upload/submit convenience.',
|
|
343
|
+
primaryRevenueSurface: packaging.primaryRevenueSurface,
|
|
344
|
+
recommendedDefaultPlan: 'agent',
|
|
345
|
+
upsellTriggers: [
|
|
346
|
+
'customer wants LocalizeASO to run hosted AI proposal generation',
|
|
347
|
+
'customer wants hosted App Store Connect submit convenience without LocalizeASO-hosted AI',
|
|
348
|
+
'customer wants hosted App Store Connect upload/submit convenience',
|
|
349
|
+
'customer needs more than one app slot or portfolio-level coverage',
|
|
350
|
+
],
|
|
351
|
+
avoid: [
|
|
352
|
+
'charging usage-based LocalizeASO AI fees when the customer brings Codex or another AI agent',
|
|
353
|
+
'including hosted upload/submit in Agent Pass',
|
|
354
|
+
'claiming the customer Codex subscription covers LocalizeASO backend or hosted submit costs',
|
|
355
|
+
],
|
|
356
|
+
},
|
|
357
|
+
packageMatrix: buildLocalizeAsoPackageMatrix(packaging),
|
|
358
|
+
valueLedger: buildLocalizeAsoValueLedger(),
|
|
359
|
+
packagingDecision: packaging,
|
|
360
|
+
recommendedOneTimePrices: packaging.recommendedOneTimePrices,
|
|
361
|
+
pricingGuidance: 'Keep the CLI/free surface useful for acquisition, sell Agent Pass for BYO human review, approval history, signal evidence, Figma handoffs, and app slots, offer hosted submit as a separate no-hosted-AI convenience pass, and upsell hosted AI only when LocalizeASO pays for proposal generation.',
|
|
362
|
+
appStoreConnectCredentials: 'Not required for BYO proposal generation, keyword import, or opening the human review/approval screen; only needed for hosted submit convenience or a human-run local asc handoff after explicit approval.',
|
|
363
|
+
agentInstruction: 'Use local agent-safe steps for research and proposals. Choose Agent Pass for BYO review/history/Figma handoffs, hosted submit pass for BYO proposals plus LocalizeASO App Store Connect convenience, or hosted AI pass when LocalizeASO should spend hosted AI.',
|
|
364
|
+
};
|
|
365
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { LocalizeAsoAgentPassPackagingDecision } from './monetization-boundary.js';
|
|
2
|
+
export type LocalizeAsoPostApprovalCredentialMode = 'not_required' | 'local_human' | 'external_human_upload' | 'localizeaso_connected';
|
|
3
|
+
export type LocalizeAsoPostApprovalMonetizationBoundary = {
|
|
4
|
+
requiresLocalizeAsoPass: true;
|
|
5
|
+
requiredLocalizeAsoCapabilities: ReadonlyArray<'byoAgent' | 'reviewHistory' | 'figmaPlugin' | 'pricingReview' | 'appStoreSubmit'>;
|
|
6
|
+
requiresHostedAi: false;
|
|
7
|
+
requiresHostedSubmitPass: boolean;
|
|
8
|
+
appStoreConnectCredentialMode: LocalizeAsoPostApprovalCredentialMode;
|
|
9
|
+
revenueBoundary: 'paid_review_handoff' | 'paid_figma_apply_handoff' | 'hosted_submit_convenience';
|
|
10
|
+
packageLabel?: string;
|
|
11
|
+
packageGuidance?: string;
|
|
12
|
+
packagingDecision?: LocalizeAsoAgentPassPackagingDecision;
|
|
13
|
+
notes: string[];
|
|
14
|
+
};
|
|
15
|
+
export type LocalizeAsoApplyPlanFingerprintRequirement = {
|
|
16
|
+
required: true;
|
|
17
|
+
source: 'apply_plan_export' | 'approval_receipt';
|
|
18
|
+
sourceCommand: string;
|
|
19
|
+
flag: '--expected-apply-plan-fingerprint';
|
|
20
|
+
protectedCommandsPreferred: true;
|
|
21
|
+
includedInCommands: boolean;
|
|
22
|
+
applyPlanFingerprint?: string;
|
|
23
|
+
note: string;
|
|
24
|
+
};
|
|
25
|
+
export declare const LOCALIZEASO_APPROVAL_PROTECTED_ACTION_BOUNDARY = "Approval only locks this reviewed proposal. Figma apply, metadata/keyword apply, pricing export or scheduling, App Store upload/submit, and applied/submitted status changes still require a separate explicit human post-approval action. Review rejection is a separate human-only review action with explicit rejection consent.";
|
|
26
|
+
export declare const LOCALIZEASO_POST_APPROVAL_PROTECTED_ACTION_BOUNDARY = "Approval only locks this reviewed proposal. Figma apply, metadata/keyword apply, pricing export or scheduling, App Store upload/submit, and applied/submitted status changes require a separate explicit human post-approval action. Review rejection uses explicit human rejection consent instead.";
|
|
27
|
+
export declare const LOCALIZEASO_REJECTION_PROTECTED_ACTION_BOUNDARY = "Review rejection is a separate human-only review action. It requires explicit human rejection consent after reviewing the proposal context and does not approve, apply, export, schedule, submit, or mark approved changes.";
|
|
28
|
+
export declare const LOCALIZEASO_DIRECT_ASC_MUTATION_PROTECTED_ACTION_BOUNDARY = "Direct App Store Connect mutations outside a fingerprinted LocalizeASO review handoff require explicit human direct-mutation consent after reviewing the final payload. Review rejection is a separate human-only review action with explicit rejection consent.";
|
|
29
|
+
export declare function postApprovalPathModeGuidance(mode?: string | null): "Use when App Store Connect credentials should stay local; inspect the approved export or CSV, verify the approved apply-plan fingerprint, and run asc from the human workstation after explicit human post-approval consent." | "Use to update LocalizeASO draft state or review history after approval; require explicit human post-approval consent plus the approved apply-plan fingerprint, and use another path for hosted App Store submit." | "Use only when the pass includes hosted submit and App Store Connect is connected; LocalizeASO performs the submit step only after human approval, explicit post-approval consent, and the approved apply-plan fingerprint." | "Use to update the LocalizeASO keyword inventory after approval with explicit human post-approval consent and the approved apply-plan fingerprint; keyword-store reviews do not submit anything to App Store Connect." | "Use inside the Figma plugin only after explicit human post-approval consent and after the approved apply preview matches the app, file, proposal version, apply-plan fingerprint, layer count, and skipped targets." | "Use after approved screenshots were uploaded by a human-run workflow. The status command only records that the external upload finished; hosted LocalizeASO upload or reorder requires the concrete applied/submitted screenshot review job ID, approved proposal ID/version, and the approved apply-plan fingerprint, while local asc, Transporter, or web UI uploads can keep App Store Connect credentials local." | "Use only to record the result of an external human-run post-approval step.";
|
|
30
|
+
//# sourceMappingURL=post-approval-paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-approval-paths.d.ts","sourceRoot":"","sources":["../src/post-approval-paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,4BAA4B,CAAC;AAExF,MAAM,MAAM,qCAAqC,GAC7C,cAAc,GACd,aAAa,GACb,uBAAuB,GACvB,uBAAuB,CAAC;AAE5B,MAAM,MAAM,2CAA2C,GAAG;IACxD,uBAAuB,EAAE,IAAI,CAAC;IAC9B,+BAA+B,EAAE,aAAa,CAC1C,UAAU,GACV,eAAe,GACf,aAAa,GACb,eAAe,GACf,gBAAgB,CACnB,CAAC;IACF,gBAAgB,EAAE,KAAK,CAAC;IACxB,wBAAwB,EAAE,OAAO,CAAC;IAClC,6BAA6B,EAAE,qCAAqC,CAAC;IACrE,eAAe,EACX,qBAAqB,GACrB,0BAA0B,GAC1B,2BAA2B,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,qCAAqC,CAAC;IAC1D,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,0CAA0C,GAAG;IACvD,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,EAAE,mBAAmB,GAAG,kBAAkB,CAAC;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,mCAAmC,CAAC;IAC1C,0BAA0B,EAAE,IAAI,CAAC;IACjC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,8CAA8C,wUAC4Q,CAAC;AAExU,eAAO,MAAM,mDAAmD,ySACwO,CAAC;AAEzS,eAAO,MAAM,+CAA+C,gOACmK,CAAC;AAEhO,eAAO,MAAM,yDAAyD,qQAC8L,CAAC;AAErQ,wBAAgB,4BAA4B,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,+iDAoBhE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export const LOCALIZEASO_APPROVAL_PROTECTED_ACTION_BOUNDARY = 'Approval only locks this reviewed proposal. Figma apply, metadata/keyword apply, pricing export or scheduling, App Store upload/submit, and applied/submitted status changes still require a separate explicit human post-approval action. Review rejection is a separate human-only review action with explicit rejection consent.';
|
|
2
|
+
export const LOCALIZEASO_POST_APPROVAL_PROTECTED_ACTION_BOUNDARY = 'Approval only locks this reviewed proposal. Figma apply, metadata/keyword apply, pricing export or scheduling, App Store upload/submit, and applied/submitted status changes require a separate explicit human post-approval action. Review rejection uses explicit human rejection consent instead.';
|
|
3
|
+
export const LOCALIZEASO_REJECTION_PROTECTED_ACTION_BOUNDARY = 'Review rejection is a separate human-only review action. It requires explicit human rejection consent after reviewing the proposal context and does not approve, apply, export, schedule, submit, or mark approved changes.';
|
|
4
|
+
export const LOCALIZEASO_DIRECT_ASC_MUTATION_PROTECTED_ACTION_BOUNDARY = 'Direct App Store Connect mutations outside a fingerprinted LocalizeASO review handoff require explicit human direct-mutation consent after reviewing the final payload. Review rejection is a separate human-only review action with explicit rejection consent.';
|
|
5
|
+
export function postApprovalPathModeGuidance(mode) {
|
|
6
|
+
if (mode === 'local_asc' || mode === 'local_asc_export') {
|
|
7
|
+
return 'Use when App Store Connect credentials should stay local; inspect the approved export or CSV, verify the approved apply-plan fingerprint, and run asc from the human workstation after explicit human post-approval consent.';
|
|
8
|
+
}
|
|
9
|
+
if (mode === 'localizeaso_draft') {
|
|
10
|
+
return 'Use to update LocalizeASO draft state or review history after approval; require explicit human post-approval consent plus the approved apply-plan fingerprint, and use another path for hosted App Store submit.';
|
|
11
|
+
}
|
|
12
|
+
if (mode === 'hosted_submit') {
|
|
13
|
+
return 'Use only when the pass includes hosted submit and App Store Connect is connected; LocalizeASO performs the submit step only after human approval, explicit post-approval consent, and the approved apply-plan fingerprint.';
|
|
14
|
+
}
|
|
15
|
+
if (mode === 'keyword_store') {
|
|
16
|
+
return 'Use to update the LocalizeASO keyword inventory after approval with explicit human post-approval consent and the approved apply-plan fingerprint; keyword-store reviews do not submit anything to App Store Connect.';
|
|
17
|
+
}
|
|
18
|
+
if (mode === 'figma_apply') {
|
|
19
|
+
return 'Use inside the Figma plugin only after explicit human post-approval consent and after the approved apply preview matches the app, file, proposal version, apply-plan fingerprint, layer count, and skipped targets.';
|
|
20
|
+
}
|
|
21
|
+
if (mode === 'app_store_upload') {
|
|
22
|
+
return 'Use after approved screenshots were uploaded by a human-run workflow. The status command only records that the external upload finished; hosted LocalizeASO upload or reorder requires the concrete applied/submitted screenshot review job ID, approved proposal ID/version, and the approved apply-plan fingerprint, while local asc, Transporter, or web UI uploads can keep App Store Connect credentials local.';
|
|
23
|
+
}
|
|
24
|
+
return 'Use only to record the result of an external human-run post-approval step.';
|
|
25
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import type { AppStoreFieldReviewProposal, AppStoreFieldReviewTarget } from './app-store-review.js';
|
|
2
|
+
import type { ScreenshotReviewProposalPayload } from './screenshot-review.js';
|
|
3
|
+
export type ReviewSignalAuditSummary = {
|
|
4
|
+
totalTargets: number;
|
|
5
|
+
keywordMappingNotApplicableCount: number;
|
|
6
|
+
missingKeywordMappingCount: number;
|
|
7
|
+
missingRationaleCount: number;
|
|
8
|
+
noWarningsReportedCount: number;
|
|
9
|
+
targetsNeedingAttentionCount: number;
|
|
10
|
+
allTargetsHaveReviewSignals: boolean;
|
|
11
|
+
};
|
|
12
|
+
export type ReviewSignalGapSummaryLineInput = {
|
|
13
|
+
keywordMappingNotApplicableCount?: number | null;
|
|
14
|
+
missingKeywordMappingCount?: number | null;
|
|
15
|
+
missingRationaleCount?: number | null;
|
|
16
|
+
noWarningsReportedCount?: number | null;
|
|
17
|
+
screenshotEvidenceGapCount?: number | null;
|
|
18
|
+
};
|
|
19
|
+
export declare function formatReviewSignalGapSummaryLine(input: ReviewSignalGapSummaryLineInput, options?: {
|
|
20
|
+
keywordMappingNotApplicable?: boolean;
|
|
21
|
+
includeNoGaps?: boolean;
|
|
22
|
+
}): string;
|
|
23
|
+
export type ReviewSignalAuditInput = {
|
|
24
|
+
assignedKeywords?: string[] | null;
|
|
25
|
+
unassignedKeywords?: string[] | null;
|
|
26
|
+
warnings?: string[] | null;
|
|
27
|
+
rationale?: string | null;
|
|
28
|
+
keywordMappingNotApplicable?: boolean | null;
|
|
29
|
+
};
|
|
30
|
+
export type ReviewSignalContract = {
|
|
31
|
+
kind: 'localizeaso_review_signal_contract';
|
|
32
|
+
requiredPerTarget: Array<'assignedKeywords' | 'unassignedKeywords' | 'warnings' | 'rationale'>;
|
|
33
|
+
requiredPerTargetLabels?: string[];
|
|
34
|
+
requiredReviewContext?: string[];
|
|
35
|
+
requiredReviewContextLabels?: string[];
|
|
36
|
+
targetLevels: string[];
|
|
37
|
+
emptySignalsMeanConsidered: true;
|
|
38
|
+
qualityGates: {
|
|
39
|
+
missingKeywordMapping: string;
|
|
40
|
+
missingRationale: string;
|
|
41
|
+
noWarningsReported: string;
|
|
42
|
+
};
|
|
43
|
+
agentInstruction: string;
|
|
44
|
+
humanReviewInstruction: string;
|
|
45
|
+
};
|
|
46
|
+
export declare function normalizeReviewSignalList(values: string[] | undefined | null): string[];
|
|
47
|
+
export declare function reviewSignalCount(values: string[] | undefined | null): number;
|
|
48
|
+
export declare function uniqueReviewSignalCount(values: Array<string[] | undefined | null>): number;
|
|
49
|
+
export declare function hasReviewSignals(values: string[] | undefined | null): boolean;
|
|
50
|
+
export declare function reviewSignalAudit(input: ReviewSignalAuditInput): {
|
|
51
|
+
hasAssignedKeywords: boolean;
|
|
52
|
+
hasUnassignedKeywords: boolean;
|
|
53
|
+
keywordMappingNotApplicable: boolean;
|
|
54
|
+
hasKeywordMapping: boolean;
|
|
55
|
+
hasWarnings: boolean;
|
|
56
|
+
hasRationale: boolean;
|
|
57
|
+
missingReviewSignals: string[];
|
|
58
|
+
noWarningsReported: boolean;
|
|
59
|
+
needsReviewerAttention: boolean;
|
|
60
|
+
};
|
|
61
|
+
export declare function reviewSignalAuditSummary(inputs: ReviewSignalAuditInput[]): ReviewSignalAuditSummary;
|
|
62
|
+
export declare function screenshotReviewSignalAuditInputs(payload: ScreenshotReviewProposalPayload): ReviewSignalAuditInput[];
|
|
63
|
+
export declare function screenshotReviewSignalAuditSummary(payload: ScreenshotReviewProposalPayload): ReviewSignalAuditSummary;
|
|
64
|
+
export declare function fieldReviewSignalAuditInputs(proposal: AppStoreFieldReviewProposal): ReviewSignalAuditInput[];
|
|
65
|
+
export declare function fieldReviewSignalAuditSummary(proposal: AppStoreFieldReviewProposal): ReviewSignalAuditSummary;
|
|
66
|
+
export type ReviewGateSummary = {
|
|
67
|
+
kind: 'localizeaso_review_readiness_gate';
|
|
68
|
+
reviewKind: 'screenshots' | 'field';
|
|
69
|
+
ready: boolean;
|
|
70
|
+
humanDecisionGate: 'complete' | 'pending';
|
|
71
|
+
signalGate: 'complete' | 'attention_required' | 'unknown';
|
|
72
|
+
pendingTargetCount: number;
|
|
73
|
+
targetsNeedingAttentionCount: number;
|
|
74
|
+
keywordMappingNotApplicableCount: number;
|
|
75
|
+
missingKeywordMappingCount: number;
|
|
76
|
+
missingRationaleCount: number;
|
|
77
|
+
noWarningsReportedCount: number;
|
|
78
|
+
screenshotEvidenceGapCount?: number;
|
|
79
|
+
screenshotMissingTargetCount?: number;
|
|
80
|
+
screenshotFallbackOnlyTargetCount?: number;
|
|
81
|
+
screenshotContextOnlyTargetCount?: number;
|
|
82
|
+
screenshotStrongEvidenceTargetCount?: number;
|
|
83
|
+
screenshotWeakEvidenceTargetCount?: number;
|
|
84
|
+
warnings: string[];
|
|
85
|
+
agentInstruction: string;
|
|
86
|
+
};
|
|
87
|
+
export type ReviewReadinessBoundary = {
|
|
88
|
+
kind: 'localizeaso_readiness_boundary';
|
|
89
|
+
reviewKind: ReviewGateSummary['reviewKind'];
|
|
90
|
+
readOnly: true;
|
|
91
|
+
mutatesReviewData: false;
|
|
92
|
+
mutatesAppStoreConnect: false;
|
|
93
|
+
approvalGranted: false;
|
|
94
|
+
postApprovalActionAllowed: false;
|
|
95
|
+
requiresHumanApprovalConsent: true;
|
|
96
|
+
requiresHumanPostApprovalConsentForApplySubmit: true;
|
|
97
|
+
protectedActions: string[];
|
|
98
|
+
nextHumanAction: string;
|
|
99
|
+
agentInstruction: string;
|
|
100
|
+
};
|
|
101
|
+
export type FieldReviewFinalValueBlockingIssue = {
|
|
102
|
+
target: AppStoreFieldReviewTarget;
|
|
103
|
+
code: 'INVALID_PRICING_FINAL_VALUE' | 'INVALID_METADATA_FINAL_VALUE' | 'INVALID_KEYWORD_FINAL_VALUE';
|
|
104
|
+
message: string;
|
|
105
|
+
};
|
|
106
|
+
export type FieldReviewFinalValueGate = {
|
|
107
|
+
kind: 'localizeaso_field_final_value_gate';
|
|
108
|
+
ready: boolean;
|
|
109
|
+
status: 'clear' | 'blocked';
|
|
110
|
+
blockingIssueCount: number;
|
|
111
|
+
warnings: string[];
|
|
112
|
+
agentInstruction: string;
|
|
113
|
+
};
|
|
114
|
+
export type ReadinessReviewGate = {
|
|
115
|
+
kind: 'localizeaso_readiness_review_gate';
|
|
116
|
+
phase: 'readiness_inspection';
|
|
117
|
+
reviewKind: ReviewGateSummary['reviewKind'];
|
|
118
|
+
ready: boolean;
|
|
119
|
+
humanReviewRequired: true;
|
|
120
|
+
readOnly: boolean;
|
|
121
|
+
approvalGranted: boolean;
|
|
122
|
+
postApprovalActionAllowed: boolean;
|
|
123
|
+
pendingTargetCount?: number;
|
|
124
|
+
humanDecisionGate?: ReviewGateSummary['humanDecisionGate'];
|
|
125
|
+
signalGate?: ReviewGateSummary['signalGate'];
|
|
126
|
+
keywordMappingNotApplicableCount?: number;
|
|
127
|
+
screenshotEvidenceGapCount?: number;
|
|
128
|
+
screenshotMissingTargetCount?: number;
|
|
129
|
+
screenshotFallbackOnlyTargetCount?: number;
|
|
130
|
+
screenshotContextOnlyTargetCount?: number;
|
|
131
|
+
screenshotStrongEvidenceTargetCount?: number;
|
|
132
|
+
screenshotWeakEvidenceTargetCount?: number;
|
|
133
|
+
finalValueGateStatus?: FieldReviewFinalValueGate['status'];
|
|
134
|
+
finalValueBlockingIssueCount?: number;
|
|
135
|
+
warnings: string[];
|
|
136
|
+
nextHumanAction: string;
|
|
137
|
+
agentInstruction: string;
|
|
138
|
+
};
|
|
139
|
+
export declare function buildReviewGateSummary(params: {
|
|
140
|
+
reviewKind: ReviewGateSummary['reviewKind'];
|
|
141
|
+
ready: boolean;
|
|
142
|
+
pendingTargetCount: number;
|
|
143
|
+
signalAudit?: ReviewSignalAuditSummary | null;
|
|
144
|
+
screenshotEvidence?: {
|
|
145
|
+
missingTargetCount?: number | null;
|
|
146
|
+
fallbackOnlyTargetCount?: number | null;
|
|
147
|
+
contextOnlyTargetCount?: number | null;
|
|
148
|
+
strongEvidenceTargetCount?: number | null;
|
|
149
|
+
weakEvidenceTargetCount?: number | null;
|
|
150
|
+
} | null;
|
|
151
|
+
}): ReviewGateSummary;
|
|
152
|
+
export declare function buildReviewReadinessBoundary(params: {
|
|
153
|
+
reviewKind: ReviewGateSummary['reviewKind'];
|
|
154
|
+
ready: boolean;
|
|
155
|
+
}): ReviewReadinessBoundary;
|
|
156
|
+
export declare function summarizeFieldReviewFinalValueBlockingIssue(issue: FieldReviewFinalValueBlockingIssue | unknown, index?: number): string;
|
|
157
|
+
export declare function buildFieldReviewFinalValueGate(blockingIssues: FieldReviewFinalValueBlockingIssue[]): FieldReviewFinalValueGate;
|
|
158
|
+
export declare function buildReadinessReviewGate(params: {
|
|
159
|
+
reviewKind: ReviewGateSummary['reviewKind'];
|
|
160
|
+
ready?: boolean;
|
|
161
|
+
reviewGateSummary?: ReviewGateSummary | null;
|
|
162
|
+
readinessBoundary?: ReviewReadinessBoundary | null;
|
|
163
|
+
finalValueGate?: FieldReviewFinalValueGate | null;
|
|
164
|
+
pendingTargetCount?: number;
|
|
165
|
+
}): ReadinessReviewGate;
|
|
166
|
+
//# sourceMappingURL=review-gate-summary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-gate-summary.d.ts","sourceRoot":"","sources":["../src/review-gate-summary.ts"],"names":[],"mappings":"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"}
|