@mrrlin-dev/mcp 0.3.11 → 0.3.13
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/bin.cjs +40 -13
- package/package.json +2 -2
package/dist/bin.cjs
CHANGED
|
@@ -36728,10 +36728,11 @@ var mrrlinTaskUpdateSchema = external_exports.object({
|
|
|
36728
36728
|
status: mrrlinTaskStatusSchema.optional(),
|
|
36729
36729
|
subcategory: taxonomySubcategorySchema.optional(),
|
|
36730
36730
|
tags: mrrlinTaskTagsSchema.optional(),
|
|
36731
|
+
title: external_exports.string().min(1).optional(),
|
|
36731
36732
|
type: mrrlinTaskTypeSchema.optional(),
|
|
36732
36733
|
followUpAt: external_exports.string().datetime().nullable().optional(),
|
|
36733
36734
|
verificationDueAt: external_exports.string().datetime().nullable().optional()
|
|
36734
|
-
}).refine((value) => value.assignee !== void 0 || value.autoDeploy !== void 0 || value.autonomyLevel !== void 0 || value.autonomyReason !== void 0 || value.category !== void 0 || value.directorThreadId !== void 0 || value.dueDate !== void 0 || value.followUpAt !== void 0 || value.impact !== void 0 || value.notes !== void 0 || value.planId !== void 0 || value.specApproved !== void 0 || value.specWikiPageId !== void 0 || value.status !== void 0 || value.subcategory !== void 0 || value.tags !== void 0 || value.type !== void 0 || value.verificationDueAt !== void 0, { message: "TaskUpdate requires at least one field" }).superRefine((value, context) => {
|
|
36735
|
+
}).refine((value) => value.assignee !== void 0 || value.autoDeploy !== void 0 || value.autonomyLevel !== void 0 || value.autonomyReason !== void 0 || value.category !== void 0 || value.directorThreadId !== void 0 || value.dueDate !== void 0 || value.followUpAt !== void 0 || value.impact !== void 0 || value.notes !== void 0 || value.planId !== void 0 || value.specApproved !== void 0 || value.specWikiPageId !== void 0 || value.status !== void 0 || value.subcategory !== void 0 || value.tags !== void 0 || value.title !== void 0 || value.type !== void 0 || value.verificationDueAt !== void 0, { message: "TaskUpdate requires at least one field" }).superRefine((value, context) => {
|
|
36735
36736
|
if (value.autonomyLevel !== void 0 && value.autonomyReason === void 0) {
|
|
36736
36737
|
context.addIssue({
|
|
36737
36738
|
code: external_exports.ZodIssueCode.custom,
|
|
@@ -36857,6 +36858,10 @@ var githubInstallCallbackResponseSchema = external_exports.object({
|
|
|
36857
36858
|
data: external_exports.object({
|
|
36858
36859
|
installation: mrrlinGithubInstallationSchema,
|
|
36859
36860
|
linkedProjectSlugs: external_exports.array(mrrlinProjectSlugSchema),
|
|
36861
|
+
// Projects the operator initiated the install for whose BOUND repo the installation cannot
|
|
36862
|
+
// access (repo not in the installation's selection) — deliberately NOT linked: "bound"
|
|
36863
|
+
// must mean the repo is actually reachable. Additive; defaults keep old clients parsing.
|
|
36864
|
+
unlinkedProjectSlugs: external_exports.array(mrrlinProjectSlugSchema).default([]),
|
|
36860
36865
|
matchedRepos: external_exports.array(external_exports.string().regex(/^[^/]+\/[^/]+$/)),
|
|
36861
36866
|
setupAction: external_exports.enum(["install", "request", "update"])
|
|
36862
36867
|
})
|
|
@@ -37125,6 +37130,10 @@ var mrrlinExecutionArtifactCreateSchema = external_exports.object({
|
|
|
37125
37130
|
kind: mrrlinExecutionArtifactKindSchema,
|
|
37126
37131
|
payload: external_exports.record(external_exports.string(), external_exports.unknown()).default({})
|
|
37127
37132
|
});
|
|
37133
|
+
var executionArtifactListFiltersSchema = external_exports.object({
|
|
37134
|
+
limit: external_exports.coerce.number().int().min(1).max(100).optional(),
|
|
37135
|
+
order: external_exports.enum(["asc", "desc"]).optional()
|
|
37136
|
+
});
|
|
37128
37137
|
var executionRunResponseSchema = external_exports.object({
|
|
37129
37138
|
data: mrrlinExecutionRunSchema
|
|
37130
37139
|
});
|
|
@@ -37333,7 +37342,10 @@ var mrrlinInboxItemIdSchema = external_exports.string().regex(/^II-[A-Za-z0-9._-
|
|
|
37333
37342
|
var mrrlinInboxItemActionPayloadSchema = external_exports.object({
|
|
37334
37343
|
actor: external_exports.string().min(1),
|
|
37335
37344
|
provider: external_exports.string().min(1),
|
|
37336
|
-
runId: mrrlinExecutionRunIdSchema
|
|
37345
|
+
runId: mrrlinExecutionRunIdSchema,
|
|
37346
|
+
// Optional (additive): when true, approving the proposal creates a full code-execution run
|
|
37347
|
+
// (worktree + push/PR path). Scheduler proposals set it; legacy payloads omit it.
|
|
37348
|
+
codeExecution: external_exports.boolean().optional()
|
|
37337
37349
|
});
|
|
37338
37350
|
var mrrlinInboxItemSchema = external_exports.object({
|
|
37339
37351
|
actionPayload: mrrlinInboxItemActionPayloadSchema.nullable(),
|
|
@@ -38087,8 +38099,12 @@ function createMrrlinClient(config2) {
|
|
|
38087
38099
|
});
|
|
38088
38100
|
return executionRunResponseSchema.parse(body).data;
|
|
38089
38101
|
},
|
|
38090
|
-
async listExecutionArtifacts(projectSlug, runId) {
|
|
38091
|
-
const
|
|
38102
|
+
async listExecutionArtifacts(projectSlug, runId, filters = {}) {
|
|
38103
|
+
const url2 = appendQuery(`${projectPath(projectSlug)}/execution-runs/${encodeURIComponent(runId)}/artifacts`, {
|
|
38104
|
+
limit: filters.limit !== void 0 ? String(filters.limit) : void 0,
|
|
38105
|
+
order: filters.order === "desc" ? "desc" : void 0
|
|
38106
|
+
});
|
|
38107
|
+
const body = await request(url2);
|
|
38092
38108
|
return executionArtifactListResponseSchema.parse(body).data;
|
|
38093
38109
|
},
|
|
38094
38110
|
async appendExecutionArtifact(projectSlug, runId, input) {
|
|
@@ -38364,17 +38380,17 @@ function startSelfUpdate(deps) {
|
|
|
38364
38380
|
version: pkgVersion,
|
|
38365
38381
|
latestVersion
|
|
38366
38382
|
});
|
|
38367
|
-
return `[bridge:update] An update for @mrrlin-dev/mcp is available: ${pkgVersion}
|
|
38383
|
+
return `[bridge:update] An update for @mrrlin-dev/mcp is available: ${pkgVersion} -> ${latestVersion}.
|
|
38368
38384
|
|
|
38369
|
-
This turn, at a natural pause, ASK the operator a yes/no question
|
|
38385
|
+
This turn, at a natural pause, ASK the operator a yes/no question IN THE OPERATOR'S LANGUAGE (mirror the language they are chatting in) - e.g. in English: "The bridge is on ${pkgVersion} but npm already has ${latestVersion} - update now? (I'll run \`npm install -g @mrrlin-dev/mcp@latest\`)". Do NOT install without explicit confirmation.
|
|
38370
38386
|
|
|
38371
|
-
If the operator confirms
|
|
38387
|
+
If the operator confirms: immediately run \`npm install -g @mrrlin-dev/mcp@latest\` via your shell tool and report the outcome in chat. After a successful install, the bridge auto-restarts via its self-update loop within a couple of minutes - you do NOT need to call pm2.
|
|
38372
38388
|
|
|
38373
38389
|
If the operator declines / says "later": acknowledge briefly and do not bring it up again this turn. The bridge has a cooldown and will re-offer in 48h.
|
|
38374
38390
|
|
|
38375
38391
|
If the install fails (permission denied, registry pinned, sudo required, network blocked): paste the error verbatim and show the operator the manual command \`npm install -g @mrrlin-dev/mcp@latest\` plus a one-line hint about likely cause.
|
|
38376
38392
|
|
|
38377
|
-
Do NOT derail the current task
|
|
38393
|
+
Do NOT derail the current task - if the operator has an in-flight question, answer that first; the update offer is a brief aside, not the main subject.`;
|
|
38378
38394
|
}
|
|
38379
38395
|
let startupBinSha = null;
|
|
38380
38396
|
try {
|
|
@@ -38534,7 +38550,7 @@ Do NOT derail the current task \u2014 if the operator has an in-flight question,
|
|
|
38534
38550
|
}
|
|
38535
38551
|
|
|
38536
38552
|
// src/_generated/version.ts
|
|
38537
|
-
var PKG_VERSION = "0.3.
|
|
38553
|
+
var PKG_VERSION = "0.3.13";
|
|
38538
38554
|
|
|
38539
38555
|
// src/api-base-url.ts
|
|
38540
38556
|
var DEFAULT_API_BASE_URL = "http://127.0.0.1:8787";
|
|
@@ -39244,7 +39260,10 @@ async function driveRun(deps, projectSlug, runId) {
|
|
|
39244
39260
|
runId,
|
|
39245
39261
|
defaultBranch: await getDefaultBranch(projectSlug)
|
|
39246
39262
|
});
|
|
39247
|
-
await deps.client.updateExecutionRun(projectSlug, runId, {
|
|
39263
|
+
await deps.client.updateExecutionRun(projectSlug, runId, {
|
|
39264
|
+
worktreeId: worktreePath,
|
|
39265
|
+
branch: worktreeBranch(runId)
|
|
39266
|
+
});
|
|
39248
39267
|
sandbox = "danger-full-access";
|
|
39249
39268
|
turnCwd = worktreePath;
|
|
39250
39269
|
useExecutor = true;
|
|
@@ -44203,7 +44222,15 @@ function tokenRefreshIntervalMs() {
|
|
|
44203
44222
|
const seconds = Math.min(55, Math.max(15, readEnvInt("MRRLIN_DIRECTOR_BRIDGE_TOKEN_REFRESH_SECONDS", 45)));
|
|
44204
44223
|
return seconds * 1e3;
|
|
44205
44224
|
}
|
|
44206
|
-
var
|
|
44225
|
+
var COLLECTED_TURN_TIMEOUT_DEFAULT_MS = 9e5;
|
|
44226
|
+
function collectedTurnTimeoutMs() {
|
|
44227
|
+
const raw = process.env.MRRLIN_COLLECTED_TURN_TIMEOUT_MS;
|
|
44228
|
+
if (raw) {
|
|
44229
|
+
const parsed = Number(raw);
|
|
44230
|
+
if (Number.isFinite(parsed) && parsed > 0) return Math.floor(parsed);
|
|
44231
|
+
}
|
|
44232
|
+
return COLLECTED_TURN_TIMEOUT_DEFAULT_MS;
|
|
44233
|
+
}
|
|
44207
44234
|
var DEFAULT_IMAGE_ONLY_PROMPT = "Look at the attached image.";
|
|
44208
44235
|
var VERIFICATION_BASE_INSTRUCTIONS = [
|
|
44209
44236
|
"You are a deployment verification agent. Make ONLY read-only HTTP requests to the single",
|
|
@@ -44269,8 +44296,8 @@ async function runCollectedCodexTurn(client, prompt, cwd, baseInstructions) {
|
|
|
44269
44296
|
await turnEnded;
|
|
44270
44297
|
},
|
|
44271
44298
|
interrupt: () => client.turn.interrupt({ threadId }),
|
|
44272
|
-
timeoutMs:
|
|
44273
|
-
timeoutMessage: `Collected turn did not complete within ${
|
|
44299
|
+
timeoutMs: collectedTurnTimeoutMs(),
|
|
44300
|
+
timeoutMessage: `Collected turn did not complete within ${collectedTurnTimeoutMs()}ms.`
|
|
44274
44301
|
});
|
|
44275
44302
|
for (const ev of mapper.flush()) if (ev.type === "assistant") chunks.push(ev.content);
|
|
44276
44303
|
} finally {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mrrlin-dev/mcp",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.13",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"mrrlin-mcp": "dist/bin.cjs"
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"esbuild": "^0.24.0",
|
|
24
24
|
"tsx": "^4.22.3",
|
|
25
25
|
"@mrrlin/codex-client": "0.0.0",
|
|
26
|
-
"@mrrlin/client": "0.0.0",
|
|
27
26
|
"@mrrlin/director-e2e": "0.0.0",
|
|
27
|
+
"@mrrlin/client": "0.0.0",
|
|
28
28
|
"@mrrlin/schemas": "0.0.0",
|
|
29
29
|
"@mrrlin/tsconfig": "0.0.0",
|
|
30
30
|
"@mrrlin/wiki": "0.0.0"
|