@gramatr/mcp 0.7.5 → 0.7.10
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/bin/gramatr-mcp.d.ts +5 -0
- package/dist/bin/gramatr-mcp.d.ts.map +1 -1
- package/dist/bin/gramatr-mcp.js +125 -2
- package/dist/bin/gramatr-mcp.js.map +1 -1
- package/dist/bin/setup.d.ts +16 -1
- package/dist/bin/setup.d.ts.map +1 -1
- package/dist/bin/setup.js +585 -2
- package/dist/bin/setup.js.map +1 -1
- package/dist/hooks/lib/feedback.d.ts +0 -2
- package/dist/hooks/lib/feedback.d.ts.map +1 -1
- package/dist/hooks/lib/feedback.js +18 -19
- package/dist/hooks/lib/feedback.js.map +1 -1
- package/dist/hooks/lib/formatting-compat.d.ts.map +1 -1
- package/dist/hooks/lib/formatting-compat.js +82 -55
- package/dist/hooks/lib/formatting-compat.js.map +1 -1
- package/dist/hooks/lib/gramatr-hook-utils.d.ts +0 -59
- package/dist/hooks/lib/gramatr-hook-utils.d.ts.map +1 -1
- package/dist/hooks/lib/gramatr-hook-utils.js +1 -212
- package/dist/hooks/lib/gramatr-hook-utils.js.map +1 -1
- package/dist/hooks/lib/hook-state.d.ts +159 -0
- package/dist/hooks/lib/hook-state.d.ts.map +1 -0
- package/dist/hooks/lib/hook-state.js +430 -0
- package/dist/hooks/lib/hook-state.js.map +1 -0
- package/dist/hooks/lib/intelligence.d.ts.map +1 -1
- package/dist/hooks/lib/intelligence.js +112 -88
- package/dist/hooks/lib/intelligence.js.map +1 -1
- package/dist/hooks/lib/routing.d.ts +2 -2
- package/dist/hooks/lib/routing.d.ts.map +1 -1
- package/dist/hooks/lib/routing.js +71 -25
- package/dist/hooks/lib/routing.js.map +1 -1
- package/dist/hooks/lib/session-end.d.ts +7 -0
- package/dist/hooks/lib/session-end.d.ts.map +1 -1
- package/dist/hooks/lib/session-end.js +33 -16
- package/dist/hooks/lib/session-end.js.map +1 -1
- package/dist/hooks/lib/session.d.ts +7 -38
- package/dist/hooks/lib/session.d.ts.map +1 -1
- package/dist/hooks/lib/session.js +43 -87
- package/dist/hooks/lib/session.js.map +1 -1
- package/dist/hooks/lib/types.d.ts +174 -36
- package/dist/hooks/lib/types.d.ts.map +1 -1
- package/dist/hooks/session-end.d.ts.map +1 -1
- package/dist/hooks/session-end.js +53 -45
- package/dist/hooks/session-end.js.map +1 -1
- package/dist/hooks/session-start.d.ts.map +1 -1
- package/dist/hooks/session-start.js +87 -77
- package/dist/hooks/session-start.js.map +1 -1
- package/dist/hooks/stop.d.ts.map +1 -1
- package/dist/hooks/stop.js +1 -10
- package/dist/hooks/stop.js.map +1 -1
- package/dist/hooks/user-prompt-submit.d.ts.map +1 -1
- package/dist/hooks/user-prompt-submit.js +57 -68
- package/dist/hooks/user-prompt-submit.js.map +1 -1
- package/dist/intelligence/packet2-fetcher.d.ts +3 -3
- package/dist/intelligence/packet2-fetcher.js +8 -8
- package/dist/intelligence/packet2-fetcher.js.map +1 -1
- package/dist/proxy/local-client.d.ts +49 -0
- package/dist/proxy/local-client.d.ts.map +1 -0
- package/dist/proxy/local-client.js +135 -0
- package/dist/proxy/local-client.js.map +1 -0
- package/dist/server/hooks-listener.d.ts +32 -0
- package/dist/server/hooks-listener.d.ts.map +1 -0
- package/dist/server/hooks-listener.js +144 -0
- package/dist/server/hooks-listener.js.map +1 -0
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +16 -1
- package/dist/server/server.js.map +1 -1
- package/dist/setup/instructions.js +13 -0
- package/dist/setup/instructions.js.map +1 -1
- package/dist/setup/integrations.js +3 -3
- package/dist/setup/integrations.js.map +1 -1
- package/dist/setup/web-connector.d.ts.map +1 -1
- package/dist/setup/web-connector.js +4 -0
- package/dist/setup/web-connector.js.map +1 -1
- package/package.json +5 -2
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { setLatestClassification } from './hook-state.js';
|
|
2
|
+
import { callTool } from '../../proxy/local-client.js';
|
|
2
3
|
export const MIN_PROMPT_LENGTH = 10;
|
|
3
4
|
export const TRIVIAL_PATTERNS = /^(hi|hey|hello|yo|ok|yes|no|thanks|thank you|sure|yep|nope|k|bye|quit|exit)\b/i;
|
|
4
5
|
export function shouldSkipPromptRouting(prompt) {
|
|
@@ -6,23 +7,53 @@ export function shouldSkipPromptRouting(prompt) {
|
|
|
6
7
|
return trimmed.length < MIN_PROMPT_LENGTH || TRIVIAL_PATTERNS.test(trimmed);
|
|
7
8
|
}
|
|
8
9
|
export async function routePrompt(options) {
|
|
9
|
-
const
|
|
10
|
+
const timeoutMs = options.timeoutMs ?? 15000;
|
|
11
|
+
const args = {
|
|
10
12
|
prompt: options.prompt,
|
|
11
13
|
...(options.projectId ? { project_id: options.projectId } : {}),
|
|
12
14
|
...(options.sessionId ? { session_id: options.sessionId } : {}),
|
|
13
15
|
...(options.includeStatusline ? { include_statusline: true } : {}),
|
|
14
16
|
...(options.statuslineSize ? { statusline_size: options.statuslineSize } : {}),
|
|
15
|
-
}, options.timeoutMs ?? 15000);
|
|
16
|
-
return {
|
|
17
|
-
route: result.data,
|
|
18
|
-
error: result.error,
|
|
19
17
|
};
|
|
18
|
+
try {
|
|
19
|
+
const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error(`timeout after ${timeoutMs}ms`)), timeoutMs));
|
|
20
|
+
const raw = await Promise.race([
|
|
21
|
+
callTool('gramatr_route_request', args),
|
|
22
|
+
timeoutPromise,
|
|
23
|
+
]);
|
|
24
|
+
const text = raw?.content?.[0]?.text;
|
|
25
|
+
if (!text) {
|
|
26
|
+
return { route: null, error: { reason: 'parse_error', detail: 'Empty response from proxy' } };
|
|
27
|
+
}
|
|
28
|
+
return { route: JSON.parse(text), error: null };
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
32
|
+
if (detail.includes('timeout')) {
|
|
33
|
+
return { route: null, error: { reason: 'timeout', detail } };
|
|
34
|
+
}
|
|
35
|
+
if (detail.includes('401') || detail.toLowerCase().includes('unauthorized')) {
|
|
36
|
+
return { route: null, error: { reason: 'auth', detail } };
|
|
37
|
+
}
|
|
38
|
+
if (detail.includes('ECONNREFUSED') || detail.includes('fetch') || detail.includes('network')) {
|
|
39
|
+
return { route: null, error: { reason: 'network_error', detail } };
|
|
40
|
+
}
|
|
41
|
+
return { route: null, error: { reason: 'http_error', detail } };
|
|
42
|
+
}
|
|
20
43
|
}
|
|
21
|
-
export async function fetchEnrichment(enrichmentId, timeoutMs =
|
|
44
|
+
export async function fetchEnrichment(enrichmentId, timeoutMs = 5000) {
|
|
22
45
|
try {
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
46
|
+
const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error(`timeout after ${timeoutMs + 1000}ms`)), timeoutMs + 1000));
|
|
47
|
+
const raw = await Promise.race([
|
|
48
|
+
callTool('gramatr_get_enrichment', { enrichment_id: enrichmentId, timeout_ms: timeoutMs }),
|
|
49
|
+
timeoutPromise,
|
|
50
|
+
]);
|
|
51
|
+
const text = raw?.content?.[0]?.text;
|
|
52
|
+
if (!text)
|
|
53
|
+
return null;
|
|
54
|
+
const result = JSON.parse(text);
|
|
55
|
+
if (result.status === 'ready') {
|
|
56
|
+
return result;
|
|
26
57
|
}
|
|
27
58
|
return null;
|
|
28
59
|
}
|
|
@@ -48,7 +79,7 @@ export function describeRoutingFailure(error) {
|
|
|
48
79
|
return {
|
|
49
80
|
title: 'Routing request could not reach the gramatr MCP endpoint.',
|
|
50
81
|
detail: error.detail,
|
|
51
|
-
action:
|
|
82
|
+
action: 'Verify connectivity to the gramatr server (GRAMATR_URL env or ~/.gramatr.json).',
|
|
52
83
|
};
|
|
53
84
|
case 'http_error':
|
|
54
85
|
case 'mcp_error':
|
|
@@ -58,27 +89,42 @@ export function describeRoutingFailure(error) {
|
|
|
58
89
|
return {
|
|
59
90
|
title: 'Routing request failed before intelligence could be injected.',
|
|
60
91
|
detail: error.detail,
|
|
61
|
-
action:
|
|
92
|
+
action: 'Inspect the gramatr_route_request handler response. Check GRAMATR_URL and auth token.',
|
|
62
93
|
};
|
|
63
94
|
}
|
|
64
95
|
}
|
|
65
96
|
export function persistClassificationResult(options) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
97
|
+
const packet1 = options.route?.packet_1;
|
|
98
|
+
const classification = packet1?.classification || options.route?.classification;
|
|
99
|
+
const executionSummary = packet1?.execution_summary || options.route?.execution_summary;
|
|
100
|
+
const routingSignals = packet1?.routing_signals || options.route?.routing_signals;
|
|
101
|
+
const tokenSavings = packet1?.token_savings || options.route?.token_savings;
|
|
102
|
+
const memoryContext = packet1?.memory_context || options.route?.memory_context;
|
|
103
|
+
setLatestClassification({
|
|
104
|
+
session_id: options.sessionId,
|
|
105
|
+
classifier_model: executionSummary?.classifier_model || null,
|
|
106
|
+
classifier_time_ms: executionSummary?.classifier_time_ms || null,
|
|
107
|
+
tokens_saved: tokenSavings?.total_saved || tokenSavings?.tokens_saved || 0,
|
|
108
|
+
savings_ratio: tokenSavings?.savings_ratio || null,
|
|
109
|
+
effort: classification?.effort_level || null,
|
|
110
|
+
intent: classification?.intent_type || null,
|
|
111
|
+
confidence: classification?.confidence ?? null,
|
|
112
|
+
memory_delivered: memoryContext?.results?.length || null,
|
|
77
113
|
downstream_model: options.downstreamModel || null,
|
|
78
|
-
|
|
79
|
-
|
|
114
|
+
server_version: executionSummary?.server_version || null,
|
|
115
|
+
stage_timing: executionSummary?.stage_timing
|
|
116
|
+
? JSON.stringify(executionSummary.stage_timing)
|
|
117
|
+
: null,
|
|
118
|
+
recorded_at: Date.now(),
|
|
119
|
+
original_prompt: options.prompt,
|
|
80
120
|
pending_feedback: true,
|
|
81
121
|
feedback_submitted_at: null,
|
|
122
|
+
client_type: options.clientType,
|
|
123
|
+
agent_name: options.agentName,
|
|
124
|
+
memory_tier: classification?.memory_tier || null,
|
|
125
|
+
memory_scope: classification?.memory_scope
|
|
126
|
+
|| routingSignals?.memory_scope
|
|
127
|
+
|| null,
|
|
82
128
|
});
|
|
83
129
|
}
|
|
84
130
|
//# sourceMappingURL=routing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../../src/hooks/lib/routing.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../../src/hooks/lib/routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,13 @@ export interface EndRemoteSessionOptions {
|
|
|
10
10
|
projectId: string;
|
|
11
11
|
summary: string;
|
|
12
12
|
toolCallCount: number;
|
|
13
|
+
reason?: string;
|
|
14
|
+
gitBranch?: string;
|
|
15
|
+
gitRemote?: string;
|
|
16
|
+
clientType?: string;
|
|
17
|
+
agentName?: string;
|
|
18
|
+
startedAt?: string;
|
|
19
|
+
commitLog?: string | null;
|
|
13
20
|
}
|
|
14
21
|
export interface SessionEndResult {
|
|
15
22
|
ok: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-end.d.ts","sourceRoot":"","sources":["../../../src/hooks/lib/session-end.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"session-end.d.ts","sourceRoot":"","sources":["../../../src/hooks/lib/session-end.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IAEtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAWtF;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,gBAAgB,CAAC,CAqB3B"}
|
|
@@ -1,21 +1,38 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { callTool } from '../../proxy/local-client.js';
|
|
2
2
|
export async function flushTurns(options) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
try {
|
|
4
|
+
await callTool('gramatr_batch_save_turns', {
|
|
5
|
+
session_id: options.sessionId,
|
|
6
|
+
project_id: options.projectId,
|
|
7
|
+
turns: options.turns,
|
|
8
|
+
});
|
|
9
|
+
return { ok: true, hadError: false };
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return { ok: false, hadError: true };
|
|
13
|
+
}
|
|
9
14
|
}
|
|
10
15
|
export async function endRemoteSession(options) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
try {
|
|
17
|
+
await callTool('gramatr_session_end', {
|
|
18
|
+
entity_id: options.entityId,
|
|
19
|
+
session_id: options.sessionId,
|
|
20
|
+
interaction_id: options.interactionId,
|
|
21
|
+
project_id: options.projectId,
|
|
22
|
+
summary: options.summary,
|
|
23
|
+
tool_call_count: options.toolCallCount,
|
|
24
|
+
...(options.reason !== undefined && { reason: options.reason }),
|
|
25
|
+
...(options.gitBranch !== undefined && { git_branch: options.gitBranch }),
|
|
26
|
+
...(options.gitRemote !== undefined && { git_remote: options.gitRemote }),
|
|
27
|
+
...(options.clientType !== undefined && { client_type: options.clientType }),
|
|
28
|
+
...(options.agentName !== undefined && { agent_name: options.agentName }),
|
|
29
|
+
...(options.startedAt !== undefined && { started_at: options.startedAt }),
|
|
30
|
+
...(options.commitLog !== undefined && { commit_log: options.commitLog }),
|
|
31
|
+
});
|
|
32
|
+
return { ok: true, hadError: false };
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return { ok: false, hadError: true };
|
|
36
|
+
}
|
|
20
37
|
}
|
|
21
38
|
//# sourceMappingURL=session-end.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-end.js","sourceRoot":"","sources":["../../../src/hooks/lib/session-end.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"session-end.js","sourceRoot":"","sources":["../../../src/hooks/lib/session-end.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AA8BvD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAA0B;IACzD,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,0BAA0B,EAAE;YACzC,UAAU,EAAE,OAAO,CAAC,SAAS;YAC7B,UAAU,EAAE,OAAO,CAAC,SAAS;YAC7B,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAgC;IAEhC,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,qBAAqB,EAAE;YACpC,SAAS,EAAE,OAAO,CAAC,QAAQ;YAC3B,UAAU,EAAE,OAAO,CAAC,SAAS;YAC7B,cAAc,EAAE,OAAO,CAAC,aAAa;YACrC,UAAU,EAAE,OAAO,CAAC,SAAS;YAC7B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,eAAe,EAAE,OAAO,CAAC,aAAa;YACtC,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YAC/D,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;YACzE,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;YACzE,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;YAC5E,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;YACzE,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;YACzE,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;SAC1E,CAAC,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;AACH,CAAC"}
|
|
@@ -8,36 +8,15 @@ export interface PreparedProjectSession {
|
|
|
8
8
|
hasRestoreContext: boolean;
|
|
9
9
|
created: boolean;
|
|
10
10
|
}
|
|
11
|
-
export interface CurrentProjectContextPayload {
|
|
12
|
-
type: 'git_project' | 'non_git';
|
|
13
|
-
session_id: string;
|
|
14
|
-
project_name: string;
|
|
15
|
-
working_directory: string;
|
|
16
|
-
session_start: string;
|
|
17
|
-
gramatr_config_path: string;
|
|
18
|
-
project_entity_id: string | null;
|
|
19
|
-
action_required: string;
|
|
20
|
-
project_id?: string;
|
|
21
|
-
git_root?: string;
|
|
22
|
-
git_branch?: string;
|
|
23
|
-
git_commit?: string;
|
|
24
|
-
git_remote?: string;
|
|
25
|
-
restore_needed?: boolean;
|
|
26
|
-
}
|
|
27
|
-
export declare function getSharedStateDir(): string;
|
|
28
|
-
export declare function getCurrentProjectContextPath(): string;
|
|
29
|
-
export declare function getLastSessionCommitsPath(): string;
|
|
30
|
-
export declare function getSessionHistoryLogPath(): string;
|
|
31
11
|
export declare function normalizeSessionStartResponse(response: SessionStartResponse | null | undefined): {
|
|
32
12
|
interactionId: string | null;
|
|
33
13
|
entityId: string | null;
|
|
34
14
|
resumed: boolean;
|
|
35
15
|
handoffContext: string | null;
|
|
16
|
+
recentSessions: import('./types.js').RemoteSessionRecord[];
|
|
36
17
|
};
|
|
37
18
|
export declare function prepareProjectSessionState(options: {
|
|
38
19
|
git: GitContext;
|
|
39
|
-
sessionId: string;
|
|
40
|
-
transcriptPath: string;
|
|
41
20
|
}): PreparedProjectSession;
|
|
42
21
|
export declare function startRemoteSession(options: {
|
|
43
22
|
clientType: string;
|
|
@@ -45,24 +24,14 @@ export declare function startRemoteSession(options: {
|
|
|
45
24
|
projectId: string;
|
|
46
25
|
projectName?: string;
|
|
47
26
|
gitRemote: string;
|
|
27
|
+
gitBranch?: string;
|
|
48
28
|
directory: string;
|
|
49
29
|
}): Promise<SessionStartResponse | null>;
|
|
50
30
|
export declare function loadProjectHandoff(projectId: string): Promise<HandoffResponse | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Persist the server-resolved project_id back to settings.json.
|
|
33
|
+
* The server may assign a stable UUID the first time a project is registered;
|
|
34
|
+
* storing it locally ensures all subsequent sessions use the same ID.
|
|
35
|
+
*/
|
|
51
36
|
export declare function persistSessionRegistration(rootDir: string, response: SessionStartResponse | null): GmtrConfig | null;
|
|
52
|
-
export declare function writeCurrentProjectContextFile(payload: CurrentProjectContextPayload): void;
|
|
53
|
-
export declare function buildGitProjectContextPayload(options: {
|
|
54
|
-
git: GitContext;
|
|
55
|
-
sessionId: string;
|
|
56
|
-
workingDirectory: string;
|
|
57
|
-
sessionStart: string;
|
|
58
|
-
projectId: string;
|
|
59
|
-
projectEntityId: string | null;
|
|
60
|
-
restoreNeeded: boolean;
|
|
61
|
-
}): CurrentProjectContextPayload;
|
|
62
|
-
export declare function buildNonGitProjectContextPayload(options: {
|
|
63
|
-
cwd: string;
|
|
64
|
-
sessionId: string;
|
|
65
|
-
sessionStart: string;
|
|
66
|
-
projectEntityId: string | null;
|
|
67
|
-
}): CurrentProjectContextPayload;
|
|
68
37
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/hooks/lib/session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/hooks/lib/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,UAAU,EAKhB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGxE,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,GAChD;IACD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,EAAE,OAAO,YAAY,EAAE,mBAAmB,EAAE,CAAC;CAC5D,CAQA;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE;IAClD,GAAG,EAAE,UAAU,CAAC;CACjB,GAAG,sBAAsB,CA2CzB;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAgBvC;AAED,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAW3F;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI,CAcpH"}
|
|
@@ -1,29 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { getGramatrDirFromEnv, getHomeDir } from '../../config-runtime.js';
|
|
5
|
-
export function getSharedStateDir() {
|
|
6
|
-
return join(getGramatrDirFromEnv() || join(getHomeDir(), '.gramatr'), '.state');
|
|
7
|
-
}
|
|
8
|
-
export function getCurrentProjectContextPath() {
|
|
9
|
-
return join(getSharedStateDir(), 'current-project-context.json');
|
|
10
|
-
}
|
|
11
|
-
export function getLastSessionCommitsPath() {
|
|
12
|
-
return join(getSharedStateDir(), 'last-session-commits.txt');
|
|
13
|
-
}
|
|
14
|
-
export function getSessionHistoryLogPath() {
|
|
15
|
-
return join(getSharedStateDir(), 'session-history.log');
|
|
16
|
-
}
|
|
1
|
+
import { createDefaultConfig, deriveProjectId, migrateConfig, now, readGmtrConfig, writeGmtrConfig, } from './gramatr-hook-utils.js';
|
|
2
|
+
import { callTool } from '../../proxy/local-client.js';
|
|
3
|
+
import { migrateProjectId } from './hook-state.js';
|
|
17
4
|
export function normalizeSessionStartResponse(response) {
|
|
18
5
|
return {
|
|
19
6
|
interactionId: response?.interaction_id || response?.interactionId || null,
|
|
20
7
|
entityId: response?.entity_id || response?.entityId || null,
|
|
21
8
|
resumed: response?.interaction_resumed === true || response?.interactionResumed === true,
|
|
22
9
|
handoffContext: response?.handoff_context || response?.handoffContext || null,
|
|
10
|
+
recentSessions: response?.recent_sessions ?? [],
|
|
23
11
|
};
|
|
24
12
|
}
|
|
25
13
|
export function prepareProjectSessionState(options) {
|
|
26
|
-
const { git
|
|
14
|
+
const { git } = options;
|
|
27
15
|
const timestamp = now();
|
|
28
16
|
let config = readGmtrConfig(git.root);
|
|
29
17
|
let created = false;
|
|
@@ -33,7 +21,6 @@ export function prepareProjectSessionState(options) {
|
|
|
33
21
|
const projectId = existingProjectId || deriveProjectId(git.remote, git.projectName);
|
|
34
22
|
if (config) {
|
|
35
23
|
config = migrateConfig(config, projectId);
|
|
36
|
-
config.last_session_id = sessionId;
|
|
37
24
|
config.project_id = projectId;
|
|
38
25
|
// Store reference metadata alongside the project_id so we can
|
|
39
26
|
// reconnect to the right project even if the UUID is opaque.
|
|
@@ -42,15 +29,6 @@ export function prepareProjectSessionState(options) {
|
|
|
42
29
|
local_path: git.root,
|
|
43
30
|
display_name: git.projectName,
|
|
44
31
|
};
|
|
45
|
-
config.current_session = {
|
|
46
|
-
...config.current_session,
|
|
47
|
-
session_id: sessionId,
|
|
48
|
-
transcript_path: transcriptPath,
|
|
49
|
-
last_updated: timestamp,
|
|
50
|
-
token_limit: 200000,
|
|
51
|
-
};
|
|
52
|
-
config.continuity_stats = config.continuity_stats || {};
|
|
53
|
-
config.continuity_stats.total_sessions = (config.continuity_stats.total_sessions || 0) + 1;
|
|
54
32
|
config.metadata = config.metadata || {};
|
|
55
33
|
config.metadata.updated = timestamp;
|
|
56
34
|
}
|
|
@@ -59,8 +37,6 @@ export function prepareProjectSessionState(options) {
|
|
|
59
37
|
projectId,
|
|
60
38
|
projectName: git.projectName,
|
|
61
39
|
gitRemote: git.remote,
|
|
62
|
-
sessionId,
|
|
63
|
-
transcriptPath,
|
|
64
40
|
});
|
|
65
41
|
created = true;
|
|
66
42
|
}
|
|
@@ -75,74 +51,54 @@ export function prepareProjectSessionState(options) {
|
|
|
75
51
|
};
|
|
76
52
|
}
|
|
77
53
|
export async function startRemoteSession(options) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
54
|
+
try {
|
|
55
|
+
const raw = await callTool('gramatr_session_start', {
|
|
56
|
+
client_type: options.clientType,
|
|
57
|
+
project_id: options.projectId,
|
|
58
|
+
...(options.projectName ? { project_name: options.projectName } : {}),
|
|
59
|
+
git_remote: options.gitRemote,
|
|
60
|
+
...(options.gitBranch ? { git_branch: options.gitBranch } : {}),
|
|
61
|
+
directory: options.directory,
|
|
62
|
+
...(options.sessionId ? { session_id: options.sessionId } : {}),
|
|
63
|
+
});
|
|
64
|
+
const text = raw?.content?.[0]?.text;
|
|
65
|
+
return text ? JSON.parse(text) : null;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
86
70
|
}
|
|
87
71
|
export async function loadProjectHandoff(projectId) {
|
|
88
|
-
|
|
72
|
+
try {
|
|
73
|
+
const raw = await callTool('gramatr_load_handoff', { project_id: projectId });
|
|
74
|
+
const text = raw?.content?.[0]?.text;
|
|
75
|
+
return text ? JSON.parse(text) : null;
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
89
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Persist the server-resolved project_id back to settings.json.
|
|
83
|
+
* The server may assign a stable UUID the first time a project is registered;
|
|
84
|
+
* storing it locally ensures all subsequent sessions use the same ID.
|
|
85
|
+
*/
|
|
90
86
|
export function persistSessionRegistration(rootDir, response) {
|
|
91
|
-
const normalized = normalizeSessionStartResponse(response);
|
|
92
|
-
if (!normalized.interactionId && !normalized.entityId)
|
|
93
|
-
return readGmtrConfig(rootDir);
|
|
94
87
|
const config = readGmtrConfig(rootDir);
|
|
95
88
|
if (!config)
|
|
96
89
|
return null;
|
|
97
|
-
config.current_session = config.current_session || {};
|
|
98
|
-
if (normalized.interactionId)
|
|
99
|
-
config.current_session.interaction_id = normalized.interactionId;
|
|
100
|
-
if (normalized.entityId)
|
|
101
|
-
config.current_session.gramatr_entity_id = normalized.entityId;
|
|
102
|
-
// Persist server-resolved project_id (may be a UUID assigned by the server).
|
|
103
|
-
// This is the key migration point: once the server returns a UUID, we store
|
|
104
|
-
// it locally so all subsequent sessions use the stable ID.
|
|
105
90
|
if (response?.project_id && response.project_id !== config.project_id) {
|
|
91
|
+
const oldProjectId = config.project_id;
|
|
106
92
|
config.project_id = response.project_id;
|
|
93
|
+
writeGmtrConfig(rootDir, config);
|
|
94
|
+
// Backfill local session_log rows so count/lookup queries use the stable UUID
|
|
95
|
+
if (oldProjectId) {
|
|
96
|
+
try {
|
|
97
|
+
migrateProjectId(oldProjectId, response.project_id);
|
|
98
|
+
}
|
|
99
|
+
catch { /* non-critical */ }
|
|
100
|
+
}
|
|
107
101
|
}
|
|
108
|
-
writeGmtrConfig(rootDir, config);
|
|
109
102
|
return config;
|
|
110
103
|
}
|
|
111
|
-
export function writeCurrentProjectContextFile(payload) {
|
|
112
|
-
const stateDir = getSharedStateDir();
|
|
113
|
-
if (!existsSync(stateDir))
|
|
114
|
-
mkdirSync(stateDir, { recursive: true });
|
|
115
|
-
const contextFile = getCurrentProjectContextPath();
|
|
116
|
-
writeFileSync(contextFile, JSON.stringify(payload, null, 2) + '\n');
|
|
117
|
-
}
|
|
118
|
-
export function buildGitProjectContextPayload(options) {
|
|
119
|
-
return {
|
|
120
|
-
type: 'git_project',
|
|
121
|
-
session_id: options.sessionId,
|
|
122
|
-
project_name: options.git.projectName,
|
|
123
|
-
project_id: options.projectId,
|
|
124
|
-
git_root: options.git.root,
|
|
125
|
-
git_branch: options.git.branch,
|
|
126
|
-
git_commit: options.git.commit,
|
|
127
|
-
git_remote: options.git.remote,
|
|
128
|
-
working_directory: options.workingDirectory,
|
|
129
|
-
session_start: options.sessionStart,
|
|
130
|
-
gramatr_config_path: join(options.git.root, '.gramatr', 'settings.json'),
|
|
131
|
-
project_entity_id: options.projectEntityId,
|
|
132
|
-
restore_needed: options.restoreNeeded,
|
|
133
|
-
action_required: 'check_or_create_project_entity',
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
export function buildNonGitProjectContextPayload(options) {
|
|
137
|
-
return {
|
|
138
|
-
type: 'non_git',
|
|
139
|
-
session_id: options.sessionId,
|
|
140
|
-
project_name: basename(options.cwd),
|
|
141
|
-
working_directory: options.cwd,
|
|
142
|
-
session_start: options.sessionStart,
|
|
143
|
-
gramatr_config_path: join(options.cwd, '.gramatr', 'settings.json'),
|
|
144
|
-
project_entity_id: options.projectEntityId,
|
|
145
|
-
action_required: 'gramatr_init_needed',
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
104
|
//# sourceMappingURL=session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/hooks/lib/session.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/hooks/lib/session.ts"],"names":[],"mappings":"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"}
|