@martinloop/mcp 0.2.0 → 0.2.5
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/README.md +131 -158
- package/dist/discovery-metadata.d.ts +16 -0
- package/dist/discovery-metadata.js +62 -0
- package/dist/discovery-support.d.ts +62 -0
- package/dist/discovery-support.js +224 -0
- package/dist/package-version.d.ts +1 -0
- package/dist/package-version.js +3 -0
- package/dist/prompts.d.ts +13 -3
- package/dist/prompts.js +445 -74
- package/dist/resources.d.ts +27 -5
- package/dist/resources.js +557 -71
- package/dist/server-validation.d.ts +2 -3
- package/dist/server-validation.js +262 -122
- package/dist/server.d.ts +76 -7
- package/dist/server.js +1126 -400
- package/dist/tools/doctor.js +14 -6
- package/dist/tools/get-attempt.d.ts +13 -6
- package/dist/tools/get-attempt.js +14 -5
- package/dist/tools/get-run.d.ts +19 -12
- package/dist/tools/get-run.js +20 -11
- package/dist/tools/get-status.d.ts +11 -0
- package/dist/tools/get-status.js +12 -2
- package/dist/tools/get-verification-results.d.ts +10 -7
- package/dist/tools/get-verification-results.js +11 -6
- package/dist/tools/inspect-loop.d.ts +9 -0
- package/dist/tools/inspect-loop.js +11 -2
- package/dist/tools/list-runs.d.ts +25 -5
- package/dist/tools/list-runs.js +21 -4
- package/dist/tools/preflight.js +7 -2
- package/dist/tools/run-dossier.d.ts +37 -4
- package/dist/tools/run-dossier.js +40 -5
- package/dist/tools/run-loop.d.ts +19 -0
- package/dist/tools/run-loop.js +41 -3
- package/dist/tools/run-store.d.ts +57 -3
- package/dist/tools/run-store.js +404 -53
- package/dist/tools/tool-errors.d.ts +37 -0
- package/dist/tools/tool-errors.js +170 -0
- package/dist/tools/tool-response.d.ts +16 -0
- package/dist/tools/tool-response.js +34 -0
- package/dist/tools/tool-support.d.ts +92 -2
- package/dist/tools/tool-support.js +358 -63
- package/dist/tools/triage-runs.d.ts +33 -0
- package/dist/tools/triage-runs.js +138 -0
- package/dist/vendor/adapters/claude-cli.js +0 -1
- package/dist/vendor/adapters/cli-bridge.js +0 -1
- package/dist/vendor/adapters/direct-provider.js +0 -1
- package/dist/vendor/adapters/index.js +0 -1
- package/dist/vendor/adapters/runtime-support.js +0 -1
- package/dist/vendor/adapters/stub-agent-cli.js +0 -1
- package/dist/vendor/adapters/stub-direct-provider.js +0 -1
- package/dist/vendor/adapters/verifier-only.js +0 -1
- package/dist/vendor/contracts/governance.js +0 -1
- package/dist/vendor/contracts/index.d.ts +2 -0
- package/dist/vendor/contracts/index.js +1 -1
- package/dist/vendor/contracts/operator.d.ts +19 -0
- package/dist/vendor/contracts/operator.js +11 -0
- package/dist/vendor/core/compiler.js +0 -1
- package/dist/vendor/core/context-integrity.js +0 -1
- package/dist/vendor/core/grounding.js +0 -1
- package/dist/vendor/core/index.js +1 -2
- package/dist/vendor/core/leash.js +19 -12
- package/dist/vendor/core/persistence/compiler.js +0 -1
- package/dist/vendor/core/persistence/index.js +0 -1
- package/dist/vendor/core/persistence/ledger.js +0 -1
- package/dist/vendor/core/persistence/runs-reader.js +0 -1
- package/dist/vendor/core/persistence/store.js +0 -1
- package/dist/vendor/core/policy.js +0 -1
- package/dist/vendor/core/red-blue/red-phase.d.ts +64 -0
- package/dist/vendor/core/red-blue/red-phase.js +135 -0
- package/dist/vendor/core/red-blue/risk-tiers.d.ts +22 -0
- package/dist/vendor/core/red-blue/risk-tiers.js +32 -0
- package/dist/vendor/core/rollback.js +2 -3
- package/package.json +10 -5
- package/server.json +2 -2
- package/dist/tools/cockpit-support.d.ts +0 -69
- package/dist/tools/cockpit-support.js +0 -108
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { evaluateCostGovernor } from "../vendor/core/index.js";
|
|
2
|
-
import { loadLoopRecordForStatus, loadLoopRecordsForInspect } from "./run-store.js";
|
|
3
|
-
export function summarizeRun(loop) {
|
|
4
|
-
const costState = evaluateCostGovernor({
|
|
5
|
-
budget: loop.budget,
|
|
6
|
-
cost: {
|
|
7
|
-
actualUsd: loop.cost.actualUsd,
|
|
8
|
-
avoidedUsd: loop.cost.avoidedUsd ?? 0,
|
|
9
|
-
tokensIn: loop.cost.tokensIn,
|
|
10
|
-
tokensOut: loop.cost.tokensOut
|
|
11
|
-
},
|
|
12
|
-
attemptsUsed: loop.attempts.length
|
|
13
|
-
});
|
|
14
|
-
return {
|
|
15
|
-
loopId: loop.loopId,
|
|
16
|
-
title: loop.task.title,
|
|
17
|
-
objective: loop.task.objective,
|
|
18
|
-
status: loop.status,
|
|
19
|
-
lifecycleState: loop.lifecycleState,
|
|
20
|
-
createdAt: loop.createdAt,
|
|
21
|
-
updatedAt: loop.updatedAt,
|
|
22
|
-
attempts: loop.attempts.length,
|
|
23
|
-
costUsd: loop.cost.actualUsd,
|
|
24
|
-
avoidedUsd: loop.cost.avoidedUsd ?? 0,
|
|
25
|
-
pressure: costState.pressure,
|
|
26
|
-
shouldStop: costState.shouldStop,
|
|
27
|
-
verificationCount: extractVerificationResults(loop).length
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
export async function listRunSummaries(input = {}) {
|
|
31
|
-
const inspection = await loadLoopRecordsForInspect({ runsDir: input.runsDir });
|
|
32
|
-
const summaries = inspection.loops.map((loop) => summarizeRun(loop));
|
|
33
|
-
summaries.sort((left, right) => {
|
|
34
|
-
const leftTime = Date.parse(left.updatedAt ?? left.createdAt);
|
|
35
|
-
const rightTime = Date.parse(right.updatedAt ?? right.createdAt);
|
|
36
|
-
return (Number.isFinite(rightTime) ? rightTime : 0) - (Number.isFinite(leftTime) ? leftTime : 0);
|
|
37
|
-
});
|
|
38
|
-
return summaries.slice(0, input.limit ?? 20);
|
|
39
|
-
}
|
|
40
|
-
export async function loadSelectedRun(input) {
|
|
41
|
-
const selectors = [input.loopId ? "loopId" : null, input.latest ? "latest" : null].filter(Boolean);
|
|
42
|
-
if (selectors.length !== 1) {
|
|
43
|
-
throw new Error("Provide exactly one of loopId or latest.");
|
|
44
|
-
}
|
|
45
|
-
const source = await loadLoopRecordForStatus({
|
|
46
|
-
...(input.loopId ? { loopId: input.loopId } : {}),
|
|
47
|
-
...(input.latest ? { latest: true } : {}),
|
|
48
|
-
...(input.runsDir ? { runsDir: input.runsDir } : {})
|
|
49
|
-
});
|
|
50
|
-
return source.loop;
|
|
51
|
-
}
|
|
52
|
-
export function extractVerificationResults(loop) {
|
|
53
|
-
const events = "events" in loop && Array.isArray(loop.events) ? loop.events : [];
|
|
54
|
-
return events
|
|
55
|
-
.filter((event) => event?.type === "verification.completed")
|
|
56
|
-
.map((event) => {
|
|
57
|
-
const payload = isRecord(event.payload) ? event.payload : {};
|
|
58
|
-
return {
|
|
59
|
-
...(typeof event.eventId === "string" ? { eventId: event.eventId } : {}),
|
|
60
|
-
...(typeof event.timestamp === "string" ? { timestamp: event.timestamp } : {}),
|
|
61
|
-
...(typeof event.lifecycleState === "string" ? { lifecycleState: event.lifecycleState } : {}),
|
|
62
|
-
...(typeof payload.passed === "boolean" ? { passed: payload.passed } : {}),
|
|
63
|
-
...(typeof payload.summary === "string" ? { summary: payload.summary } : {})
|
|
64
|
-
};
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
export function getAttempt(loop, attemptIndex) {
|
|
68
|
-
const attempt = loop.attempts.find((candidate) => candidate.index === attemptIndex);
|
|
69
|
-
if (!attempt) {
|
|
70
|
-
throw new Error("Attempt not found.");
|
|
71
|
-
}
|
|
72
|
-
return attempt;
|
|
73
|
-
}
|
|
74
|
-
export function buildRunDossier(loop) {
|
|
75
|
-
return {
|
|
76
|
-
loopId: loop.loopId,
|
|
77
|
-
generatedAt: new Date().toISOString(),
|
|
78
|
-
sections: [
|
|
79
|
-
{
|
|
80
|
-
kind: "summary",
|
|
81
|
-
content: summarizeRun(loop)
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
kind: "task",
|
|
85
|
-
content: loop.task
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
kind: "budget",
|
|
89
|
-
content: {
|
|
90
|
-
budget: loop.budget,
|
|
91
|
-
cost: loop.cost
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
kind: "attempts",
|
|
96
|
-
content: loop.attempts
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
kind: "verification",
|
|
100
|
-
content: extractVerificationResults(loop)
|
|
101
|
-
}
|
|
102
|
-
]
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
function isRecord(value) {
|
|
106
|
-
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=cockpit-support.js.map
|