proofscan 0.8.1 → 0.9.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.
Files changed (45) hide show
  1. package/dist/db/connection.d.ts.map +1 -1
  2. package/dist/db/connection.js +74 -3
  3. package/dist/db/connection.js.map +1 -1
  4. package/dist/db/events-store.d.ts +70 -1
  5. package/dist/db/events-store.d.ts.map +1 -1
  6. package/dist/db/events-store.js +162 -0
  7. package/dist/db/events-store.js.map +1 -1
  8. package/dist/db/schema.d.ts +8 -2
  9. package/dist/db/schema.d.ts.map +1 -1
  10. package/dist/db/schema.js +40 -1
  11. package/dist/db/schema.js.map +1 -1
  12. package/dist/db/types.d.ts +12 -0
  13. package/dist/db/types.d.ts.map +1 -1
  14. package/dist/shell/inscribe-commands.d.ts +32 -0
  15. package/dist/shell/inscribe-commands.d.ts.map +1 -0
  16. package/dist/shell/inscribe-commands.js +461 -0
  17. package/dist/shell/inscribe-commands.js.map +1 -0
  18. package/dist/shell/ref-commands.d.ts +32 -0
  19. package/dist/shell/ref-commands.d.ts.map +1 -0
  20. package/dist/shell/ref-commands.js +337 -0
  21. package/dist/shell/ref-commands.js.map +1 -0
  22. package/dist/shell/ref-resolver.d.ts +199 -0
  23. package/dist/shell/ref-resolver.d.ts.map +1 -0
  24. package/dist/shell/ref-resolver.js +423 -0
  25. package/dist/shell/ref-resolver.js.map +1 -0
  26. package/dist/shell/repl.d.ts +28 -0
  27. package/dist/shell/repl.d.ts.map +1 -1
  28. package/dist/shell/repl.js +170 -6
  29. package/dist/shell/repl.js.map +1 -1
  30. package/dist/shell/router-commands.d.ts +18 -1
  31. package/dist/shell/router-commands.d.ts.map +1 -1
  32. package/dist/shell/router-commands.js +222 -2
  33. package/dist/shell/router-commands.js.map +1 -1
  34. package/dist/shell/tool-commands.d.ts +7 -1
  35. package/dist/shell/tool-commands.d.ts.map +1 -1
  36. package/dist/shell/tool-commands.js +187 -5
  37. package/dist/shell/tool-commands.js.map +1 -1
  38. package/dist/shell/types.d.ts +10 -0
  39. package/dist/shell/types.d.ts.map +1 -1
  40. package/dist/shell/types.js +11 -0
  41. package/dist/shell/types.js.map +1 -1
  42. package/dist/types/config.d.ts +13 -0
  43. package/dist/types/config.d.ts.map +1 -1
  44. package/dist/types/config.js.map +1 -1
  45. package/package.json +1 -1
@@ -0,0 +1,337 @@
1
+ /**
2
+ * Shell ref commands: ref add, ref ls, ref rm, ref <@target> (Phase 4.1-4.2)
3
+ *
4
+ * These commands manage user-defined references and resolve references.
5
+ *
6
+ * Commands:
7
+ * - ref add <name> @this : Save current context as named reference
8
+ * - ref add <name> @last : Save latest session/rpc as named reference
9
+ * - ref add <name> @rpc:<id> : Save specific RPC as named reference
10
+ * - ref ls : List all user-defined references
11
+ * - ref rm <name> : Remove a user-defined reference
12
+ *
13
+ * Resolve mode (argument starts with @):
14
+ * - ref @this : Resolve and display current context
15
+ * - ref @last : Resolve and display latest session/RPC
16
+ * - ref @rpc:<id> : Resolve and display specific RPC reference
17
+ * - ref @ref:<name> : Resolve and display user-defined reference
18
+ * - ref @... --json : Output RefStruct as JSON
19
+ *
20
+ * Pipe support:
21
+ * - pwd --json | ref add <name> : Save piped JSON as reference
22
+ */
23
+ import { printSuccess, printError, printInfo, dimText } from './prompt.js';
24
+ import { EventsStore } from '../db/events-store.js';
25
+ import { ConfigManager } from '../config/index.js';
26
+ import { RefResolver, createRefDataProvider, createRefFromContext, parseRef, isRef, refFromJson, refToJson, } from './ref-resolver.js';
27
+ /** Max length for reference names */
28
+ const REF_NAME_MAX_LENGTH = 64;
29
+ /** Pattern for valid reference names: alphanumeric, hyphens, underscores */
30
+ const REF_NAME_PATTERN = /^[a-zA-Z0-9_-]+$/;
31
+ /** Reserved names that cannot be used as reference names */
32
+ const RESERVED_NAMES = ['this', 'last', 'rpc', 'session', 'fav', 'ref'];
33
+ /**
34
+ * Validate reference name
35
+ * @returns Error message if invalid, null if valid
36
+ */
37
+ function validateRefName(name) {
38
+ if (!name) {
39
+ return 'Reference name is required';
40
+ }
41
+ if (name.startsWith('@')) {
42
+ return `Name cannot start with @: ${name}`;
43
+ }
44
+ if (name.length > REF_NAME_MAX_LENGTH) {
45
+ return `Name too long (max ${REF_NAME_MAX_LENGTH} chars): ${name}`;
46
+ }
47
+ if (!REF_NAME_PATTERN.test(name)) {
48
+ return `Invalid name. Use only letters, numbers, hyphens, and underscores: ${name}`;
49
+ }
50
+ if (RESERVED_NAMES.includes(name.toLowerCase())) {
51
+ return `Reserved name cannot be used: ${name}`;
52
+ }
53
+ return null;
54
+ }
55
+ /**
56
+ * Handle 'ref' command
57
+ */
58
+ export async function handleRef(args, context, configPath, stdinData) {
59
+ if (args.length === 0) {
60
+ printInfo('Usage: ref <subcommand> or ref <@target>');
61
+ printInfo('');
62
+ printInfo('Subcommands:');
63
+ printInfo(' ref add <name> @this Save current context');
64
+ printInfo(' ref add <name> @last Save latest session/rpc');
65
+ printInfo(' ref add <name> @rpc:<id> Save specific RPC');
66
+ printInfo(' ref ls List all refs');
67
+ printInfo(' ref rm <name> Remove a ref');
68
+ printInfo('');
69
+ printInfo('Resolve mode (@ prefix):');
70
+ printInfo(' ref @this Resolve current context');
71
+ printInfo(' ref @last Resolve latest session/RPC');
72
+ printInfo(' ref @rpc:<id> Resolve specific RPC');
73
+ printInfo(' ref @ref:<name> Resolve saved reference');
74
+ printInfo(' ref @... --json Output as JSON');
75
+ printInfo('');
76
+ printInfo('Pipe support:');
77
+ printInfo(' pwd --json | ref add <name>');
78
+ return;
79
+ }
80
+ const firstArg = args[0];
81
+ // Resolve mode: if first argument starts with @, resolve the reference
82
+ if (isRef(firstArg)) {
83
+ await handleRefResolve(args, context, configPath);
84
+ return;
85
+ }
86
+ const subcommand = firstArg;
87
+ const subArgs = args.slice(1);
88
+ switch (subcommand) {
89
+ case 'add':
90
+ await handleRefAdd(subArgs, context, configPath, stdinData);
91
+ break;
92
+ case 'ls':
93
+ case 'list':
94
+ await handleRefLs(subArgs, configPath);
95
+ break;
96
+ case 'rm':
97
+ case 'remove':
98
+ case 'delete':
99
+ await handleRefRm(subArgs, configPath);
100
+ break;
101
+ default:
102
+ printError(`Unknown subcommand: ${subcommand}`);
103
+ printInfo('Available: add, ls, rm');
104
+ printInfo('Or use: ref @this, ref @last, ref @rpc:<id>, ref @ref:<name>');
105
+ }
106
+ }
107
+ /**
108
+ * Handle 'ref @...' - resolve and display a reference (Phase 4.2)
109
+ *
110
+ * This is "resolve mode" - when the first argument starts with @
111
+ *
112
+ * Examples:
113
+ * ref @this - Show current context as reference
114
+ * ref @last - Show latest session/RPC as reference
115
+ * ref @rpc:abc123 - Show specific RPC reference
116
+ * ref @ref:myname - Show saved user-defined reference
117
+ * ref @this --json - Output as JSON for piping
118
+ */
119
+ async function handleRefResolve(args, context, configPath) {
120
+ const isJson = args.includes('--json');
121
+ const target = args.find(a => !a.startsWith('-') && a.startsWith('@'));
122
+ if (!target) {
123
+ printError('No reference target specified');
124
+ return;
125
+ }
126
+ const manager = new ConfigManager(configPath);
127
+ const eventsStore = new EventsStore(manager.getConfigDir());
128
+ const dataProvider = createRefDataProvider(eventsStore);
129
+ const resolver = new RefResolver(dataProvider);
130
+ // Special handling for @this - use createRefFromContext directly
131
+ const parsed = parseRef(target);
132
+ let ref;
133
+ if (parsed.type === 'this') {
134
+ ref = createRefFromContext(context);
135
+ ref.source = '@this';
136
+ }
137
+ else {
138
+ const result = resolver.resolve(target, context);
139
+ if (!result.success || !result.ref) {
140
+ printError(result.error || `Failed to resolve: ${target}`);
141
+ return;
142
+ }
143
+ ref = result.ref;
144
+ }
145
+ // Output
146
+ if (isJson) {
147
+ console.log(refToJson(ref));
148
+ return;
149
+ }
150
+ // Human-readable format
151
+ console.log();
152
+ console.log(`Reference: ${target}`);
153
+ console.log(` Kind: ${ref.kind}`);
154
+ if (ref.connector)
155
+ console.log(` Connector: ${ref.connector}`);
156
+ if (ref.session)
157
+ console.log(` Session: ${ref.session.slice(0, 8)}...`);
158
+ if (ref.rpc)
159
+ console.log(` RPC: ${ref.rpc}`);
160
+ if (ref.proto)
161
+ console.log(` Proto: ${ref.proto}`);
162
+ if (ref.level)
163
+ console.log(` Level: ${ref.level}`);
164
+ if (ref.captured_at)
165
+ console.log(` Captured: ${ref.captured_at}`);
166
+ console.log();
167
+ printInfo('Tip: Use --json to get JSON output for piping');
168
+ printInfo(' Use "show ..." to view resource details instead of address');
169
+ }
170
+ /**
171
+ * Handle 'ref add' - save a reference
172
+ */
173
+ async function handleRefAdd(args, context, configPath, stdinData) {
174
+ // Check for stdin data first (pipe support)
175
+ if (stdinData) {
176
+ // Format: ref add <name> (with piped JSON)
177
+ const name = args[0];
178
+ if (!name) {
179
+ printError('Usage: ... | ref add <name>');
180
+ return;
181
+ }
182
+ const validationError = validateRefName(name);
183
+ if (validationError) {
184
+ printError(validationError);
185
+ return;
186
+ }
187
+ const ref = refFromJson(stdinData);
188
+ if (!ref) {
189
+ printError('Invalid JSON input');
190
+ printInfo('Expected RefStruct JSON (use pwd --json to generate)');
191
+ return;
192
+ }
193
+ await saveRef(name, ref, configPath);
194
+ return;
195
+ }
196
+ // Format: ref add <name> @ref
197
+ if (args.length < 2) {
198
+ printError('Usage: ref add <name> <@ref>');
199
+ printInfo('Example: ref add myref @this');
200
+ return;
201
+ }
202
+ const name = args[0];
203
+ const refArg = args[1];
204
+ const validationError = validateRefName(name);
205
+ if (validationError) {
206
+ printError(validationError);
207
+ return;
208
+ }
209
+ // Parse and resolve the reference
210
+ const parsed = parseRef(refArg);
211
+ if (parsed.type === 'literal') {
212
+ printError(`Not a valid reference: ${refArg}`);
213
+ printInfo('Valid refs: @this, @last, @rpc:<id>, @session:<id>');
214
+ return;
215
+ }
216
+ const manager = new ConfigManager(configPath);
217
+ const eventsStore = new EventsStore(manager.getConfigDir());
218
+ const dataProvider = createRefDataProvider(eventsStore);
219
+ const resolver = new RefResolver(dataProvider);
220
+ // Handle @this specially - use current context directly
221
+ let ref;
222
+ if (parsed.type === 'this') {
223
+ ref = createRefFromContext(context);
224
+ }
225
+ else {
226
+ const result = resolver.resolve(refArg, context);
227
+ if (!result.success || !result.ref) {
228
+ printError(result.error || `Failed to resolve: ${refArg}`);
229
+ return;
230
+ }
231
+ ref = result.ref;
232
+ }
233
+ await saveRef(name, ref, configPath);
234
+ }
235
+ /**
236
+ * Save a reference to the database
237
+ */
238
+ async function saveRef(name, ref, configPath) {
239
+ const manager = new ConfigManager(configPath);
240
+ const eventsStore = new EventsStore(manager.getConfigDir());
241
+ eventsStore.saveUserRef(name, {
242
+ kind: ref.kind,
243
+ connector: ref.connector,
244
+ session: ref.session,
245
+ rpc: ref.rpc,
246
+ proto: ref.proto,
247
+ level: ref.level,
248
+ captured_at: ref.captured_at,
249
+ });
250
+ printSuccess(`Saved reference: ${name}`);
251
+ printInfo(` Kind: ${ref.kind}`);
252
+ if (ref.connector)
253
+ printInfo(` Connector: ${ref.connector}`);
254
+ if (ref.session)
255
+ printInfo(` Session: ${ref.session.slice(0, 8)}`);
256
+ if (ref.rpc)
257
+ printInfo(` RPC: ${ref.rpc}`);
258
+ }
259
+ /**
260
+ * Handle 'ref ls' - list all references
261
+ */
262
+ async function handleRefLs(args, configPath) {
263
+ const isJson = args.includes('--json');
264
+ const manager = new ConfigManager(configPath);
265
+ const eventsStore = new EventsStore(manager.getConfigDir());
266
+ const refs = eventsStore.listUserRefs();
267
+ if (refs.length === 0) {
268
+ printInfo('No user-defined references');
269
+ printInfo('Create one with: ref add <name> @this');
270
+ return;
271
+ }
272
+ if (isJson) {
273
+ console.log(JSON.stringify(refs, null, 2));
274
+ return;
275
+ }
276
+ // Table format
277
+ const isTTY = process.stdout.isTTY;
278
+ console.log();
279
+ // Calculate column widths
280
+ const maxName = Math.max(8, ...refs.map(r => r.name.length));
281
+ // Header
282
+ console.log(dimText('Name', isTTY).padEnd(isTTY ? maxName + 9 : maxName) + ' ' +
283
+ dimText('Kind', isTTY).padEnd(isTTY ? 17 : 10) + ' ' +
284
+ dimText('Target', isTTY));
285
+ console.log(dimText('-'.repeat(maxName + 50), isTTY));
286
+ // Rows
287
+ for (const ref of refs) {
288
+ let target = '';
289
+ if (ref.connector)
290
+ target = ref.connector;
291
+ if (ref.session)
292
+ target += '/' + ref.session.slice(0, 8);
293
+ if (ref.rpc)
294
+ target += '/' + ref.rpc.slice(0, 8);
295
+ if (!target)
296
+ target = '(root)';
297
+ console.log(ref.name.padEnd(maxName) + ' ' +
298
+ ref.kind.padEnd(10) + ' ' +
299
+ target);
300
+ }
301
+ console.log();
302
+ printInfo(`${refs.length} reference(s). Use: @ref:<name> to reference`);
303
+ }
304
+ /**
305
+ * Handle 'ref rm' - remove a reference
306
+ */
307
+ async function handleRefRm(args, configPath) {
308
+ const name = args.find(a => !a.startsWith('-'));
309
+ if (!name) {
310
+ printError('Usage: ref rm <name>');
311
+ return;
312
+ }
313
+ const manager = new ConfigManager(configPath);
314
+ const eventsStore = new EventsStore(manager.getConfigDir());
315
+ const deleted = eventsStore.deleteUserRef(name);
316
+ if (deleted) {
317
+ printSuccess(`Deleted reference: ${name}`);
318
+ }
319
+ else {
320
+ printError(`Reference not found: ${name}`);
321
+ }
322
+ }
323
+ /**
324
+ * Get ref names for completion
325
+ */
326
+ export async function getRefNamesForCompletion(configPath) {
327
+ try {
328
+ const manager = new ConfigManager(configPath);
329
+ const eventsStore = new EventsStore(manager.getConfigDir());
330
+ const refs = eventsStore.listUserRefs();
331
+ return refs.map(r => r.name);
332
+ }
333
+ catch {
334
+ return [];
335
+ }
336
+ }
337
+ //# sourceMappingURL=ref-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ref-commands.js","sourceRoot":"","sources":["../../src/shell/ref-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,oBAAoB,EACpB,QAAQ,EACR,KAAK,EACL,WAAW,EACX,SAAS,GAEV,MAAM,mBAAmB,CAAC;AAE3B,qCAAqC;AACrC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B,4EAA4E;AAC5E,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAE5C,4DAA4D;AAC5D,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAExE;;;GAGG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,4BAA4B,CAAC;IACtC,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,6BAA6B,IAAI,EAAE,CAAC;IAC7C,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;QACtC,OAAO,sBAAsB,mBAAmB,YAAY,IAAI,EAAE,CAAC;IACrE,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO,sEAAsE,IAAI,EAAE,CAAC;IACtF,CAAC;IACD,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAChD,OAAO,iCAAiC,IAAI,EAAE,CAAC;IACjD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAc,EACd,OAAqB,EACrB,UAAkB,EAClB,SAAkB;IAElB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,SAAS,CAAC,0CAA0C,CAAC,CAAC;QACtD,SAAS,CAAC,EAAE,CAAC,CAAC;QACd,SAAS,CAAC,cAAc,CAAC,CAAC;QAC1B,SAAS,CAAC,iDAAiD,CAAC,CAAC;QAC7D,SAAS,CAAC,oDAAoD,CAAC,CAAC;QAChE,SAAS,CAAC,8CAA8C,CAAC,CAAC;QAC1D,SAAS,CAAC,0CAA0C,CAAC,CAAC;QACtD,SAAS,CAAC,yCAAyC,CAAC,CAAC;QACrD,SAAS,CAAC,EAAE,CAAC,CAAC;QACd,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACtC,SAAS,CAAC,oDAAoD,CAAC,CAAC;QAChE,SAAS,CAAC,uDAAuD,CAAC,CAAC;QACnE,SAAS,CAAC,iDAAiD,CAAC,CAAC;QAC7D,SAAS,CAAC,oDAAoD,CAAC,CAAC;QAChE,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACvD,SAAS,CAAC,EAAE,CAAC,CAAC;QACd,SAAS,CAAC,eAAe,CAAC,CAAC;QAC3B,SAAS,CAAC,+BAA+B,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEzB,uEAAuE;IACvE,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpB,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE9B,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,KAAK;YACR,MAAM,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YAC5D,MAAM;QACR,KAAK,IAAI,CAAC;QACV,KAAK,MAAM;YACT,MAAM,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACvC,MAAM;QACR,KAAK,IAAI,CAAC;QACV,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ;YACX,MAAM,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACvC,MAAM;QACR;YACE,UAAU,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;YAChD,SAAS,CAAC,wBAAwB,CAAC,CAAC;YACpC,SAAS,CAAC,8DAA8D,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,gBAAgB,CAC7B,IAAc,EACd,OAAqB,EACrB,UAAkB;IAElB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAEvE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,UAAU,CAAC,+BAA+B,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC;IAE/C,iEAAiE;IACjE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,GAAc,CAAC;IAEnB,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,GAAG,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACpC,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACnC,UAAU,CAAC,MAAM,CAAC,KAAK,IAAI,sBAAsB,MAAM,EAAE,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QACD,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACnB,CAAC;IAED,SAAS;IACT,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,wBAAwB;IACxB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,EAAE,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACnC,IAAI,GAAG,CAAC,SAAS;QAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IAChE,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACzE,IAAI,GAAG,CAAC,GAAG;QAAE,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IACpD,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IACpD,IAAI,GAAG,CAAC,WAAW;QAAE,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,SAAS,CAAC,+CAA+C,CAAC,CAAC;IAC3D,SAAS,CAAC,iEAAiE,CAAC,CAAC;AAC/E,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,YAAY,CACzB,IAAc,EACd,OAAqB,EACrB,UAAkB,EAClB,SAAkB;IAElB,4CAA4C;IAC5C,IAAI,SAAS,EAAE,CAAC;QACd,2CAA2C;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,UAAU,CAAC,6BAA6B,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,MAAM,eAAe,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,eAAe,EAAE,CAAC;YACpB,UAAU,CAAC,eAAe,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,UAAU,CAAC,oBAAoB,CAAC,CAAC;YACjC,SAAS,CAAC,sDAAsD,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,MAAM,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAED,8BAA8B;IAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,UAAU,CAAC,8BAA8B,CAAC,CAAC;QAC3C,SAAS,CAAC,8BAA8B,CAAC,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEvB,MAAM,eAAe,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,eAAe,EAAE,CAAC;QACpB,UAAU,CAAC,eAAe,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,kCAAkC;IAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,UAAU,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;QAC/C,SAAS,CAAC,oDAAoD,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC;IAE/C,wDAAwD;IACxD,IAAI,GAAc,CAAC;IACnB,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,GAAG,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACnC,UAAU,CAAC,MAAM,CAAC,KAAK,IAAI,sBAAsB,MAAM,EAAE,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QACD,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,OAAO,CAAC,IAAY,EAAE,GAAc,EAAE,UAAkB;IACrE,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAE5D,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE;QAC5B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,WAAW,EAAE,GAAG,CAAC,WAAW;KAC7B,CAAC,CAAC;IAEH,YAAY,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;IACzC,SAAS,CAAC,WAAW,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACjC,IAAI,GAAG,CAAC,SAAS;QAAE,SAAS,CAAC,gBAAgB,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9D,IAAI,GAAG,CAAC,OAAO;QAAE,SAAS,CAAC,cAAc,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACpE,IAAI,GAAG,CAAC,GAAG;QAAE,SAAS,CAAC,UAAU,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,IAAc,EAAE,UAAkB;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEvC,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAE5D,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC;IAExC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,SAAS,CAAC,4BAA4B,CAAC,CAAC;QACxC,SAAS,CAAC,uCAAuC,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,eAAe;IACf,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACnC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,0BAA0B;IAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7D,SAAS;IACT,OAAO,CAAC,GAAG,CACT,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI;QACnE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI;QACrD,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CACzB,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAEtD,OAAO;IACP,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,GAAG,CAAC,SAAS;YAAE,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC;QAC1C,IAAI,GAAG,CAAC,OAAO;YAAE,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,IAAI,GAAG,CAAC,GAAG;YAAE,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM;YAAE,MAAM,GAAG,QAAQ,CAAC;QAE/B,OAAO,CAAC,GAAG,CACT,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI;YAC/B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI;YAC1B,MAAM,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,8CAA8C,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,IAAc,EAAE,UAAkB;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAEhD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,UAAU,CAAC,sBAAsB,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAE5D,MAAM,OAAO,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAEhD,IAAI,OAAO,EAAE,CAAC;QACZ,YAAY,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,UAAkB;IAC/D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,199 @@
1
+ /**
2
+ * RefResolver - Unified reference resolution for shell (Phase 4.1)
3
+ *
4
+ * @ is the dereference operator - used only when resolving references.
5
+ * References are first-class citizens that connect all shell operations.
6
+ *
7
+ * Built-in References:
8
+ * - @this : Current context (connector/session based on level)
9
+ * - @last : Latest session or RPC (context-dependent)
10
+ * - @rpc:<id> : Explicit RPC reference
11
+ * - @session:<id> : Explicit session reference
12
+ * - @fav:<name> : Favorites (named references from DB)
13
+ * - @ref:<name> : User-defined references (Phase 4.2)
14
+ */
15
+ import type { ShellContext, ProtoType } from './types.js';
16
+ import { type ContextLevel } from './router-commands.js';
17
+ /**
18
+ * Reference kind - what type of entity the reference points to
19
+ */
20
+ export type RefKind = 'connector' | 'session' | 'rpc' | 'tool_call' | 'context';
21
+ /**
22
+ * RefStruct - The universal reference structure
23
+ *
24
+ * This is the core data structure that represents any reference in the system.
25
+ * It can be serialized to JSON for pipe operations and stored in the database.
26
+ */
27
+ export interface RefStruct {
28
+ /** Reference kind */
29
+ kind: RefKind;
30
+ /** Connector ID (always present except for root context) */
31
+ connector?: string;
32
+ /** Session ID (present for session/rpc/tool_call refs) */
33
+ session?: string;
34
+ /** RPC ID (present for rpc refs) */
35
+ rpc?: string;
36
+ /** Protocol type (mcp/a2a/?) */
37
+ proto?: ProtoType;
38
+ /** Context level when captured */
39
+ level?: ContextLevel;
40
+ /** Timestamp when reference was created */
41
+ captured_at?: string;
42
+ /** Original reference string (e.g., "@this", "@rpc:abc123") */
43
+ source?: string;
44
+ }
45
+ /**
46
+ * Parsed reference from user input
47
+ */
48
+ export interface ParsedRef {
49
+ /** Reference type */
50
+ type: 'this' | 'last' | 'rpc' | 'session' | 'fav' | 'ref' | 'literal';
51
+ /** Optional identifier (e.g., RPC ID, favorite name) */
52
+ id?: string;
53
+ /** Original input string */
54
+ raw: string;
55
+ }
56
+ /**
57
+ * Resolution result
58
+ */
59
+ export interface ResolveResult {
60
+ success: boolean;
61
+ ref?: RefStruct;
62
+ error?: string;
63
+ }
64
+ /**
65
+ * Data provider interface for resolution
66
+ * Allows RefResolver to query database without direct dependency
67
+ */
68
+ export interface RefDataProvider {
69
+ /** Get latest session for a connector (or globally if no connector) */
70
+ getLatestSession(connectorId?: string): {
71
+ session_id: string;
72
+ connector_id: string;
73
+ } | null;
74
+ /** Get latest RPC for a session */
75
+ getLatestRpc(sessionId: string): {
76
+ rpc_id: string;
77
+ method: string;
78
+ } | null;
79
+ /** Get RPC by ID */
80
+ getRpcById(rpcId: string, sessionId?: string): {
81
+ rpc_id: string;
82
+ session_id: string;
83
+ method: string;
84
+ } | null;
85
+ /** Get session by ID or prefix */
86
+ getSessionByPrefix(prefix: string, connectorId?: string): {
87
+ session_id: string;
88
+ connector_id: string;
89
+ } | null;
90
+ /** Get user-defined ref by name */
91
+ getUserRef(name: string): RefStruct | null;
92
+ /** Get favorite by name */
93
+ getFavorite(name: string): RefStruct | null;
94
+ }
95
+ /**
96
+ * Parse a reference string into structured form
97
+ *
98
+ * Supported formats:
99
+ * - @this -> { type: 'this' }
100
+ * - @last -> { type: 'last' }
101
+ * - @rpc:abc123 -> { type: 'rpc', id: 'abc123' }
102
+ * - @session:xyz -> { type: 'session', id: 'xyz' }
103
+ * - @fav:myname -> { type: 'fav', id: 'myname' }
104
+ * - @ref:myref -> { type: 'ref', id: 'myref' }
105
+ * - anything else -> { type: 'literal' }
106
+ */
107
+ export declare function parseRef(input: string): ParsedRef;
108
+ /**
109
+ * Check if a string is a reference
110
+ */
111
+ export declare function isRef(input: string): boolean;
112
+ /**
113
+ * RefResolver - Central reference resolution service
114
+ */
115
+ export declare class RefResolver {
116
+ private dataProvider;
117
+ constructor(dataProvider: RefDataProvider);
118
+ /**
119
+ * Resolve @this to current context
120
+ */
121
+ resolveThis(context: ShellContext): ResolveResult;
122
+ /**
123
+ * Resolve @last to latest session or RPC
124
+ */
125
+ resolveLast(context: ShellContext): ResolveResult;
126
+ /**
127
+ * Resolve @rpc:<id> to specific RPC
128
+ */
129
+ resolveRpc(rpcId: string, context: ShellContext): ResolveResult;
130
+ /**
131
+ * Resolve @session:<id> to specific session
132
+ */
133
+ resolveSession(sessionId: string, context: ShellContext): ResolveResult;
134
+ /**
135
+ * Resolve @fav:<name> to favorite
136
+ */
137
+ resolveFavorite(name: string): ResolveResult;
138
+ /**
139
+ * Resolve @ref:<name> to user-defined reference
140
+ */
141
+ resolveUserRef(name: string): ResolveResult;
142
+ /**
143
+ * Resolve any reference string
144
+ */
145
+ resolve(input: string, context: ShellContext): ResolveResult;
146
+ /**
147
+ * Resolve multiple arguments, replacing refs with their resolved values
148
+ * Returns the args with refs replaced by their target IDs
149
+ */
150
+ resolveArgs(args: string[], context: ShellContext): {
151
+ resolved: string[];
152
+ errors: string[];
153
+ };
154
+ }
155
+ /**
156
+ * Create a RefStruct from current shell context
157
+ */
158
+ export declare function createRefFromContext(context: ShellContext): RefStruct;
159
+ /**
160
+ * Serialize RefStruct to JSON string
161
+ */
162
+ export declare function refToJson(ref: RefStruct): string;
163
+ /**
164
+ * Parse RefStruct from JSON string
165
+ */
166
+ export declare function refFromJson(json: string): RefStruct | null;
167
+ /**
168
+ * Create a RefDataProvider from EventsStore
169
+ * This adapts the EventsStore to the RefDataProvider interface
170
+ */
171
+ export declare function createRefDataProvider(eventsStore: {
172
+ getLatestSession(connectorId?: string): {
173
+ session_id: string;
174
+ connector_id: string;
175
+ } | null;
176
+ getLatestRpc(sessionId: string): {
177
+ rpc_id: string;
178
+ method: string;
179
+ } | null;
180
+ getRpcById(rpcId: string, sessionId?: string): {
181
+ rpc_id: string;
182
+ session_id: string;
183
+ method: string;
184
+ } | null;
185
+ getSessionByPrefix(prefix: string, connectorId?: string): {
186
+ session_id: string;
187
+ connector_id: string;
188
+ } | null;
189
+ getUserRef(name: string): {
190
+ kind: RefKind;
191
+ connector: string | null;
192
+ session: string | null;
193
+ rpc: string | null;
194
+ proto: string | null;
195
+ level: string | null;
196
+ captured_at: string;
197
+ } | null;
198
+ }): RefDataProvider;
199
+ //# sourceMappingURL=ref-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ref-resolver.d.ts","sourceRoot":"","sources":["../../src/shell/ref-resolver.ts"],"names":[],"mappings":"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"}