@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/cli.js CHANGED
@@ -416,6 +416,7 @@ var mergeRequestQueueSchema = z2.enum([
416
416
  "app_related_visible"
417
417
  ]);
418
418
  var appScopedMergeRequestQueueSchema = z2.enum(["app_reviewable", "app_outgoing", "app_related_visible"]);
419
+ var memberScopeSchema = z2.enum(["organization", "project", "app"]);
419
420
  var statusInputSchema = {
420
421
  ...commonRequestFieldsSchema,
421
422
  includeRemote: z2.boolean().optional()
@@ -436,6 +437,11 @@ var remixInputSchema = {
436
437
  name: z2.string().trim().min(1).optional(),
437
438
  outputDir: z2.string().trim().min(1).optional()
438
439
  };
440
+ var checkoutInputSchema = {
441
+ ...commonRequestFieldsSchema,
442
+ appId: z2.string().trim().min(1),
443
+ outputDir: z2.string().trim().min(1).optional()
444
+ };
439
445
  var addInputSchema = {
440
446
  ...commonRequestFieldsSchema,
441
447
  prompt: z2.string().trim().min(1),
@@ -508,6 +514,18 @@ var inviteInputSchema = {
508
514
  role: z2.string().trim().min(1).optional(),
509
515
  ttlDays: z2.number().int().positive().max(30).optional()
510
516
  };
517
+ var listMembersInputSchema = {
518
+ ...commonRequestFieldsSchema,
519
+ scope: memberScopeSchema,
520
+ targetId: z2.string().trim().min(1).optional()
521
+ };
522
+ var updateMemberRoleInputSchema = {
523
+ ...commonRequestFieldsSchema,
524
+ scope: memberScopeSchema,
525
+ targetId: z2.string().trim().min(1).optional(),
526
+ userId: z2.string().trim().min(1),
527
+ role: z2.string().trim().min(1)
528
+ };
511
529
  var statusDataSchema = z2.object({
512
530
  status: genericRecordSchema,
513
531
  riskLevel: z2.enum(["low", "medium", "high"])
@@ -516,6 +534,7 @@ var initDataSchema = z2.object({
516
534
  reused: z2.boolean(),
517
535
  projectId: z2.string(),
518
536
  appId: z2.string(),
537
+ dashboardUrl: z2.string().url(),
519
538
  upstreamAppId: z2.string(),
520
539
  bindingPath: z2.string(),
521
540
  repoRoot: z2.string()
@@ -525,6 +544,15 @@ var listDataSchema = z2.object({
525
544
  });
526
545
  var remixDataSchema = z2.object({
527
546
  appId: z2.string(),
547
+ dashboardUrl: z2.string().url(),
548
+ projectId: z2.string(),
549
+ upstreamAppId: z2.string(),
550
+ bindingPath: z2.string(),
551
+ repoRoot: z2.string()
552
+ });
553
+ var checkoutDataSchema = z2.object({
554
+ appId: z2.string(),
555
+ dashboardUrl: z2.string().url(),
528
556
  projectId: z2.string(),
529
557
  upstreamAppId: z2.string(),
530
558
  bindingPath: z2.string(),
@@ -548,10 +576,22 @@ var rejectDataSchema = genericRecordSchema;
548
576
  var syncUpstreamDataSchema = genericRecordSchema;
549
577
  var reconcileDataSchema = genericRecordSchema;
550
578
  var inviteDataSchema = genericRecordSchema;
579
+ var memberRecordSchema = genericRecordSchema;
580
+ var listMembersDataSchema = z2.object({
581
+ scopeType: memberScopeSchema,
582
+ targetId: z2.string(),
583
+ members: z2.array(memberRecordSchema)
584
+ });
585
+ var updateMemberRoleDataSchema = z2.object({
586
+ scopeType: memberScopeSchema,
587
+ targetId: z2.string(),
588
+ member: memberRecordSchema
589
+ });
551
590
  var statusSuccessSchema = makeSuccessSchema(statusDataSchema);
552
591
  var initSuccessSchema = makeSuccessSchema(initDataSchema);
553
592
  var listSuccessSchema = makeSuccessSchema(listDataSchema);
554
593
  var remixSuccessSchema = makeSuccessSchema(remixDataSchema);
594
+ var checkoutSuccessSchema = makeSuccessSchema(checkoutDataSchema);
555
595
  var addSuccessSchema = makeSuccessSchema(addDataSchema);
556
596
  var recordTurnSuccessSchema = makeSuccessSchema(recordTurnDataSchema);
557
597
  var syncSuccessSchema = makeSuccessSchema(syncDataSchema);
@@ -563,12 +603,17 @@ var rejectSuccessSchema = makeSuccessSchema(rejectDataSchema);
563
603
  var syncUpstreamSuccessSchema = makeSuccessSchema(syncUpstreamDataSchema);
564
604
  var reconcileSuccessSchema = makeSuccessSchema(reconcileDataSchema);
565
605
  var inviteSuccessSchema = makeSuccessSchema(inviteDataSchema);
606
+ var listMembersSuccessSchema = makeSuccessSchema(listMembersDataSchema);
607
+ var updateMemberRoleSuccessSchema = makeSuccessSchema(updateMemberRoleDataSchema);
566
608
 
567
609
  // src/domain/coreAdapter.ts
568
610
  import {
611
+ collabListMembers as coreCollabListMembers,
612
+ collabUpdateMemberRole as coreCollabUpdateMemberRole,
569
613
  collabAdd as coreCollabAdd,
570
614
  collabRecordTurn as coreCollabRecordTurn,
571
615
  collabApprove as coreCollabApprove,
616
+ collabCheckout as coreCollabCheckout,
572
617
  collabListMergeRequests as coreCollabListMergeRequests,
573
618
  collabInit as coreCollabInit,
574
619
  collabInvite as coreCollabInvite,
@@ -704,6 +749,24 @@ async function remixCollab(params) {
704
749
  }
705
750
  };
706
751
  }
752
+ async function checkoutCollab(params) {
753
+ const api = await createCollabApiClient();
754
+ const result = await coreCollabCheckout({
755
+ api,
756
+ cwd: params.cwd,
757
+ appId: params.appId,
758
+ outputDir: params.outputDir ?? null
759
+ });
760
+ return {
761
+ data: result,
762
+ warnings: collectResultWarnings(result),
763
+ recommendedNextActions: ["Run remix_collab_status inside the checked out repository before using Remix mutation tools there."],
764
+ logContext: {
765
+ repoRoot: result.repoRoot,
766
+ appId: result.appId
767
+ }
768
+ };
769
+ }
707
770
  async function addCollabStep(params) {
708
771
  const api = await createCollabApiClient();
709
772
  const repoRoot = await findGitRoot(params.cwd);
@@ -977,6 +1040,38 @@ async function inviteCollaborator(params) {
977
1040
  logContext: {}
978
1041
  };
979
1042
  }
1043
+ async function listMembers(params) {
1044
+ const api = await createCollabApiClient();
1045
+ const result = await coreCollabListMembers({
1046
+ api,
1047
+ cwd: params.cwd,
1048
+ scope: params.scope,
1049
+ targetId: params.targetId ?? null
1050
+ });
1051
+ return {
1052
+ data: result,
1053
+ warnings: [],
1054
+ recommendedNextActions: [],
1055
+ logContext: {}
1056
+ };
1057
+ }
1058
+ async function updateMemberRole(params) {
1059
+ const api = await createCollabApiClient();
1060
+ const result = await coreCollabUpdateMemberRole({
1061
+ api,
1062
+ cwd: params.cwd,
1063
+ scope: params.scope,
1064
+ targetId: params.targetId ?? null,
1065
+ userId: params.userId,
1066
+ role: params.role
1067
+ });
1068
+ return {
1069
+ data: result,
1070
+ warnings: [],
1071
+ recommendedNextActions: [],
1072
+ logContext: {}
1073
+ };
1074
+ }
980
1075
 
981
1076
  // src/tools/collab/register.ts
982
1077
  function getAnnotations(access) {
@@ -1144,6 +1239,22 @@ function registerCollabTools(server, context) {
1144
1239
  });
1145
1240
  }
1146
1241
  });
1242
+ registerTool(server, context, {
1243
+ name: "remix_collab_checkout",
1244
+ 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.",
1245
+ access: "remote_write",
1246
+ inputSchema: checkoutInputSchema,
1247
+ outputSchema: checkoutSuccessSchema,
1248
+ run: async (args) => {
1249
+ const input = z3.object(checkoutInputSchema).parse(args);
1250
+ const cwd = resolvePolicyCwd(context.policy, input.cwd);
1251
+ return checkoutCollab({
1252
+ cwd,
1253
+ appId: input.appId,
1254
+ outputDir: input.outputDir
1255
+ });
1256
+ }
1257
+ });
1147
1258
  registerTool(server, context, {
1148
1259
  name: "remix_collab_add",
1149
1260
  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.",
@@ -1429,6 +1540,40 @@ function registerCollabTools(server, context) {
1429
1540
  });
1430
1541
  }
1431
1542
  });
1543
+ registerTool(server, context, {
1544
+ name: "remix_collab_list_members",
1545
+ description: "List organization, project, or app members, using the current repository binding unless targetId is provided.",
1546
+ access: "read",
1547
+ inputSchema: listMembersInputSchema,
1548
+ outputSchema: listMembersSuccessSchema,
1549
+ run: async (args) => {
1550
+ const input = z3.object(listMembersInputSchema).parse(args);
1551
+ const cwd = resolvePolicyCwd(context.policy, input.cwd);
1552
+ return listMembers({
1553
+ cwd,
1554
+ scope: input.scope,
1555
+ targetId: input.targetId
1556
+ });
1557
+ }
1558
+ });
1559
+ registerTool(server, context, {
1560
+ name: "remix_collab_update_member_role",
1561
+ description: "Update an organization, project, or app member role, using the current repository binding unless targetId is provided.",
1562
+ access: "remote_write",
1563
+ inputSchema: updateMemberRoleInputSchema,
1564
+ outputSchema: updateMemberRoleSuccessSchema,
1565
+ run: async (args) => {
1566
+ const input = z3.object(updateMemberRoleInputSchema).parse(args);
1567
+ const cwd = resolvePolicyCwd(context.policy, input.cwd);
1568
+ return updateMemberRole({
1569
+ cwd,
1570
+ scope: input.scope,
1571
+ targetId: input.targetId,
1572
+ userId: input.userId,
1573
+ role: input.role
1574
+ });
1575
+ }
1576
+ });
1432
1577
  }
1433
1578
 
1434
1579
  // src/tools/memory/register.ts