@orchestrator-claude/mcp-server 3.30.1 → 3.31.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/handlers/workflow-handlers.d.ts.map +1 -1
- package/dist/handlers/workflow-handlers.js +4 -0
- package/dist/handlers/workflow-handlers.js.map +1 -1
- package/dist/lib/last-completed-workflow-state.d.ts +43 -0
- package/dist/lib/last-completed-workflow-state.d.ts.map +1 -0
- package/dist/lib/last-completed-workflow-state.js +53 -0
- package/dist/lib/last-completed-workflow-state.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-handlers.d.ts","sourceRoot":"","sources":["../../src/handlers/workflow-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-handlers.d.ts","sourceRoot":"","sources":["../../src/handlers/workflow-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAIjE;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,sBAAsB,IAC1D,QAAQ;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;GAazC;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,sBAAsB,IACzD,QAAQ;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;;;;;;;;;;;GAkBF;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,sBAAsB,IACvD,QAAQ;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;;;;;;;;;;;GAiBF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,sBAAsB,IACxD,QAAQ;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;GAanE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,IACrD,QAAQ;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;GAa9C;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,sBAAsB;;;;;;;;;;;GAcvE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,IAC5D,QAAQ;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;GAgB7C;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,sBAAsB,IAChE,QAAQ;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;GAgB9D;AAED;;GAEG;AACH,wBAAgB,oCAAoC,CAAC,MAAM,EAAE,sBAAsB,IACnE,QAAQ;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC3C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;;;;;;;;;;;GAkBF"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* - getStatus
|
|
9
9
|
*/
|
|
10
10
|
import { McpApiError } from '../errors/McpApiError.js';
|
|
11
|
+
import { writeLastCompletedWorkflowState } from '../lib/last-completed-workflow-state.js';
|
|
11
12
|
/**
|
|
12
13
|
* Handler for detectWorkflow tool
|
|
13
14
|
*/
|
|
@@ -133,6 +134,9 @@ export function createCompleteWorkflowHandler(client) {
|
|
|
133
134
|
return async (params) => {
|
|
134
135
|
try {
|
|
135
136
|
const response = await client.completeWorkflow(params.workflowId);
|
|
137
|
+
// B4 FinOps timing race fix: write state file so dangling-guard.ts can
|
|
138
|
+
// recover the workflowId for FinOps telemetry even after completion.
|
|
139
|
+
writeLastCompletedWorkflowState(params.workflowId);
|
|
136
140
|
return {
|
|
137
141
|
content: [{ type: 'text', text: JSON.stringify(response, null, 2) }],
|
|
138
142
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-handlers.js","sourceRoot":"","sources":["../../src/handlers/workflow-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-handlers.js","sourceRoot":"","sources":["../../src/handlers/workflow-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* last-completed-workflow-state.ts — Shared utility for writing the
|
|
3
|
+
* last-completed-workflow state file.
|
|
4
|
+
*
|
|
5
|
+
* Extracted from workflow-handlers.ts (H-002 deduplication fix, TD-140 review).
|
|
6
|
+
*
|
|
7
|
+
* ## Why this module exists
|
|
8
|
+
* The same write logic (`{ workflowId, completedAt }` → `.orchestrator/.state/
|
|
9
|
+
* last-completed-workflow.json`) previously appeared both here (MCP handler) and
|
|
10
|
+
* in `.claude/hooks/lib/api-client.ts` (hook layer). If the TTL, filename, or
|
|
11
|
+
* JSON schema changed in one place the other would silently diverge.
|
|
12
|
+
*
|
|
13
|
+
* ## Path Y rationale (ADR-style)
|
|
14
|
+
* Path X (project src/infrastructure/state/StateFileWriter.ts) was rejected
|
|
15
|
+
* because packages/mcp-server/tsconfig.json sets `rootDir: "./src"` — cross-
|
|
16
|
+
* package imports from the project root are outside the compiler root and
|
|
17
|
+
* would break the mcp-server build. Path Y keeps the module self-contained
|
|
18
|
+
* inside the mcp-server package and exposes constants + the write function so
|
|
19
|
+
* shape-parity tests can validate both sides write the same JSON keys.
|
|
20
|
+
*
|
|
21
|
+
* The hook copy (api-client.ts `writeLastCompletedWorkflow`) is intentionally
|
|
22
|
+
* NOT changed — hooks run as standalone Node scripts and cannot import from
|
|
23
|
+
* packages/. The shared contract is enforced by the test suite
|
|
24
|
+
* (last-completed-workflow-state.test.ts) which asserts identical JSON keys.
|
|
25
|
+
*/
|
|
26
|
+
/** Filename for the last-completed workflow state file. */
|
|
27
|
+
export declare const LAST_COMPLETED_FILENAME = "last-completed-workflow.json";
|
|
28
|
+
/**
|
|
29
|
+
* Writes last-completed-workflow.json to the given stateDir.
|
|
30
|
+
*
|
|
31
|
+
* JSON shape: `{ workflowId: string, completedAt: string (ISO 8601) }`
|
|
32
|
+
*
|
|
33
|
+
* This shape MUST stay in sync with the hook-side reader in
|
|
34
|
+
* `.claude/hooks/lib/api-client.ts` (`getLastCompletedWorkflow`).
|
|
35
|
+
* The test suite (last-completed-workflow-state.test.ts) validates the
|
|
36
|
+
* exact key set to catch any future divergence.
|
|
37
|
+
*
|
|
38
|
+
* @param workflowId The workflow that just completed.
|
|
39
|
+
* @param stateDir Directory to write into (default: .orchestrator/.state
|
|
40
|
+
* relative to cwd). Accepts override for testability.
|
|
41
|
+
*/
|
|
42
|
+
export declare function writeLastCompletedWorkflowState(workflowId: string, stateDir?: string): void;
|
|
43
|
+
//# sourceMappingURL=last-completed-workflow-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"last-completed-workflow-state.d.ts","sourceRoot":"","sources":["../../src/lib/last-completed-workflow-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAKH,2DAA2D;AAC3D,eAAO,MAAM,uBAAuB,iCAAiC,CAAC;AAEtE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAAuD,GAChE,IAAI,CAWN"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* last-completed-workflow-state.ts — Shared utility for writing the
|
|
3
|
+
* last-completed-workflow state file.
|
|
4
|
+
*
|
|
5
|
+
* Extracted from workflow-handlers.ts (H-002 deduplication fix, TD-140 review).
|
|
6
|
+
*
|
|
7
|
+
* ## Why this module exists
|
|
8
|
+
* The same write logic (`{ workflowId, completedAt }` → `.orchestrator/.state/
|
|
9
|
+
* last-completed-workflow.json`) previously appeared both here (MCP handler) and
|
|
10
|
+
* in `.claude/hooks/lib/api-client.ts` (hook layer). If the TTL, filename, or
|
|
11
|
+
* JSON schema changed in one place the other would silently diverge.
|
|
12
|
+
*
|
|
13
|
+
* ## Path Y rationale (ADR-style)
|
|
14
|
+
* Path X (project src/infrastructure/state/StateFileWriter.ts) was rejected
|
|
15
|
+
* because packages/mcp-server/tsconfig.json sets `rootDir: "./src"` — cross-
|
|
16
|
+
* package imports from the project root are outside the compiler root and
|
|
17
|
+
* would break the mcp-server build. Path Y keeps the module self-contained
|
|
18
|
+
* inside the mcp-server package and exposes constants + the write function so
|
|
19
|
+
* shape-parity tests can validate both sides write the same JSON keys.
|
|
20
|
+
*
|
|
21
|
+
* The hook copy (api-client.ts `writeLastCompletedWorkflow`) is intentionally
|
|
22
|
+
* NOT changed — hooks run as standalone Node scripts and cannot import from
|
|
23
|
+
* packages/. The shared contract is enforced by the test suite
|
|
24
|
+
* (last-completed-workflow-state.test.ts) which asserts identical JSON keys.
|
|
25
|
+
*/
|
|
26
|
+
import { writeFileSync, mkdirSync } from 'node:fs';
|
|
27
|
+
import { join } from 'node:path';
|
|
28
|
+
/** Filename for the last-completed workflow state file. */
|
|
29
|
+
export const LAST_COMPLETED_FILENAME = 'last-completed-workflow.json';
|
|
30
|
+
/**
|
|
31
|
+
* Writes last-completed-workflow.json to the given stateDir.
|
|
32
|
+
*
|
|
33
|
+
* JSON shape: `{ workflowId: string, completedAt: string (ISO 8601) }`
|
|
34
|
+
*
|
|
35
|
+
* This shape MUST stay in sync with the hook-side reader in
|
|
36
|
+
* `.claude/hooks/lib/api-client.ts` (`getLastCompletedWorkflow`).
|
|
37
|
+
* The test suite (last-completed-workflow-state.test.ts) validates the
|
|
38
|
+
* exact key set to catch any future divergence.
|
|
39
|
+
*
|
|
40
|
+
* @param workflowId The workflow that just completed.
|
|
41
|
+
* @param stateDir Directory to write into (default: .orchestrator/.state
|
|
42
|
+
* relative to cwd). Accepts override for testability.
|
|
43
|
+
*/
|
|
44
|
+
export function writeLastCompletedWorkflowState(workflowId, stateDir = join(process.cwd(), '.orchestrator', '.state')) {
|
|
45
|
+
try {
|
|
46
|
+
mkdirSync(stateDir, { recursive: true });
|
|
47
|
+
writeFileSync(join(stateDir, LAST_COMPLETED_FILENAME), JSON.stringify({ workflowId, completedAt: new Date().toISOString() }), 'utf-8');
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// fail silently — FinOps fallback is best-effort, must not break completion
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=last-completed-workflow-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"last-completed-workflow-state.js","sourceRoot":"","sources":["../../src/lib/last-completed-workflow-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,2DAA2D;AAC3D,MAAM,CAAC,MAAM,uBAAuB,GAAG,8BAA8B,CAAC;AAEtE;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,+BAA+B,CAC7C,UAAkB,EAClB,WAAmB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC;IAEjE,IAAI,CAAC;QACH,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,aAAa,CACX,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC,EACvC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,EACrE,OAAO,CACR,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,4EAA4E;IAC9E,CAAC;AACH,CAAC"}
|