@first-to-fly/orchestrator-mcp 0.7.0 → 0.7.1
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/hooks/stop.d.ts +3 -7
- package/dist/hooks/stop.d.ts.map +1 -1
- package/dist/hooks/stop.js +12 -18
- package/dist/hooks/stop.js.map +1 -1
- package/package.json +1 -1
package/dist/hooks/stop.d.ts
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* Claude Code Stop hook —
|
|
3
|
+
* Claude Code Stop hook — soft reminder to save session summary.
|
|
4
4
|
*
|
|
5
5
|
* Parses the transcript to check if save_session_summary was called.
|
|
6
|
-
* If not,
|
|
7
|
-
*
|
|
8
|
-
* Guards:
|
|
9
|
-
* - stop_hook_active → exit 0 (prevents infinite loop)
|
|
10
|
-
* - 5-second timeout → exit 0 (fail open)
|
|
11
|
-
* - Any uncaught error → exit 0 (fail open)
|
|
6
|
+
* If not, outputs a non-blocking reminder as additionalContext.
|
|
7
|
+
* Never blocks exit (always exit 0).
|
|
12
8
|
*/
|
|
13
9
|
export {};
|
|
14
10
|
//# sourceMappingURL=stop.d.ts.map
|
package/dist/hooks/stop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG"}
|
package/dist/hooks/stop.js
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
3
|
/**
|
|
4
|
-
* Claude Code Stop hook —
|
|
4
|
+
* Claude Code Stop hook — soft reminder to save session summary.
|
|
5
5
|
*
|
|
6
6
|
* Parses the transcript to check if save_session_summary was called.
|
|
7
|
-
* If not,
|
|
8
|
-
*
|
|
9
|
-
* Guards:
|
|
10
|
-
* - stop_hook_active → exit 0 (prevents infinite loop)
|
|
11
|
-
* - 5-second timeout → exit 0 (fail open)
|
|
12
|
-
* - Any uncaught error → exit 0 (fail open)
|
|
7
|
+
* If not, outputs a non-blocking reminder as additionalContext.
|
|
8
|
+
* Never blocks exit (always exit 0).
|
|
13
9
|
*/
|
|
14
10
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
11
|
if (k2 === undefined) k2 = k;
|
|
@@ -54,21 +50,22 @@ async function main() {
|
|
|
54
50
|
const input = await (0, utils_1.readStdin)();
|
|
55
51
|
if (!input)
|
|
56
52
|
return;
|
|
57
|
-
// Infinite-loop guard: if we're already in a stop hook, allow exit
|
|
58
|
-
if (input.stop_hook_active)
|
|
59
|
-
return;
|
|
60
53
|
const transcriptPath = input.transcript_path;
|
|
61
54
|
if (!transcriptPath || typeof transcriptPath !== "string")
|
|
62
55
|
return;
|
|
63
|
-
// Check transcript exists
|
|
64
56
|
if (!fs.existsSync(transcriptPath))
|
|
65
57
|
return;
|
|
66
58
|
const found = await scanTranscript(transcriptPath);
|
|
67
59
|
if (found)
|
|
68
60
|
return;
|
|
69
|
-
//
|
|
70
|
-
|
|
71
|
-
|
|
61
|
+
// Soft reminder — don't block exit
|
|
62
|
+
const output = {
|
|
63
|
+
hookSpecificOutput: {
|
|
64
|
+
hookEventName: "Stop",
|
|
65
|
+
additionalContext: "[Orchestrator] Session summary not saved. Consider calling save_session_summary if meaningful work was done.",
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
console.log(JSON.stringify(output));
|
|
72
69
|
}
|
|
73
70
|
async function scanTranscript(filePath) {
|
|
74
71
|
return new Promise((resolve) => {
|
|
@@ -78,7 +75,6 @@ async function scanTranscript(filePath) {
|
|
|
78
75
|
rl.on("line", (line) => {
|
|
79
76
|
if (found)
|
|
80
77
|
return;
|
|
81
|
-
// Each line is a JSON object — look for tool_use with save_session_summary
|
|
82
78
|
if (line.includes(TOOL_NAME)) {
|
|
83
79
|
try {
|
|
84
80
|
const entry = JSON.parse(line);
|
|
@@ -101,17 +97,14 @@ async function scanTranscript(filePath) {
|
|
|
101
97
|
function hasSaveSessionSummary(entry) {
|
|
102
98
|
if (!entry || typeof entry !== "object")
|
|
103
99
|
return false;
|
|
104
|
-
// Check direct tool_use block
|
|
105
100
|
if (entry.type === "tool_use" && entry.name === TOOL_NAME)
|
|
106
101
|
return true;
|
|
107
|
-
// Check nested content array (assistant messages)
|
|
108
102
|
if (Array.isArray(entry.content)) {
|
|
109
103
|
for (const block of entry.content) {
|
|
110
104
|
if (block.type === "tool_use" && block.name === TOOL_NAME)
|
|
111
105
|
return true;
|
|
112
106
|
}
|
|
113
107
|
}
|
|
114
|
-
// Check message wrapper
|
|
115
108
|
if (entry.message?.content && Array.isArray(entry.message.content)) {
|
|
116
109
|
for (const block of entry.message.content) {
|
|
117
110
|
if (block.type === "tool_use" && block.name === TOOL_NAME)
|
|
@@ -125,5 +118,6 @@ main()
|
|
|
125
118
|
.catch(() => { })
|
|
126
119
|
.finally(() => {
|
|
127
120
|
clearTimeout(timer);
|
|
121
|
+
process.exit(0);
|
|
128
122
|
});
|
|
129
123
|
//# sourceMappingURL=stop.js.map
|
package/dist/hooks/stop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":";;AAEA
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":"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"}
|