@agent-native/core 0.90.3 → 0.90.4
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/bin/agent-native.js +25 -3
- package/corpus/README.md +1 -1
- package/corpus/core/CHANGELOG.md +9 -0
- package/corpus/core/bin/agent-native.js +25 -3
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/engine/index.ts +1 -0
- package/corpus/core/src/agent/engine/registry.ts +63 -2
- package/corpus/core/src/cli/create.ts +35 -0
- package/corpus/core/src/cli/design-connect.ts +248 -0
- package/corpus/core/src/cli/index.ts +84 -7
- package/corpus/core/src/cli/workspacify.ts +34 -0
- package/corpus/core/src/client/history/VersionHistoryPanel.tsx +77 -47
- package/corpus/core/src/client/history/index.ts +3 -0
- package/corpus/core/src/client/history/use-history.ts +28 -0
- package/corpus/core/src/client/index.ts +8 -0
- package/corpus/core/src/client/review/index.ts +5 -0
- package/corpus/core/src/client/review/use-review.ts +40 -2
- package/corpus/core/src/history/actions/create-resource-version.ts +11 -8
- package/corpus/core/src/history/index.ts +0 -1
- package/corpus/core/src/history/registry.ts +24 -12
- package/corpus/core/src/history/store.ts +84 -53
- package/corpus/core/src/review/actions/consume-review-feedback.ts +15 -5
- package/corpus/core/src/review/actions/delete-review-comment.ts +15 -3
- package/corpus/core/src/review/actions/resolve-review-thread.ts +12 -5
- package/corpus/core/src/review/index.ts +0 -5
- package/corpus/core/src/review/registry.ts +24 -12
- package/corpus/core/src/review/store.ts +10 -7
- package/corpus/core/src/server/agent-chat-plugin.ts +6 -0
- package/corpus/core/src/server/credential-provider.ts +13 -3
- package/corpus/templates/assets/actions/_preset-skeleton-validation.ts +11 -11
- package/corpus/templates/assets/actions/generate-image.ts +64 -28
- package/corpus/templates/assets/app/components/generation/GenerationResults.tsx +1 -1
- package/corpus/templates/assets/app/routes/brand-kits.$id_.presets.$presetId.tsx +91 -74
- package/corpus/templates/assets/server/lib/generation.ts +29 -4
- package/corpus/templates/assets/server/lib/image-processing.ts +131 -0
- package/corpus/templates/calendar/.agents/skills/event-management/SKILL.md +24 -2
- package/corpus/templates/calendar/AGENTS.md +3 -0
- package/corpus/templates/calendar/actions/create-event.ts +8 -34
- package/corpus/templates/calendar/actions/event-action-helpers.ts +52 -0
- package/corpus/templates/calendar/actions/manage-event-draft.ts +7 -34
- package/corpus/templates/calendar/actions/update-event.ts +10 -23
- package/corpus/templates/calendar/app/components/calendar/AttendeeAutocomplete.tsx +47 -0
- package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +23 -0
- package/corpus/templates/calendar/app/components/calendar/EventAttendeesSection.tsx +59 -2
- package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +40 -1
- package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +34 -1
- package/corpus/templates/calendar/app/hooks/use-events.ts +6 -0
- package/corpus/templates/calendar/app/i18n/zh-TW.ts +4 -0
- package/corpus/templates/calendar/app/i18n-data.ts +40 -0
- package/corpus/templates/calendar/changelog/2026-07-07-you-can-mark-event-guests-as-optional-while-inviting-them-or.md +6 -0
- package/corpus/templates/calendar/server/handlers/events.ts +1 -0
- package/corpus/templates/calendar/server/lib/google-calendar.ts +4 -0
- package/corpus/templates/calendar/server/plugins/agent-chat.ts +1 -1
- package/corpus/templates/calendar/shared/api.ts +2 -0
- package/corpus/templates/clips/.agents/skills/ai-video-tools/SKILL.md +29 -3
- package/corpus/templates/clips/actions/generate-workflow.ts +19 -8
- package/corpus/templates/clips/actions/get-clips-ai-prefs.ts +36 -0
- package/corpus/templates/clips/actions/lib/clips-ai-prefs.ts +28 -0
- package/corpus/templates/clips/actions/regenerate-chapters.ts +21 -7
- package/corpus/templates/clips/actions/regenerate-summary.ts +26 -8
- package/corpus/templates/clips/actions/regenerate-title.ts +44 -7
- package/corpus/templates/clips/actions/update-clips-ai-prefs.ts +50 -0
- package/corpus/templates/clips/app/components/meetings/meeting-card.tsx +7 -2
- package/corpus/templates/clips/app/hooks/use-auto-title.ts +25 -10
- package/corpus/templates/clips/app/i18n/ar-SA.ts +28 -6
- package/corpus/templates/clips/app/i18n/de-DE.ts +28 -6
- package/corpus/templates/clips/app/i18n/en-US.ts +29 -6
- package/corpus/templates/clips/app/i18n/es-ES.ts +29 -6
- package/corpus/templates/clips/app/i18n/fr-FR.ts +30 -6
- package/corpus/templates/clips/app/i18n/hi-IN.ts +26 -6
- package/corpus/templates/clips/app/i18n/ja-JP.ts +27 -6
- package/corpus/templates/clips/app/i18n/ko-KR.ts +28 -6
- package/corpus/templates/clips/app/i18n/pt-BR.ts +28 -6
- package/corpus/templates/clips/app/i18n/zh-CN.ts +26 -6
- package/corpus/templates/clips/app/i18n/zh-TW.ts +25 -6
- package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +73 -0
- package/corpus/templates/clips/app/routes/_app.settings._index.tsx +1 -0
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +70 -2
- package/corpus/templates/clips/changelog/2026-07-07-ai-tools-can-include-the-full-video-not-just-the-transcript-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-clips-desktop-now-surfaces-meetings-and-dictate-directly-in-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-meeting-notes-now-explain-exactly-how-to-start-granola-style.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-meeting-start-alerts-now-include-separate-start-notes-and-jo.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-recordings-start-more-predictably-and-newly-saved-clips-refr.md +6 -0
- package/corpus/templates/clips/chrome-extension/public/manifest.json +1 -1
- package/corpus/templates/clips/desktop/src/app.tsx +435 -105
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +27 -21
- package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +23 -22
- package/corpus/templates/clips/desktop/src/styles.css +167 -2
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +1 -1
- package/corpus/templates/clips/desktop/src-tauri/src/notifications.rs +3 -7
- package/corpus/templates/clips/desktop/src-tauri/src/tray_meetings.rs +5 -4
- package/corpus/templates/clips/server/routes/_agent-native/clips/user-prefs.put.ts +16 -8
- package/corpus/templates/clips/shared/clips-ai-prefs.ts +81 -0
- package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +16 -1
- package/corpus/templates/design/actions/add-localhost-screens.ts +1 -0
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +345 -11
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +89 -14
- package/corpus/templates/design/app/components/design/bridge-security.ts +7 -1
- package/corpus/templates/design/app/components/design/multi-screen/types.ts +1 -1
- package/corpus/templates/design/app/i18n/zh-TW.ts +3 -0
- package/corpus/templates/design/app/i18n-data.ts +41 -0
- package/corpus/templates/design/changelog/2026-07-07-local-visual-edit-uses-live-app-iframes-for-click-to-edit-pr.md +6 -0
- package/dist/agent/engine/index.d.ts +1 -1
- package/dist/agent/engine/index.d.ts.map +1 -1
- package/dist/agent/engine/index.js +1 -1
- package/dist/agent/engine/index.js.map +1 -1
- package/dist/agent/engine/registry.d.ts +14 -0
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +56 -2
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +31 -0
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/design-connect.d.ts.map +1 -1
- package/dist/cli/design-connect.js +186 -0
- package/dist/cli/design-connect.js.map +1 -1
- package/dist/cli/index.js +76 -9
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/workspacify.d.ts.map +1 -1
- package/dist/cli/workspacify.js +30 -0
- package/dist/cli/workspacify.js.map +1 -1
- package/dist/client/history/VersionHistoryPanel.d.ts +1 -1
- package/dist/client/history/VersionHistoryPanel.d.ts.map +1 -1
- package/dist/client/history/VersionHistoryPanel.js +12 -5
- package/dist/client/history/VersionHistoryPanel.js.map +1 -1
- package/dist/client/history/index.d.ts +1 -1
- package/dist/client/history/index.d.ts.map +1 -1
- package/dist/client/history/index.js +1 -1
- package/dist/client/history/index.js.map +1 -1
- package/dist/client/history/use-history.d.ts +12 -0
- package/dist/client/history/use-history.d.ts.map +1 -1
- package/dist/client/history/use-history.js +6 -0
- package/dist/client/history/use-history.js.map +1 -1
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -2
- package/dist/client/index.js.map +1 -1
- package/dist/client/review/index.d.ts +1 -1
- package/dist/client/review/index.d.ts.map +1 -1
- package/dist/client/review/index.js +1 -1
- package/dist/client/review/index.js.map +1 -1
- package/dist/client/review/use-review.d.ts +23 -0
- package/dist/client/review/use-review.d.ts.map +1 -1
- package/dist/client/review/use-review.js +8 -0
- package/dist/client/review/use-review.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/history/actions/create-resource-version.js +7 -4
- package/dist/history/actions/create-resource-version.js.map +1 -1
- package/dist/history/index.d.ts +1 -1
- package/dist/history/index.d.ts.map +1 -1
- package/dist/history/index.js +1 -1
- package/dist/history/index.js.map +1 -1
- package/dist/history/registry.d.ts.map +1 -1
- package/dist/history/registry.js +14 -12
- package/dist/history/registry.js.map +1 -1
- package/dist/history/store.d.ts.map +1 -1
- package/dist/history/store.js +74 -49
- package/dist/history/store.js.map +1 -1
- package/dist/observability/routes.d.ts +3 -3
- package/dist/progress/routes.d.ts +1 -1
- package/dist/review/actions/consume-review-feedback.d.ts +1 -0
- package/dist/review/actions/consume-review-feedback.js +8 -2
- package/dist/review/actions/consume-review-feedback.js.map +1 -1
- package/dist/review/actions/delete-review-comment.d.ts +2 -1
- package/dist/review/actions/delete-review-comment.js +11 -3
- package/dist/review/actions/delete-review-comment.js.map +1 -1
- package/dist/review/actions/resolve-review-thread.d.ts +2 -1
- package/dist/review/actions/resolve-review-thread.js +5 -2
- package/dist/review/actions/resolve-review-thread.js.map +1 -1
- package/dist/review/index.d.ts +1 -1
- package/dist/review/index.d.ts.map +1 -1
- package/dist/review/index.js +1 -1
- package/dist/review/index.js.map +1 -1
- package/dist/review/registry.d.ts.map +1 -1
- package/dist/review/registry.js +14 -12
- package/dist/review/registry.js.map +1 -1
- package/dist/review/store.d.ts +3 -3
- package/dist/review/store.d.ts.map +1 -1
- package/dist/review/store.js +7 -4
- package/dist/review/store.js.map +1 -1
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +5 -0
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/credential-provider.d.ts +2 -0
- package/dist/server/credential-provider.d.ts.map +1 -1
- package/dist/server/credential-provider.js +13 -3
- package/dist/server/credential-provider.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consume-review-feedback.js","sourceRoot":"","sources":["../../../src/review/actions/consume-review-feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGpD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC9C,CAAC,CAAC;AAEH,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,qEAAqE;IACvE,MAAM;IACN,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QACvB,MAAM,SAAS,GAAG,GAAwC,CAAC;QAC3D,MAAM,8BAA8B,CAClC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,UAAU,EACf,SAAS,EACT,QAAQ,CACT,CAAC;QACF,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"consume-review-feedback.js","sourceRoot":"","sources":["../../../src/review/actions/consume-review-feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGpD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC9C,CAAC,CAAC;AAEH,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,qEAAqE;IACvE,MAAM;IACN,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QACvB,MAAM,SAAS,GAAG,GAAwC,CAAC;QAC3D,MAAM,8BAA8B,CAClC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,UAAU,EACf,SAAS,EACT,QAAQ,CACT,CAAC;QACF,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAC9C,IAAI,CAAC,UAAU,EACf,SAAS,EACT;YACE,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CACF,CAAC;QACF,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO;YACL,kBAAkB,EAAE,IAAI,CAAC,UAAU;YACnC,YAAY;SACb,CAAC;IACJ,CAAC;IACD,KAAK,EAAE;QACL,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACjB,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,EAAE,EAAE,IAAI,CAAC,UAAU;SACpB,CAAC;KACH;CACF,CAAC,CAAC","sourcesContent":["import { z } from \"zod\";\n\nimport { defineAction } from \"../../action.js\";\nimport { assertReviewableResourceAccess } from \"../registry.js\";\nimport { consumeReviewFeedback } from \"../store.js\";\nimport type { ReviewResourceContext } from \"../types.js\";\n\nconst schema = z.object({\n resourceType: z.string().min(1),\n resourceId: z.string().min(1),\n commentIds: z.array(z.string().min(1)).min(1),\n});\n\nexport default defineAction({\n description:\n \"Mark review feedback as consumed by the agent or reviewer workflow.\",\n schema,\n run: async (args, ctx) => {\n const actionCtx = ctx as ReviewResourceContext | undefined;\n await assertReviewableResourceAccess(\n args.resourceType,\n args.resourceId,\n actionCtx,\n \"editor\",\n );\n const updatedCount = await consumeReviewFeedback(\n args.commentIds,\n undefined,\n {\n resourceType: args.resourceType,\n resourceId: args.resourceId,\n },\n );\n if (updatedCount < 1) {\n throw new Error(\"No matching review comments to consume\");\n }\n return {\n consumedCommentIds: args.commentIds,\n updatedCount,\n };\n },\n audit: {\n target: (args) => ({\n type: args.resourceType,\n id: args.resourceId,\n }),\n },\n});\n"]}
|
|
@@ -4,7 +4,8 @@ declare const _default: import("../../action.js").ActionDefinition<{
|
|
|
4
4
|
commentId: string;
|
|
5
5
|
}, {
|
|
6
6
|
commentId: string;
|
|
7
|
-
deleted:
|
|
7
|
+
deleted: true;
|
|
8
|
+
updatedCount: number;
|
|
8
9
|
}>;
|
|
9
10
|
export default _default;
|
|
10
11
|
//# sourceMappingURL=delete-review-comment.d.ts.map
|
|
@@ -28,12 +28,16 @@ export default defineAction({
|
|
|
28
28
|
throw new Error("Review comment not found");
|
|
29
29
|
}
|
|
30
30
|
const isAuthor = Boolean(actionCtx?.userEmail) &&
|
|
31
|
-
comment.authorEmail ===
|
|
31
|
+
normalizeEmail(comment.authorEmail) ===
|
|
32
|
+
normalizeEmail(actionCtx?.userEmail);
|
|
32
33
|
if (!isAuthor && (!access || !roleSatisfies(access.role, "editor"))) {
|
|
33
34
|
throw new ForbiddenError("Not allowed to delete this review comment");
|
|
34
35
|
}
|
|
35
|
-
await deleteReviewComment(comment.id, actionCtx?.userEmail ?? null);
|
|
36
|
-
|
|
36
|
+
const updatedCount = await deleteReviewComment(comment.id, actionCtx?.userEmail ?? null);
|
|
37
|
+
if (updatedCount < 1) {
|
|
38
|
+
throw new Error("Review comment not found");
|
|
39
|
+
}
|
|
40
|
+
return { commentId: comment.id, deleted: true, updatedCount };
|
|
37
41
|
},
|
|
38
42
|
audit: {
|
|
39
43
|
target: (args) => ({
|
|
@@ -42,4 +46,8 @@ export default defineAction({
|
|
|
42
46
|
}),
|
|
43
47
|
},
|
|
44
48
|
});
|
|
49
|
+
function normalizeEmail(email) {
|
|
50
|
+
const normalized = email?.trim().toLowerCase();
|
|
51
|
+
return normalized || null;
|
|
52
|
+
}
|
|
45
53
|
//# sourceMappingURL=delete-review-comment.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-review-comment.js","sourceRoot":"","sources":["../../../src/review/actions/delete-review-comment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,+BAA+B,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGxE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC7B,CAAC,CAAC;AAEH,eAAe,YAAY,CAAC;IAC1B,WAAW,EAAE,+BAA+B;IAC5C,MAAM;IACN,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QACvB,MAAM,SAAS,GAAG,GAAwC,CAAC;QAC3D,MAAM,KAAK,GAAG;YACZ,SAAS,EAAE,SAAS,EAAE,SAAS,IAAI,IAAI;YACvC,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,IAAI;SAChC,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAClD,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,UAAU,EACf,SAAS,CACV,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE;YAChE,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC;SAC7B,CAAC,CAAC;QACH,IACE,CAAC,OAAO;YACR,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY;YAC1C,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,EACtC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,QAAQ,GACZ,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;YAC7B,OAAO,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"delete-review-comment.js","sourceRoot":"","sources":["../../../src/review/actions/delete-review-comment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,+BAA+B,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGxE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC7B,CAAC,CAAC;AAEH,eAAe,YAAY,CAAC;IAC1B,WAAW,EAAE,+BAA+B;IAC5C,MAAM;IACN,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QACvB,MAAM,SAAS,GAAG,GAAwC,CAAC;QAC3D,MAAM,KAAK,GAAG;YACZ,SAAS,EAAE,SAAS,EAAE,SAAS,IAAI,IAAI;YACvC,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,IAAI;SAChC,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAClD,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,UAAU,EACf,SAAS,CACV,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE;YAChE,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC;SAC7B,CAAC,CAAC;QACH,IACE,CAAC,OAAO;YACR,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY;YAC1C,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,EACtC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,QAAQ,GACZ,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;YAC7B,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC;gBACjC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,cAAc,CAAC,2CAA2C,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAC5C,OAAO,CAAC,EAAE,EACV,SAAS,EAAE,SAAS,IAAI,IAAI,CAC7B,CAAC;QACF,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,IAAa,EAAE,YAAY,EAAE,CAAC;IACzE,CAAC;IACD,KAAK,EAAE;QACL,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACjB,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,EAAE,EAAE,IAAI,CAAC,UAAU;SACpB,CAAC;KACH;CACF,CAAC,CAAC;AAEH,SAAS,cAAc,CAAC,KAAgC;IACtD,MAAM,UAAU,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,OAAO,UAAU,IAAI,IAAI,CAAC;AAC5B,CAAC","sourcesContent":["import { z } from \"zod\";\n\nimport { defineAction } from \"../../action.js\";\nimport { ForbiddenError } from \"../../sharing/access.js\";\nimport { roleSatisfies } from \"../../sharing/schema.js\";\nimport { resolveReviewableResourceAccess } from \"../registry.js\";\nimport { deleteReviewComment, getReviewCommentById } from \"../store.js\";\nimport type { ReviewResourceContext } from \"../types.js\";\n\nconst schema = z.object({\n resourceType: z.string().min(1),\n resourceId: z.string().min(1),\n commentId: z.string().min(1),\n});\n\nexport default defineAction({\n description: \"Soft-delete a review comment.\",\n schema,\n run: async (args, ctx) => {\n const actionCtx = ctx as ReviewResourceContext | undefined;\n const scope = {\n userEmail: actionCtx?.userEmail ?? null,\n orgId: actionCtx?.orgId ?? null,\n };\n const access = await resolveReviewableResourceAccess(\n args.resourceType,\n args.resourceId,\n actionCtx,\n );\n const comment = await getReviewCommentById(args.commentId, scope, {\n bypassScope: Boolean(access),\n });\n if (\n !comment ||\n comment.resourceType !== args.resourceType ||\n comment.resourceId !== args.resourceId\n ) {\n throw new Error(\"Review comment not found\");\n }\n const isAuthor =\n Boolean(actionCtx?.userEmail) &&\n normalizeEmail(comment.authorEmail) ===\n normalizeEmail(actionCtx?.userEmail);\n if (!isAuthor && (!access || !roleSatisfies(access.role, \"editor\"))) {\n throw new ForbiddenError(\"Not allowed to delete this review comment\");\n }\n const updatedCount = await deleteReviewComment(\n comment.id,\n actionCtx?.userEmail ?? null,\n );\n if (updatedCount < 1) {\n throw new Error(\"Review comment not found\");\n }\n return { commentId: comment.id, deleted: true as const, updatedCount };\n },\n audit: {\n target: (args) => ({\n type: args.resourceType,\n id: args.resourceId,\n }),\n },\n});\n\nfunction normalizeEmail(email: string | null | undefined): string | null {\n const normalized = email?.trim().toLowerCase();\n return normalized || null;\n}\n"]}
|
|
@@ -5,7 +5,8 @@ declare const _default: import("../../action.js").ActionDefinition<{
|
|
|
5
5
|
commentId?: string;
|
|
6
6
|
}, {
|
|
7
7
|
threadId: string;
|
|
8
|
-
resolved:
|
|
8
|
+
resolved: true;
|
|
9
|
+
updatedCount: number;
|
|
9
10
|
}>;
|
|
10
11
|
export default _default;
|
|
11
12
|
//# sourceMappingURL=resolve-review-thread.d.ts.map
|
|
@@ -30,11 +30,14 @@ export default defineAction({
|
|
|
30
30
|
if (!threadId) {
|
|
31
31
|
throw new Error("Provide threadId or commentId");
|
|
32
32
|
}
|
|
33
|
-
await resolveReviewThread(threadId, actionCtx?.userEmail ?? null, {
|
|
33
|
+
const updatedCount = await resolveReviewThread(threadId, actionCtx?.userEmail ?? null, {
|
|
34
34
|
resourceType: args.resourceType,
|
|
35
35
|
resourceId: args.resourceId,
|
|
36
36
|
});
|
|
37
|
-
|
|
37
|
+
if (updatedCount < 1) {
|
|
38
|
+
throw new Error("Review thread not found");
|
|
39
|
+
}
|
|
40
|
+
return { threadId, resolved: true, updatedCount };
|
|
38
41
|
},
|
|
39
42
|
audit: {
|
|
40
43
|
target: (args) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-review-thread.js","sourceRoot":"","sources":["../../../src/review/actions/resolve-review-thread.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGxE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,eAAe,YAAY,CAAC;IAC1B,WAAW,EAAE,6CAA6C;IAC1D,MAAM;IACN,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QACvB,MAAM,SAAS,GAAG,GAAwC,CAAC;QAC3D,MAAM,8BAA8B,CAClC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,UAAU,EACf,SAAS,EACT,QAAQ,CACT,CAAC;QACF,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,oBAAoB,CACxC,IAAI,CAAC,SAAS,EACd;gBACE,SAAS,EAAE,SAAS,EAAE,SAAS,IAAI,IAAI;gBACvC,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,IAAI;aAChC,EACD,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB,CAAC;YACF,IACE,CAAC,OAAO;gBACR,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY;gBAC1C,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,EACtC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9C,CAAC;YACD,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"resolve-review-thread.js","sourceRoot":"","sources":["../../../src/review/actions/resolve-review-thread.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGxE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,eAAe,YAAY,CAAC;IAC1B,WAAW,EAAE,6CAA6C;IAC1D,MAAM;IACN,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QACvB,MAAM,SAAS,GAAG,GAAwC,CAAC;QAC3D,MAAM,8BAA8B,CAClC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,UAAU,EACf,SAAS,EACT,QAAQ,CACT,CAAC;QACF,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,oBAAoB,CACxC,IAAI,CAAC,SAAS,EACd;gBACE,SAAS,EAAE,SAAS,EAAE,SAAS,IAAI,IAAI;gBACvC,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,IAAI;aAChC,EACD,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB,CAAC;YACF,IACE,CAAC,OAAO;gBACR,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY;gBAC1C,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,EACtC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9C,CAAC;YACD,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAC5C,QAAQ,EACR,SAAS,EAAE,SAAS,IAAI,IAAI,EAC5B;YACE,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CACF,CAAC;QACF,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAa,EAAE,YAAY,EAAE,CAAC;IAC7D,CAAC;IACD,KAAK,EAAE;QACL,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACjB,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,EAAE,EAAE,IAAI,CAAC,UAAU;SACpB,CAAC;KACH;CACF,CAAC,CAAC","sourcesContent":["import { z } from \"zod\";\n\nimport { defineAction } from \"../../action.js\";\nimport { assertReviewableResourceAccess } from \"../registry.js\";\nimport { getReviewCommentById, resolveReviewThread } from \"../store.js\";\nimport type { ReviewResourceContext } from \"../types.js\";\n\nconst schema = z.object({\n resourceType: z.string().min(1),\n resourceId: z.string().min(1),\n threadId: z.string().optional(),\n commentId: z.string().optional(),\n});\n\nexport default defineAction({\n description: \"Resolve an inline comment or review thread.\",\n schema,\n run: async (args, ctx) => {\n const actionCtx = ctx as ReviewResourceContext | undefined;\n await assertReviewableResourceAccess(\n args.resourceType,\n args.resourceId,\n actionCtx,\n \"editor\",\n );\n let threadId = args.threadId;\n if (!threadId && args.commentId) {\n const comment = await getReviewCommentById(\n args.commentId,\n {\n userEmail: actionCtx?.userEmail ?? null,\n orgId: actionCtx?.orgId ?? null,\n },\n { bypassScope: true },\n );\n if (\n !comment ||\n comment.resourceType !== args.resourceType ||\n comment.resourceId !== args.resourceId\n ) {\n throw new Error(\"Review comment not found\");\n }\n threadId = comment.threadId;\n }\n if (!threadId) {\n throw new Error(\"Provide threadId or commentId\");\n }\n const updatedCount = await resolveReviewThread(\n threadId,\n actionCtx?.userEmail ?? null,\n {\n resourceType: args.resourceType,\n resourceId: args.resourceId,\n },\n );\n if (updatedCount < 1) {\n throw new Error(\"Review thread not found\");\n }\n return { threadId, resolved: true as const, updatedCount };\n },\n audit: {\n target: (args) => ({\n type: args.resourceType,\n id: args.resourceId,\n }),\n },\n});\n"]}
|
package/dist/review/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { ReviewActorKind, ReviewComment, ReviewCommentKind, ReviewCommentStatus, ReviewMention, ReviewResolutionTarget, ReviewResourceAccess, ReviewResourceContext, ReviewResourceRole, ReviewScope, ReviewStatus, ReviewStatusEntry, ReviewableResourceRegistration, } from "./types.js";
|
|
2
2
|
export { extractReviewMentions, normalizeReviewMentions } from "./mentions.js";
|
|
3
3
|
export { __resetReviewableResourcesForTests, assertReviewableResourceAccess, getReviewableResource, listReviewableResources, registerReviewableResource, resolveReviewableResourceAccess, } from "./registry.js";
|
|
4
|
-
export { __resetReviewInitForTests,
|
|
4
|
+
export { __resetReviewInitForTests, ensureReviewTables, getReviewCommentById, getReviewStatus, queryReviewComments, } from "./store.js";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/review/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,8BAA8B,GAC/B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EACL,kCAAkC,EAClC,8BAA8B,EAC9B,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,GAChC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,yBAAyB,EACzB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/review/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,8BAA8B,GAC/B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EACL,kCAAkC,EAClC,8BAA8B,EAC9B,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,GAChC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
package/dist/review/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { extractReviewMentions, normalizeReviewMentions } from "./mentions.js";
|
|
2
2
|
export { __resetReviewableResourcesForTests, assertReviewableResourceAccess, getReviewableResource, listReviewableResources, registerReviewableResource, resolveReviewableResourceAccess, } from "./registry.js";
|
|
3
|
-
export { __resetReviewInitForTests,
|
|
3
|
+
export { __resetReviewInitForTests, ensureReviewTables, getReviewCommentById, getReviewStatus, queryReviewComments, } from "./store.js";
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/review/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/review/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EACL,kCAAkC,EAClC,8BAA8B,EAC9B,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,GAChC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,yBAAyB,EACzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/review/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EACL,kCAAkC,EAClC,8BAA8B,EAC9B,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,GAChC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAC","sourcesContent":["export type {\n ReviewActorKind,\n ReviewComment,\n ReviewCommentKind,\n ReviewCommentStatus,\n ReviewMention,\n ReviewResolutionTarget,\n ReviewResourceAccess,\n ReviewResourceContext,\n ReviewResourceRole,\n ReviewScope,\n ReviewStatus,\n ReviewStatusEntry,\n ReviewableResourceRegistration,\n} from \"./types.js\";\nexport { extractReviewMentions, normalizeReviewMentions } from \"./mentions.js\";\nexport {\n __resetReviewableResourcesForTests,\n assertReviewableResourceAccess,\n getReviewableResource,\n listReviewableResources,\n registerReviewableResource,\n resolveReviewableResourceAccess,\n} from \"./registry.js\";\nexport {\n __resetReviewInitForTests,\n ensureReviewTables,\n getReviewCommentById,\n getReviewStatus,\n queryReviewComments,\n} from \"./store.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/review/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/review/registry.ts"],"names":[],"mappings":"AAMA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,8BAA8B,EAC/B,MAAM,YAAY,CAAC;AAIpB,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,8BAA8B,GAC3C,IAAI,CAON;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,GACX,8BAA8B,GAAG,SAAS,CAE5C;AAED,wBAAgB,uBAAuB,IAAI,8BAA8B,EAAE,CAE1E;AAYD,wBAAsB,+BAA+B,CACnD,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,GAAG,CAAC,EAAE,qBAAqB,GAC1B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CA4BtC;AAED,wBAAsB,8BAA8B,CAClD,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,qBAAqB,GAAG,SAAS,EACtC,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC,oBAAoB,CAAC,CAY/B;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GACxC,UAAU,CAIZ;AAED,wBAAgB,kCAAkC,IAAI,IAAI,CAEzD"}
|
package/dist/review/registry.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ForbiddenError, resolveAccess } from "../sharing/access.js";
|
|
1
|
+
import { ForbiddenError, resolveAccess, } from "../sharing/access.js";
|
|
2
2
|
import { getShareableResource } from "../sharing/registry.js";
|
|
3
3
|
import { roleSatisfies } from "../sharing/schema.js";
|
|
4
4
|
const registrations = new Map();
|
|
@@ -14,13 +14,21 @@ export function getReviewableResource(type) {
|
|
|
14
14
|
export function listReviewableResources() {
|
|
15
15
|
return Array.from(registrations.values());
|
|
16
16
|
}
|
|
17
|
+
function accessContextFrom(ctx) {
|
|
18
|
+
if (!ctx)
|
|
19
|
+
return undefined;
|
|
20
|
+
return {
|
|
21
|
+
userEmail: ctx.userEmail ?? undefined,
|
|
22
|
+
orgId: ctx.orgId ?? undefined,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
17
25
|
export async function resolveReviewableResourceAccess(resourceType, resourceId, ctx) {
|
|
18
26
|
const registration = getReviewableResource(resourceType);
|
|
19
27
|
if (registration?.resolveAccess) {
|
|
20
28
|
return registration.resolveAccess(resourceId, ctx);
|
|
21
29
|
}
|
|
22
30
|
if (getShareableResource(resourceType)) {
|
|
23
|
-
const access = await resolveAccess(resourceType, resourceId);
|
|
31
|
+
const access = await resolveAccess(resourceType, resourceId, accessContextFrom(ctx));
|
|
24
32
|
if (!access) {
|
|
25
33
|
return null;
|
|
26
34
|
}
|
|
@@ -32,16 +40,10 @@ export async function resolveReviewableResourceAccess(resourceType, resourceId,
|
|
|
32
40
|
resource: access.resource,
|
|
33
41
|
};
|
|
34
42
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return {
|
|
40
|
-
role: "owner",
|
|
41
|
-
ownerEmail: userEmail,
|
|
42
|
-
orgId: ctx?.orgId ?? null,
|
|
43
|
-
visibility: "private",
|
|
44
|
-
};
|
|
43
|
+
// Fail closed: unregistered types, and registered types without an access
|
|
44
|
+
// resolver that aren't shareable, never invent ownership. bypassScope on
|
|
45
|
+
// review queries is only safe after a real resource ACL.
|
|
46
|
+
return null;
|
|
45
47
|
}
|
|
46
48
|
export async function assertReviewableResourceAccess(resourceType, resourceId, ctx, minimumRole) {
|
|
47
49
|
const access = await resolveReviewableResourceAccess(resourceType, resourceId, ctx);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/review/registry.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/review/registry.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ForbiddenError,\n resolveAccess,\n type AccessContext,\n} from \"../sharing/access.js\";\nimport { getShareableResource } from \"../sharing/registry.js\";\nimport { roleSatisfies, type Visibility } from \"../sharing/schema.js\";\nimport type {\n ReviewResourceAccess,\n ReviewResourceContext,\n ReviewResourceRole,\n ReviewableResourceRegistration,\n} from \"./types.js\";\n\nconst registrations = new Map<string, ReviewableResourceRegistration>();\n\nexport function registerReviewableResource(\n registration: ReviewableResourceRegistration,\n): void {\n if (!registration.type.trim()) {\n throw new Error(\n \"registerReviewableResource requires a non-empty resource type\",\n );\n }\n registrations.set(registration.type, registration);\n}\n\nexport function getReviewableResource(\n type: string,\n): ReviewableResourceRegistration | undefined {\n return registrations.get(type);\n}\n\nexport function listReviewableResources(): ReviewableResourceRegistration[] {\n return Array.from(registrations.values());\n}\n\nfunction accessContextFrom(\n ctx?: ReviewResourceContext,\n): AccessContext | undefined {\n if (!ctx) return undefined;\n return {\n userEmail: ctx.userEmail ?? undefined,\n orgId: ctx.orgId ?? undefined,\n };\n}\n\nexport async function resolveReviewableResourceAccess(\n resourceType: string,\n resourceId: string,\n ctx?: ReviewResourceContext,\n): Promise<ReviewResourceAccess | null> {\n const registration = getReviewableResource(resourceType);\n if (registration?.resolveAccess) {\n return registration.resolveAccess(resourceId, ctx);\n }\n\n if (getShareableResource(resourceType)) {\n const access = await resolveAccess(\n resourceType,\n resourceId,\n accessContextFrom(ctx),\n );\n if (!access) {\n return null;\n }\n return {\n role: access.role as ReviewResourceRole,\n ownerEmail: access.resource.ownerEmail ?? null,\n orgId: access.resource.orgId ?? null,\n visibility: access.resource.visibility,\n resource: access.resource,\n };\n }\n\n // Fail closed: unregistered types, and registered types without an access\n // resolver that aren't shareable, never invent ownership. bypassScope on\n // review queries is only safe after a real resource ACL.\n return null;\n}\n\nexport async function assertReviewableResourceAccess(\n resourceType: string,\n resourceId: string,\n ctx: ReviewResourceContext | undefined,\n minimumRole: ReviewResourceRole,\n): Promise<ReviewResourceAccess> {\n const access = await resolveReviewableResourceAccess(\n resourceType,\n resourceId,\n ctx,\n );\n if (!access || !roleSatisfies(access.role, minimumRole)) {\n throw new ForbiddenError(\n `Not allowed to access ${resourceType}:${resourceId}`,\n );\n }\n return access;\n}\n\nexport function normalizeReviewVisibility(\n visibility: Visibility | null | undefined,\n): Visibility {\n return visibility === \"org\" || visibility === \"public\"\n ? visibility\n : \"private\";\n}\n\nexport function __resetReviewableResourcesForTests(): void {\n registrations.clear();\n}\n"]}
|
package/dist/review/store.d.ts
CHANGED
|
@@ -49,12 +49,12 @@ export declare function getReviewCommentById(id: string, scope: ReviewScope, opt
|
|
|
49
49
|
export declare function resolveReviewThread(threadId: string, resolvedBy?: string | null, resource?: {
|
|
50
50
|
resourceType: string;
|
|
51
51
|
resourceId: string;
|
|
52
|
-
}): Promise<
|
|
53
|
-
export declare function deleteReviewComment(id: string, deletedBy?: string | null): Promise<
|
|
52
|
+
}): Promise<number>;
|
|
53
|
+
export declare function deleteReviewComment(id: string, deletedBy?: string | null): Promise<number>;
|
|
54
54
|
export declare function consumeReviewFeedback(ids: string[], consumedAt?: string, resource?: {
|
|
55
55
|
resourceType: string;
|
|
56
56
|
resourceId: string;
|
|
57
|
-
}): Promise<
|
|
57
|
+
}): Promise<number>;
|
|
58
58
|
export declare function upsertReviewStatus(input: UpsertReviewStatusInput): Promise<ReviewStatusEntry>;
|
|
59
59
|
export declare function getReviewStatus(resourceType: string, resourceId: string, scope: ReviewScope, options?: {
|
|
60
60
|
bypassScope?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/review/store.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/review/store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,iBAAiB,EAEjB,aAAa,EACb,sBAAsB,EACtB,WAAW,EACX,YAAY,EACZ,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,gBAAgB,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmFxD;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,aAAa,CAAC,CAiGxB;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,aAAa,EAAE,CAAC,CAqC1B;AAED,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAe/B;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,EAC1B,QAAQ,CAAC,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACtD,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,MAAM,EACV,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EAAE,EACb,UAAU,SAA2B,EACrC,QAAQ,CAAC,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACtD,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CAkF5B;AAED,wBAAsB,eAAe,CACnC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAenC;AAED,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD"}
|
package/dist/review/store.js
CHANGED
|
@@ -233,7 +233,7 @@ export async function resolveReviewThread(threadId, resolvedBy, resource) {
|
|
|
233
233
|
const resourceClause = resource
|
|
234
234
|
? "AND resource_type = ? AND resource_id = ?"
|
|
235
235
|
: "";
|
|
236
|
-
await getDbExec().execute({
|
|
236
|
+
const result = await getDbExec().execute({
|
|
237
237
|
sql: `UPDATE agent_review_comments
|
|
238
238
|
SET status = 'resolved',
|
|
239
239
|
resolved_by = ?,
|
|
@@ -248,11 +248,12 @@ export async function resolveReviewThread(threadId, resolvedBy, resource) {
|
|
|
248
248
|
...(resource ? [resource.resourceType, resource.resourceId] : []),
|
|
249
249
|
],
|
|
250
250
|
});
|
|
251
|
+
return result.rowsAffected ?? 0;
|
|
251
252
|
}
|
|
252
253
|
export async function deleteReviewComment(id, deletedBy) {
|
|
253
254
|
await ensureReviewTables();
|
|
254
255
|
const now = new Date().toISOString();
|
|
255
|
-
await getDbExec().execute({
|
|
256
|
+
const result = await getDbExec().execute({
|
|
256
257
|
sql: `UPDATE agent_review_comments
|
|
257
258
|
SET status = 'deleted',
|
|
258
259
|
deleted_by = ?,
|
|
@@ -261,17 +262,18 @@ export async function deleteReviewComment(id, deletedBy) {
|
|
|
261
262
|
WHERE id = ?`,
|
|
262
263
|
args: [deletedBy ?? null, now, now, id],
|
|
263
264
|
});
|
|
265
|
+
return result.rowsAffected ?? 0;
|
|
264
266
|
}
|
|
265
267
|
export async function consumeReviewFeedback(ids, consumedAt = new Date().toISOString(), resource) {
|
|
266
268
|
if (!ids.length) {
|
|
267
|
-
return;
|
|
269
|
+
return 0;
|
|
268
270
|
}
|
|
269
271
|
await ensureReviewTables();
|
|
270
272
|
const placeholders = ids.map(() => "?").join(", ");
|
|
271
273
|
const resourceClause = resource
|
|
272
274
|
? "AND resource_type = ? AND resource_id = ?"
|
|
273
275
|
: "";
|
|
274
|
-
await getDbExec().execute({
|
|
276
|
+
const result = await getDbExec().execute({
|
|
275
277
|
sql: `UPDATE agent_review_comments
|
|
276
278
|
SET consumed_at = ?,
|
|
277
279
|
updated_at = ?
|
|
@@ -283,6 +285,7 @@ export async function consumeReviewFeedback(ids, consumedAt = new Date().toISOSt
|
|
|
283
285
|
...(resource ? [resource.resourceType, resource.resourceId] : []),
|
|
284
286
|
],
|
|
285
287
|
});
|
|
288
|
+
return result.rowsAffected ?? 0;
|
|
286
289
|
}
|
|
287
290
|
export async function upsertReviewStatus(input) {
|
|
288
291
|
await ensureReviewTables();
|
package/dist/review/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/review/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAc1E,IAAI,uBAAkD,CAAC;AA6CvD,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC7B,uBAAuB,GAAG,CAAC,KAAK,IAAI,EAAE;YACpC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2B1B,CAAC;YACD,MAAM,iBAAiB,GAAG;;;;;;;;;;;;MAY1B,CAAC;YACD,MAAM,OAAO,GAAG;gBACd;6EACqE;gBACrE;4DACoD;gBACpD;8DACsD;gBACtD;yDACiD;gBACjD;iEACyD;aAC1D,CAAC;YAEF,IAAI,UAAU,EAAE,EAAE,CAAC;gBACjB,MAAM,iBAAiB,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAC;gBACpE,MAAM,iBAAiB,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAC;gBACpE,MAAM,iBAAiB,CACrB,oCAAoC,EACpC,OAAO,CAAC,CAAC,CAAC,CACX,CAAC;gBACF,MAAM,iBAAiB,CAAC,kCAAkC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxE,MAAM,iBAAiB,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvE,MAAM,iBAAiB,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrE,MAAM,iBAAiB,CACrB,oCAAoC,EACpC,OAAO,CAAC,CAAC,CAAC,CACX,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBACxC,MAAM,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBACxC,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;oBAC/B,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,MAAM,uBAAuB,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAA+B;IAE/B,MAAM,kBAAkB,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,EAAE,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,OAAO,GAAkB;QAC7B,EAAE;QACF,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,IAAI;QAC9C,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;QAChC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,SAAS;QAC7B,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;QACtC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;QACpC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,OAAO;QACrC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,IAAI;QAChD,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,WAAW,IAAI,IAAI;QACzD,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;QAC1B,UAAU,EACR,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ;YACzD,CAAC,CAAC,KAAK,CAAC,UAAU;YAClB,CAAC,CAAC,SAAS;QACf,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;QACd,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;KACjC,CAAC;IAEF,MAAM,MAAM,CAAC,OAAO,CAAC;QACnB,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;4FA2BmF;QACxF,IAAI,EAAE;YACJ,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,YAAY;YACpB,OAAO,CAAC,UAAU;YAClB,OAAO,CAAC,QAAQ;YAChB,OAAO,CAAC,eAAe;YACvB,OAAO,CAAC,QAAQ;YAChB,OAAO,CAAC,IAAI;YACZ,OAAO,CAAC,MAAM;YACd,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC;YACrC,OAAO,CAAC,IAAI;YACZ,OAAO,CAAC,WAAW;YACnB,OAAO,CAAC,UAAU;YAClB,OAAO,CAAC,SAAS;YACjB,OAAO,CAAC,gBAAgB;YACxB,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC;YACvC,OAAO,CAAC,UAAU;YAClB,OAAO,CAAC,KAAK;YACb,OAAO,CAAC,UAAU;YAClB,OAAO,CAAC,UAAU;YAClB,OAAO,CAAC,UAAU;YAClB,OAAO,CAAC,UAAU;YAClB,OAAO,CAAC,SAAS;YACjB,OAAO,CAAC,SAAS;YACjB,OAAO,CAAC,SAAS;YACjB,OAAO,CAAC,SAAS;YACjB,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC;SACxC;KACF,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAA+B;IAE/B,MAAM,kBAAkB,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW;QAC1C,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAe,EAAE;QAC9C,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,CAAC,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACjE,MAAM,YAAY,GAAc;QAC9B,KAAK,CAAC,YAAY;QAClB,KAAK,CAAC,UAAU;QAChB,GAAG,MAAM;KACV,CAAC;IACF,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC9B,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QAClC,GAAG,EAAE,UAAU,cAAc,EAAE;;cAErB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;;cAErB;QACV,IAAI,EAAE,CAAC,GAAG,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACjD,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAU,EACV,KAAkB,EAClB,OAAO,GAA8B,EAAE;IAEvC,MAAM,kBAAkB,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW;QAC5C,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAe,EAAE;QAC9C,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QAClC,GAAG,EAAE,UAAU,cAAc,EAAE;;yBAEV,MAAM;cACjB;QACV,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,UAA0B,EAC1B,QAAuD;IAEvD,MAAM,kBAAkB,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,cAAc,GAAG,QAAQ;QAC7B,CAAC,CAAC,2CAA2C;QAC7C,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,SAAS,EAAE,CAAC,OAAO,CAAC;QACxB,GAAG,EAAE;;;;;mDAK0C,cAAc,EAAE;QAC/D,IAAI,EAAE;YACJ,UAAU,IAAI,IAAI;YAClB,GAAG;YACH,GAAG;YACH,QAAQ;YACR,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,EAAU,EACV,SAAyB;IAEzB,MAAM,kBAAkB,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,SAAS,EAAE,CAAC,OAAO,CAAC;QACxB,GAAG,EAAE;;;;;mBAKU;QACf,IAAI,EAAE,CAAC,SAAS,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;KACxC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAa,EACb,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EACrC,QAAuD;IAEvD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IACD,MAAM,kBAAkB,EAAE,CAAC;IAC3B,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,QAAQ;QAC7B,CAAC,CAAC,2CAA2C;QAC7C,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,SAAS,EAAE,CAAC,OAAO,CAAC;QACxB,GAAG,EAAE;;;qBAGY,YAAY,KAAK,cAAc,EAAE;QAClD,IAAI,EAAE;YACJ,UAAU;YACV,UAAU;YACV,GAAG,GAAG;YACN,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAA8B;IAE9B,MAAM,kBAAkB,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QACpC,GAAG,EAAE,2DAA2D;QAChE,IAAI,EAAE,CAAC,EAAE,CAAC;KACX,CAAC,CAAC;IACH,MAAM,KAAK,GAAsB;QAC/B,EAAE;QACF,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;QACxB,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;QAClC,SAAS,EAAE,GAAG;QACd,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI;QACvD,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;QAC1B,UAAU,EACR,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ;YACzD,CAAC,CAAC,KAAK,CAAC,UAAU;YAClB,CAAC,CAAC,SAAS;QACf,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;KACjC,CAAC;IAEF,IAAI,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,CAAC,OAAO,CAAC;YACnB,GAAG,EAAE;;;;;;;;;qBASU;YACf,IAAI,EAAE;gBACJ,KAAK,CAAC,MAAM;gBACZ,KAAK,CAAC,IAAI;gBACV,KAAK,CAAC,SAAS;gBACf,KAAK,CAAC,SAAS;gBACf,KAAK,CAAC,UAAU;gBAChB,KAAK,CAAC,KAAK;gBACX,KAAK,CAAC,UAAU;gBAChB,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACrC,KAAK,CAAC,EAAE;aACT;SACF,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,CAAC,OAAO,CAAC;YACnB,GAAG,EAAE;;;;;;;;;;;;iDAYsC;YAC3C,IAAI,EAAE;gBACJ,KAAK,CAAC,EAAE;gBACR,KAAK,CAAC,YAAY;gBAClB,KAAK,CAAC,UAAU;gBAChB,KAAK,CAAC,MAAM;gBACZ,KAAK,CAAC,IAAI;gBACV,KAAK,CAAC,SAAS;gBACf,KAAK,CAAC,SAAS;gBACf,KAAK,CAAC,UAAU;gBAChB,KAAK,CAAC,KAAK;gBACX,KAAK,CAAC,UAAU;gBAChB,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC;aACtC;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,YAAoB,EACpB,UAAkB,EAClB,KAAkB,EAClB,OAAO,GAA8B,EAAE;IAEvC,MAAM,kBAAkB,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW;QAC5C,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAe,EAAE;QAC9C,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QAClC,GAAG,EAAE,UAAU,aAAa,EAAE;;wDAEsB,MAAM;cAChD;QACV,IAAI,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;KAC5C,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,uBAAuB,GAAG,SAAS,CAAC;AACtC,CAAC;AAED,SAAS,cAAc;IACrB,OAAO;QACL,IAAI;QACJ,eAAe;QACf,aAAa;QACb,WAAW;QACX,mBAAmB;QACnB,WAAW;QACX,MAAM;QACN,QAAQ;QACR,aAAa;QACb,MAAM;QACN,cAAc;QACd,aAAa;QACb,YAAY;QACZ,mBAAmB;QACnB,eAAe;QACf,aAAa;QACb,QAAQ;QACR,YAAY;QACZ,aAAa;QACb,aAAa;QACb,aAAa;QACb,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,eAAe;KAChB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,aAAa;IACpB,OAAO;QACL,IAAI;QACJ,eAAe;QACf,aAAa;QACb,QAAQ;QACR,MAAM;QACN,YAAY;QACZ,YAAY;QACZ,aAAa;QACb,QAAQ;QACR,YAAY;QACZ,eAAe;KAChB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAkB;IAI5C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAc,EAAE,CAAC;IAE7B,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAEpC,OAAO,EAAE,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,aAAa,CAAC,GAA4B;IACjD,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;QACvC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;QACnC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;QAC/B,eAAe,EAAE,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACtD,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC;QACvC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAC7B,MAAM,EAAE,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1C,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC;QAC1C,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACtB,WAAW,EAAE,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC;QAC7C,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC;QAC3C,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;QACzC,gBAAgB,EAAE,yBAAyB,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAClE,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC;QAC1C,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC;QAC3C,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;QACjC,UAAU,EAAE,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC;QAC/C,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC;QAC3C,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC;QAC3C,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC;QAC3C,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;QACzC,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QACjC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QACjC,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,GAA4B;IAChD,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;QACvC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;QACnC,MAAM,EAAE,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC;QACzC,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9B,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QACjC,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC;QAC3C,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;QACjC,UAAU,EAAE,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC;QAC/C,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,OAAO,OAAO,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,QAAQ,CAAC,YAAoB,EAAE,UAAkB;IACxD,OAAO,GAAG,YAAY,IAAI,UAAU,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,UAAU,CAAC,KAAyB;IAC3C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAC5E,CAAC,CAAE,MAAkC;QACrC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACnE,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,KAAK,KAAK,YAAY;QAC3B,KAAK,KAAK,YAAY;QACtB,KAAK,KAAK,UAAU;QACpB,KAAK,KAAK,UAAU;QACpB,KAAK,KAAK,QAAQ;QAClB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AACtE,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,OAAO,KAAK,KAAK,WAAW;QAC1B,KAAK,KAAK,UAAU;QACpB,KAAK,KAAK,mBAAmB;QAC7B,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,OAAO,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ;QAClE,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,OAAO,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAChC,KAAc;IAEd,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/D,CAAC","sourcesContent":["import { getDbExec, isPostgres } from \"../db/client.js\";\nimport { ensureIndexExists, ensureTableExists } from \"../db/ddl-guard.js\";\nimport type { Visibility } from \"../sharing/schema.js\";\nimport type {\n ReviewActorKind,\n ReviewComment,\n ReviewCommentKind,\n ReviewCommentStatus,\n ReviewMention,\n ReviewResolutionTarget,\n ReviewScope,\n ReviewStatus,\n ReviewStatusEntry,\n} from \"./types.js\";\n\nlet reviewTablesInitPromise: Promise<void> | undefined;\n\nexport interface InsertReviewCommentInput {\n resourceType: string;\n resourceId: string;\n threadId?: string | null;\n parentCommentId?: string | null;\n targetId?: string | null;\n kind?: ReviewCommentKind;\n anchor?: unknown | null;\n body: string;\n authorEmail?: string | null;\n authorName?: string | null;\n createdBy?: ReviewActorKind;\n resolutionTarget?: ReviewResolutionTarget | null;\n mentions?: ReviewMention[];\n ownerEmail?: string | null;\n orgId?: string | null;\n visibility?: Visibility | null;\n metadata?: Record<string, unknown> | null;\n}\n\nexport interface QueryReviewCommentsInput {\n resourceType: string;\n resourceId: string;\n scope: ReviewScope;\n bypassScope?: boolean;\n includeResolved?: boolean;\n includeDeleted?: boolean;\n targetId?: string | null;\n limit?: number;\n}\n\nexport interface UpsertReviewStatusInput {\n resourceType: string;\n resourceId: string;\n status: ReviewStatus;\n note?: string | null;\n updatedBy?: string | null;\n ownerEmail?: string | null;\n orgId?: string | null;\n visibility?: Visibility | null;\n metadata?: Record<string, unknown> | null;\n}\n\nexport async function ensureReviewTables(): Promise<void> {\n if (!reviewTablesInitPromise) {\n reviewTablesInitPromise = (async () => {\n const client = getDbExec();\n const createCommentsSql = `CREATE TABLE IF NOT EXISTS agent_review_comments (\n id TEXT PRIMARY KEY,\n resource_type TEXT NOT NULL,\n resource_id TEXT NOT NULL,\n thread_id TEXT NOT NULL,\n parent_comment_id TEXT,\n target_id TEXT,\n kind TEXT NOT NULL DEFAULT 'comment',\n status TEXT NOT NULL DEFAULT 'open',\n anchor_json TEXT,\n body TEXT NOT NULL,\n author_email TEXT,\n author_name TEXT,\n created_by TEXT NOT NULL DEFAULT 'human',\n resolution_target TEXT,\n mentions_json TEXT,\n owner_email TEXT,\n org_id TEXT,\n visibility TEXT NOT NULL DEFAULT 'private',\n resolved_by TEXT,\n resolved_at TEXT,\n consumed_at TEXT,\n deleted_by TEXT,\n deleted_at TEXT,\n created_at TEXT NOT NULL,\n updated_at TEXT NOT NULL,\n metadata_json TEXT\n )`;\n const createStatusesSql = `CREATE TABLE IF NOT EXISTS agent_review_statuses (\n id TEXT PRIMARY KEY,\n resource_type TEXT NOT NULL,\n resource_id TEXT NOT NULL,\n status TEXT NOT NULL,\n note TEXT,\n updated_by TEXT,\n updated_at TEXT NOT NULL,\n owner_email TEXT,\n org_id TEXT,\n visibility TEXT NOT NULL DEFAULT 'private',\n metadata_json TEXT\n )`;\n const indexes = [\n `CREATE INDEX IF NOT EXISTS idx_agent_review_comments_resource\n ON agent_review_comments (resource_type, resource_id, created_at)`,\n `CREATE INDEX IF NOT EXISTS idx_agent_review_comments_thread\n ON agent_review_comments (thread_id, created_at)`,\n `CREATE INDEX IF NOT EXISTS idx_agent_review_comments_owner\n ON agent_review_comments (owner_email, created_at)`,\n `CREATE INDEX IF NOT EXISTS idx_agent_review_comments_org\n ON agent_review_comments (org_id, created_at)`,\n `CREATE INDEX IF NOT EXISTS idx_agent_review_statuses_resource\n ON agent_review_statuses (resource_type, resource_id)`,\n ];\n\n if (isPostgres()) {\n await ensureTableExists(\"agent_review_comments\", createCommentsSql);\n await ensureTableExists(\"agent_review_statuses\", createStatusesSql);\n await ensureIndexExists(\n \"idx_agent_review_comments_resource\",\n indexes[0],\n );\n await ensureIndexExists(\"idx_agent_review_comments_thread\", indexes[1]);\n await ensureIndexExists(\"idx_agent_review_comments_owner\", indexes[2]);\n await ensureIndexExists(\"idx_agent_review_comments_org\", indexes[3]);\n await ensureIndexExists(\n \"idx_agent_review_statuses_resource\",\n indexes[4],\n );\n } else {\n await client.execute(createCommentsSql);\n await client.execute(createStatusesSql);\n for (const indexSql of indexes) {\n await client.execute(indexSql);\n }\n }\n })();\n }\n\n await reviewTablesInitPromise;\n}\n\nexport async function insertReviewComment(\n input: InsertReviewCommentInput,\n): Promise<ReviewComment> {\n await ensureReviewTables();\n const client = getDbExec();\n const id = createReviewId(\"comment\");\n const now = new Date().toISOString();\n const comment: ReviewComment = {\n id,\n resourceType: input.resourceType,\n resourceId: input.resourceId,\n threadId: input.threadId ?? id,\n parentCommentId: input.parentCommentId ?? null,\n targetId: input.targetId ?? null,\n kind: input.kind ?? \"comment\",\n status: \"open\",\n anchor: input.anchor ?? null,\n body: input.body,\n authorEmail: input.authorEmail ?? null,\n authorName: input.authorName ?? null,\n createdBy: input.createdBy ?? \"human\",\n resolutionTarget: input.resolutionTarget ?? null,\n mentions: input.mentions ?? [],\n ownerEmail: input.ownerEmail ?? input.authorEmail ?? null,\n orgId: input.orgId ?? null,\n visibility:\n input.visibility === \"org\" || input.visibility === \"public\"\n ? input.visibility\n : \"private\",\n resolvedBy: null,\n resolvedAt: null,\n consumedAt: null,\n deletedBy: null,\n deletedAt: null,\n createdAt: now,\n updatedAt: now,\n metadata: input.metadata ?? null,\n };\n\n await client.execute({\n sql: `INSERT INTO agent_review_comments (\n id,\n resource_type,\n resource_id,\n thread_id,\n parent_comment_id,\n target_id,\n kind,\n status,\n anchor_json,\n body,\n author_email,\n author_name,\n created_by,\n resolution_target,\n mentions_json,\n owner_email,\n org_id,\n visibility,\n resolved_by,\n resolved_at,\n consumed_at,\n deleted_by,\n deleted_at,\n created_at,\n updated_at,\n metadata_json\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,\n args: [\n comment.id,\n comment.resourceType,\n comment.resourceId,\n comment.threadId,\n comment.parentCommentId,\n comment.targetId,\n comment.kind,\n comment.status,\n stringifyOptionalJson(comment.anchor),\n comment.body,\n comment.authorEmail,\n comment.authorName,\n comment.createdBy,\n comment.resolutionTarget,\n stringifyOptionalJson(comment.mentions),\n comment.ownerEmail,\n comment.orgId,\n comment.visibility,\n comment.resolvedBy,\n comment.resolvedAt,\n comment.consumedAt,\n comment.deletedBy,\n comment.deletedAt,\n comment.createdAt,\n comment.updatedAt,\n stringifyOptionalJson(comment.metadata),\n ],\n });\n\n return comment;\n}\n\nexport async function queryReviewComments(\n input: QueryReviewCommentsInput,\n): Promise<ReviewComment[]> {\n await ensureReviewTables();\n const client = getDbExec();\n const { clause, params } = input.bypassScope\n ? { clause: \"1 = 1\", params: [] as unknown[] }\n : scopedReviewClause(input.scope);\n const filters = [\"resource_type = ?\", \"resource_id = ?\", clause];\n const filterParams: unknown[] = [\n input.resourceType,\n input.resourceId,\n ...params,\n ];\n if (!input.includeDeleted) {\n filters.push(\"deleted_at IS NULL\");\n filters.push(\"status <> 'deleted'\");\n }\n if (!input.includeResolved) {\n filters.push(\"status <> 'resolved'\");\n }\n if (input.targetId !== undefined) {\n if (input.targetId === null) {\n filters.push(\"target_id IS NULL\");\n } else {\n filters.push(\"target_id = ?\");\n filterParams.push(input.targetId);\n }\n }\n\n const result = await client.execute({\n sql: `SELECT ${commentColumns()}\n FROM agent_review_comments\n WHERE ${filters.join(\" AND \")}\n ORDER BY created_at ASC\n LIMIT ?`,\n args: [...filterParams, clampLimit(input.limit)],\n });\n return (result.rows ?? []).map(mapCommentRow);\n}\n\nexport async function getReviewCommentById(\n id: string,\n scope: ReviewScope,\n options: { bypassScope?: boolean } = {},\n): Promise<ReviewComment | null> {\n await ensureReviewTables();\n const client = getDbExec();\n const { clause, params } = options.bypassScope\n ? { clause: \"1 = 1\", params: [] as unknown[] }\n : scopedReviewClause(scope);\n const result = await client.execute({\n sql: `SELECT ${commentColumns()}\n FROM agent_review_comments\n WHERE id = ? AND ${clause}\n LIMIT 1`,\n args: [id, ...params],\n });\n const row = result.rows?.[0];\n return row ? mapCommentRow(row) : null;\n}\n\nexport async function resolveReviewThread(\n threadId: string,\n resolvedBy?: string | null,\n resource?: { resourceType: string; resourceId: string },\n): Promise<void> {\n await ensureReviewTables();\n const now = new Date().toISOString();\n const resourceClause = resource\n ? \"AND resource_type = ? AND resource_id = ?\"\n : \"\";\n await getDbExec().execute({\n sql: `UPDATE agent_review_comments\n SET status = 'resolved',\n resolved_by = ?,\n resolved_at = ?,\n updated_at = ?\n WHERE thread_id = ? AND deleted_at IS NULL ${resourceClause}`,\n args: [\n resolvedBy ?? null,\n now,\n now,\n threadId,\n ...(resource ? [resource.resourceType, resource.resourceId] : []),\n ],\n });\n}\n\nexport async function deleteReviewComment(\n id: string,\n deletedBy?: string | null,\n): Promise<void> {\n await ensureReviewTables();\n const now = new Date().toISOString();\n await getDbExec().execute({\n sql: `UPDATE agent_review_comments\n SET status = 'deleted',\n deleted_by = ?,\n deleted_at = ?,\n updated_at = ?\n WHERE id = ?`,\n args: [deletedBy ?? null, now, now, id],\n });\n}\n\nexport async function consumeReviewFeedback(\n ids: string[],\n consumedAt = new Date().toISOString(),\n resource?: { resourceType: string; resourceId: string },\n): Promise<void> {\n if (!ids.length) {\n return;\n }\n await ensureReviewTables();\n const placeholders = ids.map(() => \"?\").join(\", \");\n const resourceClause = resource\n ? \"AND resource_type = ? AND resource_id = ?\"\n : \"\";\n await getDbExec().execute({\n sql: `UPDATE agent_review_comments\n SET consumed_at = ?,\n updated_at = ?\n WHERE id IN (${placeholders}) ${resourceClause}`,\n args: [\n consumedAt,\n consumedAt,\n ...ids,\n ...(resource ? [resource.resourceType, resource.resourceId] : []),\n ],\n });\n}\n\nexport async function upsertReviewStatus(\n input: UpsertReviewStatusInput,\n): Promise<ReviewStatusEntry> {\n await ensureReviewTables();\n const client = getDbExec();\n const id = statusId(input.resourceType, input.resourceId);\n const now = new Date().toISOString();\n const existing = await client.execute({\n sql: \"SELECT id FROM agent_review_statuses WHERE id = ? LIMIT 1\",\n args: [id],\n });\n const entry: ReviewStatusEntry = {\n id,\n resourceType: input.resourceType,\n resourceId: input.resourceId,\n status: input.status,\n note: input.note ?? null,\n updatedBy: input.updatedBy ?? null,\n updatedAt: now,\n ownerEmail: input.ownerEmail ?? input.updatedBy ?? null,\n orgId: input.orgId ?? null,\n visibility:\n input.visibility === \"org\" || input.visibility === \"public\"\n ? input.visibility\n : \"private\",\n metadata: input.metadata ?? null,\n };\n\n if (existing.rows?.length) {\n await client.execute({\n sql: `UPDATE agent_review_statuses\n SET status = ?,\n note = ?,\n updated_by = ?,\n updated_at = ?,\n owner_email = ?,\n org_id = ?,\n visibility = ?,\n metadata_json = ?\n WHERE id = ?`,\n args: [\n entry.status,\n entry.note,\n entry.updatedBy,\n entry.updatedAt,\n entry.ownerEmail,\n entry.orgId,\n entry.visibility,\n stringifyOptionalJson(entry.metadata),\n entry.id,\n ],\n });\n } else {\n await client.execute({\n sql: `INSERT INTO agent_review_statuses (\n id,\n resource_type,\n resource_id,\n status,\n note,\n updated_by,\n updated_at,\n owner_email,\n org_id,\n visibility,\n metadata_json\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,\n args: [\n entry.id,\n entry.resourceType,\n entry.resourceId,\n entry.status,\n entry.note,\n entry.updatedBy,\n entry.updatedAt,\n entry.ownerEmail,\n entry.orgId,\n entry.visibility,\n stringifyOptionalJson(entry.metadata),\n ],\n });\n }\n\n return entry;\n}\n\nexport async function getReviewStatus(\n resourceType: string,\n resourceId: string,\n scope: ReviewScope,\n options: { bypassScope?: boolean } = {},\n): Promise<ReviewStatusEntry | null> {\n await ensureReviewTables();\n const client = getDbExec();\n const { clause, params } = options.bypassScope\n ? { clause: \"1 = 1\", params: [] as unknown[] }\n : scopedReviewClause(scope);\n const result = await client.execute({\n sql: `SELECT ${statusColumns()}\n FROM agent_review_statuses\n WHERE resource_type = ? AND resource_id = ? AND ${clause}\n LIMIT 1`,\n args: [resourceType, resourceId, ...params],\n });\n const row = result.rows?.[0];\n return row ? mapStatusRow(row) : null;\n}\n\nexport function __resetReviewInitForTests(): void {\n reviewTablesInitPromise = undefined;\n}\n\nfunction commentColumns(): string {\n return [\n \"id\",\n \"resource_type\",\n \"resource_id\",\n \"thread_id\",\n \"parent_comment_id\",\n \"target_id\",\n \"kind\",\n \"status\",\n \"anchor_json\",\n \"body\",\n \"author_email\",\n \"author_name\",\n \"created_by\",\n \"resolution_target\",\n \"mentions_json\",\n \"owner_email\",\n \"org_id\",\n \"visibility\",\n \"resolved_by\",\n \"resolved_at\",\n \"consumed_at\",\n \"deleted_by\",\n \"deleted_at\",\n \"created_at\",\n \"updated_at\",\n \"metadata_json\",\n ].join(\", \");\n}\n\nfunction statusColumns(): string {\n return [\n \"id\",\n \"resource_type\",\n \"resource_id\",\n \"status\",\n \"note\",\n \"updated_by\",\n \"updated_at\",\n \"owner_email\",\n \"org_id\",\n \"visibility\",\n \"metadata_json\",\n ].join(\", \");\n}\n\nfunction scopedReviewClause(scope: ReviewScope): {\n clause: string;\n params: unknown[];\n} {\n const parts: string[] = [];\n const params: unknown[] = [];\n\n if (scope.userEmail) {\n parts.push(\"owner_email = ?\");\n params.push(scope.userEmail);\n }\n if (scope.orgId) {\n parts.push(\"(visibility = 'org' AND org_id = ?)\");\n params.push(scope.orgId);\n }\n parts.push(\"visibility = 'public'\");\n\n return { clause: `(${parts.join(\" OR \")})`, params };\n}\n\nfunction mapCommentRow(row: Record<string, unknown>): ReviewComment {\n return {\n id: String(row.id),\n resourceType: String(row.resource_type),\n resourceId: String(row.resource_id),\n threadId: String(row.thread_id),\n parentCommentId: nullableString(row.parent_comment_id),\n targetId: nullableString(row.target_id),\n kind: normalizeKind(row.kind),\n status: normalizeCommentStatus(row.status),\n anchor: parseOptionalJson(row.anchor_json),\n body: String(row.body),\n authorEmail: nullableString(row.author_email),\n authorName: nullableString(row.author_name),\n createdBy: normalizeActor(row.created_by),\n resolutionTarget: normalizeResolutionTarget(row.resolution_target),\n mentions: parseMentions(row.mentions_json),\n ownerEmail: nullableString(row.owner_email),\n orgId: nullableString(row.org_id),\n visibility: normalizeVisibility(row.visibility),\n resolvedBy: nullableString(row.resolved_by),\n resolvedAt: nullableString(row.resolved_at),\n consumedAt: nullableString(row.consumed_at),\n deletedBy: nullableString(row.deleted_by),\n deletedAt: nullableString(row.deleted_at),\n createdAt: String(row.created_at),\n updatedAt: String(row.updated_at),\n metadata: parseObject(row.metadata_json),\n };\n}\n\nfunction mapStatusRow(row: Record<string, unknown>): ReviewStatusEntry {\n return {\n id: String(row.id),\n resourceType: String(row.resource_type),\n resourceId: String(row.resource_id),\n status: normalizeReviewStatus(row.status),\n note: nullableString(row.note),\n updatedBy: nullableString(row.updated_by),\n updatedAt: String(row.updated_at),\n ownerEmail: nullableString(row.owner_email),\n orgId: nullableString(row.org_id),\n visibility: normalizeVisibility(row.visibility),\n metadata: parseObject(row.metadata_json),\n };\n}\n\nfunction createReviewId(prefix: string): string {\n return `rev_${prefix}_${globalThis.crypto.randomUUID()}`;\n}\n\nfunction statusId(resourceType: string, resourceId: string): string {\n return `${resourceType}:${resourceId}`;\n}\n\nfunction clampLimit(value: number | undefined): number {\n if (!Number.isFinite(value)) {\n return 200;\n }\n return Math.min(500, Math.max(1, Math.floor(value ?? 200)));\n}\n\nfunction nullableString(value: unknown): string | null {\n return value === null || value === undefined ? null : String(value);\n}\n\nfunction stringifyOptionalJson(value: unknown): string | null {\n return value === null || value === undefined ? null : JSON.stringify(value);\n}\n\nfunction parseOptionalJson(value: unknown): unknown | null {\n if (value === null || value === undefined || value === \"\") {\n return null;\n }\n if (typeof value !== \"string\") {\n return value;\n }\n return JSON.parse(value);\n}\n\nfunction parseObject(value: unknown): Record<string, unknown> | null {\n const parsed = parseOptionalJson(value);\n return typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : null;\n}\n\nfunction parseMentions(value: unknown): ReviewMention[] {\n const parsed = parseOptionalJson(value);\n return Array.isArray(parsed) ? (parsed as ReviewMention[]) : [];\n}\n\nfunction normalizeVisibility(value: unknown): Visibility {\n return value === \"org\" || value === \"public\" ? value : \"private\";\n}\n\nfunction normalizeKind(value: unknown): ReviewCommentKind {\n return value === \"annotation\" ||\n value === \"correction\" ||\n value === \"question\" ||\n value === \"decision\" ||\n value === \"review\"\n ? value\n : \"comment\";\n}\n\nfunction normalizeCommentStatus(value: unknown): ReviewCommentStatus {\n return value === \"resolved\" || value === \"deleted\" ? value : \"open\";\n}\n\nfunction normalizeReviewStatus(value: unknown): ReviewStatus {\n return value === \"in_review\" ||\n value === \"approved\" ||\n value === \"changes_requested\"\n ? value\n : \"draft\";\n}\n\nfunction normalizeActor(value: unknown): ReviewActorKind {\n return value === \"agent\" || value === \"import\" || value === \"system\"\n ? value\n : \"human\";\n}\n\nfunction normalizeResolutionTarget(\n value: unknown,\n): ReviewResolutionTarget | null {\n return value === \"agent\" || value === \"human\" ? value : null;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/review/store.ts"],"names":[],"mappings":"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","sourcesContent":["import { getDbExec, isPostgres } from \"../db/client.js\";\nimport { ensureIndexExists, ensureTableExists } from \"../db/ddl-guard.js\";\nimport type { Visibility } from \"../sharing/schema.js\";\nimport type {\n ReviewActorKind,\n ReviewComment,\n ReviewCommentKind,\n ReviewCommentStatus,\n ReviewMention,\n ReviewResolutionTarget,\n ReviewScope,\n ReviewStatus,\n ReviewStatusEntry,\n} from \"./types.js\";\n\nlet reviewTablesInitPromise: Promise<void> | undefined;\n\nexport interface InsertReviewCommentInput {\n resourceType: string;\n resourceId: string;\n threadId?: string | null;\n parentCommentId?: string | null;\n targetId?: string | null;\n kind?: ReviewCommentKind;\n anchor?: unknown | null;\n body: string;\n authorEmail?: string | null;\n authorName?: string | null;\n createdBy?: ReviewActorKind;\n resolutionTarget?: ReviewResolutionTarget | null;\n mentions?: ReviewMention[];\n ownerEmail?: string | null;\n orgId?: string | null;\n visibility?: Visibility | null;\n metadata?: Record<string, unknown> | null;\n}\n\nexport interface QueryReviewCommentsInput {\n resourceType: string;\n resourceId: string;\n scope: ReviewScope;\n bypassScope?: boolean;\n includeResolved?: boolean;\n includeDeleted?: boolean;\n targetId?: string | null;\n limit?: number;\n}\n\nexport interface UpsertReviewStatusInput {\n resourceType: string;\n resourceId: string;\n status: ReviewStatus;\n note?: string | null;\n updatedBy?: string | null;\n ownerEmail?: string | null;\n orgId?: string | null;\n visibility?: Visibility | null;\n metadata?: Record<string, unknown> | null;\n}\n\nexport async function ensureReviewTables(): Promise<void> {\n if (!reviewTablesInitPromise) {\n reviewTablesInitPromise = (async () => {\n const client = getDbExec();\n const createCommentsSql = `CREATE TABLE IF NOT EXISTS agent_review_comments (\n id TEXT PRIMARY KEY,\n resource_type TEXT NOT NULL,\n resource_id TEXT NOT NULL,\n thread_id TEXT NOT NULL,\n parent_comment_id TEXT,\n target_id TEXT,\n kind TEXT NOT NULL DEFAULT 'comment',\n status TEXT NOT NULL DEFAULT 'open',\n anchor_json TEXT,\n body TEXT NOT NULL,\n author_email TEXT,\n author_name TEXT,\n created_by TEXT NOT NULL DEFAULT 'human',\n resolution_target TEXT,\n mentions_json TEXT,\n owner_email TEXT,\n org_id TEXT,\n visibility TEXT NOT NULL DEFAULT 'private',\n resolved_by TEXT,\n resolved_at TEXT,\n consumed_at TEXT,\n deleted_by TEXT,\n deleted_at TEXT,\n created_at TEXT NOT NULL,\n updated_at TEXT NOT NULL,\n metadata_json TEXT\n )`;\n const createStatusesSql = `CREATE TABLE IF NOT EXISTS agent_review_statuses (\n id TEXT PRIMARY KEY,\n resource_type TEXT NOT NULL,\n resource_id TEXT NOT NULL,\n status TEXT NOT NULL,\n note TEXT,\n updated_by TEXT,\n updated_at TEXT NOT NULL,\n owner_email TEXT,\n org_id TEXT,\n visibility TEXT NOT NULL DEFAULT 'private',\n metadata_json TEXT\n )`;\n const indexes = [\n `CREATE INDEX IF NOT EXISTS idx_agent_review_comments_resource\n ON agent_review_comments (resource_type, resource_id, created_at)`,\n `CREATE INDEX IF NOT EXISTS idx_agent_review_comments_thread\n ON agent_review_comments (thread_id, created_at)`,\n `CREATE INDEX IF NOT EXISTS idx_agent_review_comments_owner\n ON agent_review_comments (owner_email, created_at)`,\n `CREATE INDEX IF NOT EXISTS idx_agent_review_comments_org\n ON agent_review_comments (org_id, created_at)`,\n `CREATE INDEX IF NOT EXISTS idx_agent_review_statuses_resource\n ON agent_review_statuses (resource_type, resource_id)`,\n ];\n\n if (isPostgres()) {\n await ensureTableExists(\"agent_review_comments\", createCommentsSql);\n await ensureTableExists(\"agent_review_statuses\", createStatusesSql);\n await ensureIndexExists(\n \"idx_agent_review_comments_resource\",\n indexes[0],\n );\n await ensureIndexExists(\"idx_agent_review_comments_thread\", indexes[1]);\n await ensureIndexExists(\"idx_agent_review_comments_owner\", indexes[2]);\n await ensureIndexExists(\"idx_agent_review_comments_org\", indexes[3]);\n await ensureIndexExists(\n \"idx_agent_review_statuses_resource\",\n indexes[4],\n );\n } else {\n await client.execute(createCommentsSql);\n await client.execute(createStatusesSql);\n for (const indexSql of indexes) {\n await client.execute(indexSql);\n }\n }\n })();\n }\n\n await reviewTablesInitPromise;\n}\n\nexport async function insertReviewComment(\n input: InsertReviewCommentInput,\n): Promise<ReviewComment> {\n await ensureReviewTables();\n const client = getDbExec();\n const id = createReviewId(\"comment\");\n const now = new Date().toISOString();\n const comment: ReviewComment = {\n id,\n resourceType: input.resourceType,\n resourceId: input.resourceId,\n threadId: input.threadId ?? id,\n parentCommentId: input.parentCommentId ?? null,\n targetId: input.targetId ?? null,\n kind: input.kind ?? \"comment\",\n status: \"open\",\n anchor: input.anchor ?? null,\n body: input.body,\n authorEmail: input.authorEmail ?? null,\n authorName: input.authorName ?? null,\n createdBy: input.createdBy ?? \"human\",\n resolutionTarget: input.resolutionTarget ?? null,\n mentions: input.mentions ?? [],\n ownerEmail: input.ownerEmail ?? input.authorEmail ?? null,\n orgId: input.orgId ?? null,\n visibility:\n input.visibility === \"org\" || input.visibility === \"public\"\n ? input.visibility\n : \"private\",\n resolvedBy: null,\n resolvedAt: null,\n consumedAt: null,\n deletedBy: null,\n deletedAt: null,\n createdAt: now,\n updatedAt: now,\n metadata: input.metadata ?? null,\n };\n\n await client.execute({\n sql: `INSERT INTO agent_review_comments (\n id,\n resource_type,\n resource_id,\n thread_id,\n parent_comment_id,\n target_id,\n kind,\n status,\n anchor_json,\n body,\n author_email,\n author_name,\n created_by,\n resolution_target,\n mentions_json,\n owner_email,\n org_id,\n visibility,\n resolved_by,\n resolved_at,\n consumed_at,\n deleted_by,\n deleted_at,\n created_at,\n updated_at,\n metadata_json\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,\n args: [\n comment.id,\n comment.resourceType,\n comment.resourceId,\n comment.threadId,\n comment.parentCommentId,\n comment.targetId,\n comment.kind,\n comment.status,\n stringifyOptionalJson(comment.anchor),\n comment.body,\n comment.authorEmail,\n comment.authorName,\n comment.createdBy,\n comment.resolutionTarget,\n stringifyOptionalJson(comment.mentions),\n comment.ownerEmail,\n comment.orgId,\n comment.visibility,\n comment.resolvedBy,\n comment.resolvedAt,\n comment.consumedAt,\n comment.deletedBy,\n comment.deletedAt,\n comment.createdAt,\n comment.updatedAt,\n stringifyOptionalJson(comment.metadata),\n ],\n });\n\n return comment;\n}\n\nexport async function queryReviewComments(\n input: QueryReviewCommentsInput,\n): Promise<ReviewComment[]> {\n await ensureReviewTables();\n const client = getDbExec();\n const { clause, params } = input.bypassScope\n ? { clause: \"1 = 1\", params: [] as unknown[] }\n : scopedReviewClause(input.scope);\n const filters = [\"resource_type = ?\", \"resource_id = ?\", clause];\n const filterParams: unknown[] = [\n input.resourceType,\n input.resourceId,\n ...params,\n ];\n if (!input.includeDeleted) {\n filters.push(\"deleted_at IS NULL\");\n filters.push(\"status <> 'deleted'\");\n }\n if (!input.includeResolved) {\n filters.push(\"status <> 'resolved'\");\n }\n if (input.targetId !== undefined) {\n if (input.targetId === null) {\n filters.push(\"target_id IS NULL\");\n } else {\n filters.push(\"target_id = ?\");\n filterParams.push(input.targetId);\n }\n }\n\n const result = await client.execute({\n sql: `SELECT ${commentColumns()}\n FROM agent_review_comments\n WHERE ${filters.join(\" AND \")}\n ORDER BY created_at ASC\n LIMIT ?`,\n args: [...filterParams, clampLimit(input.limit)],\n });\n return (result.rows ?? []).map(mapCommentRow);\n}\n\nexport async function getReviewCommentById(\n id: string,\n scope: ReviewScope,\n options: { bypassScope?: boolean } = {},\n): Promise<ReviewComment | null> {\n await ensureReviewTables();\n const client = getDbExec();\n const { clause, params } = options.bypassScope\n ? { clause: \"1 = 1\", params: [] as unknown[] }\n : scopedReviewClause(scope);\n const result = await client.execute({\n sql: `SELECT ${commentColumns()}\n FROM agent_review_comments\n WHERE id = ? AND ${clause}\n LIMIT 1`,\n args: [id, ...params],\n });\n const row = result.rows?.[0];\n return row ? mapCommentRow(row) : null;\n}\n\nexport async function resolveReviewThread(\n threadId: string,\n resolvedBy?: string | null,\n resource?: { resourceType: string; resourceId: string },\n): Promise<number> {\n await ensureReviewTables();\n const now = new Date().toISOString();\n const resourceClause = resource\n ? \"AND resource_type = ? AND resource_id = ?\"\n : \"\";\n const result = await getDbExec().execute({\n sql: `UPDATE agent_review_comments\n SET status = 'resolved',\n resolved_by = ?,\n resolved_at = ?,\n updated_at = ?\n WHERE thread_id = ? AND deleted_at IS NULL ${resourceClause}`,\n args: [\n resolvedBy ?? null,\n now,\n now,\n threadId,\n ...(resource ? [resource.resourceType, resource.resourceId] : []),\n ],\n });\n return result.rowsAffected ?? 0;\n}\n\nexport async function deleteReviewComment(\n id: string,\n deletedBy?: string | null,\n): Promise<number> {\n await ensureReviewTables();\n const now = new Date().toISOString();\n const result = await getDbExec().execute({\n sql: `UPDATE agent_review_comments\n SET status = 'deleted',\n deleted_by = ?,\n deleted_at = ?,\n updated_at = ?\n WHERE id = ?`,\n args: [deletedBy ?? null, now, now, id],\n });\n return result.rowsAffected ?? 0;\n}\n\nexport async function consumeReviewFeedback(\n ids: string[],\n consumedAt = new Date().toISOString(),\n resource?: { resourceType: string; resourceId: string },\n): Promise<number> {\n if (!ids.length) {\n return 0;\n }\n await ensureReviewTables();\n const placeholders = ids.map(() => \"?\").join(\", \");\n const resourceClause = resource\n ? \"AND resource_type = ? AND resource_id = ?\"\n : \"\";\n const result = await getDbExec().execute({\n sql: `UPDATE agent_review_comments\n SET consumed_at = ?,\n updated_at = ?\n WHERE id IN (${placeholders}) ${resourceClause}`,\n args: [\n consumedAt,\n consumedAt,\n ...ids,\n ...(resource ? [resource.resourceType, resource.resourceId] : []),\n ],\n });\n return result.rowsAffected ?? 0;\n}\n\nexport async function upsertReviewStatus(\n input: UpsertReviewStatusInput,\n): Promise<ReviewStatusEntry> {\n await ensureReviewTables();\n const client = getDbExec();\n const id = statusId(input.resourceType, input.resourceId);\n const now = new Date().toISOString();\n const existing = await client.execute({\n sql: \"SELECT id FROM agent_review_statuses WHERE id = ? LIMIT 1\",\n args: [id],\n });\n const entry: ReviewStatusEntry = {\n id,\n resourceType: input.resourceType,\n resourceId: input.resourceId,\n status: input.status,\n note: input.note ?? null,\n updatedBy: input.updatedBy ?? null,\n updatedAt: now,\n ownerEmail: input.ownerEmail ?? input.updatedBy ?? null,\n orgId: input.orgId ?? null,\n visibility:\n input.visibility === \"org\" || input.visibility === \"public\"\n ? input.visibility\n : \"private\",\n metadata: input.metadata ?? null,\n };\n\n if (existing.rows?.length) {\n await client.execute({\n sql: `UPDATE agent_review_statuses\n SET status = ?,\n note = ?,\n updated_by = ?,\n updated_at = ?,\n owner_email = ?,\n org_id = ?,\n visibility = ?,\n metadata_json = ?\n WHERE id = ?`,\n args: [\n entry.status,\n entry.note,\n entry.updatedBy,\n entry.updatedAt,\n entry.ownerEmail,\n entry.orgId,\n entry.visibility,\n stringifyOptionalJson(entry.metadata),\n entry.id,\n ],\n });\n } else {\n await client.execute({\n sql: `INSERT INTO agent_review_statuses (\n id,\n resource_type,\n resource_id,\n status,\n note,\n updated_by,\n updated_at,\n owner_email,\n org_id,\n visibility,\n metadata_json\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,\n args: [\n entry.id,\n entry.resourceType,\n entry.resourceId,\n entry.status,\n entry.note,\n entry.updatedBy,\n entry.updatedAt,\n entry.ownerEmail,\n entry.orgId,\n entry.visibility,\n stringifyOptionalJson(entry.metadata),\n ],\n });\n }\n\n return entry;\n}\n\nexport async function getReviewStatus(\n resourceType: string,\n resourceId: string,\n scope: ReviewScope,\n options: { bypassScope?: boolean } = {},\n): Promise<ReviewStatusEntry | null> {\n await ensureReviewTables();\n const client = getDbExec();\n const { clause, params } = options.bypassScope\n ? { clause: \"1 = 1\", params: [] as unknown[] }\n : scopedReviewClause(scope);\n const result = await client.execute({\n sql: `SELECT ${statusColumns()}\n FROM agent_review_statuses\n WHERE resource_type = ? AND resource_id = ? AND ${clause}\n LIMIT 1`,\n args: [resourceType, resourceId, ...params],\n });\n const row = result.rows?.[0];\n return row ? mapStatusRow(row) : null;\n}\n\nexport function __resetReviewInitForTests(): void {\n reviewTablesInitPromise = undefined;\n}\n\nfunction commentColumns(): string {\n return [\n \"id\",\n \"resource_type\",\n \"resource_id\",\n \"thread_id\",\n \"parent_comment_id\",\n \"target_id\",\n \"kind\",\n \"status\",\n \"anchor_json\",\n \"body\",\n \"author_email\",\n \"author_name\",\n \"created_by\",\n \"resolution_target\",\n \"mentions_json\",\n \"owner_email\",\n \"org_id\",\n \"visibility\",\n \"resolved_by\",\n \"resolved_at\",\n \"consumed_at\",\n \"deleted_by\",\n \"deleted_at\",\n \"created_at\",\n \"updated_at\",\n \"metadata_json\",\n ].join(\", \");\n}\n\nfunction statusColumns(): string {\n return [\n \"id\",\n \"resource_type\",\n \"resource_id\",\n \"status\",\n \"note\",\n \"updated_by\",\n \"updated_at\",\n \"owner_email\",\n \"org_id\",\n \"visibility\",\n \"metadata_json\",\n ].join(\", \");\n}\n\nfunction scopedReviewClause(scope: ReviewScope): {\n clause: string;\n params: unknown[];\n} {\n const parts: string[] = [];\n const params: unknown[] = [];\n\n if (scope.userEmail) {\n parts.push(\"owner_email = ?\");\n params.push(scope.userEmail);\n }\n if (scope.orgId) {\n parts.push(\"(visibility = 'org' AND org_id = ?)\");\n params.push(scope.orgId);\n }\n parts.push(\"visibility = 'public'\");\n\n return { clause: `(${parts.join(\" OR \")})`, params };\n}\n\nfunction mapCommentRow(row: Record<string, unknown>): ReviewComment {\n return {\n id: String(row.id),\n resourceType: String(row.resource_type),\n resourceId: String(row.resource_id),\n threadId: String(row.thread_id),\n parentCommentId: nullableString(row.parent_comment_id),\n targetId: nullableString(row.target_id),\n kind: normalizeKind(row.kind),\n status: normalizeCommentStatus(row.status),\n anchor: parseOptionalJson(row.anchor_json),\n body: String(row.body),\n authorEmail: nullableString(row.author_email),\n authorName: nullableString(row.author_name),\n createdBy: normalizeActor(row.created_by),\n resolutionTarget: normalizeResolutionTarget(row.resolution_target),\n mentions: parseMentions(row.mentions_json),\n ownerEmail: nullableString(row.owner_email),\n orgId: nullableString(row.org_id),\n visibility: normalizeVisibility(row.visibility),\n resolvedBy: nullableString(row.resolved_by),\n resolvedAt: nullableString(row.resolved_at),\n consumedAt: nullableString(row.consumed_at),\n deletedBy: nullableString(row.deleted_by),\n deletedAt: nullableString(row.deleted_at),\n createdAt: String(row.created_at),\n updatedAt: String(row.updated_at),\n metadata: parseObject(row.metadata_json),\n };\n}\n\nfunction mapStatusRow(row: Record<string, unknown>): ReviewStatusEntry {\n return {\n id: String(row.id),\n resourceType: String(row.resource_type),\n resourceId: String(row.resource_id),\n status: normalizeReviewStatus(row.status),\n note: nullableString(row.note),\n updatedBy: nullableString(row.updated_by),\n updatedAt: String(row.updated_at),\n ownerEmail: nullableString(row.owner_email),\n orgId: nullableString(row.org_id),\n visibility: normalizeVisibility(row.visibility),\n metadata: parseObject(row.metadata_json),\n };\n}\n\nfunction createReviewId(prefix: string): string {\n return `rev_${prefix}_${globalThis.crypto.randomUUID()}`;\n}\n\nfunction statusId(resourceType: string, resourceId: string): string {\n return `${resourceType}:${resourceId}`;\n}\n\nfunction clampLimit(value: number | undefined): number {\n if (!Number.isFinite(value)) {\n return 200;\n }\n return Math.min(500, Math.max(1, Math.floor(value ?? 200)));\n}\n\nfunction nullableString(value: unknown): string | null {\n return value === null || value === undefined ? null : String(value);\n}\n\nfunction stringifyOptionalJson(value: unknown): string | null {\n return value === null || value === undefined ? null : JSON.stringify(value);\n}\n\nfunction parseOptionalJson(value: unknown): unknown | null {\n if (value === null || value === undefined || value === \"\") {\n return null;\n }\n if (typeof value !== \"string\") {\n return value;\n }\n return JSON.parse(value);\n}\n\nfunction parseObject(value: unknown): Record<string, unknown> | null {\n const parsed = parseOptionalJson(value);\n return typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : null;\n}\n\nfunction parseMentions(value: unknown): ReviewMention[] {\n const parsed = parseOptionalJson(value);\n return Array.isArray(parsed) ? (parsed as ReviewMention[]) : [];\n}\n\nfunction normalizeVisibility(value: unknown): Visibility {\n return value === \"org\" || value === \"public\" ? value : \"private\";\n}\n\nfunction normalizeKind(value: unknown): ReviewCommentKind {\n return value === \"annotation\" ||\n value === \"correction\" ||\n value === \"question\" ||\n value === \"decision\" ||\n value === \"review\"\n ? value\n : \"comment\";\n}\n\nfunction normalizeCommentStatus(value: unknown): ReviewCommentStatus {\n return value === \"resolved\" || value === \"deleted\" ? value : \"open\";\n}\n\nfunction normalizeReviewStatus(value: unknown): ReviewStatus {\n return value === \"in_review\" ||\n value === \"approved\" ||\n value === \"changes_requested\"\n ? value\n : \"draft\";\n}\n\nfunction normalizeActor(value: unknown): ReviewActorKind {\n return value === \"agent\" || value === \"import\" || value === \"system\"\n ? value\n : \"human\";\n}\n\nfunction normalizeResolutionTarget(\n value: unknown,\n): ReviewResolutionTarget | null {\n return value === \"agent\" || value === \"human\" ? value : null;\n}\n"]}
|
package/dist/secrets/routes.d.ts
CHANGED
|
@@ -34,37 +34,37 @@ export declare function createListSecretsHandler(): import("h3").EventHandlerWit
|
|
|
34
34
|
/** POST /_agent-native/secrets/:key — write a secret. */
|
|
35
35
|
export declare function createWriteSecretHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
36
36
|
error: string;
|
|
37
|
-
status?: undefined;
|
|
38
37
|
ok?: undefined;
|
|
38
|
+
status?: undefined;
|
|
39
39
|
} | {
|
|
40
|
+
error?: undefined;
|
|
40
41
|
ok: boolean;
|
|
41
42
|
status: string;
|
|
42
|
-
error?: undefined;
|
|
43
43
|
} | {
|
|
44
|
+
ok?: undefined;
|
|
44
45
|
error: string;
|
|
45
46
|
removed?: undefined;
|
|
46
|
-
ok?: undefined;
|
|
47
47
|
} | {
|
|
48
|
+
error?: undefined;
|
|
48
49
|
ok: boolean;
|
|
49
50
|
removed: boolean;
|
|
50
|
-
error?: undefined;
|
|
51
51
|
}>>;
|
|
52
52
|
/**
|
|
53
53
|
* POST /_agent-native/secrets/:key/test — re-run the validator against the
|
|
54
54
|
* current stored value without changing anything. Useful for the "Test" button.
|
|
55
55
|
*/
|
|
56
56
|
export declare function createTestSecretHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
57
|
+
ok?: undefined;
|
|
57
58
|
error: string;
|
|
58
59
|
note?: undefined;
|
|
59
|
-
ok?: undefined;
|
|
60
60
|
} | {
|
|
61
|
+
error?: undefined;
|
|
61
62
|
ok: boolean;
|
|
62
63
|
note?: undefined;
|
|
63
|
-
error?: undefined;
|
|
64
64
|
} | {
|
|
65
|
+
error?: undefined;
|
|
65
66
|
ok: boolean;
|
|
66
67
|
note: string;
|
|
67
|
-
error?: undefined;
|
|
68
68
|
} | {
|
|
69
69
|
note?: undefined;
|
|
70
70
|
ok: boolean;
|
|
@@ -95,12 +95,12 @@ export interface AdHocSecretPayload {
|
|
|
95
95
|
export declare function createAdHocSecretHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<AdHocSecretPayload[] | {
|
|
96
96
|
error: string;
|
|
97
97
|
} | {
|
|
98
|
+
error?: undefined;
|
|
98
99
|
ok: boolean;
|
|
99
100
|
key: string;
|
|
100
|
-
error?: undefined;
|
|
101
101
|
} | {
|
|
102
|
+
error?: undefined;
|
|
102
103
|
ok: boolean;
|
|
103
104
|
removed: boolean;
|
|
104
|
-
error?: undefined;
|
|
105
105
|
}>>;
|
|
106
106
|
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-chat-plugin.d.ts","sourceRoot":"","sources":["../../src/server/agent-chat-plugin.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-chat-plugin.d.ts","sourceRoot":"","sources":["../../src/server/agent-chat-plugin.ts"],"names":[],"mappings":"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"}
|