@remixhq/mcp 0.1.6 → 0.1.8

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/index.js CHANGED
@@ -413,6 +413,7 @@ var mergeRequestQueueSchema = z2.enum([
413
413
  "app_related_visible"
414
414
  ]);
415
415
  var appScopedMergeRequestQueueSchema = z2.enum(["app_reviewable", "app_outgoing", "app_related_visible"]);
416
+ var memberScopeSchema = z2.enum(["organization", "project", "app"]);
416
417
  var statusInputSchema = {
417
418
  ...commonRequestFieldsSchema,
418
419
  includeRemote: z2.boolean().optional()
@@ -433,6 +434,11 @@ var remixInputSchema = {
433
434
  name: z2.string().trim().min(1).optional(),
434
435
  outputDir: z2.string().trim().min(1).optional()
435
436
  };
437
+ var checkoutInputSchema = {
438
+ ...commonRequestFieldsSchema,
439
+ appId: z2.string().trim().min(1),
440
+ outputDir: z2.string().trim().min(1).optional()
441
+ };
436
442
  var addInputSchema = {
437
443
  ...commonRequestFieldsSchema,
438
444
  prompt: z2.string().trim().min(1),
@@ -505,6 +511,18 @@ var inviteInputSchema = {
505
511
  role: z2.string().trim().min(1).optional(),
506
512
  ttlDays: z2.number().int().positive().max(30).optional()
507
513
  };
514
+ var listMembersInputSchema = {
515
+ ...commonRequestFieldsSchema,
516
+ scope: memberScopeSchema,
517
+ targetId: z2.string().trim().min(1).optional()
518
+ };
519
+ var updateMemberRoleInputSchema = {
520
+ ...commonRequestFieldsSchema,
521
+ scope: memberScopeSchema,
522
+ targetId: z2.string().trim().min(1).optional(),
523
+ userId: z2.string().trim().min(1),
524
+ role: z2.string().trim().min(1)
525
+ };
508
526
  var statusDataSchema = z2.object({
509
527
  status: genericRecordSchema,
510
528
  riskLevel: z2.enum(["low", "medium", "high"])
@@ -513,6 +531,7 @@ var initDataSchema = z2.object({
513
531
  reused: z2.boolean(),
514
532
  projectId: z2.string(),
515
533
  appId: z2.string(),
534
+ dashboardUrl: z2.string().url(),
516
535
  upstreamAppId: z2.string(),
517
536
  bindingPath: z2.string(),
518
537
  repoRoot: z2.string()
@@ -522,6 +541,15 @@ var listDataSchema = z2.object({
522
541
  });
523
542
  var remixDataSchema = z2.object({
524
543
  appId: z2.string(),
544
+ dashboardUrl: z2.string().url(),
545
+ projectId: z2.string(),
546
+ upstreamAppId: z2.string(),
547
+ bindingPath: z2.string(),
548
+ repoRoot: z2.string()
549
+ });
550
+ var checkoutDataSchema = z2.object({
551
+ appId: z2.string(),
552
+ dashboardUrl: z2.string().url(),
525
553
  projectId: z2.string(),
526
554
  upstreamAppId: z2.string(),
527
555
  bindingPath: z2.string(),
@@ -545,10 +573,22 @@ var rejectDataSchema = genericRecordSchema;
545
573
  var syncUpstreamDataSchema = genericRecordSchema;
546
574
  var reconcileDataSchema = genericRecordSchema;
547
575
  var inviteDataSchema = genericRecordSchema;
576
+ var memberRecordSchema = genericRecordSchema;
577
+ var listMembersDataSchema = z2.object({
578
+ scopeType: memberScopeSchema,
579
+ targetId: z2.string(),
580
+ members: z2.array(memberRecordSchema)
581
+ });
582
+ var updateMemberRoleDataSchema = z2.object({
583
+ scopeType: memberScopeSchema,
584
+ targetId: z2.string(),
585
+ member: memberRecordSchema
586
+ });
548
587
  var statusSuccessSchema = makeSuccessSchema(statusDataSchema);
549
588
  var initSuccessSchema = makeSuccessSchema(initDataSchema);
550
589
  var listSuccessSchema = makeSuccessSchema(listDataSchema);
551
590
  var remixSuccessSchema = makeSuccessSchema(remixDataSchema);
591
+ var checkoutSuccessSchema = makeSuccessSchema(checkoutDataSchema);
552
592
  var addSuccessSchema = makeSuccessSchema(addDataSchema);
553
593
  var recordTurnSuccessSchema = makeSuccessSchema(recordTurnDataSchema);
554
594
  var syncSuccessSchema = makeSuccessSchema(syncDataSchema);
@@ -560,12 +600,17 @@ var rejectSuccessSchema = makeSuccessSchema(rejectDataSchema);
560
600
  var syncUpstreamSuccessSchema = makeSuccessSchema(syncUpstreamDataSchema);
561
601
  var reconcileSuccessSchema = makeSuccessSchema(reconcileDataSchema);
562
602
  var inviteSuccessSchema = makeSuccessSchema(inviteDataSchema);
603
+ var listMembersSuccessSchema = makeSuccessSchema(listMembersDataSchema);
604
+ var updateMemberRoleSuccessSchema = makeSuccessSchema(updateMemberRoleDataSchema);
563
605
 
564
606
  // src/domain/coreAdapter.ts
565
607
  import {
608
+ collabListMembers as coreCollabListMembers,
609
+ collabUpdateMemberRole as coreCollabUpdateMemberRole,
566
610
  collabAdd as coreCollabAdd,
567
611
  collabRecordTurn as coreCollabRecordTurn,
568
612
  collabApprove as coreCollabApprove,
613
+ collabCheckout as coreCollabCheckout,
569
614
  collabListMergeRequests as coreCollabListMergeRequests,
570
615
  collabInit as coreCollabInit,
571
616
  collabInvite as coreCollabInvite,
@@ -701,6 +746,24 @@ async function remixCollab(params) {
701
746
  }
702
747
  };
703
748
  }
749
+ async function checkoutCollab(params) {
750
+ const api = await createCollabApiClient();
751
+ const result = await coreCollabCheckout({
752
+ api,
753
+ cwd: params.cwd,
754
+ appId: params.appId,
755
+ outputDir: params.outputDir ?? null
756
+ });
757
+ return {
758
+ data: result,
759
+ warnings: collectResultWarnings(result),
760
+ recommendedNextActions: ["Run remix_collab_status inside the checked out repository before using Remix mutation tools there."],
761
+ logContext: {
762
+ repoRoot: result.repoRoot,
763
+ appId: result.appId
764
+ }
765
+ };
766
+ }
704
767
  async function addCollabStep(params) {
705
768
  const api = await createCollabApiClient();
706
769
  const repoRoot = await findGitRoot(params.cwd);
@@ -974,6 +1037,38 @@ async function inviteCollaborator(params) {
974
1037
  logContext: {}
975
1038
  };
976
1039
  }
1040
+ async function listMembers(params) {
1041
+ const api = await createCollabApiClient();
1042
+ const result = await coreCollabListMembers({
1043
+ api,
1044
+ cwd: params.cwd,
1045
+ scope: params.scope,
1046
+ targetId: params.targetId ?? null
1047
+ });
1048
+ return {
1049
+ data: result,
1050
+ warnings: [],
1051
+ recommendedNextActions: [],
1052
+ logContext: {}
1053
+ };
1054
+ }
1055
+ async function updateMemberRole(params) {
1056
+ const api = await createCollabApiClient();
1057
+ const result = await coreCollabUpdateMemberRole({
1058
+ api,
1059
+ cwd: params.cwd,
1060
+ scope: params.scope,
1061
+ targetId: params.targetId ?? null,
1062
+ userId: params.userId,
1063
+ role: params.role
1064
+ });
1065
+ return {
1066
+ data: result,
1067
+ warnings: [],
1068
+ recommendedNextActions: [],
1069
+ logContext: {}
1070
+ };
1071
+ }
977
1072
 
978
1073
  // src/tools/collab/register.ts
979
1074
  function getAnnotations(access) {
@@ -1141,6 +1236,22 @@ function registerCollabTools(server, context) {
1141
1236
  });
1142
1237
  }
1143
1238
  });
1239
+ registerTool(server, context, {
1240
+ name: "remix_collab_checkout",
1241
+ description: "Materialize an existing Remix app as-is into a new local checkout without creating a new fork. Works for original apps and fork apps; the resulting binding preserves that lineage.",
1242
+ access: "remote_write",
1243
+ inputSchema: checkoutInputSchema,
1244
+ outputSchema: checkoutSuccessSchema,
1245
+ run: async (args) => {
1246
+ const input = z3.object(checkoutInputSchema).parse(args);
1247
+ const cwd = resolvePolicyCwd(context.policy, input.cwd);
1248
+ return checkoutCollab({
1249
+ cwd,
1250
+ appId: input.appId,
1251
+ outputDir: input.outputDir
1252
+ });
1253
+ }
1254
+ });
1144
1255
  registerTool(server, context, {
1145
1256
  name: "remix_collab_add",
1146
1257
  description: "Authoritative way to record completed code changes for the current bound repository, using the live worktree diff by default instead of raw git commit or push.",
@@ -1426,6 +1537,40 @@ function registerCollabTools(server, context) {
1426
1537
  });
1427
1538
  }
1428
1539
  });
1540
+ registerTool(server, context, {
1541
+ name: "remix_collab_list_members",
1542
+ description: "List organization, project, or app members, using the current repository binding unless targetId is provided.",
1543
+ access: "read",
1544
+ inputSchema: listMembersInputSchema,
1545
+ outputSchema: listMembersSuccessSchema,
1546
+ run: async (args) => {
1547
+ const input = z3.object(listMembersInputSchema).parse(args);
1548
+ const cwd = resolvePolicyCwd(context.policy, input.cwd);
1549
+ return listMembers({
1550
+ cwd,
1551
+ scope: input.scope,
1552
+ targetId: input.targetId
1553
+ });
1554
+ }
1555
+ });
1556
+ registerTool(server, context, {
1557
+ name: "remix_collab_update_member_role",
1558
+ description: "Update an organization, project, or app member role, using the current repository binding unless targetId is provided.",
1559
+ access: "remote_write",
1560
+ inputSchema: updateMemberRoleInputSchema,
1561
+ outputSchema: updateMemberRoleSuccessSchema,
1562
+ run: async (args) => {
1563
+ const input = z3.object(updateMemberRoleInputSchema).parse(args);
1564
+ const cwd = resolvePolicyCwd(context.policy, input.cwd);
1565
+ return updateMemberRole({
1566
+ cwd,
1567
+ scope: input.scope,
1568
+ targetId: input.targetId,
1569
+ userId: input.userId,
1570
+ role: input.role
1571
+ });
1572
+ }
1573
+ });
1429
1574
  }
1430
1575
 
1431
1576
  // src/tools/memory/register.ts