@remixhq/mcp 0.1.2 → 0.1.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/dist/cli.js +211 -31
- package/dist/cli.js.map +1 -1
- package/dist/index.js +211 -31
- package/dist/index.js.map +1 -1
- package/dist/server.js +211 -31
- package/dist/server.js.map +1 -1
- package/package.json +2 -2
package/dist/cli.js
CHANGED
|
@@ -408,6 +408,14 @@ function makeErrorResult(envelope) {
|
|
|
408
408
|
// src/contracts/collab.ts
|
|
409
409
|
var genericRecordSchema = z2.record(z2.string(), z2.unknown());
|
|
410
410
|
var genericArraySchema = z2.array(genericRecordSchema);
|
|
411
|
+
var mergeRequestQueueSchema = z2.enum([
|
|
412
|
+
"reviewable",
|
|
413
|
+
"created_by_me",
|
|
414
|
+
"app_reviewable",
|
|
415
|
+
"app_outgoing",
|
|
416
|
+
"app_related_visible"
|
|
417
|
+
]);
|
|
418
|
+
var appScopedMergeRequestQueueSchema = z2.enum(["app_reviewable", "app_outgoing", "app_related_visible"]);
|
|
411
419
|
var statusInputSchema = {
|
|
412
420
|
...commonRequestFieldsSchema,
|
|
413
421
|
includeRemote: z2.boolean().optional()
|
|
@@ -460,6 +468,25 @@ var inboxInputSchema = {
|
|
|
460
468
|
outputMode: z2.enum(["summary", "full"]).optional(),
|
|
461
469
|
status: z2.string().trim().min(1).optional()
|
|
462
470
|
};
|
|
471
|
+
var reviewQueueInputSchema = {
|
|
472
|
+
requestId: z2.string().trim().min(1).optional(),
|
|
473
|
+
outputMode: z2.enum(["summary", "full"]).optional(),
|
|
474
|
+
status: z2.string().trim().min(1).optional(),
|
|
475
|
+
kind: z2.enum(["merge", "sync", "all"]).optional()
|
|
476
|
+
};
|
|
477
|
+
var myMergeRequestsInputSchema = {
|
|
478
|
+
requestId: z2.string().trim().min(1).optional(),
|
|
479
|
+
outputMode: z2.enum(["summary", "full"]).optional(),
|
|
480
|
+
status: z2.string().trim().min(1).optional(),
|
|
481
|
+
kind: z2.enum(["merge", "sync", "all"]).optional()
|
|
482
|
+
};
|
|
483
|
+
var appMergeRequestsInputSchema = {
|
|
484
|
+
...commonRequestFieldsSchema,
|
|
485
|
+
queue: appScopedMergeRequestQueueSchema,
|
|
486
|
+
appId: z2.string().trim().min(1).optional(),
|
|
487
|
+
status: z2.string().trim().min(1).optional(),
|
|
488
|
+
kind: z2.enum(["merge", "sync", "all"]).optional()
|
|
489
|
+
};
|
|
463
490
|
var viewMergeRequestInputSchema = {
|
|
464
491
|
requestId: z2.string().trim().min(1).optional(),
|
|
465
492
|
outputMode: z2.enum(["summary", "full"]).optional(),
|
|
@@ -518,6 +545,11 @@ var requestMergeDataSchema = genericRecordSchema;
|
|
|
518
545
|
var inboxDataSchema = z2.object({
|
|
519
546
|
mergeRequests: z2.array(genericRecordSchema)
|
|
520
547
|
});
|
|
548
|
+
var mergeRequestQueueDataSchema = z2.object({
|
|
549
|
+
queue: mergeRequestQueueSchema,
|
|
550
|
+
appId: z2.string().nullable(),
|
|
551
|
+
mergeRequests: z2.array(genericRecordSchema)
|
|
552
|
+
});
|
|
521
553
|
var viewMergeRequestDataSchema = genericRecordSchema;
|
|
522
554
|
var approveDataSchema = genericRecordSchema;
|
|
523
555
|
var rejectDataSchema = genericRecordSchema;
|
|
@@ -533,6 +565,7 @@ var recordTurnSuccessSchema = makeSuccessSchema(recordTurnDataSchema);
|
|
|
533
565
|
var syncSuccessSchema = makeSuccessSchema(syncDataSchema);
|
|
534
566
|
var requestMergeSuccessSchema = makeSuccessSchema(requestMergeDataSchema);
|
|
535
567
|
var inboxSuccessSchema = makeSuccessSchema(inboxDataSchema);
|
|
568
|
+
var mergeRequestQueueSuccessSchema = makeSuccessSchema(mergeRequestQueueDataSchema);
|
|
536
569
|
var viewMergeRequestSuccessSchema = makeSuccessSchema(viewMergeRequestDataSchema);
|
|
537
570
|
var approveSuccessSchema = makeSuccessSchema(approveDataSchema);
|
|
538
571
|
var rejectSuccessSchema = makeSuccessSchema(rejectDataSchema);
|
|
@@ -546,6 +579,7 @@ import {
|
|
|
546
579
|
collabRecordTurn as coreCollabRecordTurn,
|
|
547
580
|
collabApprove as coreCollabApprove,
|
|
548
581
|
collabInbox as coreCollabInbox,
|
|
582
|
+
collabListMergeRequests as coreCollabListMergeRequests,
|
|
549
583
|
collabInit as coreCollabInit,
|
|
550
584
|
collabInvite as coreCollabInvite,
|
|
551
585
|
collabReconcile as coreCollabReconcile,
|
|
@@ -581,18 +615,18 @@ function getRiskLevel(status) {
|
|
|
581
615
|
function getRecommendedNextActions(status) {
|
|
582
616
|
if (status.repo.branchMismatch) {
|
|
583
617
|
return [
|
|
584
|
-
`Switch to the preferred branch (${status.binding.preferredBranch ?? "configured in the binding"}) before
|
|
618
|
+
`Switch to the preferred branch (${status.binding.preferredBranch ?? "configured in the binding"}) before using Remix mutation tools, or rerun with allowBranchMismatch=true if this deviation is intentional.`
|
|
585
619
|
];
|
|
586
620
|
}
|
|
587
621
|
switch (status.recommendedAction) {
|
|
588
622
|
case "init":
|
|
589
|
-
return ["Run remix_collab_init to bind the repository to Remix."];
|
|
623
|
+
return ["Run remix_collab_init to bind the repository to Remix before using any Remix collaboration mutation flow."];
|
|
590
624
|
case "sync":
|
|
591
|
-
return ["Run remix_collab_sync_preview, then remix_collab_sync_apply if the preview is acceptable."];
|
|
625
|
+
return ["Run remix_collab_sync_preview, then remix_collab_sync_apply if the preview is acceptable. Use this instead of raw git pull or rebase for bound-repo alignment."];
|
|
592
626
|
case "reconcile":
|
|
593
|
-
return ["Run remix_collab_reconcile_preview before attempting remix_collab_reconcile_apply."];
|
|
594
|
-
case "
|
|
595
|
-
return ["Run
|
|
627
|
+
return ["Run remix_collab_reconcile_preview before attempting remix_collab_reconcile_apply. Reconcile is the explicit Remix recovery path when fast-forward sync is no longer possible."];
|
|
628
|
+
case "review_queue":
|
|
629
|
+
return ["Run remix_collab_review_queue to inspect reviewable merge requests instead of using local git merge flows."];
|
|
596
630
|
default:
|
|
597
631
|
return [];
|
|
598
632
|
}
|
|
@@ -650,7 +684,7 @@ async function initCollab(params) {
|
|
|
650
684
|
return {
|
|
651
685
|
data: result,
|
|
652
686
|
warnings: collectResultWarnings(result),
|
|
653
|
-
recommendedNextActions: ["Run remix_collab_status to inspect sync and merge readiness."],
|
|
687
|
+
recommendedNextActions: ["Run remix_collab_status to inspect sync, reconcile, and merge-request readiness before mutating bound-repo state."],
|
|
654
688
|
logContext: {
|
|
655
689
|
repoRoot: result.repoRoot,
|
|
656
690
|
appId: result.appId
|
|
@@ -680,7 +714,7 @@ async function remixCollab(params) {
|
|
|
680
714
|
return {
|
|
681
715
|
data: result,
|
|
682
716
|
warnings: collectResultWarnings(result),
|
|
683
|
-
recommendedNextActions: ["Run remix_collab_status inside the remix checkout
|
|
717
|
+
recommendedNextActions: ["Run remix_collab_status inside the remix checkout before using Remix mutation tools there."],
|
|
684
718
|
logContext: {
|
|
685
719
|
repoRoot: result.repoRoot,
|
|
686
720
|
appId: result.appId
|
|
@@ -765,7 +799,7 @@ async function syncCollab(params) {
|
|
|
765
799
|
return {
|
|
766
800
|
data: result,
|
|
767
801
|
warnings: collectResultWarnings(result),
|
|
768
|
-
recommendedNextActions: params.dryRun ? ["Run remix_collab_sync_apply with confirm=true to apply this fast-forward update."] : [],
|
|
802
|
+
recommendedNextActions: params.dryRun ? ["Run remix_collab_sync_apply with confirm=true to apply this fast-forward update instead of using raw git pull or rebase."] : [],
|
|
769
803
|
logContext: {
|
|
770
804
|
repoRoot: result.repoRoot
|
|
771
805
|
}
|
|
@@ -780,7 +814,7 @@ async function requestMerge(params) {
|
|
|
780
814
|
return {
|
|
781
815
|
data: result,
|
|
782
816
|
warnings: [],
|
|
783
|
-
recommendedNextActions: result.id ? [`Run remix_collab_view_merge_request with mrId=${String(result.id)} to inspect the request.`] : [],
|
|
817
|
+
recommendedNextActions: result.id ? [`Run remix_collab_view_merge_request with mrId=${String(result.id)} to inspect the request before deciding whether to approve or reject it.`] : [],
|
|
784
818
|
logContext: {
|
|
785
819
|
mrId: typeof result.id === "string" ? result.id : null
|
|
786
820
|
}
|
|
@@ -799,6 +833,67 @@ async function inbox(params) {
|
|
|
799
833
|
logContext: {}
|
|
800
834
|
};
|
|
801
835
|
}
|
|
836
|
+
async function reviewQueue(params) {
|
|
837
|
+
const api = await createCollabApiClient();
|
|
838
|
+
const result = await coreCollabListMergeRequests({
|
|
839
|
+
api,
|
|
840
|
+
queue: "reviewable",
|
|
841
|
+
status: params.status ?? "open",
|
|
842
|
+
kind: params.kind ?? "merge"
|
|
843
|
+
});
|
|
844
|
+
return {
|
|
845
|
+
data: {
|
|
846
|
+
queue: result.queue,
|
|
847
|
+
appId: result.appId,
|
|
848
|
+
mergeRequests: result.mergeRequests
|
|
849
|
+
},
|
|
850
|
+
warnings: [],
|
|
851
|
+
recommendedNextActions: [],
|
|
852
|
+
logContext: {}
|
|
853
|
+
};
|
|
854
|
+
}
|
|
855
|
+
async function myMergeRequests(params) {
|
|
856
|
+
const api = await createCollabApiClient();
|
|
857
|
+
const result = await coreCollabListMergeRequests({
|
|
858
|
+
api,
|
|
859
|
+
queue: "created_by_me",
|
|
860
|
+
status: params.status ?? "open",
|
|
861
|
+
kind: params.kind ?? "merge"
|
|
862
|
+
});
|
|
863
|
+
return {
|
|
864
|
+
data: {
|
|
865
|
+
queue: result.queue,
|
|
866
|
+
appId: result.appId,
|
|
867
|
+
mergeRequests: result.mergeRequests
|
|
868
|
+
},
|
|
869
|
+
warnings: [],
|
|
870
|
+
recommendedNextActions: [],
|
|
871
|
+
logContext: {}
|
|
872
|
+
};
|
|
873
|
+
}
|
|
874
|
+
async function listAppMergeRequests(params) {
|
|
875
|
+
const api = await createCollabApiClient();
|
|
876
|
+
const result = await coreCollabListMergeRequests({
|
|
877
|
+
api,
|
|
878
|
+
cwd: params.cwd,
|
|
879
|
+
appId: params.appId,
|
|
880
|
+
queue: params.queue,
|
|
881
|
+
status: params.status ?? "open",
|
|
882
|
+
kind: params.kind ?? "merge"
|
|
883
|
+
});
|
|
884
|
+
return {
|
|
885
|
+
data: {
|
|
886
|
+
queue: result.queue,
|
|
887
|
+
appId: result.appId,
|
|
888
|
+
mergeRequests: result.mergeRequests
|
|
889
|
+
},
|
|
890
|
+
warnings: [],
|
|
891
|
+
recommendedNextActions: [],
|
|
892
|
+
logContext: {
|
|
893
|
+
appId: result.appId
|
|
894
|
+
}
|
|
895
|
+
};
|
|
896
|
+
}
|
|
802
897
|
async function viewMergeRequest(params) {
|
|
803
898
|
const api = await createCollabApiClient();
|
|
804
899
|
const review = await coreCollabView({
|
|
@@ -887,7 +982,7 @@ async function reconcile(params) {
|
|
|
887
982
|
return {
|
|
888
983
|
data: result,
|
|
889
984
|
warnings: collectWarnings(result.warnings),
|
|
890
|
-
recommendedNextActions: params.dryRun ? ["Run remix_collab_reconcile_apply with confirm=true only if the preview is acceptable."] : [],
|
|
985
|
+
recommendedNextActions: params.dryRun ? ["Run remix_collab_reconcile_apply with confirm=true only if the preview is acceptable. Do not replace this with raw git history-rewrite commands."] : [],
|
|
891
986
|
risks: params.dryRun ? ["Reconcile apply rewrites local history and creates a backup branch."] : [],
|
|
892
987
|
logContext: {
|
|
893
988
|
repoRoot: result.repoRoot ?? null
|
|
@@ -942,7 +1037,7 @@ function buildSuccessEnvelope(tool, requestId, result) {
|
|
|
942
1037
|
};
|
|
943
1038
|
}
|
|
944
1039
|
function deriveErrorRisks(tool, normalized) {
|
|
945
|
-
if (tool === "remix_collab_add" && normalized.message === "Change step succeeded remotely, but automatic local sync failed.") {
|
|
1040
|
+
if ((tool === "remix_collab_add" || tool === "remix_collab_add_change_step") && normalized.message === "Change step succeeded remotely, but automatic local sync failed.") {
|
|
946
1041
|
return ["The change step succeeded remotely, but the local repository may need manual recovery or a follow-up sync."];
|
|
947
1042
|
}
|
|
948
1043
|
if (normalized.code === "DESTRUCTIVE_OPERATION_BLOCKED") {
|
|
@@ -1022,7 +1117,7 @@ function registerTool(server, context, params) {
|
|
|
1022
1117
|
function registerCollabTools(server, context) {
|
|
1023
1118
|
registerTool(server, context, {
|
|
1024
1119
|
name: "remix_collab_status",
|
|
1025
|
-
description: "
|
|
1120
|
+
description: "Required first read for a bound repository: summarize binding, worktree state, merge request counts, and sync or reconcile readiness before Remix mutations.",
|
|
1026
1121
|
access: "read",
|
|
1027
1122
|
inputSchema: statusInputSchema,
|
|
1028
1123
|
outputSchema: statusSuccessSchema,
|
|
@@ -1081,7 +1176,33 @@ function registerCollabTools(server, context) {
|
|
|
1081
1176
|
});
|
|
1082
1177
|
registerTool(server, context, {
|
|
1083
1178
|
name: "remix_collab_add",
|
|
1084
|
-
description: "
|
|
1179
|
+
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.",
|
|
1180
|
+
access: "local_write",
|
|
1181
|
+
inputSchema: addInputSchema,
|
|
1182
|
+
outputSchema: addSuccessSchema,
|
|
1183
|
+
run: async (args) => {
|
|
1184
|
+
const input = z3.object(addInputSchema).parse(args);
|
|
1185
|
+
const cwd = resolvePolicyCwd(context.policy, input.cwd);
|
|
1186
|
+
const diffSource = input.diffSource ?? "worktree";
|
|
1187
|
+
if (diffSource === "external") {
|
|
1188
|
+
const externalDiff = input.externalDiff ?? "";
|
|
1189
|
+
assertDiffWithinLimit(context.policy, externalDiff);
|
|
1190
|
+
}
|
|
1191
|
+
return addCollabStep({
|
|
1192
|
+
cwd,
|
|
1193
|
+
prompt: input.prompt,
|
|
1194
|
+
assistantResponse: input.assistantResponse,
|
|
1195
|
+
diffSource,
|
|
1196
|
+
externalDiff: input.externalDiff,
|
|
1197
|
+
allowBranchMismatch: input.allowBranchMismatch ?? false,
|
|
1198
|
+
idempotencyKey: input.idempotencyKey,
|
|
1199
|
+
agent: context.agentMetadata
|
|
1200
|
+
});
|
|
1201
|
+
}
|
|
1202
|
+
});
|
|
1203
|
+
registerTool(server, context, {
|
|
1204
|
+
name: "remix_collab_add_change_step",
|
|
1205
|
+
description: "Alias of remix_collab_add with a more explicit name: record a code-diff change step for the current bound repository.",
|
|
1085
1206
|
access: "local_write",
|
|
1086
1207
|
inputSchema: addInputSchema,
|
|
1087
1208
|
outputSchema: addSuccessSchema,
|
|
@@ -1107,7 +1228,26 @@ function registerCollabTools(server, context) {
|
|
|
1107
1228
|
});
|
|
1108
1229
|
registerTool(server, context, {
|
|
1109
1230
|
name: "remix_collab_record_turn",
|
|
1110
|
-
description: "Record one no-diff collaboration turn for the current bound repository after a completed assistant response.",
|
|
1231
|
+
description: "Record one no-diff collaboration turn for the current bound repository after a completed assistant response. This is for prompt/response history only and will fail if the worktree has code changes.",
|
|
1232
|
+
access: "remote_write",
|
|
1233
|
+
inputSchema: recordTurnInputSchema,
|
|
1234
|
+
outputSchema: recordTurnSuccessSchema,
|
|
1235
|
+
run: async (args) => {
|
|
1236
|
+
const input = z3.object(recordTurnInputSchema).parse(args);
|
|
1237
|
+
const cwd = resolvePolicyCwd(context.policy, input.cwd);
|
|
1238
|
+
return recordCollabTurn({
|
|
1239
|
+
cwd,
|
|
1240
|
+
prompt: input.prompt,
|
|
1241
|
+
assistantResponse: input.assistantResponse,
|
|
1242
|
+
allowBranchMismatch: input.allowBranchMismatch ?? false,
|
|
1243
|
+
idempotencyKey: input.idempotencyKey,
|
|
1244
|
+
agent: context.agentMetadata
|
|
1245
|
+
});
|
|
1246
|
+
}
|
|
1247
|
+
});
|
|
1248
|
+
registerTool(server, context, {
|
|
1249
|
+
name: "remix_collab_record_no_diff_turn",
|
|
1250
|
+
description: "Alias of remix_collab_record_turn with a more explicit name: record a prompt/response turn only when the worktree has no code diff.",
|
|
1111
1251
|
access: "remote_write",
|
|
1112
1252
|
inputSchema: recordTurnInputSchema,
|
|
1113
1253
|
outputSchema: recordTurnSuccessSchema,
|
|
@@ -1126,7 +1266,7 @@ function registerCollabTools(server, context) {
|
|
|
1126
1266
|
});
|
|
1127
1267
|
registerTool(server, context, {
|
|
1128
1268
|
name: "remix_collab_sync_preview",
|
|
1129
|
-
description: "Preview whether the current bound repository can be fast-forward synced to the Remix app state.",
|
|
1269
|
+
description: "Preview whether the current bound repository can be fast-forward synced to the Remix app state. Use this instead of raw git pull or rebase for bound-repo alignment.",
|
|
1130
1270
|
access: "read",
|
|
1131
1271
|
inputSchema: previewInputSchema,
|
|
1132
1272
|
outputSchema: syncSuccessSchema,
|
|
@@ -1138,7 +1278,7 @@ function registerCollabTools(server, context) {
|
|
|
1138
1278
|
});
|
|
1139
1279
|
registerTool(server, context, {
|
|
1140
1280
|
name: "remix_collab_sync_apply",
|
|
1141
|
-
description: "Fast-forward sync the current bound repository to the Remix app state.",
|
|
1281
|
+
description: "Fast-forward sync the current bound repository to the Remix app state. This is the Remix-native replacement for raw git pull or rebase in a bound repo.",
|
|
1142
1282
|
access: "local_write",
|
|
1143
1283
|
inputSchema: applyInputSchema,
|
|
1144
1284
|
outputSchema: syncSuccessSchema,
|
|
@@ -1151,7 +1291,7 @@ function registerCollabTools(server, context) {
|
|
|
1151
1291
|
});
|
|
1152
1292
|
registerTool(server, context, {
|
|
1153
1293
|
name: "remix_collab_request_merge",
|
|
1154
|
-
description: "Open a merge request from the current bound repository to its upstream app.",
|
|
1294
|
+
description: "Open a Remix merge request from the current bound repository to its upstream app instead of merging locally with raw git.",
|
|
1155
1295
|
access: "remote_write",
|
|
1156
1296
|
inputSchema: requestMergeInputSchema,
|
|
1157
1297
|
outputSchema: requestMergeSuccessSchema,
|
|
@@ -1161,9 +1301,49 @@ function registerCollabTools(server, context) {
|
|
|
1161
1301
|
return requestMerge({ cwd });
|
|
1162
1302
|
}
|
|
1163
1303
|
});
|
|
1304
|
+
registerTool(server, context, {
|
|
1305
|
+
name: "remix_collab_review_queue",
|
|
1306
|
+
description: "List reviewable merge requests: open requests the current user can actively approve or reject on target apps they administer or maintain. Optional `status` filters the results; optional `kind` defaults to `merge`.",
|
|
1307
|
+
access: "read",
|
|
1308
|
+
inputSchema: reviewQueueInputSchema,
|
|
1309
|
+
outputSchema: mergeRequestQueueSuccessSchema,
|
|
1310
|
+
run: async (args) => {
|
|
1311
|
+
const input = z3.object(reviewQueueInputSchema).parse(args);
|
|
1312
|
+
return reviewQueue({ status: input.status, kind: input.kind });
|
|
1313
|
+
}
|
|
1314
|
+
});
|
|
1315
|
+
registerTool(server, context, {
|
|
1316
|
+
name: "remix_collab_my_merge_requests",
|
|
1317
|
+
description: "List merge requests created by the current user across all apps visible to that user, not just the current bound checkout. This still works even when the user is not a reviewer on the target app. Optional `status` filters the results; optional `kind` defaults to `merge`.",
|
|
1318
|
+
access: "read",
|
|
1319
|
+
inputSchema: myMergeRequestsInputSchema,
|
|
1320
|
+
outputSchema: mergeRequestQueueSuccessSchema,
|
|
1321
|
+
run: async (args) => {
|
|
1322
|
+
const input = z3.object(myMergeRequestsInputSchema).parse(args);
|
|
1323
|
+
return myMergeRequests({ status: input.status, kind: input.kind });
|
|
1324
|
+
}
|
|
1325
|
+
});
|
|
1326
|
+
registerTool(server, context, {
|
|
1327
|
+
name: "remix_collab_list_app_merge_requests",
|
|
1328
|
+
description: "List app-scoped merge requests for the current bound checkout or an explicit `appId`. Required `queue` must be one of: `app_reviewable` (incoming requests this app can review), `app_outgoing` (requests created from this app), or `app_related_visible` (all open visible requests where this app is either source or target). Optional `status` filters the results; optional `kind` defaults to `merge`.",
|
|
1329
|
+
access: "read",
|
|
1330
|
+
inputSchema: appMergeRequestsInputSchema,
|
|
1331
|
+
outputSchema: mergeRequestQueueSuccessSchema,
|
|
1332
|
+
run: async (args) => {
|
|
1333
|
+
const input = z3.object(appMergeRequestsInputSchema).parse(args);
|
|
1334
|
+
const cwd = input.cwd ? resolvePolicyCwd(context.policy, input.cwd) : void 0;
|
|
1335
|
+
return listAppMergeRequests({
|
|
1336
|
+
cwd,
|
|
1337
|
+
appId: input.appId,
|
|
1338
|
+
queue: input.queue,
|
|
1339
|
+
status: input.status,
|
|
1340
|
+
kind: input.kind
|
|
1341
|
+
});
|
|
1342
|
+
}
|
|
1343
|
+
});
|
|
1164
1344
|
registerTool(server, context, {
|
|
1165
1345
|
name: "remix_collab_inbox",
|
|
1166
|
-
description: "
|
|
1346
|
+
description: "Backwards-compatible alias of `remix_collab_review_queue`. Lists reviewable merge requests only, not a broad visible inbox. Optional `status` filters the results.",
|
|
1167
1347
|
access: "read",
|
|
1168
1348
|
inputSchema: inboxInputSchema,
|
|
1169
1349
|
outputSchema: inboxSuccessSchema,
|
|
@@ -1174,7 +1354,7 @@ function registerCollabTools(server, context) {
|
|
|
1174
1354
|
});
|
|
1175
1355
|
registerTool(server, context, {
|
|
1176
1356
|
name: "remix_collab_view_merge_request",
|
|
1177
|
-
description: "View merge request metadata, prompts, change steps, and optionally a bounded unified diff.",
|
|
1357
|
+
description: "View Remix merge request metadata, prompts, change steps, and optionally a bounded unified diff before approval or rejection.",
|
|
1178
1358
|
access: "read",
|
|
1179
1359
|
inputSchema: viewMergeRequestInputSchema,
|
|
1180
1360
|
outputSchema: viewMergeRequestSuccessSchema,
|
|
@@ -1189,7 +1369,7 @@ function registerCollabTools(server, context) {
|
|
|
1189
1369
|
});
|
|
1190
1370
|
registerTool(server, context, {
|
|
1191
1371
|
name: "remix_collab_approve_remote",
|
|
1192
|
-
description: "Approve a merge request remotely and wait for terminal completion without mutating the local repository.",
|
|
1372
|
+
description: "Approve a merge request remotely and wait for terminal completion without mutating the local repository, preserving Remix as the merge authority.",
|
|
1193
1373
|
access: "remote_write",
|
|
1194
1374
|
inputSchema: approveInputSchema,
|
|
1195
1375
|
outputSchema: approveSuccessSchema,
|
|
@@ -1205,7 +1385,7 @@ function registerCollabTools(server, context) {
|
|
|
1205
1385
|
});
|
|
1206
1386
|
registerTool(server, context, {
|
|
1207
1387
|
name: "remix_collab_approve_and_sync_target",
|
|
1208
|
-
description: "Approve a merge request, wait for completion, and sync the target repository locally.",
|
|
1388
|
+
description: "Approve a merge request, wait for completion, and sync the target repository locally through Remix rather than a local git merge flow.",
|
|
1209
1389
|
access: "local_write",
|
|
1210
1390
|
inputSchema: approveInputSchema,
|
|
1211
1391
|
outputSchema: approveSuccessSchema,
|
|
@@ -1235,7 +1415,7 @@ function registerCollabTools(server, context) {
|
|
|
1235
1415
|
});
|
|
1236
1416
|
registerTool(server, context, {
|
|
1237
1417
|
name: "remix_collab_sync_upstream",
|
|
1238
|
-
description: "Sync upstream changes into the current remix and update the local checkout.",
|
|
1418
|
+
description: "Sync upstream changes into the current remix and update the local checkout through Remix-native lineage management rather than raw git pull or merge.",
|
|
1239
1419
|
access: "local_write",
|
|
1240
1420
|
inputSchema: applyInputSchema,
|
|
1241
1421
|
outputSchema: syncUpstreamSuccessSchema,
|
|
@@ -1248,7 +1428,7 @@ function registerCollabTools(server, context) {
|
|
|
1248
1428
|
});
|
|
1249
1429
|
registerTool(server, context, {
|
|
1250
1430
|
name: "remix_collab_reconcile_preview",
|
|
1251
|
-
description: "Preview reconcile readiness when the local repository cannot be fast-forward synced.",
|
|
1431
|
+
description: "Preview reconcile readiness when the local repository cannot be fast-forward synced. Use this before any explicit Remix history-repair workflow.",
|
|
1252
1432
|
access: "read",
|
|
1253
1433
|
inputSchema: previewInputSchema,
|
|
1254
1434
|
outputSchema: reconcileSuccessSchema,
|
|
@@ -1260,7 +1440,7 @@ function registerCollabTools(server, context) {
|
|
|
1260
1440
|
});
|
|
1261
1441
|
registerTool(server, context, {
|
|
1262
1442
|
name: "remix_collab_reconcile_apply",
|
|
1263
|
-
description: "Reconcile divergent local history against the bound Remix app and update the local checkout.",
|
|
1443
|
+
description: "Reconcile divergent local history against the bound Remix app and update the local checkout. This is the explicit Remix recovery path for divergent history.",
|
|
1264
1444
|
access: "local_write",
|
|
1265
1445
|
inputSchema: applyInputSchema,
|
|
1266
1446
|
outputSchema: reconcileSuccessSchema,
|
|
@@ -1387,7 +1567,7 @@ function buildSearchNextActions(result) {
|
|
|
1387
1567
|
];
|
|
1388
1568
|
}
|
|
1389
1569
|
const actions = [
|
|
1390
|
-
"Review the top matched memory items before
|
|
1570
|
+
"Review the top matched memory items before reaching for raw git so the relevant Remix reasoning context stays in view."
|
|
1391
1571
|
];
|
|
1392
1572
|
const changeStepId = getFirstChangeStepId(result.items);
|
|
1393
1573
|
if (changeStepId) {
|
|
@@ -1422,7 +1602,7 @@ function buildTimelineNextActions(result) {
|
|
|
1422
1602
|
}
|
|
1423
1603
|
function buildChangeStepDiffNextActions(changeStepId) {
|
|
1424
1604
|
return [
|
|
1425
|
-
`Inspect the stored diff for \`changeStepId=${changeStepId}\`, then use raw git only if you still need exact repository-level commit
|
|
1605
|
+
`Inspect the stored diff for \`changeStepId=${changeStepId}\`, then use raw git only if you still need exact repository-level commit, blame, ancestry, or raw patch details.`
|
|
1426
1606
|
];
|
|
1427
1607
|
}
|
|
1428
1608
|
function unwrapResponseObject2(resp, label) {
|
|
@@ -1616,7 +1796,7 @@ function registerTool2(server, context, params) {
|
|
|
1616
1796
|
function registerMemoryTools(server, context) {
|
|
1617
1797
|
registerTool2(server, context, {
|
|
1618
1798
|
name: "remix_collab_memory_summary",
|
|
1619
|
-
description: "First read for a bound app's current collaboration state, recent reasoning context, and merge or reconcile history before deeper inspection.",
|
|
1799
|
+
description: "First read for a bound app's current collaboration state, recent reasoning context, and merge or reconcile history before deeper inspection or any raw git history lookup.",
|
|
1620
1800
|
access: "read",
|
|
1621
1801
|
inputSchema: memorySummaryInputSchema,
|
|
1622
1802
|
outputSchema: memorySummarySuccessSchema,
|
|
@@ -1631,7 +1811,7 @@ function registerMemoryTools(server, context) {
|
|
|
1631
1811
|
});
|
|
1632
1812
|
registerTool2(server, context, {
|
|
1633
1813
|
name: "remix_collab_memory_search",
|
|
1634
|
-
description: "Default tool for why/history/failed-attempt/user-intent questions. Search prompts, diffs, merge activity, reconciles, and other historical context before using raw git
|
|
1814
|
+
description: "Default tool for why/history/failed-attempt/user-intent questions. Search prompts, diffs, merge activity, reconciles, and other historical context before using raw git for exact repository facts.",
|
|
1635
1815
|
access: "read",
|
|
1636
1816
|
inputSchema: memorySearchInputSchema,
|
|
1637
1817
|
outputSchema: memorySearchSuccessSchema,
|
|
@@ -1652,7 +1832,7 @@ function registerMemoryTools(server, context) {
|
|
|
1652
1832
|
});
|
|
1653
1833
|
registerTool2(server, context, {
|
|
1654
1834
|
name: "remix_collab_memory_timeline",
|
|
1655
|
-
description: "Chronological view of collaboration memory for understanding what happened and in what order, with optional filters for bounded historical inspection.",
|
|
1835
|
+
description: "Chronological view of collaboration memory for understanding what happened and in what order, with optional filters for bounded historical inspection before any exact-facts raw git follow-up.",
|
|
1656
1836
|
access: "read",
|
|
1657
1837
|
inputSchema: memoryTimelineInputSchema,
|
|
1658
1838
|
outputSchema: memoryTimelineSuccessSchema,
|
|
@@ -1672,7 +1852,7 @@ function registerMemoryTools(server, context) {
|
|
|
1672
1852
|
});
|
|
1673
1853
|
registerTool2(server, context, {
|
|
1674
1854
|
name: "remix_collab_memory_change_step_diff",
|
|
1675
|
-
description: "Second-hop expansion tool that fetches the full stored diff for a specific change step after memory search, timeline, or review work has identified the relevant `changeStepId
|
|
1855
|
+
description: "Second-hop expansion tool that fetches the full stored diff for a specific change step after memory search, timeline, or review work has identified the relevant `changeStepId`, keeping historical inspection inside Remix before raw git fallback.",
|
|
1676
1856
|
access: "read",
|
|
1677
1857
|
inputSchema: changeStepDiffInputSchema,
|
|
1678
1858
|
outputSchema: changeStepDiffSuccessSchema,
|