proofscan 0.8.0 → 0.8.2
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/cli.js +38 -14
- package/dist/cli.js.map +1 -1
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +74 -3
- package/dist/db/connection.js.map +1 -1
- package/dist/db/events-store.d.ts +70 -1
- package/dist/db/events-store.d.ts.map +1 -1
- package/dist/db/events-store.js +162 -0
- package/dist/db/events-store.js.map +1 -1
- package/dist/db/schema.d.ts +8 -2
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +40 -1
- package/dist/db/schema.js.map +1 -1
- package/dist/db/types.d.ts +12 -0
- package/dist/db/types.d.ts.map +1 -1
- package/dist/shell/ref-commands.d.ts +32 -0
- package/dist/shell/ref-commands.d.ts.map +1 -0
- package/dist/shell/ref-commands.js +337 -0
- package/dist/shell/ref-commands.js.map +1 -0
- package/dist/shell/ref-resolver.d.ts +199 -0
- package/dist/shell/ref-resolver.d.ts.map +1 -0
- package/dist/shell/ref-resolver.js +423 -0
- package/dist/shell/ref-resolver.js.map +1 -0
- package/dist/shell/repl.d.ts +18 -0
- package/dist/shell/repl.d.ts.map +1 -1
- package/dist/shell/repl.js +111 -6
- package/dist/shell/repl.js.map +1 -1
- package/dist/shell/router-commands.d.ts +9 -1
- package/dist/shell/router-commands.d.ts.map +1 -1
- package/dist/shell/router-commands.js +139 -2
- package/dist/shell/router-commands.js.map +1 -1
- package/dist/shell/tool-commands.d.ts +7 -1
- package/dist/shell/tool-commands.d.ts.map +1 -1
- package/dist/shell/tool-commands.js +187 -5
- package/dist/shell/tool-commands.js.map +1 -1
- package/dist/shell/types.d.ts +5 -0
- package/dist/shell/types.d.ts.map +1 -1
- package/dist/shell/types.js +6 -0
- package/dist/shell/types.js.map +1 -1
- package/package.json +1 -1
package/dist/db/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAGnC,eAAO,MAAM,gBAAgB,+5FAoF5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,khBAetC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,mlBAsBtC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,ufAiBtC,CAAC;AAGF,eAAO,MAAM,gBAAgB,klBAmB5B,CAAC"}
|
package/dist/db/schema.js
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Database schema definitions and migrations
|
|
3
3
|
* Phase 2.1: Schema version 2 with seq, summary, payload_hash
|
|
4
4
|
* Phase 3.4: Schema version 3 with actor columns, secret_ref_count, actors table
|
|
5
|
+
* Phase 4.1: Schema version 4 with user_refs table for named references
|
|
5
6
|
*/
|
|
6
|
-
export const EVENTS_DB_VERSION =
|
|
7
|
+
export const EVENTS_DB_VERSION = 4;
|
|
7
8
|
export const PROOFS_DB_VERSION = 1;
|
|
8
9
|
// events.db schema (version 3)
|
|
9
10
|
export const EVENTS_DB_SCHEMA = `
|
|
@@ -74,6 +75,22 @@ CREATE TABLE IF NOT EXISTS actors (
|
|
|
74
75
|
|
|
75
76
|
CREATE INDEX IF NOT EXISTS idx_actors_kind ON actors(kind);
|
|
76
77
|
CREATE INDEX IF NOT EXISTS idx_actors_revoked ON actors(revoked_at);
|
|
78
|
+
|
|
79
|
+
-- User refs table (Phase 4.1: named references)
|
|
80
|
+
CREATE TABLE IF NOT EXISTS user_refs (
|
|
81
|
+
name TEXT PRIMARY KEY,
|
|
82
|
+
kind TEXT NOT NULL CHECK(kind IN ('connector', 'session', 'rpc', 'tool_call', 'context')),
|
|
83
|
+
connector TEXT,
|
|
84
|
+
session TEXT,
|
|
85
|
+
rpc TEXT,
|
|
86
|
+
proto TEXT,
|
|
87
|
+
level TEXT,
|
|
88
|
+
captured_at TEXT NOT NULL,
|
|
89
|
+
created_at TEXT NOT NULL
|
|
90
|
+
);
|
|
91
|
+
|
|
92
|
+
CREATE INDEX IF NOT EXISTS idx_user_refs_kind ON user_refs(kind);
|
|
93
|
+
CREATE INDEX IF NOT EXISTS idx_user_refs_created ON user_refs(created_at);
|
|
77
94
|
`;
|
|
78
95
|
/**
|
|
79
96
|
* Migration from version 1 to version 2
|
|
@@ -122,6 +139,28 @@ CREATE INDEX IF NOT EXISTS idx_actors_kind ON actors(kind);
|
|
|
122
139
|
|
|
123
140
|
CREATE INDEX IF NOT EXISTS idx_actors_revoked ON actors(revoked_at);
|
|
124
141
|
`;
|
|
142
|
+
/**
|
|
143
|
+
* Migration from version 3 to version 4
|
|
144
|
+
* Phase 4.1: Adds user_refs table for named references
|
|
145
|
+
*/
|
|
146
|
+
export const EVENTS_DB_MIGRATION_3_TO_4 = `
|
|
147
|
+
-- Create user_refs table for named references
|
|
148
|
+
CREATE TABLE IF NOT EXISTS user_refs (
|
|
149
|
+
name TEXT PRIMARY KEY,
|
|
150
|
+
kind TEXT NOT NULL CHECK(kind IN ('connector', 'session', 'rpc', 'tool_call', 'context')),
|
|
151
|
+
connector TEXT,
|
|
152
|
+
session TEXT,
|
|
153
|
+
rpc TEXT,
|
|
154
|
+
proto TEXT,
|
|
155
|
+
level TEXT,
|
|
156
|
+
captured_at TEXT NOT NULL,
|
|
157
|
+
created_at TEXT NOT NULL
|
|
158
|
+
);
|
|
159
|
+
|
|
160
|
+
CREATE INDEX IF NOT EXISTS idx_user_refs_kind ON user_refs(kind);
|
|
161
|
+
|
|
162
|
+
CREATE INDEX IF NOT EXISTS idx_user_refs_created ON user_refs(created_at);
|
|
163
|
+
`;
|
|
125
164
|
// proofs.db schema
|
|
126
165
|
export const PROOFS_DB_SCHEMA = `
|
|
127
166
|
-- Proofs table (immutable, never pruned)
|
package/dist/db/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AACnC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC,+BAA+B;AAC/B,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoF/B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;CAezC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBzC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;CAiBzC,CAAC;AAEF,mBAAmB;AACnB,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;CAmB/B,CAAC"}
|
package/dist/db/types.d.ts
CHANGED
|
@@ -76,4 +76,16 @@ export interface ArchivePlan {
|
|
|
76
76
|
raw_json_to_clear: number;
|
|
77
77
|
estimated_savings_mb: number;
|
|
78
78
|
}
|
|
79
|
+
export type RefKind = 'connector' | 'session' | 'rpc' | 'tool_call' | 'context';
|
|
80
|
+
export interface UserRef {
|
|
81
|
+
name: string;
|
|
82
|
+
kind: RefKind;
|
|
83
|
+
connector: string | null;
|
|
84
|
+
session: string | null;
|
|
85
|
+
rpc: string | null;
|
|
86
|
+
proto: string | null;
|
|
87
|
+
level: string | null;
|
|
88
|
+
captured_at: string;
|
|
89
|
+
created_at: string;
|
|
90
|
+
}
|
|
79
91
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/db/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/db/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/db/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
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 type { ShellContext } from './types.js';
|
|
24
|
+
/**
|
|
25
|
+
* Handle 'ref' command
|
|
26
|
+
*/
|
|
27
|
+
export declare function handleRef(args: string[], context: ShellContext, configPath: string, stdinData?: string): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Get ref names for completion
|
|
30
|
+
*/
|
|
31
|
+
export declare function getRefNamesForCompletion(configPath: string): Promise<string[]>;
|
|
32
|
+
//# sourceMappingURL=ref-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ref-commands.d.ts","sourceRoot":"","sources":["../../src/shell/ref-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA+C/C;;GAEG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAoDf;AA4PD;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CASpF"}
|
|
@@ -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":"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"}
|