dino-spec 17.5.0 → 17.6.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/README.md +16 -1
- package/dist/core/agents/ambiguity-resolver.d.ts +14 -1
- package/dist/core/agents/ambiguity-resolver.d.ts.map +1 -1
- package/dist/core/agents/ambiguity-resolver.js +24 -2
- package/dist/core/agents/ambiguity-resolver.js.map +1 -1
- package/dist/core/agents/confidence-gate.d.ts +18 -2
- package/dist/core/agents/confidence-gate.d.ts.map +1 -1
- package/dist/core/agents/confidence-gate.js +16 -9
- package/dist/core/agents/confidence-gate.js.map +1 -1
- package/dist/core/context/auto-injection-engine.d.ts +7 -1
- package/dist/core/context/auto-injection-engine.d.ts.map +1 -1
- package/dist/core/context/auto-injection-engine.js +46 -1
- package/dist/core/context/auto-injection-engine.js.map +1 -1
- package/dist/core/ralph/__tests__/prd-generator-session-context.test.d.ts +7 -0
- package/dist/core/ralph/__tests__/prd-generator-session-context.test.d.ts.map +1 -0
- package/dist/core/ralph/__tests__/prd-generator-session-context.test.js +143 -0
- package/dist/core/ralph/__tests__/prd-generator-session-context.test.js.map +1 -0
- package/dist/core/ralph/index.d.ts +3 -3
- package/dist/core/ralph/index.d.ts.map +1 -1
- package/dist/core/ralph/index.js +2 -2
- package/dist/core/ralph/index.js.map +1 -1
- package/dist/core/ralph/prd-generator.d.ts +18 -3
- package/dist/core/ralph/prd-generator.d.ts.map +1 -1
- package/dist/core/ralph/prd-generator.js +33 -11
- package/dist/core/ralph/prd-generator.js.map +1 -1
- package/dist/core/ralph/progress-tracker.d.ts.map +1 -1
- package/dist/core/ralph/progress-tracker.js +2 -1
- package/dist/core/ralph/progress-tracker.js.map +1 -1
- package/dist/core/ralph/sub-agent-spawner.d.ts +4 -2
- package/dist/core/ralph/sub-agent-spawner.d.ts.map +1 -1
- package/dist/core/ralph/sub-agent-spawner.js +48 -3
- package/dist/core/ralph/sub-agent-spawner.js.map +1 -1
- package/dist/core/ralph/task-integration.d.ts.map +1 -1
- package/dist/core/ralph/task-integration.js +6 -3
- package/dist/core/ralph/task-integration.js.map +1 -1
- package/dist/core/ralph/types.d.ts +62 -3
- package/dist/core/ralph/types.d.ts.map +1 -1
- package/dist/core/ralph/types.js.map +1 -1
- package/dist/core/recommendations/recommendation-engine.d.ts +6 -0
- package/dist/core/recommendations/recommendation-engine.d.ts.map +1 -1
- package/dist/core/recommendations/recommendation-engine.js.map +1 -1
- package/dist/core/spec-analyzer/index.d.ts +12 -1
- package/dist/core/spec-analyzer/index.d.ts.map +1 -1
- package/dist/core/spec-analyzer/index.js +8 -2
- package/dist/core/spec-analyzer/index.js.map +1 -1
- package/dist/mcp/tools/auto-inject.d.ts +4 -0
- package/dist/mcp/tools/auto-inject.d.ts.map +1 -1
- package/dist/mcp/tools/auto-inject.js +13 -4
- package/dist/mcp/tools/auto-inject.js.map +1 -1
- package/dist/mcp/tools/chunking.d.ts +3 -0
- package/dist/mcp/tools/chunking.d.ts.map +1 -1
- package/dist/mcp/tools/chunking.js +10 -4
- package/dist/mcp/tools/chunking.js.map +1 -1
- package/dist/mcp/tools/embeddings.d.ts +4 -0
- package/dist/mcp/tools/embeddings.d.ts.map +1 -1
- package/dist/mcp/tools/embeddings.js +16 -6
- package/dist/mcp/tools/embeddings.js.map +1 -1
- package/dist/mcp/tools/knowledge-graph.d.ts +3 -0
- package/dist/mcp/tools/knowledge-graph.d.ts.map +1 -1
- package/dist/mcp/tools/knowledge-graph.js +19 -8
- package/dist/mcp/tools/knowledge-graph.js.map +1 -1
- package/dist/mcp/tools/lazy-context.d.ts +2 -0
- package/dist/mcp/tools/lazy-context.d.ts.map +1 -1
- package/dist/mcp/tools/lazy-context.js +10 -4
- package/dist/mcp/tools/lazy-context.js.map +1 -1
- package/dist/mcp/tools/memory-decay.d.ts.map +1 -1
- package/dist/mcp/tools/memory-decay.js +4 -2
- package/dist/mcp/tools/memory-decay.js.map +1 -1
- package/dist/mcp/tools/prefetch.d.ts +4 -1
- package/dist/mcp/tools/prefetch.d.ts.map +1 -1
- package/dist/mcp/tools/prefetch.js +18 -7
- package/dist/mcp/tools/prefetch.js.map +1 -1
- package/dist/mcp/tools/ralph.d.ts +2 -0
- package/dist/mcp/tools/ralph.d.ts.map +1 -1
- package/dist/mcp/tools/ralph.js +96 -6
- package/dist/mcp/tools/ralph.js.map +1 -1
- package/dist/mcp/tools/recommendations.d.ts +2 -0
- package/dist/mcp/tools/recommendations.d.ts.map +1 -1
- package/dist/mcp/tools/recommendations.js +13 -4
- package/dist/mcp/tools/recommendations.js.map +1 -1
- package/dist/mcp/tools/retrieval.d.ts +4 -0
- package/dist/mcp/tools/retrieval.d.ts.map +1 -1
- package/dist/mcp/tools/retrieval.js +25 -10
- package/dist/mcp/tools/retrieval.js.map +1 -1
- package/dist/mcp/tools/spec-feedback.d.ts +2 -0
- package/dist/mcp/tools/spec-feedback.d.ts.map +1 -1
- package/dist/mcp/tools/spec-feedback.js +33 -16
- package/dist/mcp/tools/spec-feedback.js.map +1 -1
- package/dist/mcp/utils/index.d.ts +1 -0
- package/dist/mcp/utils/index.d.ts.map +1 -1
- package/dist/mcp/utils/index.js +2 -0
- package/dist/mcp/utils/index.js.map +1 -1
- package/dist/mcp/utils/session-context.d.ts +108 -0
- package/dist/mcp/utils/session-context.d.ts.map +1 -0
- package/dist/mcp/utils/session-context.js +157 -0
- package/dist/mcp/utils/session-context.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Context Wrapper - v17.6.0
|
|
3
|
+
*
|
|
4
|
+
* Provides a wrapper for MCP tool handlers that auto-loads session context.
|
|
5
|
+
* This ensures tools have access to focusArea, phase, blockers, and recent changes
|
|
6
|
+
* without requiring each tool to implement session loading individually.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const handler = withSessionContext(async (params, projectDir, session) => {
|
|
11
|
+
* // session.focusArea, session.phase, etc. are now available
|
|
12
|
+
* return 'result'
|
|
13
|
+
* })
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Session context passed to wrapped handlers
|
|
18
|
+
*/
|
|
19
|
+
export interface SessionContext {
|
|
20
|
+
/** Focus area from session.md (e.g., "src/core/ralph/") */
|
|
21
|
+
focusArea?: string;
|
|
22
|
+
/** Focus confidence level */
|
|
23
|
+
focusConfidence?: string;
|
|
24
|
+
/** Focus source (e.g., "manual", "directory-cluster") */
|
|
25
|
+
focusSource?: string;
|
|
26
|
+
/** Current phase from session.md (e.g., "implementation", "discovery") */
|
|
27
|
+
phase?: string;
|
|
28
|
+
/** Active blockers from session.md */
|
|
29
|
+
blockers?: string[];
|
|
30
|
+
/** Recent changes from session.md */
|
|
31
|
+
recentChanges?: Array<{
|
|
32
|
+
time: string;
|
|
33
|
+
category: string;
|
|
34
|
+
file: string;
|
|
35
|
+
} | string>;
|
|
36
|
+
/** Test status from session.md */
|
|
37
|
+
testStatus?: string;
|
|
38
|
+
/** Build status from session.md */
|
|
39
|
+
buildStatus?: string;
|
|
40
|
+
/** Whether session was successfully loaded */
|
|
41
|
+
loaded: boolean;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Handler function type that receives session context
|
|
45
|
+
*/
|
|
46
|
+
export type SessionAwareHandler<TInput, TResult> = (params: TInput, projectDir: string, session: SessionContext) => Promise<TResult>;
|
|
47
|
+
/**
|
|
48
|
+
* Standard MCP handler function type
|
|
49
|
+
*/
|
|
50
|
+
export type MCPHandler<TInput, TResult> = (params: TInput, projectDir: string) => Promise<TResult>;
|
|
51
|
+
/**
|
|
52
|
+
* Wrap an MCP tool handler to auto-load session context
|
|
53
|
+
*
|
|
54
|
+
* @param handler - Handler function that receives session context as third parameter
|
|
55
|
+
* @returns Standard MCP handler that auto-loads session before calling inner handler
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const handleWithContext = withSessionContext(async (params, projectDir, session) => {
|
|
60
|
+
* if (session.focusArea) {
|
|
61
|
+
* // Use focus area to scope operations
|
|
62
|
+
* }
|
|
63
|
+
* return 'result'
|
|
64
|
+
* })
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export declare function withSessionContext<TInput, TResult>(handler: SessionAwareHandler<TInput, TResult>): MCPHandler<TInput, TResult>;
|
|
68
|
+
/**
|
|
69
|
+
* Load session context directly (for handlers that need more control)
|
|
70
|
+
*
|
|
71
|
+
* @returns Session context object
|
|
72
|
+
*/
|
|
73
|
+
export declare function loadSessionContext(): Promise<SessionContext>;
|
|
74
|
+
/**
|
|
75
|
+
* Check if a file path is within the current focus area
|
|
76
|
+
*
|
|
77
|
+
* @param filePath - File path to check
|
|
78
|
+
* @param session - Session context
|
|
79
|
+
* @returns true if file is in focus area or no focus is set
|
|
80
|
+
*/
|
|
81
|
+
export declare function isInFocusArea(filePath: string, session: SessionContext): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Filter a list of file paths to only those in focus area
|
|
84
|
+
*
|
|
85
|
+
* @param filePaths - Array of file paths
|
|
86
|
+
* @param session - Session context
|
|
87
|
+
* @returns Filtered array (or original if no focus)
|
|
88
|
+
*/
|
|
89
|
+
export declare function filterByFocus(filePaths: string[], session: SessionContext): string[];
|
|
90
|
+
/**
|
|
91
|
+
* Get focus-aware priority for a file
|
|
92
|
+
* Files in focus area get higher priority (lower number)
|
|
93
|
+
*
|
|
94
|
+
* @param filePath - File path to prioritize
|
|
95
|
+
* @param session - Session context
|
|
96
|
+
* @returns Priority value (0 = highest, 1 = in-focus, 2 = near-focus, 3 = out-of-focus)
|
|
97
|
+
*/
|
|
98
|
+
export declare function getFocusPriority(filePath: string, session: SessionContext): number;
|
|
99
|
+
/**
|
|
100
|
+
* Sort file paths by focus priority (in-focus first)
|
|
101
|
+
*
|
|
102
|
+
* @param filePaths - Array of file paths
|
|
103
|
+
* @param session - Session context
|
|
104
|
+
* @returns Sorted array with in-focus files first
|
|
105
|
+
*/
|
|
106
|
+
export declare function sortByFocusPriority(filePaths: string[], session: SessionContext): string[];
|
|
107
|
+
export { parseSession, type SessionData } from './session-helpers.js';
|
|
108
|
+
//# sourceMappingURL=session-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-context.d.ts","sourceRoot":"","sources":["../../../src/mcp/utils/session-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6BAA6B;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,qCAAqC;IACrC,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,CAAA;IAChF,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8CAA8C;IAC9C,MAAM,EAAE,OAAO,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,MAAM,EAAE,OAAO,IAAI,CACjD,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,KACpB,OAAO,CAAC,OAAO,CAAC,CAAA;AAErB;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AA2BlG;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAChD,OAAO,EAAE,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5C,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAgB7B;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,CAOlE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAUhF;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,EAAE,CAMpF;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CAuBlF;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,EAAE,CAI1F;AAMD,OAAO,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Context Wrapper - v17.6.0
|
|
3
|
+
*
|
|
4
|
+
* Provides a wrapper for MCP tool handlers that auto-loads session context.
|
|
5
|
+
* This ensures tools have access to focusArea, phase, blockers, and recent changes
|
|
6
|
+
* without requiring each tool to implement session loading individually.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const handler = withSessionContext(async (params, projectDir, session) => {
|
|
11
|
+
* // session.focusArea, session.phase, etc. are now available
|
|
12
|
+
* return 'result'
|
|
13
|
+
* })
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
import { parseSession } from './session-helpers.js';
|
|
17
|
+
// =============================================================================
|
|
18
|
+
// Core Functions
|
|
19
|
+
// =============================================================================
|
|
20
|
+
/**
|
|
21
|
+
* Convert SessionData to SessionContext
|
|
22
|
+
*/
|
|
23
|
+
function sessionDataToContext(data) {
|
|
24
|
+
if (!data) {
|
|
25
|
+
return { loaded: false };
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
focusArea: data.focus?.area,
|
|
29
|
+
focusConfidence: data.focus?.confidence,
|
|
30
|
+
focusSource: data.focus?.source,
|
|
31
|
+
phase: data.phase,
|
|
32
|
+
blockers: data.blockers,
|
|
33
|
+
recentChanges: data.recentChanges,
|
|
34
|
+
testStatus: data.testStatus,
|
|
35
|
+
buildStatus: data.buildStatus,
|
|
36
|
+
loaded: true,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Wrap an MCP tool handler to auto-load session context
|
|
41
|
+
*
|
|
42
|
+
* @param handler - Handler function that receives session context as third parameter
|
|
43
|
+
* @returns Standard MCP handler that auto-loads session before calling inner handler
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* const handleWithContext = withSessionContext(async (params, projectDir, session) => {
|
|
48
|
+
* if (session.focusArea) {
|
|
49
|
+
* // Use focus area to scope operations
|
|
50
|
+
* }
|
|
51
|
+
* return 'result'
|
|
52
|
+
* })
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export function withSessionContext(handler) {
|
|
56
|
+
return async (params, projectDir) => {
|
|
57
|
+
// Load session context
|
|
58
|
+
let sessionContext;
|
|
59
|
+
try {
|
|
60
|
+
const sessionData = await parseSession();
|
|
61
|
+
sessionContext = sessionDataToContext(sessionData);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Session loading failed - continue with empty context
|
|
65
|
+
sessionContext = { loaded: false };
|
|
66
|
+
}
|
|
67
|
+
// Call the wrapped handler with session context
|
|
68
|
+
return handler(params, projectDir, sessionContext);
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Load session context directly (for handlers that need more control)
|
|
73
|
+
*
|
|
74
|
+
* @returns Session context object
|
|
75
|
+
*/
|
|
76
|
+
export async function loadSessionContext() {
|
|
77
|
+
try {
|
|
78
|
+
const sessionData = await parseSession();
|
|
79
|
+
return sessionDataToContext(sessionData);
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return { loaded: false };
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Check if a file path is within the current focus area
|
|
87
|
+
*
|
|
88
|
+
* @param filePath - File path to check
|
|
89
|
+
* @param session - Session context
|
|
90
|
+
* @returns true if file is in focus area or no focus is set
|
|
91
|
+
*/
|
|
92
|
+
export function isInFocusArea(filePath, session) {
|
|
93
|
+
if (!session.focusArea) {
|
|
94
|
+
return true; // No focus = everything is in scope
|
|
95
|
+
}
|
|
96
|
+
// Normalize paths for comparison
|
|
97
|
+
const normalizedPath = filePath.replace(/\\/g, '/');
|
|
98
|
+
const normalizedFocus = session.focusArea.replace(/\\/g, '/');
|
|
99
|
+
return normalizedPath.startsWith(normalizedFocus);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Filter a list of file paths to only those in focus area
|
|
103
|
+
*
|
|
104
|
+
* @param filePaths - Array of file paths
|
|
105
|
+
* @param session - Session context
|
|
106
|
+
* @returns Filtered array (or original if no focus)
|
|
107
|
+
*/
|
|
108
|
+
export function filterByFocus(filePaths, session) {
|
|
109
|
+
if (!session.focusArea) {
|
|
110
|
+
return filePaths;
|
|
111
|
+
}
|
|
112
|
+
return filePaths.filter((path) => isInFocusArea(path, session));
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get focus-aware priority for a file
|
|
116
|
+
* Files in focus area get higher priority (lower number)
|
|
117
|
+
*
|
|
118
|
+
* @param filePath - File path to prioritize
|
|
119
|
+
* @param session - Session context
|
|
120
|
+
* @returns Priority value (0 = highest, 1 = in-focus, 2 = near-focus, 3 = out-of-focus)
|
|
121
|
+
*/
|
|
122
|
+
export function getFocusPriority(filePath, session) {
|
|
123
|
+
if (!session.focusArea) {
|
|
124
|
+
return 1; // Default priority when no focus
|
|
125
|
+
}
|
|
126
|
+
const normalizedPath = filePath.replace(/\\/g, '/');
|
|
127
|
+
const normalizedFocus = session.focusArea.replace(/\\/g, '/');
|
|
128
|
+
// Exact match or child
|
|
129
|
+
if (normalizedPath.startsWith(normalizedFocus)) {
|
|
130
|
+
return 0;
|
|
131
|
+
}
|
|
132
|
+
// Near focus (same parent directory)
|
|
133
|
+
const focusParent = normalizedFocus.split('/').slice(0, -1).join('/');
|
|
134
|
+
const pathParent = normalizedPath.split('/').slice(0, -1).join('/');
|
|
135
|
+
if (focusParent && pathParent.startsWith(focusParent)) {
|
|
136
|
+
return 1;
|
|
137
|
+
}
|
|
138
|
+
// Out of focus
|
|
139
|
+
return 2;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Sort file paths by focus priority (in-focus first)
|
|
143
|
+
*
|
|
144
|
+
* @param filePaths - Array of file paths
|
|
145
|
+
* @param session - Session context
|
|
146
|
+
* @returns Sorted array with in-focus files first
|
|
147
|
+
*/
|
|
148
|
+
export function sortByFocusPriority(filePaths, session) {
|
|
149
|
+
return [...filePaths].sort((a, b) => {
|
|
150
|
+
return getFocusPriority(a, session) - getFocusPriority(b, session);
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
// =============================================================================
|
|
154
|
+
// Re-exports for convenience
|
|
155
|
+
// =============================================================================
|
|
156
|
+
export { parseSession } from './session-helpers.js';
|
|
157
|
+
//# sourceMappingURL=session-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-context.js","sourceRoot":"","sources":["../../../src/mcp/utils/session-context.ts"],"names":[],"mappings":"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"}
|