reviewdeck 0.5.5 → 0.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/reviewdeck.mjs +53 -35
- package/dist/ui/reviewdeck-ui.js +327 -293
- package/dist/ui/style.css +1 -1
- package/dist/web/assets/{angular-html-DWuGm5xy.js → angular-html-B3zBJAXJ.js} +1 -1
- package/dist/web/assets/{angular-ts-DVXvD00S.js → angular-ts-BI9PWmtv.js} +1 -1
- package/dist/web/assets/{apl-DVl3z51k.js → apl-B07Qb1eI.js} +1 -1
- package/dist/web/assets/{astro-FygargnO.js → astro-ZCYjB3rm.js} +1 -1
- package/dist/web/assets/{blade-CNJ0WuCS.js → blade-Bax3cm3i.js} +1 -1
- package/dist/web/assets/{c-BV6OikQb.js → c-SRgt46T9.js} +1 -1
- package/dist/web/assets/{cobol-BQIJ3EVQ.js → cobol-D8O2swMa.js} +1 -1
- package/dist/web/assets/{coffee-DogSHWD_.js → coffee-k6CFFSdi.js} +1 -1
- package/dist/web/assets/{cpp-Cf_Rfity.js → cpp-D6Inj7wT.js} +1 -1
- package/dist/web/assets/{crystal-D04ajnW0.js → crystal-DE3iTBLw.js} +1 -1
- package/dist/web/assets/{css-Iid97JTp.js → css-DZ7EVa2V.js} +1 -1
- package/dist/web/assets/{edge-s--bS86f.js → edge-1Z6ycZ7w.js} +1 -1
- package/dist/web/assets/{elixir-DW2rmLnX.js → elixir-C7hwdY5G.js} +1 -1
- package/dist/web/assets/{elm-DzUcNBq_.js → elm-BKaCa8oZ.js} +1 -1
- package/dist/web/assets/{erb-DF9otgXb.js → erb-Co_PUgMD.js} +1 -1
- package/dist/web/assets/{git-rebase-BMxjo51o.js → git-rebase-C86B6Vi9.js} +1 -1
- package/dist/web/assets/{glimmer-js-CVv3jk7p.js → glimmer-js-C4nkie0K.js} +1 -1
- package/dist/web/assets/{glimmer-ts-BBjFZC7t.js → glimmer-ts-Y_LacYTM.js} +1 -1
- package/dist/web/assets/{glsl-rMeItWfL.js → glsl-CQ0HpwFN.js} +1 -1
- package/dist/web/assets/{graphql-DSQbVnU_.js → graphql-BVpMM1-S.js} +1 -1
- package/dist/web/assets/{hack-BnIKd7Nr.js → hack-CNNZR_jB.js} +1 -1
- package/dist/web/assets/{haml-N29Jy28F.js → haml-C-JL97tm.js} +1 -1
- package/dist/web/assets/{handlebars-Dw8BouYI.js → handlebars-CAJMKmMm.js} +1 -1
- package/dist/web/assets/{html-Czk15n93.js → html-DY82zCVc.js} +1 -1
- package/dist/web/assets/{html-derivative-DfwmC33X.js → html-derivative-DPAqCGP-.js} +1 -1
- package/dist/web/assets/{http-C3t2WwVI.js → http-CWkl8694.js} +1 -1
- package/dist/web/assets/{hurl-VOE5zvPo.js → hurl-DmmtMDmo.js} +1 -1
- package/dist/web/assets/index-C7qBqBr8.css +2 -0
- package/dist/web/assets/{index-C0nAyIuj.js → index-DTOGzE0I.js} +3 -3
- package/dist/web/assets/{java-T1M8z7S1.js → java-CJTX4292.js} +1 -1
- package/dist/web/assets/{javascript-KDhMboRT.js → javascript-CmqscKmo.js} +1 -1
- package/dist/web/assets/{jinja-e8Rl0tzC.js → jinja-C_w7WMI_.js} +1 -1
- package/dist/web/assets/{jison-BHIL59Do.js → jison-D2ddHcqQ.js} +1 -1
- package/dist/web/assets/{json-CWHftYPw.js → json-CI7nPRhp.js} +1 -1
- package/dist/web/assets/{jsx-DZLTTsrQ.js → jsx-BWvGOpz3.js} +1 -1
- package/dist/web/assets/{julia-C1NRJP2i.js → julia-CWCIdu9g.js} +1 -1
- package/dist/web/assets/{just-BSFPO1mG.js → just-CqEKm4D1.js} +1 -1
- package/dist/web/assets/{latex-DZrqiXtV.js → latex-7purK8BQ.js} +1 -1
- package/dist/web/assets/{liquid-qBxMASIY.js → liquid-CJHzr48w.js} +1 -1
- package/dist/web/assets/{lua-BHEEt64y.js → lua-DbhU1TfM.js} +1 -1
- package/dist/web/assets/{marko-CJ2DQh5A.js → marko-DH-B1myO.js} +1 -1
- package/dist/web/assets/{mdc-CUUuxlOm.js → mdc-CTNevbVm.js} +1 -1
- package/dist/web/assets/{nginx-C9G8At4E.js → nginx-jjcZb8Pw.js} +1 -1
- package/dist/web/assets/{nim--dqVnNT0.js → nim-s97wd61w.js} +1 -1
- package/dist/web/assets/{perl-Ct8fi8QR.js → perl-xZeicLL7.js} +1 -1
- package/dist/web/assets/{php-Cufb8YpA.js → php-BJMqN-LF.js} +1 -1
- package/dist/web/assets/{pug-D9o7z7Fm.js → pug-Bi0wfkHV.js} +1 -1
- package/dist/web/assets/{qml-CW9rqymM.js → qml-DhGlXYX_.js} +1 -1
- package/dist/web/assets/{r-sTeAimKG.js → r-LdBGz0Qv.js} +1 -1
- package/dist/web/assets/{razor-CnyrJhsb.js → razor-_6rw4xbs.js} +1 -1
- package/dist/web/assets/{regexp-BcVvF5cO.js → regexp-Dr2qjXWX.js} +1 -1
- package/dist/web/assets/{rst-BMTebBrZ.js → rst-72o3C6ZS.js} +1 -1
- package/dist/web/assets/{ruby-DlXsjQgm.js → ruby-pfPY-H5B.js} +1 -1
- package/dist/web/assets/{sas-D_E2mxhD.js → sas-H542Te49.js} +1 -1
- package/dist/web/assets/{scss-DDUjR_nt.js → scss-Dg_fGc4y.js} +1 -1
- package/dist/web/assets/{shellscript-BCqX2_ui.js → shellscript-5c5G3rVl.js} +1 -1
- package/dist/web/assets/{shellsession-h7lRoyOx.js → shellsession-DwqgTy_-.js} +1 -1
- package/dist/web/assets/{soy-C2OgrI52.js → soy-Cxo7HTO4.js} +1 -1
- package/dist/web/assets/{sql-7VKyyGwW.js → sql-Bu25qNOy.js} +1 -1
- package/dist/web/assets/{stata-DPsgfMgO.js → stata-D5TTLz5y.js} +1 -1
- package/dist/web/assets/{surrealql-Xz1VRcvz.js → surrealql-BAgkA-RH.js} +1 -1
- package/dist/web/assets/{svelte-8p1EWvRd.js → svelte-DFGi7nwf.js} +1 -1
- package/dist/web/assets/{templ-75xgeQT6.js → templ-aN07Fe-P.js} +1 -1
- package/dist/web/assets/{tex-avaFMHIR.js → tex-B_J25VCw.js} +1 -1
- package/dist/web/assets/{ts-tags-C2w901Pa.js → ts-tags-D1caw-24.js} +1 -1
- package/dist/web/assets/{tsx-DkBb618Q.js → tsx-CWcImPlg.js} +1 -1
- package/dist/web/assets/{twig-Br9FrAnl.js → twig-CgzHxfhK.js} +1 -1
- package/dist/web/assets/{typescript-e_Lz6GjC.js → typescript-fO7eABzD.js} +1 -1
- package/dist/web/assets/{vue-BDGObZHD.js → vue-BSrUQPcp.js} +1 -1
- package/dist/web/assets/{vue-html-F7TCw4b3.js → vue-html-DWLdqku7.js} +1 -1
- package/dist/web/assets/{vue-vine-Ac2KKLsT.js → vue-vine-EAE7XNKI.js} +1 -1
- package/dist/web/assets/{xml-B-GoxMi2.js → xml-Dh8dQ3ai.js} +1 -1
- package/dist/web/assets/{xsl-DBzGCU3S.js → xsl-XbkRqdbP.js} +1 -1
- package/dist/web/assets/{yaml-BJ8bX47k.js → yaml-DI9IZDbF.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/web/assets/index-niTK6jOl.css +0 -2
package/dist/reviewdeck.mjs
CHANGED
|
@@ -684,6 +684,7 @@ var init_memory = __esm({
|
|
|
684
684
|
let all = [...this.sessions.values()];
|
|
685
685
|
if (filter?.userId) all = all.filter((s) => s.userId === filter.userId);
|
|
686
686
|
if (filter?.agentId) all = all.filter((s) => s.agentId === filter.agentId);
|
|
687
|
+
if (filter?.agentSessionId) all = all.filter((s) => s.agentSessionId === filter.agentSessionId);
|
|
687
688
|
return all;
|
|
688
689
|
}
|
|
689
690
|
// --- Auth: Users ---
|
|
@@ -2963,23 +2964,30 @@ var init_postgres = __esm({
|
|
|
2963
2964
|
async init() {
|
|
2964
2965
|
await this.sql`
|
|
2965
2966
|
CREATE TABLE IF NOT EXISTS sessions (
|
|
2966
|
-
id
|
|
2967
|
-
review_token
|
|
2968
|
-
status
|
|
2969
|
-
user_id
|
|
2970
|
-
agent_id
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
2975
|
-
|
|
2967
|
+
id TEXT PRIMARY KEY,
|
|
2968
|
+
review_token TEXT NOT NULL UNIQUE,
|
|
2969
|
+
status TEXT NOT NULL DEFAULT 'reviewing',
|
|
2970
|
+
user_id TEXT NOT NULL,
|
|
2971
|
+
agent_id TEXT,
|
|
2972
|
+
agent_session_id TEXT,
|
|
2973
|
+
split_meta JSONB NOT NULL,
|
|
2974
|
+
sub_patches JSONB NOT NULL,
|
|
2975
|
+
submission JSONB,
|
|
2976
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
2977
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
2976
2978
|
)
|
|
2979
|
+
`;
|
|
2980
|
+
await this.sql`
|
|
2981
|
+
ALTER TABLE sessions ADD COLUMN IF NOT EXISTS agent_session_id TEXT
|
|
2977
2982
|
`;
|
|
2978
2983
|
await this.sql`
|
|
2979
2984
|
CREATE INDEX IF NOT EXISTS idx_sessions_review_token ON sessions (review_token)
|
|
2980
2985
|
`;
|
|
2981
2986
|
await this.sql`
|
|
2982
2987
|
CREATE INDEX IF NOT EXISTS idx_sessions_user_id ON sessions (user_id)
|
|
2988
|
+
`;
|
|
2989
|
+
await this.sql`
|
|
2990
|
+
CREATE INDEX IF NOT EXISTS idx_sessions_agent_session_id ON sessions (agent_session_id)
|
|
2983
2991
|
`;
|
|
2984
2992
|
await this.sql`
|
|
2985
2993
|
CREATE TABLE IF NOT EXISTS uploads (
|
|
@@ -3073,13 +3081,14 @@ var init_postgres = __esm({
|
|
|
3073
3081
|
}
|
|
3074
3082
|
async saveSession(session) {
|
|
3075
3083
|
await this.sql`
|
|
3076
|
-
INSERT INTO sessions (id, review_token, status, user_id, agent_id, split_meta, sub_patches, submission, created_at, updated_at)
|
|
3084
|
+
INSERT INTO sessions (id, review_token, status, user_id, agent_id, agent_session_id, split_meta, sub_patches, submission, created_at, updated_at)
|
|
3077
3085
|
VALUES (
|
|
3078
3086
|
${session.id},
|
|
3079
3087
|
${session.reviewToken},
|
|
3080
3088
|
${session.status},
|
|
3081
3089
|
${session.userId},
|
|
3082
3090
|
${session.agentId ?? null},
|
|
3091
|
+
${session.agentSessionId ?? null},
|
|
3083
3092
|
${this.sql.json(session.splitMeta)},
|
|
3084
3093
|
${this.sql.json(session.subPatches)},
|
|
3085
3094
|
${session.submission ? this.sql.json(session.submission) : null},
|
|
@@ -3090,7 +3099,7 @@ var init_postgres = __esm({
|
|
|
3090
3099
|
}
|
|
3091
3100
|
async getSession(id) {
|
|
3092
3101
|
const rows = await this.sql`
|
|
3093
|
-
SELECT id, review_token, status, user_id, agent_id, split_meta, sub_patches, submission, created_at, updated_at
|
|
3102
|
+
SELECT id, review_token, status, user_id, agent_id, agent_session_id, split_meta, sub_patches, submission, created_at, updated_at
|
|
3094
3103
|
FROM sessions WHERE id = ${id}
|
|
3095
3104
|
`;
|
|
3096
3105
|
if (rows.length === 0) return void 0;
|
|
@@ -3098,7 +3107,7 @@ var init_postgres = __esm({
|
|
|
3098
3107
|
}
|
|
3099
3108
|
async getSessionByToken(reviewToken) {
|
|
3100
3109
|
const rows = await this.sql`
|
|
3101
|
-
SELECT id, review_token, status, user_id, agent_id, split_meta, sub_patches, submission, created_at, updated_at
|
|
3110
|
+
SELECT id, review_token, status, user_id, agent_id, agent_session_id, split_meta, sub_patches, submission, created_at, updated_at
|
|
3102
3111
|
FROM sessions WHERE review_token = ${reviewToken}
|
|
3103
3112
|
`;
|
|
3104
3113
|
if (rows.length === 0) return void 0;
|
|
@@ -3116,23 +3125,19 @@ var init_postgres = __esm({
|
|
|
3116
3125
|
return this.getSession(id);
|
|
3117
3126
|
}
|
|
3118
3127
|
async listSessions(filter) {
|
|
3119
|
-
|
|
3120
|
-
if (filter?.userId
|
|
3121
|
-
|
|
3122
|
-
|
|
3123
|
-
|
|
3124
|
-
|
|
3125
|
-
|
|
3126
|
-
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
SELECT id, review_token, status, user_id, agent_id, split_meta, sub_patches, submission, created_at, updated_at
|
|
3133
|
-
FROM sessions ORDER BY created_at DESC
|
|
3134
|
-
`;
|
|
3135
|
-
}
|
|
3128
|
+
const conds = [];
|
|
3129
|
+
if (filter?.userId) conds.push(this.sql`user_id = ${filter.userId}`);
|
|
3130
|
+
if (filter?.agentId) conds.push(this.sql`agent_id = ${filter.agentId}`);
|
|
3131
|
+
if (filter?.agentSessionId) conds.push(this.sql`agent_session_id = ${filter.agentSessionId}`);
|
|
3132
|
+
const rows = conds.length ? await this.sql`
|
|
3133
|
+
SELECT id, review_token, status, user_id, agent_id, agent_session_id, split_meta, sub_patches, submission, created_at, updated_at
|
|
3134
|
+
FROM sessions
|
|
3135
|
+
WHERE ${conds.reduce((acc, c) => this.sql`${acc} AND ${c}`)}
|
|
3136
|
+
ORDER BY created_at DESC
|
|
3137
|
+
` : await this.sql`
|
|
3138
|
+
SELECT id, review_token, status, user_id, agent_id, agent_session_id, split_meta, sub_patches, submission, created_at, updated_at
|
|
3139
|
+
FROM sessions ORDER BY created_at DESC
|
|
3140
|
+
`;
|
|
3136
3141
|
return rows.map((row) => this.rowToSession(row));
|
|
3137
3142
|
}
|
|
3138
3143
|
// --- Auth: Users ---
|
|
@@ -3314,6 +3319,7 @@ var init_postgres = __esm({
|
|
|
3314
3319
|
status: row.status,
|
|
3315
3320
|
userId: row.user_id,
|
|
3316
3321
|
agentId: row.agent_id ?? void 0,
|
|
3322
|
+
agentSessionId: row.agent_session_id ?? void 0,
|
|
3317
3323
|
splitMeta: row.split_meta,
|
|
3318
3324
|
subPatches: row.sub_patches,
|
|
3319
3325
|
submission: row.submission ?? null,
|
|
@@ -21418,10 +21424,12 @@ function createReviewRoutes(storage, baseUrl) {
|
|
|
21418
21424
|
const {
|
|
21419
21425
|
fileId,
|
|
21420
21426
|
splitMeta,
|
|
21421
|
-
agentId: bodyAgentId
|
|
21427
|
+
agentId: bodyAgentId,
|
|
21428
|
+
agentSessionId: bodyAgentSessionId
|
|
21422
21429
|
} = await c.req.json();
|
|
21423
21430
|
const userId = c.get("userId") ?? "";
|
|
21424
21431
|
const agentId = bodyAgentId ?? c.req.header("x-agent-id");
|
|
21432
|
+
const agentSessionId = bodyAgentSessionId ?? c.req.header("x-session-id");
|
|
21425
21433
|
const upload = await storage.getUpload(fileId);
|
|
21426
21434
|
if (!upload) return c.json({ error: "Upload not found" }, 404);
|
|
21427
21435
|
const patches = parsePatch(upload.diff);
|
|
@@ -21449,6 +21457,7 @@ function createReviewRoutes(storage, baseUrl) {
|
|
|
21449
21457
|
status: "reviewing",
|
|
21450
21458
|
userId,
|
|
21451
21459
|
agentId,
|
|
21460
|
+
agentSessionId,
|
|
21452
21461
|
splitMeta,
|
|
21453
21462
|
subPatches,
|
|
21454
21463
|
submission: null,
|
|
@@ -21476,6 +21485,7 @@ function createReviewRoutes(storage, baseUrl) {
|
|
|
21476
21485
|
status: session.status,
|
|
21477
21486
|
userId: session.userId,
|
|
21478
21487
|
agentId: session.agentId,
|
|
21488
|
+
agentSessionId: session.agentSessionId,
|
|
21479
21489
|
patchCount: session.subPatches.length,
|
|
21480
21490
|
reviewUrl: `${baseUrl}/review/${session.id}?token=${session.reviewToken}`,
|
|
21481
21491
|
submission: session.submission,
|
|
@@ -21486,8 +21496,13 @@ function createReviewRoutes(storage, baseUrl) {
|
|
|
21486
21496
|
app.get("/sessions", async (c) => {
|
|
21487
21497
|
const userId = c.get("userId") ?? "";
|
|
21488
21498
|
const agentId = c.req.query("agentId");
|
|
21499
|
+
const agentSessionId = c.req.query("agentSessionId");
|
|
21489
21500
|
const all = c.req.query("all") === "true";
|
|
21490
|
-
const filter = all ? { userId } : {
|
|
21501
|
+
const filter = all ? { userId } : {
|
|
21502
|
+
userId,
|
|
21503
|
+
agentId: agentId ?? void 0,
|
|
21504
|
+
agentSessionId: agentSessionId ?? void 0
|
|
21505
|
+
};
|
|
21491
21506
|
const sessions = await storage.listSessions(userId ? filter : void 0);
|
|
21492
21507
|
return c.json(
|
|
21493
21508
|
sessions.map((s) => ({
|
|
@@ -21495,6 +21510,7 @@ function createReviewRoutes(storage, baseUrl) {
|
|
|
21495
21510
|
status: s.status,
|
|
21496
21511
|
userId: s.userId,
|
|
21497
21512
|
agentId: s.agentId,
|
|
21513
|
+
agentSessionId: s.agentSessionId,
|
|
21498
21514
|
reviewUrl: `${baseUrl}/review/${s.id}?token=${s.reviewToken}`,
|
|
21499
21515
|
patchCount: s.subPatches.length,
|
|
21500
21516
|
createdAt: s.createdAt,
|
|
@@ -38949,7 +38965,7 @@ function textResult(data, isError = false) {
|
|
|
38949
38965
|
};
|
|
38950
38966
|
return result;
|
|
38951
38967
|
}
|
|
38952
|
-
function registerTools(server, storage, baseUrl, userId, headerAgentId) {
|
|
38968
|
+
function registerTools(server, storage, baseUrl, userId, headerAgentId, headerAgentSessionId) {
|
|
38953
38969
|
server.tool(
|
|
38954
38970
|
"create_review",
|
|
38955
38971
|
"Validate split metadata, generate sub-patches, and create a persistent review session. Returns sessionId and reviewUrl. Upload diffs first via POST /api/uploads.",
|
|
@@ -39005,6 +39021,7 @@ function registerTools(server, storage, baseUrl, userId, headerAgentId) {
|
|
|
39005
39021
|
status: "reviewing",
|
|
39006
39022
|
userId,
|
|
39007
39023
|
agentId: params.agentId ?? headerAgentId,
|
|
39024
|
+
agentSessionId: headerAgentSessionId,
|
|
39008
39025
|
splitMeta,
|
|
39009
39026
|
subPatches,
|
|
39010
39027
|
submission: null,
|
|
@@ -39083,11 +39100,12 @@ function createMcpRouter(storage, baseUrl) {
|
|
|
39083
39100
|
router.all("/", async (c) => {
|
|
39084
39101
|
const userId = c.get("userId") ?? "";
|
|
39085
39102
|
const headerAgentId = c.req.header("x-agent-id");
|
|
39103
|
+
const headerAgentSessionId = c.req.header("x-session-id");
|
|
39086
39104
|
console.error(
|
|
39087
|
-
`[mcp] ${c.req.method} ${c.req.path} userId=${userId} agentId=${headerAgentId ?? "-"}`
|
|
39105
|
+
`[mcp] ${c.req.method} ${c.req.path} userId=${userId} agentId=${headerAgentId ?? "-"} agentSessionId=${headerAgentSessionId ?? "-"}`
|
|
39088
39106
|
);
|
|
39089
39107
|
const server = new McpServer({ name: "reviewdeck", version: "0.5.3" });
|
|
39090
|
-
registerTools(server, storage, baseUrl, userId, headerAgentId);
|
|
39108
|
+
registerTools(server, storage, baseUrl, userId, headerAgentId, headerAgentSessionId);
|
|
39091
39109
|
const transport = new StreamableHTTPTransport({ sessionIdGenerator: void 0 });
|
|
39092
39110
|
await server.connect(transport);
|
|
39093
39111
|
return transport.handleRequest(c);
|