@difflab/pi 0.2.0-rc.202609191441.52cd715 → 0.2.0-rc.202609191446.bc3a2e9
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/dist/extensions/index.js +20 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/review/index.d.ts +1 -1
- package/dist/review/index.d.ts.map +1 -1
- package/dist/review/review-state.d.ts +2 -0
- package/dist/review/review-state.d.ts.map +1 -1
- package/dist/tools/index.js +20 -4
- package/dist/tools/review.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/extensions/index.js
CHANGED
|
@@ -15589,10 +15589,14 @@ function projectSlug(repository) {
|
|
|
15589
15589
|
// src/review/review-state.ts
|
|
15590
15590
|
var reviewPublicationStateSchema = z6.object({
|
|
15591
15591
|
target: z6.string().optional(),
|
|
15592
|
+
bodies: z6.array(z6.string()).default([]),
|
|
15592
15593
|
comments: z6.array(z6.string()).default([]),
|
|
15593
15594
|
replies: z6.array(z6.string()).default([]),
|
|
15594
15595
|
overlayPath: z6.string().optional()
|
|
15595
15596
|
});
|
|
15597
|
+
function reviewBodyFingerprint(body) {
|
|
15598
|
+
return digest(body);
|
|
15599
|
+
}
|
|
15596
15600
|
function reviewCommentFingerprint(comment) {
|
|
15597
15601
|
return digest([comment.file, String(comment.line), comment.side ?? "RIGHT", comment.body].join("\x00"));
|
|
15598
15602
|
}
|
|
@@ -15610,7 +15614,7 @@ async function loadReviewPublicationState(cwd, vcs, number, homeDir) {
|
|
|
15610
15614
|
return { path, state: { ...parsed, target } };
|
|
15611
15615
|
} catch (error) {
|
|
15612
15616
|
if (error.code === "ENOENT") {
|
|
15613
|
-
return { path, state: { target, comments: [], replies: [] } };
|
|
15617
|
+
return { path, state: { target, bodies: [], comments: [], replies: [] } };
|
|
15614
15618
|
}
|
|
15615
15619
|
if (error instanceof SyntaxError || error instanceof z6.ZodError) {
|
|
15616
15620
|
throw new Error(`Cannot parse review publication state: ${path}`);
|
|
@@ -16159,6 +16163,9 @@ async function publishResolvedReview(review, params, model) {
|
|
|
16159
16163
|
await review.forge.markReady(review.pr.number);
|
|
16160
16164
|
await remote.publish(event);
|
|
16161
16165
|
if (promotion) {
|
|
16166
|
+
promotion.publication.state.bodies = [
|
|
16167
|
+
...new Set([...promotion.publication.state.bodies, ...promotion.bodyFingerprints])
|
|
16168
|
+
];
|
|
16162
16169
|
promotion.publication.state.comments = [
|
|
16163
16170
|
...new Set([...promotion.publication.state.comments, ...promotion.commentFingerprints])
|
|
16164
16171
|
];
|
|
@@ -16167,9 +16174,10 @@ async function publishResolvedReview(review, params, model) {
|
|
|
16167
16174
|
if (status === "CLOSE")
|
|
16168
16175
|
await review.forge.closePr(review.pr.number);
|
|
16169
16176
|
const finalPr = await review.forge.viewPr(String(review.pr.number));
|
|
16177
|
+
const promotedBodies = promotion?.promotedBodies ?? 0;
|
|
16170
16178
|
const promotedComments = promotion?.promotedComments ?? 0;
|
|
16171
16179
|
const promotedReplies = promotion?.promotedReplies ?? 0;
|
|
16172
|
-
return result(`Published #${review.pr.number} (${status}); promoted ${promotedComments} comments and ${promotedReplies} replies.`, { pr: finalPr ?? review.pr, status, promotedComments, promotedReplies });
|
|
16180
|
+
return result(`Published #${review.pr.number} (${status}); promoted ${promotedBodies} review bodies, ${promotedComments} comments, and ${promotedReplies} replies.`, { pr: finalPr ?? review.pr, status, promotedBodies, promotedComments, promotedReplies });
|
|
16173
16181
|
}
|
|
16174
16182
|
async function promoteLocalReview(review, remote, model, workingTree) {
|
|
16175
16183
|
const publication = await loadReviewPublicationState(review.cwd, review.vcs, review.pr.number);
|
|
@@ -16186,16 +16194,24 @@ async function promoteLocalReview(review, remote, model, workingTree) {
|
|
|
16186
16194
|
...comment,
|
|
16187
16195
|
body: withRemoteProvenance(comment.body, comment.author?.replace(/^Agent:\s*/, "") || model)
|
|
16188
16196
|
}));
|
|
16197
|
+
const body = draft.body.trim() ? withRemoteProvenance(draft.body, model) : "";
|
|
16198
|
+
const bodyFingerprints = body ? [reviewBodyFingerprint(body)] : [];
|
|
16189
16199
|
const commentFingerprints = comments.map(reviewCommentFingerprint);
|
|
16190
16200
|
const remoteDraft = await remote.readDraft();
|
|
16201
|
+
const knownBodies = new Set(publication.state.bodies);
|
|
16202
|
+
if (remoteDraft.body.trim())
|
|
16203
|
+
knownBodies.add(reviewBodyFingerprint(remoteDraft.body));
|
|
16204
|
+
const unpublishedBody = body && !knownBodies.has(reviewBodyFingerprint(body)) ? body : "";
|
|
16191
16205
|
const known = new Set([...publication.state.comments, ...remoteDraft.comments.map(reviewCommentFingerprint)]);
|
|
16192
16206
|
const unpublished = unpublishedReviewComments(comments, known);
|
|
16193
|
-
if (unpublished.length > 0)
|
|
16194
|
-
await remote.stage({ comments: unpublished, body:
|
|
16207
|
+
if (unpublished.length > 0 || unpublishedBody)
|
|
16208
|
+
await remote.stage({ comments: unpublished, body: unpublishedBody });
|
|
16195
16209
|
const promotedReplies = await promoteLocalReplies(review, remote, publication, model, workingTree);
|
|
16196
16210
|
return {
|
|
16197
16211
|
publication,
|
|
16212
|
+
bodyFingerprints,
|
|
16198
16213
|
commentFingerprints,
|
|
16214
|
+
promotedBodies: unpublishedBody ? 1 : 0,
|
|
16199
16215
|
promotedComments: unpublished.length,
|
|
16200
16216
|
promotedReplies
|
|
16201
16217
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export { mcp } from './mcp';
|
|
|
8
8
|
export { mise } from './extensions/misex';
|
|
9
9
|
export { createModeController, discoverAgentModes, resolveAgentMode } from './modes';
|
|
10
10
|
export { pi } from './pi';
|
|
11
|
-
export { loadReviewPublicationState, reviewCommentFingerprint, reviewReplyFingerprint, saveReviewPublicationState, unpublishedReviewComments, } from './review';
|
|
11
|
+
export { loadReviewPublicationState, reviewBodyFingerprint, reviewCommentFingerprint, reviewReplyFingerprint, saveReviewPublicationState, unpublishedReviewComments, } from './review';
|
|
12
12
|
export { computeProjectSlug, ensureStore, reviewsDir, sessionsDir, storeDir, storeGlobalRoot } from './store';
|
|
13
13
|
export { addComment, launch, listSessions, readSession, resolvePrSession, resolveReviewSession, resolveSession, toFindings, tuicrAvailable, } from './tuicr';
|
|
14
14
|
export { ensureZedReviewKeybinding, ensureZedReviewTask, zedKeymapPath, zedTasksPath, ZED_REVIEW_TASK_NAME, } from './zed';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1702,10 +1702,14 @@ function projectSlug(repository) {
|
|
|
1702
1702
|
// src/review/review-state.ts
|
|
1703
1703
|
var reviewPublicationStateSchema = z4.object({
|
|
1704
1704
|
target: z4.string().optional(),
|
|
1705
|
+
bodies: z4.array(z4.string()).default([]),
|
|
1705
1706
|
comments: z4.array(z4.string()).default([]),
|
|
1706
1707
|
replies: z4.array(z4.string()).default([]),
|
|
1707
1708
|
overlayPath: z4.string().optional()
|
|
1708
1709
|
});
|
|
1710
|
+
function reviewBodyFingerprint(body) {
|
|
1711
|
+
return digest(body);
|
|
1712
|
+
}
|
|
1709
1713
|
function reviewCommentFingerprint(comment) {
|
|
1710
1714
|
return digest([comment.file, String(comment.line), comment.side ?? "RIGHT", comment.body].join("\x00"));
|
|
1711
1715
|
}
|
|
@@ -1723,7 +1727,7 @@ async function loadReviewPublicationState(cwd, vcs, number, homeDir) {
|
|
|
1723
1727
|
return { path, state: { ...parsed, target } };
|
|
1724
1728
|
} catch (error) {
|
|
1725
1729
|
if (error.code === "ENOENT") {
|
|
1726
|
-
return { path, state: { target, comments: [], replies: [] } };
|
|
1730
|
+
return { path, state: { target, bodies: [], comments: [], replies: [] } };
|
|
1727
1731
|
}
|
|
1728
1732
|
if (error instanceof SyntaxError || error instanceof z4.ZodError) {
|
|
1729
1733
|
throw new Error(`Cannot parse review publication state: ${path}`);
|
|
@@ -2573,6 +2577,7 @@ export {
|
|
|
2573
2577
|
resolvePrSession,
|
|
2574
2578
|
resolveReviewSession,
|
|
2575
2579
|
resolveSession,
|
|
2580
|
+
reviewBodyFingerprint,
|
|
2576
2581
|
reviewCommentFingerprint,
|
|
2577
2582
|
reviewRecordName,
|
|
2578
2583
|
reviewReplyFingerprint,
|
package/dist/review/index.d.ts
CHANGED
|
@@ -3,6 +3,6 @@ export type { Finding, LocalReviewBackendOptions, ReviewBackend, ReviewComment,
|
|
|
3
3
|
export { parseThreadArtifact, renderReviewDoc, renderThreadArtifact, upsertThreadReply } from './review-markdown';
|
|
4
4
|
export { assertReviewEventSupported, createLocalReviewBackend, createRemoteReviewBackend, githubReviewSubmissionEndpoint, hasGitlabDraftNotes, parseGitlabDiffRefs, } from './review-backend';
|
|
5
5
|
export type { GitlabDiffRefs } from './review-backend';
|
|
6
|
-
export { loadReviewPublicationState, reviewCommentFingerprint, reviewReplyFingerprint, saveReviewPublicationState, unpublishedReviewComments, } from './review-state';
|
|
6
|
+
export { loadReviewPublicationState, reviewBodyFingerprint, reviewCommentFingerprint, reviewReplyFingerprint, saveReviewPublicationState, unpublishedReviewComments, } from './review-state';
|
|
7
7
|
export type { ReviewPublicationState } from './review-state';
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/review/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,MAAM,GACP,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,OAAO,EACP,yBAAyB,EACzB,aAAa,EACb,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,WAAW,EACX,UAAU,EACV,2BAA2B,EAC3B,kBAAkB,EAClB,QAAQ,GACT,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAClH,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,EAC9B,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/review/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,MAAM,GACP,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,OAAO,EACP,yBAAyB,EACzB,aAAa,EACb,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,WAAW,EACX,UAAU,EACV,2BAA2B,EAC3B,kBAAkB,EAClB,QAAQ,GACT,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAClH,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,EAC9B,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -2,10 +2,12 @@ import type { VcsInfo } from '../environment';
|
|
|
2
2
|
import type { ReviewComment } from './types';
|
|
3
3
|
export interface ReviewPublicationState {
|
|
4
4
|
target: string;
|
|
5
|
+
bodies: string[];
|
|
5
6
|
comments: string[];
|
|
6
7
|
replies: string[];
|
|
7
8
|
overlayPath?: string;
|
|
8
9
|
}
|
|
10
|
+
export declare function reviewBodyFingerprint(body: string): string;
|
|
9
11
|
export declare function reviewCommentFingerprint(comment: ReviewComment): string;
|
|
10
12
|
export declare function reviewReplyFingerprint(threadId: string, body: string): string;
|
|
11
13
|
export declare function unpublishedReviewComments(comments: readonly ReviewComment[], knownFingerprints: ReadonlySet<string>): ReviewComment[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-state.d.ts","sourceRoot":"","sources":["../../src/review/review-state.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"review-state.d.ts","sourceRoot":"","sources":["../../src/review/review-state.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAW7C,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAEvE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,SAAS,aAAa,EAAE,EAClC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,GACrC,aAAa,EAAE,CAEjB;AAED,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,sBAAsB,CAAA;CAAE,CAAC,CAe1D;AAED,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAI3G"}
|
package/dist/tools/index.js
CHANGED
|
@@ -1771,10 +1771,14 @@ function projectSlug(repository) {
|
|
|
1771
1771
|
// src/review/review-state.ts
|
|
1772
1772
|
var reviewPublicationStateSchema = z5.object({
|
|
1773
1773
|
target: z5.string().optional(),
|
|
1774
|
+
bodies: z5.array(z5.string()).default([]),
|
|
1774
1775
|
comments: z5.array(z5.string()).default([]),
|
|
1775
1776
|
replies: z5.array(z5.string()).default([]),
|
|
1776
1777
|
overlayPath: z5.string().optional()
|
|
1777
1778
|
});
|
|
1779
|
+
function reviewBodyFingerprint(body) {
|
|
1780
|
+
return digest(body);
|
|
1781
|
+
}
|
|
1778
1782
|
function reviewCommentFingerprint(comment) {
|
|
1779
1783
|
return digest([comment.file, String(comment.line), comment.side ?? "RIGHT", comment.body].join("\x00"));
|
|
1780
1784
|
}
|
|
@@ -1792,7 +1796,7 @@ async function loadReviewPublicationState(cwd, vcs, number, homeDir) {
|
|
|
1792
1796
|
return { path, state: { ...parsed, target } };
|
|
1793
1797
|
} catch (error) {
|
|
1794
1798
|
if (error.code === "ENOENT") {
|
|
1795
|
-
return { path, state: { target, comments: [], replies: [] } };
|
|
1799
|
+
return { path, state: { target, bodies: [], comments: [], replies: [] } };
|
|
1796
1800
|
}
|
|
1797
1801
|
if (error instanceof SyntaxError || error instanceof z5.ZodError) {
|
|
1798
1802
|
throw new Error(`Cannot parse review publication state: ${path}`);
|
|
@@ -2359,6 +2363,9 @@ async function publishResolvedReview(review, params, model) {
|
|
|
2359
2363
|
await review.forge.markReady(review.pr.number);
|
|
2360
2364
|
await remote.publish(event);
|
|
2361
2365
|
if (promotion) {
|
|
2366
|
+
promotion.publication.state.bodies = [
|
|
2367
|
+
...new Set([...promotion.publication.state.bodies, ...promotion.bodyFingerprints])
|
|
2368
|
+
];
|
|
2362
2369
|
promotion.publication.state.comments = [
|
|
2363
2370
|
...new Set([...promotion.publication.state.comments, ...promotion.commentFingerprints])
|
|
2364
2371
|
];
|
|
@@ -2367,9 +2374,10 @@ async function publishResolvedReview(review, params, model) {
|
|
|
2367
2374
|
if (status === "CLOSE")
|
|
2368
2375
|
await review.forge.closePr(review.pr.number);
|
|
2369
2376
|
const finalPr = await review.forge.viewPr(String(review.pr.number));
|
|
2377
|
+
const promotedBodies = promotion?.promotedBodies ?? 0;
|
|
2370
2378
|
const promotedComments = promotion?.promotedComments ?? 0;
|
|
2371
2379
|
const promotedReplies = promotion?.promotedReplies ?? 0;
|
|
2372
|
-
return result(`Published #${review.pr.number} (${status}); promoted ${promotedComments} comments and ${promotedReplies} replies.`, { pr: finalPr ?? review.pr, status, promotedComments, promotedReplies });
|
|
2380
|
+
return result(`Published #${review.pr.number} (${status}); promoted ${promotedBodies} review bodies, ${promotedComments} comments, and ${promotedReplies} replies.`, { pr: finalPr ?? review.pr, status, promotedBodies, promotedComments, promotedReplies });
|
|
2373
2381
|
}
|
|
2374
2382
|
async function promoteLocalReview(review, remote, model, workingTree) {
|
|
2375
2383
|
const publication = await loadReviewPublicationState(review.cwd, review.vcs, review.pr.number);
|
|
@@ -2386,16 +2394,24 @@ async function promoteLocalReview(review, remote, model, workingTree) {
|
|
|
2386
2394
|
...comment,
|
|
2387
2395
|
body: withRemoteProvenance(comment.body, comment.author?.replace(/^Agent:\s*/, "") || model)
|
|
2388
2396
|
}));
|
|
2397
|
+
const body = draft.body.trim() ? withRemoteProvenance(draft.body, model) : "";
|
|
2398
|
+
const bodyFingerprints = body ? [reviewBodyFingerprint(body)] : [];
|
|
2389
2399
|
const commentFingerprints = comments.map(reviewCommentFingerprint);
|
|
2390
2400
|
const remoteDraft = await remote.readDraft();
|
|
2401
|
+
const knownBodies = new Set(publication.state.bodies);
|
|
2402
|
+
if (remoteDraft.body.trim())
|
|
2403
|
+
knownBodies.add(reviewBodyFingerprint(remoteDraft.body));
|
|
2404
|
+
const unpublishedBody = body && !knownBodies.has(reviewBodyFingerprint(body)) ? body : "";
|
|
2391
2405
|
const known = new Set([...publication.state.comments, ...remoteDraft.comments.map(reviewCommentFingerprint)]);
|
|
2392
2406
|
const unpublished = unpublishedReviewComments(comments, known);
|
|
2393
|
-
if (unpublished.length > 0)
|
|
2394
|
-
await remote.stage({ comments: unpublished, body:
|
|
2407
|
+
if (unpublished.length > 0 || unpublishedBody)
|
|
2408
|
+
await remote.stage({ comments: unpublished, body: unpublishedBody });
|
|
2395
2409
|
const promotedReplies = await promoteLocalReplies(review, remote, publication, model, workingTree);
|
|
2396
2410
|
return {
|
|
2397
2411
|
publication,
|
|
2412
|
+
bodyFingerprints,
|
|
2398
2413
|
commentFingerprints,
|
|
2414
|
+
promotedBodies: unpublishedBody ? 1 : 0,
|
|
2399
2415
|
promotedComments: unpublished.length,
|
|
2400
2416
|
promotedReplies
|
|
2401
2417
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/tools/review.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqC,KAAK,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAMzG,OAAO,
|
|
1
|
+
{"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/tools/review.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqC,KAAK,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAMzG,OAAO,EAuBL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACxB,MAAM,WAAW,CAAC;AAiFnB,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAExF;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAalE;AAID,wBAAgB,iBAAiB,IAAI,SAAS,cAAc,EAAE,CAib7D;AAoLD,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,SAAS,kBAAkB,EAAE,GACrC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAwB/B"}
|