@sensigo/realm-mcp 0.7.0 → 0.8.0
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/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/server.js +1 -1
- package/dist/tools/start-run-batch.d.ts +23 -0
- package/dist/tools/start-run-batch.d.ts.map +1 -1
- package/dist/tools/start-run-batch.js +65 -10
- package/dist/tools/start-run-batch.js.map +1 -1
- package/dist/tools/start-run.d.ts +5 -1
- package/dist/tools/start-run.d.ts.map +1 -1
- package/dist/tools/start-run.js +46 -5
- package/dist/tools/start-run.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ export { createRealmMcpServer, createDefaultRegistry } from './server.js';
|
|
|
2
2
|
export type { RealmMcpServerOptions } from './server.js';
|
|
3
3
|
export { generateProtocol } from './protocol/generator.js';
|
|
4
4
|
export type { WorkflowProtocol, ProtocolStep } from './protocol/generator.js';
|
|
5
|
-
export declare const VERSION = "0.
|
|
5
|
+
export declare const VERSION = "0.8.0";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @sensigo/realm-mcp — MCP server for AI agent connections
|
|
2
2
|
export { createRealmMcpServer, createDefaultRegistry } from './server.js';
|
|
3
3
|
export { generateProtocol } from './protocol/generator.js';
|
|
4
|
-
export const VERSION = '0.
|
|
4
|
+
export const VERSION = '0.8.0';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/server.js
CHANGED
|
@@ -39,7 +39,7 @@ export { createDefaultRegistry };
|
|
|
39
39
|
export function createRealmMcpServer(options) {
|
|
40
40
|
const server = new McpServer({
|
|
41
41
|
name: 'realm',
|
|
42
|
-
version: '0.
|
|
42
|
+
version: '0.8.0',
|
|
43
43
|
});
|
|
44
44
|
// When no registry is provided, use the default registry that pre-registers built-in
|
|
45
45
|
// adapters. When a registry is provided, the caller is responsible for its contents.
|
|
@@ -1,10 +1,31 @@
|
|
|
1
1
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { type RunPhase } from '@sensigo/realm';
|
|
2
3
|
import type { HandleRunStores } from './start-run.js';
|
|
3
4
|
export interface StartRunBatchResult {
|
|
4
5
|
started: Array<{
|
|
5
6
|
run_id: string;
|
|
6
7
|
idempotency_key?: string;
|
|
7
8
|
params: Record<string, unknown>;
|
|
9
|
+
/** True when an existing run matched the idempotency key (inverse of the store's `created`). */
|
|
10
|
+
deduped: boolean;
|
|
11
|
+
/** Derived phase of the run at enqueue time — identical field name to the single-run path. */
|
|
12
|
+
run_phase: RunPhase;
|
|
13
|
+
/** Present only for a terminal matched run. */
|
|
14
|
+
terminal_reason?: string;
|
|
15
|
+
/** Observational warnings (active-match / param-mismatch) — identical field name to the single-run path. */
|
|
16
|
+
warnings: string[];
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* Items rejected by the idempotency policy (`on_terminal_match: 'reject'` / `on_live_match: 'fail'`).
|
|
20
|
+
* Carries the original item index so callers can correlate back to `items[]`. A rejected item does
|
|
21
|
+
* NOT abort the batch — successful items still appear in `started[]`.
|
|
22
|
+
*/
|
|
23
|
+
failed: Array<{
|
|
24
|
+
index: number;
|
|
25
|
+
idempotency_key?: string;
|
|
26
|
+
params: Record<string, unknown>;
|
|
27
|
+
error: string;
|
|
28
|
+
error_code?: string;
|
|
8
29
|
}>;
|
|
9
30
|
}
|
|
10
31
|
export declare function handleStartRunBatch(args: {
|
|
@@ -15,6 +36,8 @@ export declare function handleStartRunBatch(args: {
|
|
|
15
36
|
}>;
|
|
16
37
|
parent_run_id?: string | undefined;
|
|
17
38
|
max_items?: number | undefined;
|
|
39
|
+
on_terminal_match?: 'reuse' | 'reject' | 'rerun_if_failed' | 'rerun' | undefined;
|
|
40
|
+
on_live_match?: 'use_existing' | 'fail' | undefined;
|
|
18
41
|
}, stores?: HandleRunStores): Promise<StartRunBatchResult>;
|
|
19
42
|
export declare function registerStartRunBatch(server: McpServer, opts?: {
|
|
20
43
|
registry?: import('@sensigo/realm').ExtensionRegistry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-run-batch.d.ts","sourceRoot":"","sources":["../../src/tools/start-run-batch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"start-run-batch.d.ts","sourceRoot":"","sources":["../../src/tools/start-run-batch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAQL,KAAK,QAAQ,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAQtD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,gGAAgG;QAChG,OAAO,EAAE,OAAO,CAAC;QACjB,8FAA8F;QAC9F,SAAS,EAAE,QAAQ,CAAC;QACpB,+CAA+C;QAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,4GAA4G;QAC5G,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC;IACH;;;;OAIG;IACH,MAAM,EAAE,KAAK,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE;IACJ,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;IACxF,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,iBAAiB,GAAG,OAAO,GAAG,SAAS,CAAC;IACjF,aAAa,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;CACrD,EACD,MAAM,CAAC,EAAE,eAAe,GACvB,OAAO,CAAC,mBAAmB,CAAC,CAmH9B;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,IAAI,CAAC,EAAE;IACL,QAAQ,CAAC,EAAE,OAAO,gBAAgB,EAAE,iBAAiB,CAAC;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,GACA,IAAI,CAgEN"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
// start-run-batch tool — atomically enqueues multiple runs of the same workflow.
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { JsonWorkflowStore, JsonFileStore, WorkflowError, buildPreExecutionErrorEnvelope, validateInputSchema, } from '@sensigo/realm';
|
|
3
|
+
import { JsonWorkflowStore, JsonFileStore, WorkflowError, buildPreExecutionErrorEnvelope, validateInputSchema, hashParams, } from '@sensigo/realm';
|
|
4
4
|
import { sseJsonStringify } from '../sse-json.js';
|
|
5
|
+
/** Lightweight structured telemetry. stderr is safe under the MCP stdio/SSE transport. */
|
|
6
|
+
function logBatchDedup(fields) {
|
|
7
|
+
console.error(JSON.stringify({ event: 'idempotency_dedup', ...fields }));
|
|
8
|
+
}
|
|
5
9
|
export async function handleStartRunBatch(args, stores) {
|
|
6
10
|
const workflowStore = stores?.workflowStore ?? new JsonWorkflowStore();
|
|
7
11
|
const runStore = stores?.runStore ?? new JsonFileStore();
|
|
@@ -39,21 +43,70 @@ export async function handleStartRunBatch(args, stores) {
|
|
|
39
43
|
}
|
|
40
44
|
}
|
|
41
45
|
const started = [];
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
const failed = [];
|
|
47
|
+
let dedupHits = 0;
|
|
48
|
+
for (let i = 0; i < args.items.length; i++) {
|
|
49
|
+
const item = args.items[i];
|
|
50
|
+
let run;
|
|
51
|
+
let created;
|
|
52
|
+
try {
|
|
53
|
+
({ run, created } = await runStore.create({
|
|
54
|
+
workflowId: definition.id,
|
|
55
|
+
workflowVersion: definition.version,
|
|
56
|
+
params: item.params,
|
|
57
|
+
...(item.idempotency_key !== undefined ? { idempotencyKey: item.idempotency_key } : {}),
|
|
58
|
+
...(args.parent_run_id !== undefined ? { parentRunId: args.parent_run_id } : {}),
|
|
59
|
+
...(args.on_terminal_match !== undefined
|
|
60
|
+
? { onTerminalMatch: args.on_terminal_match }
|
|
61
|
+
: {}),
|
|
62
|
+
...(args.on_live_match !== undefined ? { onLiveMatch: args.on_live_match } : {}),
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
// A policy rejection (`reject` / `fail`) must NOT sink the batch — record and continue.
|
|
67
|
+
const we = err instanceof WorkflowError ? err : undefined;
|
|
68
|
+
failed.push({
|
|
69
|
+
index: i,
|
|
70
|
+
...(item.idempotency_key !== undefined ? { idempotency_key: item.idempotency_key } : {}),
|
|
71
|
+
params: item.params,
|
|
72
|
+
error: err instanceof Error ? err.message : String(err),
|
|
73
|
+
...(we !== undefined ? { error_code: we.code } : {}),
|
|
74
|
+
});
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
// The store reports `created`; the batch surfaces its inverse, `deduped`, per item.
|
|
78
|
+
const deduped = !created;
|
|
79
|
+
if (deduped)
|
|
80
|
+
dedupHits++;
|
|
81
|
+
const warnings = [];
|
|
82
|
+
if (deduped) {
|
|
83
|
+
if (run.run_phase === 'running' || run.run_phase === 'gate_waiting') {
|
|
84
|
+
warnings.push(`Idempotency key matched a run still in phase '${run.run_phase}'.`);
|
|
85
|
+
}
|
|
86
|
+
if (item.idempotency_key !== undefined &&
|
|
87
|
+
hashParams(item.params) !== hashParams(run.params)) {
|
|
88
|
+
warnings.push(`Idempotency key matched an existing run created with different params; the original run is returned unchanged (params not updated).`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
50
91
|
started.push({
|
|
51
92
|
run_id: run.id,
|
|
52
93
|
...(item.idempotency_key !== undefined ? { idempotency_key: item.idempotency_key } : {}),
|
|
53
94
|
params: item.params,
|
|
95
|
+
deduped,
|
|
96
|
+
run_phase: run.run_phase,
|
|
97
|
+
...(run.terminal_reason !== undefined ? { terminal_reason: run.terminal_reason } : {}),
|
|
98
|
+
warnings,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
if (dedupHits > 0) {
|
|
102
|
+
logBatchDedup({
|
|
103
|
+
tool: 'start_run_batch',
|
|
104
|
+
workflow_id: definition.id,
|
|
105
|
+
dedup_hits: dedupHits,
|
|
106
|
+
total: args.items.length,
|
|
54
107
|
});
|
|
55
108
|
}
|
|
56
|
-
return { started };
|
|
109
|
+
return { started, failed };
|
|
57
110
|
}
|
|
58
111
|
export function registerStartRunBatch(server, opts) {
|
|
59
112
|
server.tool('start_run_batch', 'Atomically enqueue multiple runs of the same workflow. All items are validated before any run is created. If idempotency keys are provided, duplicate runs are returned instead of created.', {
|
|
@@ -64,6 +117,8 @@ export function registerStartRunBatch(server, opts) {
|
|
|
64
117
|
})),
|
|
65
118
|
parent_run_id: z.string().optional(),
|
|
66
119
|
max_items: z.number().int().positive().optional(),
|
|
120
|
+
on_terminal_match: z.enum(['reuse', 'reject', 'rerun_if_failed', 'rerun']).optional(),
|
|
121
|
+
on_live_match: z.enum(['use_existing', 'fail']).optional(),
|
|
67
122
|
}, async (args) => {
|
|
68
123
|
try {
|
|
69
124
|
const result = await handleStartRunBatch(args, opts);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-run-batch.js","sourceRoot":"","sources":["../../src/tools/start-run-batch.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,8BAA8B,EAC9B,mBAAmB,
|
|
1
|
+
{"version":3,"file":"start-run-batch.js","sourceRoot":"","sources":["../../src/tools/start-run-batch.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,11 @@ export declare function handleStartRun(args: {
|
|
|
18
18
|
workflow_id: string;
|
|
19
19
|
params?: Record<string, unknown>;
|
|
20
20
|
idempotency_key?: string | undefined;
|
|
21
|
-
|
|
21
|
+
on_terminal_match?: 'reuse' | 'reject' | 'rerun_if_failed' | 'rerun' | undefined;
|
|
22
|
+
on_live_match?: 'use_existing' | 'fail' | undefined;
|
|
23
|
+
}, stores?: HandleRunStores): Promise<ResponseEnvelope & {
|
|
24
|
+
deduped: boolean;
|
|
25
|
+
}>;
|
|
22
26
|
/** Registers the start_run MCP tool on the server. */
|
|
23
27
|
export declare function registerStartRun(server: McpServer, opts?: {
|
|
24
28
|
registry?: import('@sensigo/realm').ExtensionRegistry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-run.d.ts","sourceRoot":"","sources":["../../src/tools/start-run.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EACL,iBAAiB,EACjB,aAAa,
|
|
1
|
+
{"version":3,"file":"start-run.d.ts","sourceRoot":"","sources":["../../src/tools/start-run.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EACL,iBAAiB,EACjB,aAAa,EAQb,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AAQxB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAKD;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE;IACJ,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,iBAAiB,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,iBAAiB,GAAG,OAAO,GAAG,SAAS,CAAC;IACjF,aAAa,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;CACrD,EACD,MAAM,CAAC,EAAE,eAAe,GACvB,OAAO,CAAC,gBAAgB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA+ElD;AAED,sDAAsD;AACtD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,IAAI,CAAC,EAAE;IACL,QAAQ,CAAC,EAAE,OAAO,gBAAgB,EAAE,iBAAiB,CAAC;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,GACA,IAAI,CAwDN"}
|
package/dist/tools/start-run.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
// start-run tool — creates a new run and chains through initial auto steps.
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { JsonWorkflowStore, JsonFileStore, executeChain, buildNextActions, findEligibleSteps, WorkflowError, buildPreExecutionErrorEnvelope, } from '@sensigo/realm';
|
|
3
|
+
import { JsonWorkflowStore, JsonFileStore, executeChain, buildNextActions, findEligibleSteps, hashParams, WorkflowError, buildPreExecutionErrorEnvelope, } from '@sensigo/realm';
|
|
4
4
|
import { sseJsonStringify } from '../sse-json.js';
|
|
5
|
+
/** Lightweight structured telemetry. stderr is safe under the MCP stdio/SSE transport. */
|
|
6
|
+
function logDedup(fields) {
|
|
7
|
+
console.error(JSON.stringify({ event: 'idempotency_dedup', ...fields }));
|
|
8
|
+
}
|
|
5
9
|
// Fallback dispatcher for agent steps and auto steps without a registry entry.
|
|
6
10
|
const passthroughDispatcher = async () => ({});
|
|
7
11
|
/**
|
|
@@ -13,12 +17,33 @@ export async function handleStartRun(args, stores) {
|
|
|
13
17
|
const runStore = stores?.runStore ?? new JsonFileStore();
|
|
14
18
|
const definition = await workflowStore.get(args.workflow_id);
|
|
15
19
|
const params = args.params ?? {};
|
|
16
|
-
const run = await runStore.create({
|
|
20
|
+
const { run, created } = await runStore.create({
|
|
17
21
|
workflowId: definition.id,
|
|
18
22
|
workflowVersion: definition.version,
|
|
19
23
|
params,
|
|
20
24
|
...(args.idempotency_key !== undefined ? { idempotencyKey: args.idempotency_key } : {}),
|
|
25
|
+
...(args.on_terminal_match !== undefined ? { onTerminalMatch: args.on_terminal_match } : {}),
|
|
26
|
+
...(args.on_live_match !== undefined ? { onLiveMatch: args.on_live_match } : {}),
|
|
21
27
|
});
|
|
28
|
+
// The store reports `created`; the tool surfaces its inverse, `deduped`.
|
|
29
|
+
const deduped = !created;
|
|
30
|
+
const warnings = [];
|
|
31
|
+
if (deduped) {
|
|
32
|
+
// Observational only — a legitimate same-caller retry also hits an active run.
|
|
33
|
+
if (run.run_phase === 'running' || run.run_phase === 'gate_waiting') {
|
|
34
|
+
warnings.push(`Idempotency key matched a run still in phase '${run.run_phase}'.`);
|
|
35
|
+
}
|
|
36
|
+
// PR 1 warns on a key↔payload mismatch; PR 2 may make this policy.
|
|
37
|
+
if (args.idempotency_key !== undefined && hashParams(params) !== hashParams(run.params)) {
|
|
38
|
+
warnings.push(`Idempotency key matched an existing run created with different params; the original run is returned unchanged (params not updated).`);
|
|
39
|
+
}
|
|
40
|
+
logDedup({
|
|
41
|
+
tool: 'start_run',
|
|
42
|
+
workflow_id: definition.id,
|
|
43
|
+
run_id: run.id,
|
|
44
|
+
run_phase: run.run_phase,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
22
47
|
const eligible = findEligibleSteps(definition, run);
|
|
23
48
|
const firstAutoStep = eligible.find((name) => definition.steps[name]?.execution === 'auto');
|
|
24
49
|
if (firstAutoStep !== undefined) {
|
|
@@ -30,7 +55,17 @@ export async function handleStartRun(args, stores) {
|
|
|
30
55
|
...(stores?.registry !== undefined ? { registry: stores.registry } : {}),
|
|
31
56
|
...(stores?.secrets !== undefined ? { secrets: stores.secrets } : {}),
|
|
32
57
|
});
|
|
33
|
-
|
|
58
|
+
// Source run_phase from the final run so the spread can't drop it.
|
|
59
|
+
const finalRun = await runStore.get(run.id).catch(() => run);
|
|
60
|
+
return {
|
|
61
|
+
...result,
|
|
62
|
+
run_id: run.id,
|
|
63
|
+
data: {},
|
|
64
|
+
evidence: [],
|
|
65
|
+
run_phase: finalRun.run_phase,
|
|
66
|
+
warnings: [...result.warnings, ...warnings],
|
|
67
|
+
deduped,
|
|
68
|
+
};
|
|
34
69
|
}
|
|
35
70
|
const nextActions = buildNextActions(definition, run);
|
|
36
71
|
return {
|
|
@@ -40,9 +75,13 @@ export async function handleStartRun(args, stores) {
|
|
|
40
75
|
status: 'ok',
|
|
41
76
|
data: {},
|
|
42
77
|
evidence: [],
|
|
43
|
-
warnings
|
|
78
|
+
warnings,
|
|
44
79
|
errors: [],
|
|
45
|
-
context_hint:
|
|
80
|
+
context_hint: deduped
|
|
81
|
+
? `Matched existing run '${run.id}' (idempotent) in phase '${run.run_phase}'; no new run created.`
|
|
82
|
+
: `Run '${run.id}' created for workflow '${definition.id}'.`,
|
|
83
|
+
run_phase: run.run_phase,
|
|
84
|
+
deduped,
|
|
46
85
|
next_actions: nextActions,
|
|
47
86
|
};
|
|
48
87
|
}
|
|
@@ -52,6 +91,8 @@ export function registerStartRun(server, opts) {
|
|
|
52
91
|
workflow_id: z.string(),
|
|
53
92
|
params: z.record(z.unknown()).optional().default({}),
|
|
54
93
|
idempotency_key: z.string().optional(),
|
|
94
|
+
on_terminal_match: z.enum(['reuse', 'reject', 'rerun_if_failed', 'rerun']).optional(),
|
|
95
|
+
on_live_match: z.enum(['use_existing', 'fail']).optional(),
|
|
55
96
|
}, async (args) => {
|
|
56
97
|
try {
|
|
57
98
|
const result = await handleStartRun(args, opts);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-run.js","sourceRoot":"","sources":["../../src/tools/start-run.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,8BAA8B,GAK/B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"start-run.js","sourceRoot":"","sources":["../../src/tools/start-run.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sensigo/realm-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@modelcontextprotocol/sdk": "1.29.0",
|
|
49
|
-
"@sensigo/realm": "^0.
|
|
49
|
+
"@sensigo/realm": "^0.8.0",
|
|
50
50
|
"zod": "^3.25.7"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|