proofscan 0.10.53 → 0.10.55

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.
Files changed (53) hide show
  1. package/dist/shell/filter-mappers.d.ts +23 -0
  2. package/dist/shell/filter-mappers.d.ts.map +1 -0
  3. package/dist/shell/filter-mappers.js +36 -0
  4. package/dist/shell/filter-mappers.js.map +1 -0
  5. package/dist/shell/find-command.d.ts +54 -0
  6. package/dist/shell/find-command.d.ts.map +1 -0
  7. package/dist/shell/find-command.js +330 -0
  8. package/dist/shell/find-command.js.map +1 -0
  9. package/dist/shell/pager/index.d.ts +9 -0
  10. package/dist/shell/pager/index.d.ts.map +1 -0
  11. package/dist/shell/pager/index.js +8 -0
  12. package/dist/shell/pager/index.js.map +1 -0
  13. package/dist/shell/pager/less-pager.d.ts +31 -0
  14. package/dist/shell/pager/less-pager.d.ts.map +1 -0
  15. package/dist/shell/pager/less-pager.js +196 -0
  16. package/dist/shell/pager/less-pager.js.map +1 -0
  17. package/dist/shell/pager/more-pager.d.ts +31 -0
  18. package/dist/shell/pager/more-pager.d.ts.map +1 -0
  19. package/dist/shell/pager/more-pager.js +108 -0
  20. package/dist/shell/pager/more-pager.js.map +1 -0
  21. package/dist/shell/pager/renderer.d.ts +17 -0
  22. package/dist/shell/pager/renderer.d.ts.map +1 -0
  23. package/dist/shell/pager/renderer.js +125 -0
  24. package/dist/shell/pager/renderer.js.map +1 -0
  25. package/dist/shell/pager/types.d.ts +19 -0
  26. package/dist/shell/pager/types.d.ts.map +1 -0
  27. package/dist/shell/pager/types.js +7 -0
  28. package/dist/shell/pager/types.js.map +1 -0
  29. package/dist/shell/pager/utils.d.ts +28 -0
  30. package/dist/shell/pager/utils.d.ts.map +1 -0
  31. package/dist/shell/pager/utils.js +53 -0
  32. package/dist/shell/pager/utils.js.map +1 -0
  33. package/dist/shell/pipeline-types.d.ts +51 -0
  34. package/dist/shell/pipeline-types.d.ts.map +1 -0
  35. package/dist/shell/pipeline-types.js +8 -0
  36. package/dist/shell/pipeline-types.js.map +1 -0
  37. package/dist/shell/repl.d.ts +36 -0
  38. package/dist/shell/repl.d.ts.map +1 -1
  39. package/dist/shell/repl.js +408 -5
  40. package/dist/shell/repl.js.map +1 -1
  41. package/dist/shell/router-commands.d.ts +7 -0
  42. package/dist/shell/router-commands.d.ts.map +1 -1
  43. package/dist/shell/router-commands.js +121 -0
  44. package/dist/shell/router-commands.js.map +1 -1
  45. package/dist/shell/types.d.ts +14 -0
  46. package/dist/shell/types.d.ts.map +1 -1
  47. package/dist/shell/types.js +16 -1
  48. package/dist/shell/types.js.map +1 -1
  49. package/dist/shell/where-command.d.ts +31 -0
  50. package/dist/shell/where-command.d.ts.map +1 -0
  51. package/dist/shell/where-command.js +96 -0
  52. package/dist/shell/where-command.js.map +1 -0
  53. package/package.json +1 -1
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Filter Context Mappers for psh Shell
3
+ *
4
+ * Convert pipeline rows to FilterContext for evaluation.
5
+ * Reuses the existing Filter DSL types from src/filter/.
6
+ */
7
+ import type { FilterContext } from '../filter/types.js';
8
+ import type { RpcRow, SessionRow } from './pipeline-types.js';
9
+ /**
10
+ * Convert RPC row to FilterContext
11
+ *
12
+ * Field mapping (Option A adopted):
13
+ * tools.method = rpc.method ("tools/call", "tools/list", etc.)
14
+ * tools.name = tool_name (the actual tool being called, e.g., "convert_time")
15
+ *
16
+ * Status normalization: Row status (OK|ERR|pending) → lowercase (ok|err|pending)
17
+ */
18
+ export declare function rpcRowToFilterContext(row: RpcRow): FilterContext;
19
+ /**
20
+ * Convert Session row to FilterContext
21
+ */
22
+ export declare function sessionRowToFilterContext(row: SessionRow): FilterContext;
23
+ //# sourceMappingURL=filter-mappers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-mappers.d.ts","sourceRoot":"","sources":["../../src/shell/filter-mappers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE9D;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAUhE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,UAAU,GAAG,aAAa,CAKxE"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Filter Context Mappers for psh Shell
3
+ *
4
+ * Convert pipeline rows to FilterContext for evaluation.
5
+ * Reuses the existing Filter DSL types from src/filter/.
6
+ */
7
+ /**
8
+ * Convert RPC row to FilterContext
9
+ *
10
+ * Field mapping (Option A adopted):
11
+ * tools.method = rpc.method ("tools/call", "tools/list", etc.)
12
+ * tools.name = tool_name (the actual tool being called, e.g., "convert_time")
13
+ *
14
+ * Status normalization: Row status (OK|ERR|pending) → lowercase (ok|err|pending)
15
+ */
16
+ export function rpcRowToFilterContext(row) {
17
+ return {
18
+ 'rpc.id': row.rpc_id,
19
+ 'rpc.method': row.method,
20
+ 'rpc.status': row.status?.toLowerCase() ?? 'pending', // OK|ERR|pending → ok|err|pending
21
+ 'rpc.latency': row.latency_ms,
22
+ 'session.id': row.session_id,
23
+ 'tools.name': row.tool_name ?? null, // Tool name for tools/call
24
+ 'tools.method': row.method, // "tools/call", "tools/list", etc.
25
+ };
26
+ }
27
+ /**
28
+ * Convert Session row to FilterContext
29
+ */
30
+ export function sessionRowToFilterContext(row) {
31
+ return {
32
+ 'session.id': row.session_id,
33
+ 'session.latency': row.total_latency_ms ?? null,
34
+ };
35
+ }
36
+ //# sourceMappingURL=filter-mappers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-mappers.js","sourceRoot":"","sources":["../../src/shell/filter-mappers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,MAAM;QACpB,YAAY,EAAE,GAAG,CAAC,MAAM;QACxB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,SAAS,EAAE,kCAAkC;QACxF,aAAa,EAAE,GAAG,CAAC,UAAU;QAC7B,YAAY,EAAE,GAAG,CAAC,UAAU;QAC5B,YAAY,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI,EAAE,2BAA2B;QAChE,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,mCAAmC;KAChE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAe;IACvD,OAAO;QACL,YAAY,EAAE,GAAG,CAAC,UAAU;QAC5B,iBAAiB,EAAE,GAAG,CAAC,gBAAgB,IAAI,IAAI;KAChD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Find Command for psh Shell
3
+ *
4
+ * Cross-session search without changing `ls` semantics.
5
+ * Scope derived from cwd:
6
+ * / => all connectors
7
+ * /<cid>: => that connector's sessions
8
+ * /<cid>/<sid>: => that session only
9
+ */
10
+ import type { ShellContext } from './types.js';
11
+ import type { PipelineValue } from './pipeline-types.js';
12
+ /** Find command options */
13
+ export interface FindOptions {
14
+ kind: 'session' | 'rpc' | 'event';
15
+ limit: number;
16
+ sessions: number;
17
+ errorsOnly: boolean;
18
+ }
19
+ /** Find result type */
20
+ export type FindResult = {
21
+ ok: true;
22
+ result: PipelineValue;
23
+ stats: {
24
+ count: number;
25
+ sessions: number;
26
+ };
27
+ } | {
28
+ ok: false;
29
+ error: string;
30
+ } | {
31
+ ok: false;
32
+ error: string;
33
+ help: true;
34
+ };
35
+ /**
36
+ * Parse find command arguments
37
+ *
38
+ * Usage: find <kind> [--limit N] [--sessions N] [--errors-only]
39
+ */
40
+ export declare function parseFindArgs(args: string[]): {
41
+ ok: true;
42
+ options: FindOptions;
43
+ } | {
44
+ ok: false;
45
+ error: string;
46
+ help?: true;
47
+ };
48
+ /**
49
+ * Execute find command
50
+ *
51
+ * Loads rows from multiple sessions based on scope and options.
52
+ */
53
+ export declare function executeFind(context: ShellContext, configPath: string, options: FindOptions): FindResult;
54
+ //# sourceMappingURL=find-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-command.d.ts","sourceRoot":"","sources":["../../src/shell/find-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,qBAAqB,CAAC;AAK7E,2BAA2B;AAC3B,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB;AAUD,uBAAuB;AACvB,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC/E;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AA8B7C;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE,CAmD5H;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,GACnB,UAAU,CAoBZ"}
@@ -0,0 +1,330 @@
1
+ /**
2
+ * Find Command for psh Shell
3
+ *
4
+ * Cross-session search without changing `ls` semantics.
5
+ * Scope derived from cwd:
6
+ * / => all connectors
7
+ * /<cid>: => that connector's sessions
8
+ * /<cid>/<sid>: => that session only
9
+ */
10
+ import { getContextLevel } from './router-commands.js';
11
+ import { EventLineStore } from '../eventline/store.js';
12
+ import { ConfigManager } from '../config/index.js';
13
+ /** Default options */
14
+ const DEFAULT_OPTIONS = {
15
+ kind: 'rpc',
16
+ limit: 200,
17
+ sessions: 50,
18
+ errorsOnly: false,
19
+ };
20
+ /** Help text for find command */
21
+ const FIND_HELP = `find - cross-session search
22
+
23
+ Usage: find <kind> [options]
24
+
25
+ Kinds:
26
+ session List sessions across scope
27
+ rpc List RPC calls across sessions
28
+ event List events (not yet implemented)
29
+
30
+ Options:
31
+ --limit N Max rows to return (default: 200)
32
+ --sessions N Max sessions to search (default: 50)
33
+ --errors-only Only return error RPCs
34
+ -h, --help Show this help
35
+
36
+ Scope (derived from cwd):
37
+ / All connectors
38
+ /<connector>: That connector's sessions
39
+ /<conn>/<sess>: That session only
40
+
41
+ Examples:
42
+ find rpc All RPCs in current scope
43
+ find rpc --errors-only Only errors
44
+ find rpc --limit 50 --sessions 10 Limit results
45
+ find rpc | where tools.name ~= "read" Chain with filter
46
+ find session --limit 10 Latest sessions`;
47
+ /**
48
+ * Parse find command arguments
49
+ *
50
+ * Usage: find <kind> [--limit N] [--sessions N] [--errors-only]
51
+ */
52
+ export function parseFindArgs(args) {
53
+ const options = { ...DEFAULT_OPTIONS };
54
+ // Handle help flags first
55
+ if (args.length === 0 || args.includes('-h') || args.includes('--help')) {
56
+ return { ok: false, error: FIND_HELP, help: true };
57
+ }
58
+ let i = 0;
59
+ const kindArg = args[0].toLowerCase();
60
+ if (!['session', 'rpc', 'event'].includes(kindArg)) {
61
+ return { ok: false, error: `Invalid kind: ${args[0]}. Must be one of: session, rpc, event` };
62
+ }
63
+ options.kind = kindArg;
64
+ i++;
65
+ // Parse optional flags
66
+ while (i < args.length) {
67
+ const arg = args[i];
68
+ if (arg === '--limit') {
69
+ const val = args[++i];
70
+ if (!val || isNaN(parseInt(val, 10))) {
71
+ return { ok: false, error: '--limit requires a number' };
72
+ }
73
+ const limitVal = parseInt(val, 10);
74
+ if (limitVal <= 0) {
75
+ return { ok: false, error: '--limit must be a positive number' };
76
+ }
77
+ options.limit = limitVal;
78
+ }
79
+ else if (arg === '--sessions') {
80
+ const val = args[++i];
81
+ if (!val || isNaN(parseInt(val, 10))) {
82
+ return { ok: false, error: '--sessions requires a number' };
83
+ }
84
+ const sessionsVal = parseInt(val, 10);
85
+ if (sessionsVal <= 0) {
86
+ return { ok: false, error: '--sessions must be a positive number' };
87
+ }
88
+ options.sessions = sessionsVal;
89
+ }
90
+ else if (arg === '--errors-only') {
91
+ options.errorsOnly = true;
92
+ }
93
+ else if (arg.startsWith('-')) {
94
+ return { ok: false, error: `Unknown option: ${arg}` };
95
+ }
96
+ i++;
97
+ }
98
+ return { ok: true, options };
99
+ }
100
+ /**
101
+ * Execute find command
102
+ *
103
+ * Loads rows from multiple sessions based on scope and options.
104
+ */
105
+ export function executeFind(context, configPath, options) {
106
+ const manager = new ConfigManager(configPath);
107
+ const store = new EventLineStore(manager.getConfigDir());
108
+ const level = getContextLevel(context);
109
+ // Determine scope
110
+ const scope = determineScope(level, context);
111
+ // Load rows based on kind
112
+ switch (options.kind) {
113
+ case 'session':
114
+ return findSessions(store, scope, options);
115
+ case 'rpc':
116
+ return findRpcs(store, scope, options);
117
+ case 'event':
118
+ // Event kind is reserved for future implementation
119
+ return { ok: false, error: 'Event kind is not yet implemented' };
120
+ default:
121
+ return { ok: false, error: `Unknown kind: ${options.kind}` };
122
+ }
123
+ }
124
+ /**
125
+ * Determine search scope from context
126
+ */
127
+ function determineScope(level, context) {
128
+ return {
129
+ level,
130
+ connectorId: context.connector,
131
+ sessionId: context.session,
132
+ };
133
+ }
134
+ /**
135
+ * Find sessions across scope
136
+ */
137
+ function findSessions(store, scope, options) {
138
+ const rows = [];
139
+ let sessionCount = 0;
140
+ if (scope.level === 'session' && scope.sessionId) {
141
+ // Session level - return just this session info
142
+ const sessions = store.getSessions(scope.connectorId, options.sessions);
143
+ const session = sessions.find(s => s.session_id === scope.sessionId);
144
+ if (session) {
145
+ rows.push({
146
+ session_id: session.session_id,
147
+ connector_id: scope.connectorId,
148
+ started_at: session.started_at ?? '',
149
+ ended_at: session.ended_at ?? null,
150
+ event_count: session.event_count ?? 0,
151
+ rpc_count: session.rpc_count ?? 0,
152
+ });
153
+ sessionCount = 1;
154
+ }
155
+ }
156
+ else if (scope.level === 'connector' && scope.connectorId) {
157
+ // Connector level - return sessions for this connector
158
+ const sessions = store.getSessions(scope.connectorId, options.sessions);
159
+ for (const session of sessions) {
160
+ if (rows.length >= options.limit)
161
+ break;
162
+ rows.push({
163
+ session_id: session.session_id,
164
+ connector_id: scope.connectorId,
165
+ started_at: session.started_at ?? '',
166
+ ended_at: session.ended_at ?? null,
167
+ event_count: session.event_count ?? 0,
168
+ rpc_count: session.rpc_count ?? 0,
169
+ });
170
+ }
171
+ sessionCount = sessions.length;
172
+ }
173
+ else {
174
+ // Root level - return sessions across all connectors
175
+ const connectors = store.getConnectors();
176
+ for (const connector of connectors) {
177
+ if (rows.length >= options.limit)
178
+ break;
179
+ const sessions = store.getSessions(connector.id, options.sessions);
180
+ for (const session of sessions) {
181
+ if (rows.length >= options.limit)
182
+ break;
183
+ rows.push({
184
+ session_id: session.session_id,
185
+ connector_id: connector.id,
186
+ started_at: session.started_at ?? '',
187
+ ended_at: session.ended_at ?? null,
188
+ event_count: session.event_count ?? 0,
189
+ rpc_count: session.rpc_count ?? 0,
190
+ });
191
+ }
192
+ sessionCount += sessions.length;
193
+ }
194
+ }
195
+ return {
196
+ ok: true,
197
+ result: { kind: 'rows', rows, rowType: 'session' },
198
+ stats: { count: rows.length, sessions: sessionCount },
199
+ };
200
+ }
201
+ /**
202
+ * Extract tool name from request JSON.
203
+ * Fallback chain: params.name ?? params.tool ?? params.toolName
204
+ */
205
+ function extractToolName(rawJson) {
206
+ if (!rawJson)
207
+ return undefined;
208
+ try {
209
+ const parsed = JSON.parse(rawJson);
210
+ const params = parsed?.params;
211
+ if (!params || typeof params !== 'object')
212
+ return undefined;
213
+ if (typeof params.name === 'string' && params.name.length > 0) {
214
+ return params.name;
215
+ }
216
+ if (typeof params.tool === 'string' && params.tool.length > 0) {
217
+ return params.tool;
218
+ }
219
+ if (typeof params.toolName === 'string' && params.toolName.length > 0) {
220
+ return params.toolName;
221
+ }
222
+ }
223
+ catch {
224
+ // JSON parse error
225
+ }
226
+ return undefined;
227
+ }
228
+ /**
229
+ * Find RPCs across scope
230
+ */
231
+ function findRpcs(store, scope, options) {
232
+ const rows = [];
233
+ let sessionCount = 0;
234
+ // Collect session IDs to search
235
+ const sessionIds = [];
236
+ if (scope.level === 'session' && scope.sessionId && scope.connectorId) {
237
+ // Session level - search only this session
238
+ sessionIds.push({ sessionId: scope.sessionId, connectorId: scope.connectorId });
239
+ }
240
+ else if (scope.level === 'connector' && scope.connectorId) {
241
+ // Connector level - search sessions for this connector
242
+ const sessions = store.getSessions(scope.connectorId, options.sessions);
243
+ for (const session of sessions) {
244
+ sessionIds.push({ sessionId: session.session_id, connectorId: scope.connectorId });
245
+ }
246
+ }
247
+ else {
248
+ // Root level - search across all connectors
249
+ const connectors = store.getConnectors();
250
+ for (const connector of connectors) {
251
+ const sessions = store.getSessions(connector.id, options.sessions);
252
+ for (const session of sessions) {
253
+ sessionIds.push({ sessionId: session.session_id, connectorId: connector.id });
254
+ }
255
+ }
256
+ }
257
+ sessionCount = sessionIds.length;
258
+ // Load RPCs from each session
259
+ for (const { sessionId, connectorId } of sessionIds) {
260
+ if (rows.length >= options.limit)
261
+ break;
262
+ const rpcs = store.getRpcCalls(sessionId);
263
+ // Build tool name map for tools/call RPCs in this session (batch lookup)
264
+ // This avoids N+1 query pattern by fetching raw events once per session
265
+ const toolsCallRpcIds = rpcs
266
+ .filter(rpc => rpc.method === 'tools/call')
267
+ .map(rpc => rpc.rpc_id);
268
+ const toolNameMap = new Map();
269
+ if (toolsCallRpcIds.length > 0) {
270
+ // Build tool name map for all tools/call RPCs in this session
271
+ // Note: getRawEvent internally fetches all session events, so subsequent
272
+ // calls for the same session benefit from SQLite's page cache
273
+ for (const rpcId of toolsCallRpcIds) {
274
+ const event = store.getRawEvent(sessionId, rpcId);
275
+ if (event?.request?.raw_json) {
276
+ const toolName = extractToolName(event.request.raw_json);
277
+ if (toolName) {
278
+ toolNameMap.set(rpcId, toolName);
279
+ }
280
+ }
281
+ }
282
+ }
283
+ for (const rpc of rpcs) {
284
+ if (rows.length >= options.limit)
285
+ break;
286
+ // Determine status
287
+ let status;
288
+ if (rpc.success === 1) {
289
+ status = 'OK';
290
+ }
291
+ else if (rpc.success === 0) {
292
+ status = 'ERR';
293
+ }
294
+ else {
295
+ status = 'pending';
296
+ }
297
+ // Filter errors only
298
+ if (options.errorsOnly && status !== 'ERR') {
299
+ continue;
300
+ }
301
+ // Calculate latency
302
+ let latency_ms = null;
303
+ if (rpc.request_ts && rpc.response_ts) {
304
+ const requestTime = new Date(rpc.request_ts).getTime();
305
+ const responseTime = new Date(rpc.response_ts).getTime();
306
+ latency_ms = responseTime - requestTime;
307
+ }
308
+ // Get tool_name from pre-built map (avoids N+1 query)
309
+ const tool_name = toolNameMap.get(rpc.rpc_id);
310
+ rows.push({
311
+ rpc_id: rpc.rpc_id,
312
+ session_id: rpc.session_id,
313
+ connector_id: connectorId,
314
+ method: rpc.method,
315
+ status,
316
+ latency_ms,
317
+ request_ts: rpc.request_ts,
318
+ response_ts: rpc.response_ts ?? null,
319
+ error_code: rpc.error_code ?? null,
320
+ tool_name,
321
+ });
322
+ }
323
+ }
324
+ return {
325
+ ok: true,
326
+ result: { kind: 'rows', rows, rowType: 'rpc' },
327
+ stats: { count: rows.length, sessions: sessionCount },
328
+ };
329
+ }
330
+ //# sourceMappingURL=find-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-command.js","sourceRoot":"","sources":["../../src/shell/find-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Pager module exports
3
+ */
4
+ export { LessPager } from './less-pager.js';
5
+ export { MorePager } from './more-pager.js';
6
+ export { renderRowsToLines } from './renderer.js';
7
+ export { commandExists, parsePagerCommand, runPager, FOOTER_RESERVE_LINES } from './utils.js';
8
+ export type { Pager, PagerOptions } from './types.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shell/pager/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC9F,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Pager module exports
3
+ */
4
+ export { LessPager } from './less-pager.js';
5
+ export { MorePager } from './more-pager.js';
6
+ export { renderRowsToLines } from './renderer.js';
7
+ export { commandExists, parsePagerCommand, runPager, FOOTER_RESERVE_LINES } from './utils.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shell/pager/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Less Pager for psh Shell
3
+ *
4
+ * Delegates to external pager for reliable TTY handling.
5
+ * Pager selection priority:
6
+ * 1. $PAGER environment variable (user preference)
7
+ * 2. 'less' command
8
+ * 3. Built-in pager (fallback)
9
+ *
10
+ * Note: When using external pager, standard pager key bindings apply.
11
+ * The built-in fallback provides vim-style navigation (j/k/space/b/g/G/q).
12
+ */
13
+ import type { Pager, PagerOptions } from './types.js';
14
+ import type { PipelineValue } from '../pipeline-types.js';
15
+ export declare class LessPager implements Pager {
16
+ private options;
17
+ constructor(options?: PagerOptions);
18
+ run(input: PipelineValue): Promise<void>;
19
+ /**
20
+ * Try external pager in priority order
21
+ * Returns true if successful, false if all failed
22
+ */
23
+ private tryExternalPager;
24
+ /**
25
+ * Built-in pager fallback
26
+ * Provides vim-style navigation when no external pager is available
27
+ */
28
+ private runBuiltIn;
29
+ private runLoop;
30
+ }
31
+ //# sourceMappingURL=less-pager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"less-pager.d.ts","sourceRoot":"","sources":["../../../src/shell/pager/less-pager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,qBAAa,SAAU,YAAW,KAAK;IACrC,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,CAAC,EAAE,YAAY;IAI5B,GAAG,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B9C;;;OAGG;YACW,gBAAgB;IAmC9B;;;OAGG;YACW,UAAU;YAmBV,OAAO;CAyGtB"}