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.
Files changed (80) hide show
  1. package/dist/reviewdeck.mjs +53 -35
  2. package/dist/ui/reviewdeck-ui.js +327 -293
  3. package/dist/ui/style.css +1 -1
  4. package/dist/web/assets/{angular-html-DWuGm5xy.js → angular-html-B3zBJAXJ.js} +1 -1
  5. package/dist/web/assets/{angular-ts-DVXvD00S.js → angular-ts-BI9PWmtv.js} +1 -1
  6. package/dist/web/assets/{apl-DVl3z51k.js → apl-B07Qb1eI.js} +1 -1
  7. package/dist/web/assets/{astro-FygargnO.js → astro-ZCYjB3rm.js} +1 -1
  8. package/dist/web/assets/{blade-CNJ0WuCS.js → blade-Bax3cm3i.js} +1 -1
  9. package/dist/web/assets/{c-BV6OikQb.js → c-SRgt46T9.js} +1 -1
  10. package/dist/web/assets/{cobol-BQIJ3EVQ.js → cobol-D8O2swMa.js} +1 -1
  11. package/dist/web/assets/{coffee-DogSHWD_.js → coffee-k6CFFSdi.js} +1 -1
  12. package/dist/web/assets/{cpp-Cf_Rfity.js → cpp-D6Inj7wT.js} +1 -1
  13. package/dist/web/assets/{crystal-D04ajnW0.js → crystal-DE3iTBLw.js} +1 -1
  14. package/dist/web/assets/{css-Iid97JTp.js → css-DZ7EVa2V.js} +1 -1
  15. package/dist/web/assets/{edge-s--bS86f.js → edge-1Z6ycZ7w.js} +1 -1
  16. package/dist/web/assets/{elixir-DW2rmLnX.js → elixir-C7hwdY5G.js} +1 -1
  17. package/dist/web/assets/{elm-DzUcNBq_.js → elm-BKaCa8oZ.js} +1 -1
  18. package/dist/web/assets/{erb-DF9otgXb.js → erb-Co_PUgMD.js} +1 -1
  19. package/dist/web/assets/{git-rebase-BMxjo51o.js → git-rebase-C86B6Vi9.js} +1 -1
  20. package/dist/web/assets/{glimmer-js-CVv3jk7p.js → glimmer-js-C4nkie0K.js} +1 -1
  21. package/dist/web/assets/{glimmer-ts-BBjFZC7t.js → glimmer-ts-Y_LacYTM.js} +1 -1
  22. package/dist/web/assets/{glsl-rMeItWfL.js → glsl-CQ0HpwFN.js} +1 -1
  23. package/dist/web/assets/{graphql-DSQbVnU_.js → graphql-BVpMM1-S.js} +1 -1
  24. package/dist/web/assets/{hack-BnIKd7Nr.js → hack-CNNZR_jB.js} +1 -1
  25. package/dist/web/assets/{haml-N29Jy28F.js → haml-C-JL97tm.js} +1 -1
  26. package/dist/web/assets/{handlebars-Dw8BouYI.js → handlebars-CAJMKmMm.js} +1 -1
  27. package/dist/web/assets/{html-Czk15n93.js → html-DY82zCVc.js} +1 -1
  28. package/dist/web/assets/{html-derivative-DfwmC33X.js → html-derivative-DPAqCGP-.js} +1 -1
  29. package/dist/web/assets/{http-C3t2WwVI.js → http-CWkl8694.js} +1 -1
  30. package/dist/web/assets/{hurl-VOE5zvPo.js → hurl-DmmtMDmo.js} +1 -1
  31. package/dist/web/assets/index-C7qBqBr8.css +2 -0
  32. package/dist/web/assets/{index-C0nAyIuj.js → index-DTOGzE0I.js} +3 -3
  33. package/dist/web/assets/{java-T1M8z7S1.js → java-CJTX4292.js} +1 -1
  34. package/dist/web/assets/{javascript-KDhMboRT.js → javascript-CmqscKmo.js} +1 -1
  35. package/dist/web/assets/{jinja-e8Rl0tzC.js → jinja-C_w7WMI_.js} +1 -1
  36. package/dist/web/assets/{jison-BHIL59Do.js → jison-D2ddHcqQ.js} +1 -1
  37. package/dist/web/assets/{json-CWHftYPw.js → json-CI7nPRhp.js} +1 -1
  38. package/dist/web/assets/{jsx-DZLTTsrQ.js → jsx-BWvGOpz3.js} +1 -1
  39. package/dist/web/assets/{julia-C1NRJP2i.js → julia-CWCIdu9g.js} +1 -1
  40. package/dist/web/assets/{just-BSFPO1mG.js → just-CqEKm4D1.js} +1 -1
  41. package/dist/web/assets/{latex-DZrqiXtV.js → latex-7purK8BQ.js} +1 -1
  42. package/dist/web/assets/{liquid-qBxMASIY.js → liquid-CJHzr48w.js} +1 -1
  43. package/dist/web/assets/{lua-BHEEt64y.js → lua-DbhU1TfM.js} +1 -1
  44. package/dist/web/assets/{marko-CJ2DQh5A.js → marko-DH-B1myO.js} +1 -1
  45. package/dist/web/assets/{mdc-CUUuxlOm.js → mdc-CTNevbVm.js} +1 -1
  46. package/dist/web/assets/{nginx-C9G8At4E.js → nginx-jjcZb8Pw.js} +1 -1
  47. package/dist/web/assets/{nim--dqVnNT0.js → nim-s97wd61w.js} +1 -1
  48. package/dist/web/assets/{perl-Ct8fi8QR.js → perl-xZeicLL7.js} +1 -1
  49. package/dist/web/assets/{php-Cufb8YpA.js → php-BJMqN-LF.js} +1 -1
  50. package/dist/web/assets/{pug-D9o7z7Fm.js → pug-Bi0wfkHV.js} +1 -1
  51. package/dist/web/assets/{qml-CW9rqymM.js → qml-DhGlXYX_.js} +1 -1
  52. package/dist/web/assets/{r-sTeAimKG.js → r-LdBGz0Qv.js} +1 -1
  53. package/dist/web/assets/{razor-CnyrJhsb.js → razor-_6rw4xbs.js} +1 -1
  54. package/dist/web/assets/{regexp-BcVvF5cO.js → regexp-Dr2qjXWX.js} +1 -1
  55. package/dist/web/assets/{rst-BMTebBrZ.js → rst-72o3C6ZS.js} +1 -1
  56. package/dist/web/assets/{ruby-DlXsjQgm.js → ruby-pfPY-H5B.js} +1 -1
  57. package/dist/web/assets/{sas-D_E2mxhD.js → sas-H542Te49.js} +1 -1
  58. package/dist/web/assets/{scss-DDUjR_nt.js → scss-Dg_fGc4y.js} +1 -1
  59. package/dist/web/assets/{shellscript-BCqX2_ui.js → shellscript-5c5G3rVl.js} +1 -1
  60. package/dist/web/assets/{shellsession-h7lRoyOx.js → shellsession-DwqgTy_-.js} +1 -1
  61. package/dist/web/assets/{soy-C2OgrI52.js → soy-Cxo7HTO4.js} +1 -1
  62. package/dist/web/assets/{sql-7VKyyGwW.js → sql-Bu25qNOy.js} +1 -1
  63. package/dist/web/assets/{stata-DPsgfMgO.js → stata-D5TTLz5y.js} +1 -1
  64. package/dist/web/assets/{surrealql-Xz1VRcvz.js → surrealql-BAgkA-RH.js} +1 -1
  65. package/dist/web/assets/{svelte-8p1EWvRd.js → svelte-DFGi7nwf.js} +1 -1
  66. package/dist/web/assets/{templ-75xgeQT6.js → templ-aN07Fe-P.js} +1 -1
  67. package/dist/web/assets/{tex-avaFMHIR.js → tex-B_J25VCw.js} +1 -1
  68. package/dist/web/assets/{ts-tags-C2w901Pa.js → ts-tags-D1caw-24.js} +1 -1
  69. package/dist/web/assets/{tsx-DkBb618Q.js → tsx-CWcImPlg.js} +1 -1
  70. package/dist/web/assets/{twig-Br9FrAnl.js → twig-CgzHxfhK.js} +1 -1
  71. package/dist/web/assets/{typescript-e_Lz6GjC.js → typescript-fO7eABzD.js} +1 -1
  72. package/dist/web/assets/{vue-BDGObZHD.js → vue-BSrUQPcp.js} +1 -1
  73. package/dist/web/assets/{vue-html-F7TCw4b3.js → vue-html-DWLdqku7.js} +1 -1
  74. package/dist/web/assets/{vue-vine-Ac2KKLsT.js → vue-vine-EAE7XNKI.js} +1 -1
  75. package/dist/web/assets/{xml-B-GoxMi2.js → xml-Dh8dQ3ai.js} +1 -1
  76. package/dist/web/assets/{xsl-DBzGCU3S.js → xsl-XbkRqdbP.js} +1 -1
  77. package/dist/web/assets/{yaml-BJ8bX47k.js → yaml-DI9IZDbF.js} +1 -1
  78. package/dist/web/index.html +2 -2
  79. package/package.json +1 -1
  80. package/dist/web/assets/index-niTK6jOl.css +0 -2
@@ -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 TEXT PRIMARY KEY,
2967
- review_token TEXT NOT NULL UNIQUE,
2968
- status TEXT NOT NULL DEFAULT 'reviewing',
2969
- user_id TEXT NOT NULL,
2970
- agent_id TEXT,
2971
- split_meta JSONB NOT NULL,
2972
- sub_patches JSONB NOT NULL,
2973
- submission JSONB,
2974
- created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
2975
- updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
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
- let rows;
3120
- if (filter?.userId && filter?.agentId) {
3121
- rows = await this.sql`
3122
- SELECT id, review_token, status, user_id, agent_id, split_meta, sub_patches, submission, created_at, updated_at
3123
- FROM sessions WHERE user_id = ${filter.userId} AND agent_id = ${filter.agentId} ORDER BY created_at DESC
3124
- `;
3125
- } else if (filter?.userId) {
3126
- rows = await this.sql`
3127
- SELECT id, review_token, status, user_id, agent_id, split_meta, sub_patches, submission, created_at, updated_at
3128
- FROM sessions WHERE user_id = ${filter.userId} ORDER BY created_at DESC
3129
- `;
3130
- } else {
3131
- rows = await this.sql`
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 } : { userId, agentId: agentId ?? void 0 };
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);