@sensigo/realm-mcp 0.26.0 → 0.27.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/json-trace-buffer-store.d.ts +170 -4
- package/dist/json-trace-buffer-store.d.ts.map +1 -1
- package/dist/json-trace-buffer-store.js +571 -73
- package/dist/json-trace-buffer-store.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +10 -2
- package/dist/server.js.map +1 -1
- package/dist/tools/append-trace.d.ts +24 -1
- package/dist/tools/append-trace.d.ts.map +1 -1
- package/dist/tools/append-trace.js +232 -25
- package/dist/tools/append-trace.js.map +1 -1
- package/dist/tools/execute-step.d.ts +21 -1
- package/dist/tools/execute-step.d.ts.map +1 -1
- package/dist/tools/execute-step.js +94 -1
- package/dist/tools/execute-step.js.map +1 -1
- package/dist/tools/get-workflow-protocol.d.ts.map +1 -1
- package/dist/tools/get-workflow-protocol.js +13 -1
- package/dist/tools/get-workflow-protocol.js.map +1 -1
- package/package.json +2 -2
|
@@ -2,6 +2,58 @@
|
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { JsonWorkflowStore, JsonFileStore, executeChain, WorkflowError, buildPreExecutionErrorEnvelope, buildFailedAttemptRecord, serializeFailedAttemptLine, } from '@sensigo/realm';
|
|
4
4
|
import { sseJsonStringify } from '../sse-json.js';
|
|
5
|
+
/** Maximum `writer_nonce` length (issue #197 PR-2, design §6). */
|
|
6
|
+
const WRITER_NONCE_MAX_LENGTH = 128;
|
|
7
|
+
/** Actionable guidance appended to every writer_nonce-related refusal (issue #197 PR-2). */
|
|
8
|
+
export const WRITER_NONCE_GUIDANCE = 'writer_nonce must be a non-empty string, ≤128 chars, no leading/trailing whitespace; ' +
|
|
9
|
+
'recommended: a fresh UUIDv4 per step-attempt.';
|
|
10
|
+
/**
|
|
11
|
+
* Validates a caller-submitted `writer_nonce`'s SHAPE (issue #197 PR-2, design §6) — throws a
|
|
12
|
+
* typed `WorkflowError` on any violation, never a bare zod/SDK error (the zod schema itself
|
|
13
|
+
* accepts any string, deliberately UNBOUNDED, so every shape violation routes through this ONE
|
|
14
|
+
* check). Shared by `append_trace` and `execute_step` — the shape rule lives in exactly one
|
|
15
|
+
* place; each tool's OWN refusal taxonomy is otherwise free to differ.
|
|
16
|
+
*/
|
|
17
|
+
export function validateWriterNonceShape(nonce) {
|
|
18
|
+
let reason;
|
|
19
|
+
if (nonce.length === 0) {
|
|
20
|
+
reason = 'must not be empty';
|
|
21
|
+
}
|
|
22
|
+
else if (nonce !== nonce.trim()) {
|
|
23
|
+
reason = 'must not have leading or trailing whitespace';
|
|
24
|
+
}
|
|
25
|
+
else if (nonce.length > WRITER_NONCE_MAX_LENGTH) {
|
|
26
|
+
reason = `must be ≤${WRITER_NONCE_MAX_LENGTH} characters`;
|
|
27
|
+
}
|
|
28
|
+
if (reason === undefined)
|
|
29
|
+
return;
|
|
30
|
+
throw new WorkflowError(`Invalid writer_nonce: ${reason}. ${WRITER_NONCE_GUIDANCE}`, {
|
|
31
|
+
code: 'VALIDATION_EMPTY_VALUE',
|
|
32
|
+
category: 'VALIDATION',
|
|
33
|
+
agentAction: 'provide_input',
|
|
34
|
+
retryable: false,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Dormant strict posture (issue #197 PR-2, design §6 — the #169→#170 template): read PER CALL,
|
|
39
|
+
* NEVER cached at module load (a test flips the env var mid-process). "on" = set to any
|
|
40
|
+
* non-empty value other than `'0'`/`'false'`. Default (unset) ⇒ zero behavior change anywhere.
|
|
41
|
+
*/
|
|
42
|
+
export function isWriterNonceRequired() {
|
|
43
|
+
const v = process.env['REALM_REQUIRE_WRITER_NONCE'];
|
|
44
|
+
return v !== undefined && v !== '' && v !== '0' && v !== 'false';
|
|
45
|
+
}
|
|
46
|
+
/** Refusal for `isWriterNonceRequired()` ⇒ true and a bare (agent-step) call (issue #197 PR-2). */
|
|
47
|
+
export function writerNonceRequiredError(stepId, runVersion) {
|
|
48
|
+
return new WorkflowError('This deployment requires writer_nonce for agent steps (REALM_REQUIRE_WRITER_NONCE is set) ' +
|
|
49
|
+
`— step '${stepId}' was called without one. ${WRITER_NONCE_GUIDANCE}`, {
|
|
50
|
+
code: 'VALIDATION_EMPTY_VALUE',
|
|
51
|
+
category: 'VALIDATION',
|
|
52
|
+
agentAction: 'provide_input',
|
|
53
|
+
retryable: false,
|
|
54
|
+
details: { step_id: stepId, run_version: runVersion },
|
|
55
|
+
});
|
|
56
|
+
}
|
|
5
57
|
/**
|
|
6
58
|
* Pre-claim validation rejections carry one of these error codes (claimStep runs strictly after all
|
|
7
59
|
* three schema gates, so they never reach failed_steps[] / never bump version — a write-free path).
|
|
@@ -85,6 +137,34 @@ export async function handleExecuteStep(args, stores) {
|
|
|
85
137
|
const run = await runStore.get(args.run_id);
|
|
86
138
|
const definition = await workflowStore.get(run.workflow_id);
|
|
87
139
|
const params = args.params ?? {};
|
|
140
|
+
const stepDef = definition.steps[args.command];
|
|
141
|
+
// issue #197 PR-2 (design §6): shape-validate BEFORE anything else — routes every violation
|
|
142
|
+
// through ONE typed refusal, never a bare zod/SDK error.
|
|
143
|
+
if (args.writer_nonce !== undefined) {
|
|
144
|
+
validateWriterNonceShape(args.writer_nonce);
|
|
145
|
+
}
|
|
146
|
+
// A writer_nonce PRESENT on a non-agent step is refused (design §6) — mirrors append_trace's
|
|
147
|
+
// own non-agent taxonomy (STATE_STEP_NOT_ELIGIBLE + step_type detail). A BARE execute_step call
|
|
148
|
+
// on a non-agent step stays byte-identical — auto/handler steps legally execute through this
|
|
149
|
+
// tool, and this check only fires when a nonce was actually supplied.
|
|
150
|
+
if (args.writer_nonce !== undefined && stepDef !== undefined && stepDef.execution !== 'agent') {
|
|
151
|
+
throw new WorkflowError(`Step '${args.command}' is not an agent step (execution: '${stepDef.execution}') — ` +
|
|
152
|
+
'writer_nonce is only meaningful on agent steps.', {
|
|
153
|
+
code: 'STATE_STEP_NOT_ELIGIBLE',
|
|
154
|
+
category: 'STATE',
|
|
155
|
+
agentAction: 'report_to_user',
|
|
156
|
+
retryable: false,
|
|
157
|
+
details: { step_id: args.command, step_type: stepDef.execution, run_version: run.version },
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
// issue #197 PR-2 (design §6, dormant strict posture — default off, zero behavior change):
|
|
161
|
+
// agent steps only — an auto/handler step's execute_step call never carries a caller-chosen
|
|
162
|
+
// writer_nonce in the first place.
|
|
163
|
+
if (isWriterNonceRequired() &&
|
|
164
|
+
stepDef?.execution === 'agent' &&
|
|
165
|
+
args.writer_nonce === undefined) {
|
|
166
|
+
throw writerNonceRequiredError(args.command, run.version);
|
|
167
|
+
}
|
|
88
168
|
// Per-definition registry (project extensions) — awaited before execution; a throwing
|
|
89
169
|
// provider fails the tool call before any step is claimed. Provider wins over `registry`.
|
|
90
170
|
const registry = stores?.registryProvider !== undefined
|
|
@@ -102,6 +182,7 @@ export async function handleExecuteStep(args, stores) {
|
|
|
102
182
|
...(stores?.traceBufferStore !== undefined
|
|
103
183
|
? { traceBufferStore: stores.traceBufferStore }
|
|
104
184
|
: {}),
|
|
185
|
+
...(args.writer_nonce !== undefined ? { writerNonce: args.writer_nonce } : {}),
|
|
105
186
|
});
|
|
106
187
|
// P2/P3 observability: on a pre-claim validation rejection, fan a metadata-only record out to the
|
|
107
188
|
// ephemeral stderr line (P2) and the durable per-run sidecar (P3, when wired). Reads the pre-strip
|
|
@@ -153,11 +234,23 @@ export async function handleExecuteStepTool(args, stores) {
|
|
|
153
234
|
}
|
|
154
235
|
/** Registers the execute_step MCP tool on the server. */
|
|
155
236
|
export function registerExecuteStep(server, opts) {
|
|
156
|
-
server.tool('execute_step',
|
|
237
|
+
server.tool('execute_step', [
|
|
238
|
+
'Execute a workflow step. For agent steps, pass your output in params.',
|
|
239
|
+
'Optional: writer_nonce — mint a fresh UUIDv4 per step-attempt (same value on every',
|
|
240
|
+
"append_trace call for this attempt, a NEW one next attempt) to get this step's own",
|
|
241
|
+
'buffered trace lines faithfully attributed instead of the honest-but-unattributed floor.',
|
|
242
|
+
'Mint on BOTH append_trace and execute_step for this attempt, or neither — a guessable or',
|
|
243
|
+
'reused nonce is worse than omitting one (it lets residue be adopted with no caveat, or',
|
|
244
|
+
'silently folds a crashed attempt into this one).',
|
|
245
|
+
].join(' '), {
|
|
157
246
|
run_id: z.string(),
|
|
158
247
|
command: z.string(),
|
|
159
248
|
params: z.record(z.unknown()).optional().default({}),
|
|
160
249
|
trace: z.array(traceEntrySchema).optional(),
|
|
250
|
+
// issue #197 PR-2 (design §6): UNBOUNDED at the zod layer — every shape violation
|
|
251
|
+
// (empty/whitespace/too-long) routes through validateWriterNonceShape to ONE typed realm
|
|
252
|
+
// envelope refusal, never a bare zod/SDK error.
|
|
253
|
+
writer_nonce: z.string().optional(),
|
|
161
254
|
}, async (args) => {
|
|
162
255
|
return handleExecuteStepTool(args, opts);
|
|
163
256
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-step.js","sourceRoot":"","sources":["../../src/tools/execute-step.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"execute-step.js","sourceRoot":"","sources":["../../src/tools/execute-step.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-workflow-protocol.d.ts","sourceRoot":"","sources":["../../src/tools/get-workflow-protocol.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"get-workflow-protocol.d.ts","sourceRoot":"","sources":["../../src/tools/get-workflow-protocol.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAexD;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,EAC7B,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAK3B;AAED,kEAAkE;AAClE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAkBxF"}
|
|
@@ -3,6 +3,17 @@ import { z } from 'zod';
|
|
|
3
3
|
import { JsonWorkflowStore, WorkflowError } from '@sensigo/realm';
|
|
4
4
|
import { sseJsonStringify } from '../sse-json.js';
|
|
5
5
|
import { generateProtocol } from '../protocol/generator.js';
|
|
6
|
+
/**
|
|
7
|
+
* Issue #197 PR-2 (design §6): one brief affordance line teaching cooperating agents to mint
|
|
8
|
+
* `writer_nonce` — consistent with `append_trace`'s own opt-in posture (an affordance, never a
|
|
9
|
+
* requirement). Appended to `rules` here (in the TOOL layer) rather than in
|
|
10
|
+
* `protocol/generator.ts` itself, since that module is off this PR's touch list — this keeps the
|
|
11
|
+
* generator's own output byte-identical for any OTHER consumer that calls it directly.
|
|
12
|
+
*/
|
|
13
|
+
const WRITER_NONCE_PROTOCOL_RULE = 'Optional: mint a fresh UUIDv4 writer_nonce per step-attempt (the same value on every ' +
|
|
14
|
+
'append_trace call for that attempt, a new one next attempt, on BOTH append_trace and ' +
|
|
15
|
+
'execute_step or neither) to get your own buffered trace lines faithfully attributed instead ' +
|
|
16
|
+
'of the honest-but-unattributed floor.';
|
|
6
17
|
/**
|
|
7
18
|
* Business logic for the get_workflow_protocol tool.
|
|
8
19
|
* Returns the full agent protocol for the specified workflow.
|
|
@@ -10,7 +21,8 @@ import { generateProtocol } from '../protocol/generator.js';
|
|
|
10
21
|
export async function handleGetWorkflowProtocol(args, stores) {
|
|
11
22
|
const store = stores?.workflowStore ?? new JsonWorkflowStore();
|
|
12
23
|
const definition = await store.get(args.workflow_id);
|
|
13
|
-
|
|
24
|
+
const protocol = generateProtocol(definition);
|
|
25
|
+
return { ...protocol, rules: [...protocol.rules, WRITER_NONCE_PROTOCOL_RULE] };
|
|
14
26
|
}
|
|
15
27
|
/** Registers the get_workflow_protocol MCP tool on the server. */
|
|
16
28
|
export function registerGetWorkflowProtocol(server, opts) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-workflow-protocol.js","sourceRoot":"","sources":["../../src/tools/get-workflow-protocol.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAyB,MAAM,0BAA0B,CAAC;AAGnF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAA6B,EAC7B,MAAqB;IAErB,MAAM,KAAK,GAAG,MAAM,EAAE,aAAa,IAAI,IAAI,iBAAiB,EAAE,CAAC;IAC/D,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrD,
|
|
1
|
+
{"version":3,"file":"get-workflow-protocol.js","sourceRoot":"","sources":["../../src/tools/get-workflow-protocol.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAyB,MAAM,0BAA0B,CAAC;AAGnF;;;;;;GAMG;AACH,MAAM,0BAA0B,GAC9B,uFAAuF;IACvF,uFAAuF;IACvF,8FAA8F;IAC9F,uCAAuC,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAA6B,EAC7B,MAAqB;IAErB,MAAM,KAAK,GAAG,MAAM,EAAE,aAAa,IAAI,IAAI,iBAAiB,EAAE,CAAC;IAC/D,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC9C,OAAO,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAC,EAAE,CAAC;AACjF,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,IAAmB;IAChF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,iEAAiE,EACjE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,EAC3B,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QAClF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;gBAC/D,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sensigo/realm-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.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.27.0",
|
|
50
50
|
"zod": "^3.25.7"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|