@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/server.js
CHANGED
|
@@ -405,6 +405,14 @@ function makeErrorResult(envelope) {
|
|
|
405
405
|
// src/contracts/collab.ts
|
|
406
406
|
var genericRecordSchema = z2.record(z2.string(), z2.unknown());
|
|
407
407
|
var genericArraySchema = z2.array(genericRecordSchema);
|
|
408
|
+
var mergeRequestQueueSchema = z2.enum([
|
|
409
|
+
"reviewable",
|
|
410
|
+
"created_by_me",
|
|
411
|
+
"app_reviewable",
|
|
412
|
+
"app_outgoing",
|
|
413
|
+
"app_related_visible"
|
|
414
|
+
]);
|
|
415
|
+
var appScopedMergeRequestQueueSchema = z2.enum(["app_reviewable", "app_outgoing", "app_related_visible"]);
|
|
408
416
|
var statusInputSchema = {
|
|
409
417
|
...commonRequestFieldsSchema,
|
|
410
418
|
includeRemote: z2.boolean().optional()
|
|
@@ -457,6 +465,25 @@ var inboxInputSchema = {
|
|
|
457
465
|
outputMode: z2.enum(["summary", "full"]).optional(),
|
|
458
466
|
status: z2.string().trim().min(1).optional()
|
|
459
467
|
};
|
|
468
|
+
var reviewQueueInputSchema = {
|
|
469
|
+
requestId: z2.string().trim().min(1).optional(),
|
|
470
|
+
outputMode: z2.enum(["summary", "full"]).optional(),
|
|
471
|
+
status: z2.string().trim().min(1).optional(),
|
|
472
|
+
kind: z2.enum(["merge", "sync", "all"]).optional()
|
|
473
|
+
};
|
|
474
|
+
var myMergeRequestsInputSchema = {
|
|
475
|
+
requestId: z2.string().trim().min(1).optional(),
|
|
476
|
+
outputMode: z2.enum(["summary", "full"]).optional(),
|
|
477
|
+
status: z2.string().trim().min(1).optional(),
|
|
478
|
+
kind: z2.enum(["merge", "sync", "all"]).optional()
|
|
479
|
+
};
|
|
480
|
+
var appMergeRequestsInputSchema = {
|
|
481
|
+
...commonRequestFieldsSchema,
|
|
482
|
+
queue: appScopedMergeRequestQueueSchema,
|
|
483
|
+
appId: z2.string().trim().min(1).optional(),
|
|
484
|
+
status: z2.string().trim().min(1).optional(),
|
|
485
|
+
kind: z2.enum(["merge", "sync", "all"]).optional()
|
|
486
|
+
};
|
|
460
487
|
var viewMergeRequestInputSchema = {
|
|
461
488
|
requestId: z2.string().trim().min(1).optional(),
|
|
462
489
|
outputMode: z2.enum(["summary", "full"]).optional(),
|
|
@@ -515,6 +542,11 @@ var requestMergeDataSchema = genericRecordSchema;
|
|
|
515
542
|
var inboxDataSchema = z2.object({
|
|
516
543
|
mergeRequests: z2.array(genericRecordSchema)
|
|
517
544
|
});
|
|
545
|
+
var mergeRequestQueueDataSchema = z2.object({
|
|
546
|
+
queue: mergeRequestQueueSchema,
|
|
547
|
+
appId: z2.string().nullable(),
|
|
548
|
+
mergeRequests: z2.array(genericRecordSchema)
|
|
549
|
+
});
|
|
518
550
|
var viewMergeRequestDataSchema = genericRecordSchema;
|
|
519
551
|
var approveDataSchema = genericRecordSchema;
|
|
520
552
|
var rejectDataSchema = genericRecordSchema;
|
|
@@ -530,6 +562,7 @@ var recordTurnSuccessSchema = makeSuccessSchema(recordTurnDataSchema);
|
|
|
530
562
|
var syncSuccessSchema = makeSuccessSchema(syncDataSchema);
|
|
531
563
|
var requestMergeSuccessSchema = makeSuccessSchema(requestMergeDataSchema);
|
|
532
564
|
var inboxSuccessSchema = makeSuccessSchema(inboxDataSchema);
|
|
565
|
+
var mergeRequestQueueSuccessSchema = makeSuccessSchema(mergeRequestQueueDataSchema);
|
|
533
566
|
var viewMergeRequestSuccessSchema = makeSuccessSchema(viewMergeRequestDataSchema);
|
|
534
567
|
var approveSuccessSchema = makeSuccessSchema(approveDataSchema);
|
|
535
568
|
var rejectSuccessSchema = makeSuccessSchema(rejectDataSchema);
|
|
@@ -543,6 +576,7 @@ import {
|
|
|
543
576
|
collabRecordTurn as coreCollabRecordTurn,
|
|
544
577
|
collabApprove as coreCollabApprove,
|
|
545
578
|
collabInbox as coreCollabInbox,
|
|
579
|
+
collabListMergeRequests as coreCollabListMergeRequests,
|
|
546
580
|
collabInit as coreCollabInit,
|
|
547
581
|
collabInvite as coreCollabInvite,
|
|
548
582
|
collabReconcile as coreCollabReconcile,
|
|
@@ -578,18 +612,18 @@ function getRiskLevel(status) {
|
|
|
578
612
|
function getRecommendedNextActions(status) {
|
|
579
613
|
if (status.repo.branchMismatch) {
|
|
580
614
|
return [
|
|
581
|
-
`Switch to the preferred branch (${status.binding.preferredBranch ?? "configured in the binding"}) before
|
|
615
|
+
`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.`
|
|
582
616
|
];
|
|
583
617
|
}
|
|
584
618
|
switch (status.recommendedAction) {
|
|
585
619
|
case "init":
|
|
586
|
-
return ["Run remix_collab_init to bind the repository to Remix."];
|
|
620
|
+
return ["Run remix_collab_init to bind the repository to Remix before using any Remix collaboration mutation flow."];
|
|
587
621
|
case "sync":
|
|
588
|
-
return ["Run remix_collab_sync_preview, then remix_collab_sync_apply if the preview is acceptable."];
|
|
622
|
+
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."];
|
|
589
623
|
case "reconcile":
|
|
590
|
-
return ["Run remix_collab_reconcile_preview before attempting remix_collab_reconcile_apply."];
|
|
591
|
-
case "
|
|
592
|
-
return ["Run
|
|
624
|
+
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."];
|
|
625
|
+
case "review_queue":
|
|
626
|
+
return ["Run remix_collab_review_queue to inspect reviewable merge requests instead of using local git merge flows."];
|
|
593
627
|
default:
|
|
594
628
|
return [];
|
|
595
629
|
}
|
|
@@ -647,7 +681,7 @@ async function initCollab(params) {
|
|
|
647
681
|
return {
|
|
648
682
|
data: result,
|
|
649
683
|
warnings: collectResultWarnings(result),
|
|
650
|
-
recommendedNextActions: ["Run remix_collab_status to inspect sync and merge readiness."],
|
|
684
|
+
recommendedNextActions: ["Run remix_collab_status to inspect sync, reconcile, and merge-request readiness before mutating bound-repo state."],
|
|
651
685
|
logContext: {
|
|
652
686
|
repoRoot: result.repoRoot,
|
|
653
687
|
appId: result.appId
|
|
@@ -677,7 +711,7 @@ async function remixCollab(params) {
|
|
|
677
711
|
return {
|
|
678
712
|
data: result,
|
|
679
713
|
warnings: collectResultWarnings(result),
|
|
680
|
-
recommendedNextActions: ["Run remix_collab_status inside the remix checkout
|
|
714
|
+
recommendedNextActions: ["Run remix_collab_status inside the remix checkout before using Remix mutation tools there."],
|
|
681
715
|
logContext: {
|
|
682
716
|
repoRoot: result.repoRoot,
|
|
683
717
|
appId: result.appId
|
|
@@ -762,7 +796,7 @@ async function syncCollab(params) {
|
|
|
762
796
|
return {
|
|
763
797
|
data: result,
|
|
764
798
|
warnings: collectResultWarnings(result),
|
|
765
|
-
recommendedNextActions: params.dryRun ? ["Run remix_collab_sync_apply with confirm=true to apply this fast-forward update."] : [],
|
|
799
|
+
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."] : [],
|
|
766
800
|
logContext: {
|
|
767
801
|
repoRoot: result.repoRoot
|
|
768
802
|
}
|
|
@@ -777,7 +811,7 @@ async function requestMerge(params) {
|
|
|
777
811
|
return {
|
|
778
812
|
data: result,
|
|
779
813
|
warnings: [],
|
|
780
|
-
recommendedNextActions: result.id ? [`Run remix_collab_view_merge_request with mrId=${String(result.id)} to inspect the request.`] : [],
|
|
814
|
+
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.`] : [],
|
|
781
815
|
logContext: {
|
|
782
816
|
mrId: typeof result.id === "string" ? result.id : null
|
|
783
817
|
}
|
|
@@ -796,6 +830,67 @@ async function inbox(params) {
|
|
|
796
830
|
logContext: {}
|
|
797
831
|
};
|
|
798
832
|
}
|
|
833
|
+
async function reviewQueue(params) {
|
|
834
|
+
const api = await createCollabApiClient();
|
|
835
|
+
const result = await coreCollabListMergeRequests({
|
|
836
|
+
api,
|
|
837
|
+
queue: "reviewable",
|
|
838
|
+
status: params.status ?? "open",
|
|
839
|
+
kind: params.kind ?? "merge"
|
|
840
|
+
});
|
|
841
|
+
return {
|
|
842
|
+
data: {
|
|
843
|
+
queue: result.queue,
|
|
844
|
+
appId: result.appId,
|
|
845
|
+
mergeRequests: result.mergeRequests
|
|
846
|
+
},
|
|
847
|
+
warnings: [],
|
|
848
|
+
recommendedNextActions: [],
|
|
849
|
+
logContext: {}
|
|
850
|
+
};
|
|
851
|
+
}
|
|
852
|
+
async function myMergeRequests(params) {
|
|
853
|
+
const api = await createCollabApiClient();
|
|
854
|
+
const result = await coreCollabListMergeRequests({
|
|
855
|
+
api,
|
|
856
|
+
queue: "created_by_me",
|
|
857
|
+
status: params.status ?? "open",
|
|
858
|
+
kind: params.kind ?? "merge"
|
|
859
|
+
});
|
|
860
|
+
return {
|
|
861
|
+
data: {
|
|
862
|
+
queue: result.queue,
|
|
863
|
+
appId: result.appId,
|
|
864
|
+
mergeRequests: result.mergeRequests
|
|
865
|
+
},
|
|
866
|
+
warnings: [],
|
|
867
|
+
recommendedNextActions: [],
|
|
868
|
+
logContext: {}
|
|
869
|
+
};
|
|
870
|
+
}
|
|
871
|
+
async function listAppMergeRequests(params) {
|
|
872
|
+
const api = await createCollabApiClient();
|
|
873
|
+
const result = await coreCollabListMergeRequests({
|
|
874
|
+
api,
|
|
875
|
+
cwd: params.cwd,
|
|
876
|
+
appId: params.appId,
|
|
877
|
+
queue: params.queue,
|
|
878
|
+
status: params.status ?? "open",
|
|
879
|
+
kind: params.kind ?? "merge"
|
|
880
|
+
});
|
|
881
|
+
return {
|
|
882
|
+
data: {
|
|
883
|
+
queue: result.queue,
|
|
884
|
+
appId: result.appId,
|
|
885
|
+
mergeRequests: result.mergeRequests
|
|
886
|
+
},
|
|
887
|
+
warnings: [],
|
|
888
|
+
recommendedNextActions: [],
|
|
889
|
+
logContext: {
|
|
890
|
+
appId: result.appId
|
|
891
|
+
}
|
|
892
|
+
};
|
|
893
|
+
}
|
|
799
894
|
async function viewMergeRequest(params) {
|
|
800
895
|
const api = await createCollabApiClient();
|
|
801
896
|
const review = await coreCollabView({
|
|
@@ -884,7 +979,7 @@ async function reconcile(params) {
|
|
|
884
979
|
return {
|
|
885
980
|
data: result,
|
|
886
981
|
warnings: collectWarnings(result.warnings),
|
|
887
|
-
recommendedNextActions: params.dryRun ? ["Run remix_collab_reconcile_apply with confirm=true only if the preview is acceptable."] : [],
|
|
982
|
+
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."] : [],
|
|
888
983
|
risks: params.dryRun ? ["Reconcile apply rewrites local history and creates a backup branch."] : [],
|
|
889
984
|
logContext: {
|
|
890
985
|
repoRoot: result.repoRoot ?? null
|
|
@@ -939,7 +1034,7 @@ function buildSuccessEnvelope(tool, requestId, result) {
|
|
|
939
1034
|
};
|
|
940
1035
|
}
|
|
941
1036
|
function deriveErrorRisks(tool, normalized) {
|
|
942
|
-
if (tool === "remix_collab_add" && normalized.message === "Change step succeeded remotely, but automatic local sync failed.") {
|
|
1037
|
+
if ((tool === "remix_collab_add" || tool === "remix_collab_add_change_step") && normalized.message === "Change step succeeded remotely, but automatic local sync failed.") {
|
|
943
1038
|
return ["The change step succeeded remotely, but the local repository may need manual recovery or a follow-up sync."];
|
|
944
1039
|
}
|
|
945
1040
|
if (normalized.code === "DESTRUCTIVE_OPERATION_BLOCKED") {
|
|
@@ -1019,7 +1114,7 @@ function registerTool(server, context, params) {
|
|
|
1019
1114
|
function registerCollabTools(server, context) {
|
|
1020
1115
|
registerTool(server, context, {
|
|
1021
1116
|
name: "remix_collab_status",
|
|
1022
|
-
description: "
|
|
1117
|
+
description: "Required first read for a bound repository: summarize binding, worktree state, merge request counts, and sync or reconcile readiness before Remix mutations.",
|
|
1023
1118
|
access: "read",
|
|
1024
1119
|
inputSchema: statusInputSchema,
|
|
1025
1120
|
outputSchema: statusSuccessSchema,
|
|
@@ -1078,7 +1173,33 @@ function registerCollabTools(server, context) {
|
|
|
1078
1173
|
});
|
|
1079
1174
|
registerTool(server, context, {
|
|
1080
1175
|
name: "remix_collab_add",
|
|
1081
|
-
description: "
|
|
1176
|
+
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.",
|
|
1177
|
+
access: "local_write",
|
|
1178
|
+
inputSchema: addInputSchema,
|
|
1179
|
+
outputSchema: addSuccessSchema,
|
|
1180
|
+
run: async (args) => {
|
|
1181
|
+
const input = z3.object(addInputSchema).parse(args);
|
|
1182
|
+
const cwd = resolvePolicyCwd(context.policy, input.cwd);
|
|
1183
|
+
const diffSource = input.diffSource ?? "worktree";
|
|
1184
|
+
if (diffSource === "external") {
|
|
1185
|
+
const externalDiff = input.externalDiff ?? "";
|
|
1186
|
+
assertDiffWithinLimit(context.policy, externalDiff);
|
|
1187
|
+
}
|
|
1188
|
+
return addCollabStep({
|
|
1189
|
+
cwd,
|
|
1190
|
+
prompt: input.prompt,
|
|
1191
|
+
assistantResponse: input.assistantResponse,
|
|
1192
|
+
diffSource,
|
|
1193
|
+
externalDiff: input.externalDiff,
|
|
1194
|
+
allowBranchMismatch: input.allowBranchMismatch ?? false,
|
|
1195
|
+
idempotencyKey: input.idempotencyKey,
|
|
1196
|
+
agent: context.agentMetadata
|
|
1197
|
+
});
|
|
1198
|
+
}
|
|
1199
|
+
});
|
|
1200
|
+
registerTool(server, context, {
|
|
1201
|
+
name: "remix_collab_add_change_step",
|
|
1202
|
+
description: "Alias of remix_collab_add with a more explicit name: record a code-diff change step for the current bound repository.",
|
|
1082
1203
|
access: "local_write",
|
|
1083
1204
|
inputSchema: addInputSchema,
|
|
1084
1205
|
outputSchema: addSuccessSchema,
|
|
@@ -1104,7 +1225,26 @@ function registerCollabTools(server, context) {
|
|
|
1104
1225
|
});
|
|
1105
1226
|
registerTool(server, context, {
|
|
1106
1227
|
name: "remix_collab_record_turn",
|
|
1107
|
-
description: "Record one no-diff collaboration turn for the current bound repository after a completed assistant response.",
|
|
1228
|
+
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.",
|
|
1229
|
+
access: "remote_write",
|
|
1230
|
+
inputSchema: recordTurnInputSchema,
|
|
1231
|
+
outputSchema: recordTurnSuccessSchema,
|
|
1232
|
+
run: async (args) => {
|
|
1233
|
+
const input = z3.object(recordTurnInputSchema).parse(args);
|
|
1234
|
+
const cwd = resolvePolicyCwd(context.policy, input.cwd);
|
|
1235
|
+
return recordCollabTurn({
|
|
1236
|
+
cwd,
|
|
1237
|
+
prompt: input.prompt,
|
|
1238
|
+
assistantResponse: input.assistantResponse,
|
|
1239
|
+
allowBranchMismatch: input.allowBranchMismatch ?? false,
|
|
1240
|
+
idempotencyKey: input.idempotencyKey,
|
|
1241
|
+
agent: context.agentMetadata
|
|
1242
|
+
});
|
|
1243
|
+
}
|
|
1244
|
+
});
|
|
1245
|
+
registerTool(server, context, {
|
|
1246
|
+
name: "remix_collab_record_no_diff_turn",
|
|
1247
|
+
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.",
|
|
1108
1248
|
access: "remote_write",
|
|
1109
1249
|
inputSchema: recordTurnInputSchema,
|
|
1110
1250
|
outputSchema: recordTurnSuccessSchema,
|
|
@@ -1123,7 +1263,7 @@ function registerCollabTools(server, context) {
|
|
|
1123
1263
|
});
|
|
1124
1264
|
registerTool(server, context, {
|
|
1125
1265
|
name: "remix_collab_sync_preview",
|
|
1126
|
-
description: "Preview whether the current bound repository can be fast-forward synced to the Remix app state.",
|
|
1266
|
+
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.",
|
|
1127
1267
|
access: "read",
|
|
1128
1268
|
inputSchema: previewInputSchema,
|
|
1129
1269
|
outputSchema: syncSuccessSchema,
|
|
@@ -1135,7 +1275,7 @@ function registerCollabTools(server, context) {
|
|
|
1135
1275
|
});
|
|
1136
1276
|
registerTool(server, context, {
|
|
1137
1277
|
name: "remix_collab_sync_apply",
|
|
1138
|
-
description: "Fast-forward sync the current bound repository to the Remix app state.",
|
|
1278
|
+
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.",
|
|
1139
1279
|
access: "local_write",
|
|
1140
1280
|
inputSchema: applyInputSchema,
|
|
1141
1281
|
outputSchema: syncSuccessSchema,
|
|
@@ -1148,7 +1288,7 @@ function registerCollabTools(server, context) {
|
|
|
1148
1288
|
});
|
|
1149
1289
|
registerTool(server, context, {
|
|
1150
1290
|
name: "remix_collab_request_merge",
|
|
1151
|
-
description: "Open a merge request from the current bound repository to its upstream app.",
|
|
1291
|
+
description: "Open a Remix merge request from the current bound repository to its upstream app instead of merging locally with raw git.",
|
|
1152
1292
|
access: "remote_write",
|
|
1153
1293
|
inputSchema: requestMergeInputSchema,
|
|
1154
1294
|
outputSchema: requestMergeSuccessSchema,
|
|
@@ -1158,9 +1298,49 @@ function registerCollabTools(server, context) {
|
|
|
1158
1298
|
return requestMerge({ cwd });
|
|
1159
1299
|
}
|
|
1160
1300
|
});
|
|
1301
|
+
registerTool(server, context, {
|
|
1302
|
+
name: "remix_collab_review_queue",
|
|
1303
|
+
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`.",
|
|
1304
|
+
access: "read",
|
|
1305
|
+
inputSchema: reviewQueueInputSchema,
|
|
1306
|
+
outputSchema: mergeRequestQueueSuccessSchema,
|
|
1307
|
+
run: async (args) => {
|
|
1308
|
+
const input = z3.object(reviewQueueInputSchema).parse(args);
|
|
1309
|
+
return reviewQueue({ status: input.status, kind: input.kind });
|
|
1310
|
+
}
|
|
1311
|
+
});
|
|
1312
|
+
registerTool(server, context, {
|
|
1313
|
+
name: "remix_collab_my_merge_requests",
|
|
1314
|
+
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`.",
|
|
1315
|
+
access: "read",
|
|
1316
|
+
inputSchema: myMergeRequestsInputSchema,
|
|
1317
|
+
outputSchema: mergeRequestQueueSuccessSchema,
|
|
1318
|
+
run: async (args) => {
|
|
1319
|
+
const input = z3.object(myMergeRequestsInputSchema).parse(args);
|
|
1320
|
+
return myMergeRequests({ status: input.status, kind: input.kind });
|
|
1321
|
+
}
|
|
1322
|
+
});
|
|
1323
|
+
registerTool(server, context, {
|
|
1324
|
+
name: "remix_collab_list_app_merge_requests",
|
|
1325
|
+
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`.",
|
|
1326
|
+
access: "read",
|
|
1327
|
+
inputSchema: appMergeRequestsInputSchema,
|
|
1328
|
+
outputSchema: mergeRequestQueueSuccessSchema,
|
|
1329
|
+
run: async (args) => {
|
|
1330
|
+
const input = z3.object(appMergeRequestsInputSchema).parse(args);
|
|
1331
|
+
const cwd = input.cwd ? resolvePolicyCwd(context.policy, input.cwd) : void 0;
|
|
1332
|
+
return listAppMergeRequests({
|
|
1333
|
+
cwd,
|
|
1334
|
+
appId: input.appId,
|
|
1335
|
+
queue: input.queue,
|
|
1336
|
+
status: input.status,
|
|
1337
|
+
kind: input.kind
|
|
1338
|
+
});
|
|
1339
|
+
}
|
|
1340
|
+
});
|
|
1161
1341
|
registerTool(server, context, {
|
|
1162
1342
|
name: "remix_collab_inbox",
|
|
1163
|
-
description: "
|
|
1343
|
+
description: "Backwards-compatible alias of `remix_collab_review_queue`. Lists reviewable merge requests only, not a broad visible inbox. Optional `status` filters the results.",
|
|
1164
1344
|
access: "read",
|
|
1165
1345
|
inputSchema: inboxInputSchema,
|
|
1166
1346
|
outputSchema: inboxSuccessSchema,
|
|
@@ -1171,7 +1351,7 @@ function registerCollabTools(server, context) {
|
|
|
1171
1351
|
});
|
|
1172
1352
|
registerTool(server, context, {
|
|
1173
1353
|
name: "remix_collab_view_merge_request",
|
|
1174
|
-
description: "View merge request metadata, prompts, change steps, and optionally a bounded unified diff.",
|
|
1354
|
+
description: "View Remix merge request metadata, prompts, change steps, and optionally a bounded unified diff before approval or rejection.",
|
|
1175
1355
|
access: "read",
|
|
1176
1356
|
inputSchema: viewMergeRequestInputSchema,
|
|
1177
1357
|
outputSchema: viewMergeRequestSuccessSchema,
|
|
@@ -1186,7 +1366,7 @@ function registerCollabTools(server, context) {
|
|
|
1186
1366
|
});
|
|
1187
1367
|
registerTool(server, context, {
|
|
1188
1368
|
name: "remix_collab_approve_remote",
|
|
1189
|
-
description: "Approve a merge request remotely and wait for terminal completion without mutating the local repository.",
|
|
1369
|
+
description: "Approve a merge request remotely and wait for terminal completion without mutating the local repository, preserving Remix as the merge authority.",
|
|
1190
1370
|
access: "remote_write",
|
|
1191
1371
|
inputSchema: approveInputSchema,
|
|
1192
1372
|
outputSchema: approveSuccessSchema,
|
|
@@ -1202,7 +1382,7 @@ function registerCollabTools(server, context) {
|
|
|
1202
1382
|
});
|
|
1203
1383
|
registerTool(server, context, {
|
|
1204
1384
|
name: "remix_collab_approve_and_sync_target",
|
|
1205
|
-
description: "Approve a merge request, wait for completion, and sync the target repository locally.",
|
|
1385
|
+
description: "Approve a merge request, wait for completion, and sync the target repository locally through Remix rather than a local git merge flow.",
|
|
1206
1386
|
access: "local_write",
|
|
1207
1387
|
inputSchema: approveInputSchema,
|
|
1208
1388
|
outputSchema: approveSuccessSchema,
|
|
@@ -1232,7 +1412,7 @@ function registerCollabTools(server, context) {
|
|
|
1232
1412
|
});
|
|
1233
1413
|
registerTool(server, context, {
|
|
1234
1414
|
name: "remix_collab_sync_upstream",
|
|
1235
|
-
description: "Sync upstream changes into the current remix and update the local checkout.",
|
|
1415
|
+
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.",
|
|
1236
1416
|
access: "local_write",
|
|
1237
1417
|
inputSchema: applyInputSchema,
|
|
1238
1418
|
outputSchema: syncUpstreamSuccessSchema,
|
|
@@ -1245,7 +1425,7 @@ function registerCollabTools(server, context) {
|
|
|
1245
1425
|
});
|
|
1246
1426
|
registerTool(server, context, {
|
|
1247
1427
|
name: "remix_collab_reconcile_preview",
|
|
1248
|
-
description: "Preview reconcile readiness when the local repository cannot be fast-forward synced.",
|
|
1428
|
+
description: "Preview reconcile readiness when the local repository cannot be fast-forward synced. Use this before any explicit Remix history-repair workflow.",
|
|
1249
1429
|
access: "read",
|
|
1250
1430
|
inputSchema: previewInputSchema,
|
|
1251
1431
|
outputSchema: reconcileSuccessSchema,
|
|
@@ -1257,7 +1437,7 @@ function registerCollabTools(server, context) {
|
|
|
1257
1437
|
});
|
|
1258
1438
|
registerTool(server, context, {
|
|
1259
1439
|
name: "remix_collab_reconcile_apply",
|
|
1260
|
-
description: "Reconcile divergent local history against the bound Remix app and update the local checkout.",
|
|
1440
|
+
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.",
|
|
1261
1441
|
access: "local_write",
|
|
1262
1442
|
inputSchema: applyInputSchema,
|
|
1263
1443
|
outputSchema: reconcileSuccessSchema,
|
|
@@ -1384,7 +1564,7 @@ function buildSearchNextActions(result) {
|
|
|
1384
1564
|
];
|
|
1385
1565
|
}
|
|
1386
1566
|
const actions = [
|
|
1387
|
-
"Review the top matched memory items before
|
|
1567
|
+
"Review the top matched memory items before reaching for raw git so the relevant Remix reasoning context stays in view."
|
|
1388
1568
|
];
|
|
1389
1569
|
const changeStepId = getFirstChangeStepId(result.items);
|
|
1390
1570
|
if (changeStepId) {
|
|
@@ -1419,7 +1599,7 @@ function buildTimelineNextActions(result) {
|
|
|
1419
1599
|
}
|
|
1420
1600
|
function buildChangeStepDiffNextActions(changeStepId) {
|
|
1421
1601
|
return [
|
|
1422
|
-
`Inspect the stored diff for \`changeStepId=${changeStepId}\`, then use raw git only if you still need exact repository-level commit
|
|
1602
|
+
`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.`
|
|
1423
1603
|
];
|
|
1424
1604
|
}
|
|
1425
1605
|
function unwrapResponseObject2(resp, label) {
|
|
@@ -1613,7 +1793,7 @@ function registerTool2(server, context, params) {
|
|
|
1613
1793
|
function registerMemoryTools(server, context) {
|
|
1614
1794
|
registerTool2(server, context, {
|
|
1615
1795
|
name: "remix_collab_memory_summary",
|
|
1616
|
-
description: "First read for a bound app's current collaboration state, recent reasoning context, and merge or reconcile history before deeper inspection.",
|
|
1796
|
+
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.",
|
|
1617
1797
|
access: "read",
|
|
1618
1798
|
inputSchema: memorySummaryInputSchema,
|
|
1619
1799
|
outputSchema: memorySummarySuccessSchema,
|
|
@@ -1628,7 +1808,7 @@ function registerMemoryTools(server, context) {
|
|
|
1628
1808
|
});
|
|
1629
1809
|
registerTool2(server, context, {
|
|
1630
1810
|
name: "remix_collab_memory_search",
|
|
1631
|
-
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
|
|
1811
|
+
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.",
|
|
1632
1812
|
access: "read",
|
|
1633
1813
|
inputSchema: memorySearchInputSchema,
|
|
1634
1814
|
outputSchema: memorySearchSuccessSchema,
|
|
@@ -1649,7 +1829,7 @@ function registerMemoryTools(server, context) {
|
|
|
1649
1829
|
});
|
|
1650
1830
|
registerTool2(server, context, {
|
|
1651
1831
|
name: "remix_collab_memory_timeline",
|
|
1652
|
-
description: "Chronological view of collaboration memory for understanding what happened and in what order, with optional filters for bounded historical inspection.",
|
|
1832
|
+
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.",
|
|
1653
1833
|
access: "read",
|
|
1654
1834
|
inputSchema: memoryTimelineInputSchema,
|
|
1655
1835
|
outputSchema: memoryTimelineSuccessSchema,
|
|
@@ -1669,7 +1849,7 @@ function registerMemoryTools(server, context) {
|
|
|
1669
1849
|
});
|
|
1670
1850
|
registerTool2(server, context, {
|
|
1671
1851
|
name: "remix_collab_memory_change_step_diff",
|
|
1672
|
-
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
|
|
1852
|
+
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.",
|
|
1673
1853
|
access: "read",
|
|
1674
1854
|
inputSchema: changeStepDiffInputSchema,
|
|
1675
1855
|
outputSchema: changeStepDiffSuccessSchema,
|