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.
- 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/inscribe-commands.d.ts +32 -0
- package/dist/shell/inscribe-commands.d.ts.map +1 -0
- package/dist/shell/inscribe-commands.js +461 -0
- package/dist/shell/inscribe-commands.js.map +1 -0
- 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 +28 -0
- package/dist/shell/repl.d.ts.map +1 -1
- package/dist/shell/repl.js +170 -6
- package/dist/shell/repl.js.map +1 -1
- package/dist/shell/router-commands.d.ts +18 -1
- package/dist/shell/router-commands.d.ts.map +1 -1
- package/dist/shell/router-commands.js +222 -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 +10 -0
- package/dist/shell/types.d.ts.map +1 -1
- package/dist/shell/types.js +11 -0
- package/dist/shell/types.js.map +1 -1
- package/dist/types/config.d.ts +13 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell inscribe commands (Phase 4.3)
|
|
3
|
+
*
|
|
4
|
+
* Inscribes RPC call details to an external inscribe-mcp server.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* - inscribe @rpc:<id> Inscribe a specific RPC call
|
|
8
|
+
* - inscribe @ref:<name> Inscribe from saved reference
|
|
9
|
+
* - inscribe @last Inscribe the latest RPC call
|
|
10
|
+
* - show @rpc:<id> --json | inscribe Inscribe from piped JSON
|
|
11
|
+
*
|
|
12
|
+
* Options:
|
|
13
|
+
* - --dry-run Show payload without sending
|
|
14
|
+
* - --json Output receipt as JSON
|
|
15
|
+
*/
|
|
16
|
+
import type { ShellContext } from './types.js';
|
|
17
|
+
/**
|
|
18
|
+
* Redact secrets in an object for inscription
|
|
19
|
+
* Uses existing redactDeep but with "***" as the redaction placeholder
|
|
20
|
+
*
|
|
21
|
+
* @param value - Value to redact
|
|
22
|
+
* @returns Redacted value and count
|
|
23
|
+
*/
|
|
24
|
+
export declare function redactForInscribe(value: unknown): {
|
|
25
|
+
value: unknown;
|
|
26
|
+
count: number;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Handle 'inscribe' command
|
|
30
|
+
*/
|
|
31
|
+
export declare function handleInscribe(args: string[], context: ShellContext, configPath: string, stdinData?: string): Promise<void>;
|
|
32
|
+
//# sourceMappingURL=inscribe-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inscribe-commands.d.ts","sourceRoot":"","sources":["../../src/shell/inscribe-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAiE/C;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CASnF;AAwKD;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,YAAY,EACrB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAqCf"}
|
|
@@ -0,0 +1,461 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell inscribe commands (Phase 4.3)
|
|
3
|
+
*
|
|
4
|
+
* Inscribes RPC call details to an external inscribe-mcp server.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* - inscribe @rpc:<id> Inscribe a specific RPC call
|
|
8
|
+
* - inscribe @ref:<name> Inscribe from saved reference
|
|
9
|
+
* - inscribe @last Inscribe the latest RPC call
|
|
10
|
+
* - show @rpc:<id> --json | inscribe Inscribe from piped JSON
|
|
11
|
+
*
|
|
12
|
+
* Options:
|
|
13
|
+
* - --dry-run Show payload without sending
|
|
14
|
+
* - --json Output receipt as JSON
|
|
15
|
+
*/
|
|
16
|
+
import { printSuccess, printError, printInfo, dimText } from './prompt.js';
|
|
17
|
+
import { ConfigManager } from '../config/index.js';
|
|
18
|
+
import { EventsStore } from '../db/events-store.js';
|
|
19
|
+
import { RefResolver, createRefDataProvider, parseRef, isRef, } from './ref-resolver.js';
|
|
20
|
+
import { getConnector, listTools, callTool, } from '../tools/adapter.js';
|
|
21
|
+
import { redactDeep } from '../secrets/redaction.js';
|
|
22
|
+
/** Default inscriber connector ID */
|
|
23
|
+
const DEFAULT_INSCRIBER_CONNECTOR = 'inscribe';
|
|
24
|
+
/** Default inscriber tool name */
|
|
25
|
+
const DEFAULT_INSCRIBER_TOOL = 'inscribe';
|
|
26
|
+
/** Default inscription type */
|
|
27
|
+
const DEFAULT_INSCRIPTION_TYPE = 'proofscan.rpc';
|
|
28
|
+
/** Custom redaction placeholder for inscribe payloads */
|
|
29
|
+
const INSCRIBE_REDACTED = '***';
|
|
30
|
+
/**
|
|
31
|
+
* Redact secrets in an object for inscription
|
|
32
|
+
* Uses existing redactDeep but with "***" as the redaction placeholder
|
|
33
|
+
*
|
|
34
|
+
* @param value - Value to redact
|
|
35
|
+
* @returns Redacted value and count
|
|
36
|
+
*/
|
|
37
|
+
export function redactForInscribe(value) {
|
|
38
|
+
// Use redactDeep with custom options for "***" placeholder
|
|
39
|
+
const result = redactDeep(value, {
|
|
40
|
+
redactSecretKeys: true,
|
|
41
|
+
redactSecretRefs: true,
|
|
42
|
+
redactedValue: INSCRIBE_REDACTED,
|
|
43
|
+
redactedRef: INSCRIBE_REDACTED,
|
|
44
|
+
});
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Build inscribe payload from RPC data
|
|
49
|
+
*/
|
|
50
|
+
function buildPayload(ref, rpcData) {
|
|
51
|
+
// Parse request/response JSON
|
|
52
|
+
let requestJson = null;
|
|
53
|
+
let responseJson = null;
|
|
54
|
+
if (rpcData.request?.raw_json) {
|
|
55
|
+
try {
|
|
56
|
+
requestJson = JSON.parse(rpcData.request.raw_json);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
requestJson = rpcData.request.raw_json;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (rpcData.response?.raw_json) {
|
|
63
|
+
try {
|
|
64
|
+
responseJson = JSON.parse(rpcData.response.raw_json);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
responseJson = rpcData.response.raw_json;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Build payload
|
|
71
|
+
const rawPayload = {
|
|
72
|
+
ref: {
|
|
73
|
+
kind: ref.kind,
|
|
74
|
+
connector: ref.connector,
|
|
75
|
+
session: ref.session,
|
|
76
|
+
rpc: ref.rpc,
|
|
77
|
+
proto: ref.proto,
|
|
78
|
+
level: ref.level,
|
|
79
|
+
captured_at: ref.captured_at,
|
|
80
|
+
},
|
|
81
|
+
rpc: {
|
|
82
|
+
request: requestJson,
|
|
83
|
+
response: responseJson,
|
|
84
|
+
method: rpcData.rpc.method,
|
|
85
|
+
},
|
|
86
|
+
meta: {
|
|
87
|
+
source: 'proofscan',
|
|
88
|
+
proto: ref.proto || 'mcp',
|
|
89
|
+
captured_at: ref.captured_at || rpcData.rpc.request_ts,
|
|
90
|
+
replay: false,
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
// Redact secrets
|
|
94
|
+
const { value: redactedPayload, count } = redactForInscribe(rawPayload);
|
|
95
|
+
return {
|
|
96
|
+
payload: redactedPayload,
|
|
97
|
+
redactedCount: count,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Build payload from stdin JSON (show --json output)
|
|
102
|
+
*
|
|
103
|
+
* Expected format: RPC detail JSON with request_json/response_json
|
|
104
|
+
*/
|
|
105
|
+
function buildPayloadFromStdin(stdinJson) {
|
|
106
|
+
let parsed;
|
|
107
|
+
try {
|
|
108
|
+
parsed = JSON.parse(stdinJson);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return { error: 'Invalid JSON input' };
|
|
112
|
+
}
|
|
113
|
+
if (!parsed || typeof parsed !== 'object') {
|
|
114
|
+
return { error: 'Input must be a JSON object' };
|
|
115
|
+
}
|
|
116
|
+
const data = parsed;
|
|
117
|
+
// Check if this is RPC detail JSON (has request_json/response_json)
|
|
118
|
+
if (!('request_json' in data)) {
|
|
119
|
+
// Check if it's a RefStruct (only has kind, connector, session, etc.)
|
|
120
|
+
if ('kind' in data && !('rpc' in data && typeof data.rpc === 'object')) {
|
|
121
|
+
return {
|
|
122
|
+
error: 'RefStruct input not supported for inscribe. Use: show @rpc:<id> --json | inscribe',
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
return { error: 'Input must be RPC detail JSON (use: show @rpc:<id> --json)' };
|
|
126
|
+
}
|
|
127
|
+
// Extract required fields
|
|
128
|
+
const rpcId = data.rpc_id;
|
|
129
|
+
const sessionId = data.session_id;
|
|
130
|
+
const connectorId = data.connector_id;
|
|
131
|
+
const method = data.method;
|
|
132
|
+
const requestTs = data.request_ts;
|
|
133
|
+
if (!method) {
|
|
134
|
+
return { error: 'Missing method in RPC detail JSON' };
|
|
135
|
+
}
|
|
136
|
+
// Build ref
|
|
137
|
+
const ref = {
|
|
138
|
+
kind: 'rpc',
|
|
139
|
+
connector: connectorId,
|
|
140
|
+
session: sessionId,
|
|
141
|
+
rpc: rpcId,
|
|
142
|
+
proto: 'mcp',
|
|
143
|
+
captured_at: requestTs || new Date().toISOString(),
|
|
144
|
+
};
|
|
145
|
+
// Build payload
|
|
146
|
+
const rawPayload = {
|
|
147
|
+
ref,
|
|
148
|
+
rpc: {
|
|
149
|
+
request: data.request_json,
|
|
150
|
+
response: data.response_json ?? null,
|
|
151
|
+
method,
|
|
152
|
+
},
|
|
153
|
+
meta: {
|
|
154
|
+
source: 'proofscan',
|
|
155
|
+
proto: 'mcp',
|
|
156
|
+
captured_at: requestTs || new Date().toISOString(),
|
|
157
|
+
replay: false,
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
// Redact secrets
|
|
161
|
+
const { value: redactedPayload, count } = redactForInscribe(rawPayload);
|
|
162
|
+
return {
|
|
163
|
+
payload: redactedPayload,
|
|
164
|
+
redactedCount: count,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Parse inscribe receipt from MCP response
|
|
169
|
+
*
|
|
170
|
+
* inscribe-mcp returns: { content: [{ type: 'text', text: JSON.stringify(result) }] }
|
|
171
|
+
*/
|
|
172
|
+
function parseReceipt(content) {
|
|
173
|
+
if (!content || !Array.isArray(content) || content.length === 0) {
|
|
174
|
+
return { receipt: { success: false }, raw: 'Empty response' };
|
|
175
|
+
}
|
|
176
|
+
const firstItem = content[0];
|
|
177
|
+
if (firstItem?.type !== 'text' || !firstItem.text) {
|
|
178
|
+
return { receipt: { success: false }, raw: JSON.stringify(content) };
|
|
179
|
+
}
|
|
180
|
+
try {
|
|
181
|
+
const parsed = JSON.parse(firstItem.text);
|
|
182
|
+
return { receipt: parsed };
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
return { receipt: { success: false }, raw: firstItem.text };
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Handle 'inscribe' command
|
|
190
|
+
*/
|
|
191
|
+
export async function handleInscribe(args, context, configPath, stdinData) {
|
|
192
|
+
const isJson = args.includes('--json');
|
|
193
|
+
const isDryRun = args.includes('--dry-run');
|
|
194
|
+
const target = args.find(a => !a.startsWith('-'));
|
|
195
|
+
// Handle stdin input (pipe mode)
|
|
196
|
+
if (stdinData) {
|
|
197
|
+
await handleInscribeFromStdin(stdinData, configPath, isJson, isDryRun);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
// Require target reference
|
|
201
|
+
if (!target) {
|
|
202
|
+
printInfo('Usage: inscribe <@ref> [options]');
|
|
203
|
+
printInfo('');
|
|
204
|
+
printInfo('Inscribe RPC call details to blockchain:');
|
|
205
|
+
printInfo(' inscribe @rpc:<id> Inscribe specific RPC');
|
|
206
|
+
printInfo(' inscribe @ref:<name> Inscribe from saved reference');
|
|
207
|
+
printInfo(' inscribe @last Inscribe latest RPC');
|
|
208
|
+
printInfo('');
|
|
209
|
+
printInfo('Pipe mode:');
|
|
210
|
+
printInfo(' show @rpc:<id> --json | inscribe');
|
|
211
|
+
printInfo('');
|
|
212
|
+
printInfo('Options:');
|
|
213
|
+
printInfo(' --dry-run Show payload without sending');
|
|
214
|
+
printInfo(' --json Output receipt as JSON');
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
// Validate target is a reference
|
|
218
|
+
if (!isRef(target)) {
|
|
219
|
+
printError(`Not a valid reference: ${target}`);
|
|
220
|
+
printInfo('Use: @rpc:<id>, @ref:<name>, or @last');
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
await handleInscribeFromRef(target, context, configPath, isJson, isDryRun);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Handle inscribe from reference target
|
|
227
|
+
*/
|
|
228
|
+
async function handleInscribeFromRef(refString, context, configPath, isJson, isDryRun) {
|
|
229
|
+
const manager = new ConfigManager(configPath);
|
|
230
|
+
const eventsStore = new EventsStore(manager.getConfigDir());
|
|
231
|
+
const dataProvider = createRefDataProvider(eventsStore);
|
|
232
|
+
const resolver = new RefResolver(dataProvider);
|
|
233
|
+
// Resolve the reference
|
|
234
|
+
const parsed = parseRef(refString);
|
|
235
|
+
let rpcId;
|
|
236
|
+
let sessionId;
|
|
237
|
+
let connectorId;
|
|
238
|
+
if (parsed.type === 'last') {
|
|
239
|
+
const result = resolver.resolveLast(context);
|
|
240
|
+
if (!result.success || !result.ref) {
|
|
241
|
+
printError(result.error || 'Failed to resolve @last');
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
if (result.ref.kind !== 'rpc' || !result.ref.rpc) {
|
|
245
|
+
printError('@last did not resolve to an RPC call');
|
|
246
|
+
printInfo('Only RPC references can be inscribed. Use: show @rpc:<id> to locate an RPC');
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
rpcId = result.ref.rpc;
|
|
250
|
+
sessionId = result.ref.session;
|
|
251
|
+
connectorId = result.ref.connector;
|
|
252
|
+
}
|
|
253
|
+
else if (parsed.type === 'rpc' && parsed.id) {
|
|
254
|
+
rpcId = parsed.id;
|
|
255
|
+
sessionId = context.session;
|
|
256
|
+
connectorId = context.connector;
|
|
257
|
+
}
|
|
258
|
+
else if (parsed.type === 'ref' && parsed.id) {
|
|
259
|
+
const result = resolver.resolveUserRef(parsed.id);
|
|
260
|
+
if (!result.success || !result.ref) {
|
|
261
|
+
printError(result.error || `Failed to resolve @ref:${parsed.id}`);
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
if (result.ref.kind !== 'rpc' || !result.ref.rpc) {
|
|
265
|
+
printError(`Reference @ref:${parsed.id} is not an RPC reference`);
|
|
266
|
+
printInfo('Only RPC references can be inscribed.');
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
rpcId = result.ref.rpc;
|
|
270
|
+
sessionId = result.ref.session;
|
|
271
|
+
connectorId = result.ref.connector;
|
|
272
|
+
}
|
|
273
|
+
else if (parsed.type === 'session') {
|
|
274
|
+
printError('Cannot inscribe a session directly');
|
|
275
|
+
printInfo('Only RPC references can be inscribed. Hint: use show to locate an RPC, then inscribe @rpc:<id>');
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
printError(`Cannot inscribe from reference: ${refString}`);
|
|
280
|
+
printInfo('Supported: @last, @rpc:<id>, @ref:<name>');
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
// Validate rpcId is set
|
|
284
|
+
if (!rpcId) {
|
|
285
|
+
printError('Failed to resolve RPC ID from reference');
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
// Get RPC data
|
|
289
|
+
const rpcData = eventsStore.getRpcWithEvents(rpcId, sessionId);
|
|
290
|
+
if (!rpcData) {
|
|
291
|
+
printError(`RPC not found: ${rpcId}`);
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
// Build ref structure
|
|
295
|
+
const ref = {
|
|
296
|
+
kind: 'rpc',
|
|
297
|
+
connector: connectorId,
|
|
298
|
+
session: rpcData.rpc.session_id,
|
|
299
|
+
rpc: rpcId,
|
|
300
|
+
proto: context.proto || 'mcp',
|
|
301
|
+
captured_at: rpcData.rpc.request_ts,
|
|
302
|
+
};
|
|
303
|
+
// Build payload
|
|
304
|
+
const { payload, redactedCount } = buildPayload(ref, rpcData);
|
|
305
|
+
console.log();
|
|
306
|
+
printInfo(`Inscribing: ${rpcData.rpc.method}`);
|
|
307
|
+
printInfo(`RPC: ${rpcId.slice(0, 8)}`);
|
|
308
|
+
if (redactedCount > 0) {
|
|
309
|
+
printInfo(`Secrets redacted: ${redactedCount}`);
|
|
310
|
+
}
|
|
311
|
+
if (isDryRun) {
|
|
312
|
+
console.log();
|
|
313
|
+
printInfo('Dry run - payload:');
|
|
314
|
+
console.log(JSON.stringify(payload, null, 2));
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
// Send to inscriber
|
|
318
|
+
await sendToInscriber(payload, configPath, eventsStore, isJson);
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Handle inscribe from stdin JSON
|
|
322
|
+
*/
|
|
323
|
+
async function handleInscribeFromStdin(stdinJson, configPath, isJson, isDryRun) {
|
|
324
|
+
const result = buildPayloadFromStdin(stdinJson);
|
|
325
|
+
if ('error' in result) {
|
|
326
|
+
printError(result.error);
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
|
+
const { payload, redactedCount } = result;
|
|
330
|
+
console.log();
|
|
331
|
+
printInfo(`Inscribing: ${payload.rpc.method}`);
|
|
332
|
+
if (payload.ref.rpc) {
|
|
333
|
+
printInfo(`RPC: ${payload.ref.rpc.slice(0, 8)}`);
|
|
334
|
+
}
|
|
335
|
+
if (redactedCount > 0) {
|
|
336
|
+
printInfo(`Secrets redacted: ${redactedCount}`);
|
|
337
|
+
}
|
|
338
|
+
if (isDryRun) {
|
|
339
|
+
console.log();
|
|
340
|
+
printInfo('Dry run - payload:');
|
|
341
|
+
console.log(JSON.stringify(payload, null, 2));
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
const manager = new ConfigManager(configPath);
|
|
345
|
+
const eventsStore = new EventsStore(manager.getConfigDir());
|
|
346
|
+
await sendToInscriber(payload, configPath, eventsStore, isJson);
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Send payload to inscriber connector
|
|
350
|
+
*/
|
|
351
|
+
async function sendToInscriber(payload, configPath, eventsStore, isJson) {
|
|
352
|
+
const manager = new ConfigManager(configPath);
|
|
353
|
+
const config = await manager.load();
|
|
354
|
+
// Get inscriber config
|
|
355
|
+
const inscriberConfig = config.inscriber || {};
|
|
356
|
+
const inscriberConnectorId = inscriberConfig.connectorId || DEFAULT_INSCRIBER_CONNECTOR;
|
|
357
|
+
const inscriberToolName = inscriberConfig.toolName || DEFAULT_INSCRIBER_TOOL;
|
|
358
|
+
const inscriptionType = inscriberConfig.type || DEFAULT_INSCRIPTION_TYPE;
|
|
359
|
+
// Get inscriber connector
|
|
360
|
+
const connector = await getConnector(configPath, inscriberConnectorId);
|
|
361
|
+
if (!connector) {
|
|
362
|
+
printError(`Inscriber connector not found: ${inscriberConnectorId}`);
|
|
363
|
+
printInfo('Configure inscriber in config file:');
|
|
364
|
+
printInfo(' inscriber:');
|
|
365
|
+
printInfo(' connectorId: inscribe');
|
|
366
|
+
printInfo('Or add a connector with id "inscribe"');
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
if (!connector.enabled) {
|
|
370
|
+
printError(`Inscriber connector is disabled: ${inscriberConnectorId}`);
|
|
371
|
+
printInfo(`Enable it with: pfscan connectors enable --id ${inscriberConnectorId}`);
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
const ctx = {
|
|
375
|
+
connectorId: inscriberConnectorId,
|
|
376
|
+
configDir: manager.getConfigDir(),
|
|
377
|
+
};
|
|
378
|
+
// Check if tool exists
|
|
379
|
+
printInfo('Connecting to inscriber...');
|
|
380
|
+
const toolsResult = await listTools(ctx, connector, { timeout: 30 });
|
|
381
|
+
if (toolsResult.error) {
|
|
382
|
+
printError(`Failed to connect to inscriber: ${toolsResult.error}`);
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
385
|
+
const tool = toolsResult.tools.find(t => t.name === inscriberToolName);
|
|
386
|
+
if (!tool) {
|
|
387
|
+
printError(`Tool not found on inscriber: ${inscriberToolName}`);
|
|
388
|
+
if (toolsResult.tools.length > 0) {
|
|
389
|
+
printInfo('Available tools:');
|
|
390
|
+
for (const t of toolsResult.tools) {
|
|
391
|
+
printInfo(` ${t.name}`);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
// Call inscribe tool
|
|
397
|
+
printInfo('Inscribing...');
|
|
398
|
+
// Record outgoing event (return value intentionally unused - event is persisted)
|
|
399
|
+
eventsStore.saveEvent(toolsResult.sessionId, 'client_to_server', 'request', {
|
|
400
|
+
summary: `inscribe: ${payload.rpc.method}`,
|
|
401
|
+
rawJson: JSON.stringify({
|
|
402
|
+
tool: inscriberToolName,
|
|
403
|
+
args: {
|
|
404
|
+
content: '<payload>',
|
|
405
|
+
type: inscriptionType,
|
|
406
|
+
},
|
|
407
|
+
}),
|
|
408
|
+
});
|
|
409
|
+
const callResult = await callTool(ctx, connector, inscriberToolName, {
|
|
410
|
+
content: JSON.stringify(payload),
|
|
411
|
+
type: inscriptionType,
|
|
412
|
+
});
|
|
413
|
+
if (!callResult.success) {
|
|
414
|
+
printError(`Inscription failed: ${callResult.error}`);
|
|
415
|
+
// Record error response
|
|
416
|
+
eventsStore.saveEvent(callResult.sessionId, 'server_to_client', 'response', {
|
|
417
|
+
summary: `inscribe error: ${callResult.error}`,
|
|
418
|
+
rawJson: JSON.stringify({ error: callResult.error }),
|
|
419
|
+
});
|
|
420
|
+
return;
|
|
421
|
+
}
|
|
422
|
+
// Parse receipt
|
|
423
|
+
const { receipt, raw } = parseReceipt(callResult.content || []);
|
|
424
|
+
// Record success response
|
|
425
|
+
eventsStore.saveEvent(callResult.sessionId, 'server_to_client', 'response', {
|
|
426
|
+
summary: `inscribe ${receipt.success ? 'success' : 'failed'}${receipt.inscription_id ? `: ${receipt.inscription_id}` : ''}`,
|
|
427
|
+
rawJson: JSON.stringify(receipt),
|
|
428
|
+
});
|
|
429
|
+
// Display result
|
|
430
|
+
console.log();
|
|
431
|
+
if (receipt.success) {
|
|
432
|
+
printSuccess('Inscription successful!');
|
|
433
|
+
}
|
|
434
|
+
else {
|
|
435
|
+
printError('Inscription returned non-success status');
|
|
436
|
+
}
|
|
437
|
+
if (isJson) {
|
|
438
|
+
console.log(JSON.stringify(receipt, null, 2));
|
|
439
|
+
}
|
|
440
|
+
else {
|
|
441
|
+
const isTTY = process.stdout.isTTY;
|
|
442
|
+
if (receipt.inscription_id) {
|
|
443
|
+
console.log(`${dimText('Inscription ID:', isTTY)} ${receipt.inscription_id}`);
|
|
444
|
+
}
|
|
445
|
+
if (receipt.verify_url) {
|
|
446
|
+
console.log(`${dimText('Verify URL:', isTTY)} ${receipt.verify_url}`);
|
|
447
|
+
}
|
|
448
|
+
if (raw) {
|
|
449
|
+
console.log(`${dimText('Raw response:', isTTY)} ${raw}`);
|
|
450
|
+
}
|
|
451
|
+
// Show other fields
|
|
452
|
+
for (const [key, value] of Object.entries(receipt)) {
|
|
453
|
+
if (!['success', 'inscription_id', 'verify_url'].includes(key)) {
|
|
454
|
+
console.log(`${dimText(key + ':', isTTY)} ${JSON.stringify(value)}`);
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
console.log();
|
|
459
|
+
printInfo(`Session: ${callResult.sessionId.slice(0, 8)}`);
|
|
460
|
+
}
|
|
461
|
+
//# sourceMappingURL=inscribe-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inscribe-commands.js","sourceRoot":"","sources":["../../src/shell/inscribe-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,QAAQ,EACR,KAAK,GAEN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,SAAS,EACT,QAAQ,GAET,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,qCAAqC;AACrC,MAAM,2BAA2B,GAAG,UAAU,CAAC;AAE/C,kCAAkC;AAClC,MAAM,sBAAsB,GAAG,UAAU,CAAC;AAE1C,+BAA+B;AAC/B,MAAM,wBAAwB,GAAG,eAAe,CAAC;AAEjD,yDAAyD;AACzD,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAmChC;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,2DAA2D;IAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE;QAC/B,gBAAgB,EAAE,IAAI;QACtB,gBAAgB,EAAE,IAAI;QACtB,aAAa,EAAE,iBAAiB;QAChC,WAAW,EAAE,iBAAiB;KAC/B,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CACnB,GAAc,EACd,OAIC;IAED,8BAA8B;IAC9B,IAAI,WAAW,GAAY,IAAI,CAAC;IAChC,IAAI,YAAY,GAAY,IAAI,CAAC;IAEjC,IAAI,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzC,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,MAAM,UAAU,GAAoB;QAClC,GAAG,EAAE;YACH,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,WAAW,EAAE,GAAG,CAAC,WAAW;SAC7B;QACD,GAAG,EAAE;YACH,OAAO,EAAE,WAAW;YACpB,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM;SAC3B;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,KAAK;YACzB,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU;YACtD,MAAM,EAAE,KAAK;SACd;KACF,CAAC;IAEF,iBAAiB;IACjB,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAExE,OAAO;QACL,OAAO,EAAE,eAAkC;QAC3C,aAAa,EAAE,KAAK;KACrB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,SAAiB;IAI9C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,IAAI,GAAG,MAAiC,CAAC;IAE/C,oEAAoE;IACpE,IAAI,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC,EAAE,CAAC;QAC9B,sEAAsE;QACtE,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,EAAE,CAAC;YACvE,OAAO;gBACL,KAAK,EAAE,mFAAmF;aAC3F,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,4DAA4D,EAAE,CAAC;IACjF,CAAC;IAED,0BAA0B;IAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,MAA4B,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAgC,CAAC;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAkC,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,MAA4B,CAAC;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAgC,CAAC;IAExD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAC;IACxD,CAAC;IAED,YAAY;IACZ,MAAM,GAAG,GAAc;QACrB,IAAI,EAAE,KAAK;QACX,SAAS,EAAE,WAAW;QACtB,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACnD,CAAC;IAEF,gBAAgB;IAChB,MAAM,UAAU,GAAoB;QAClC,GAAG;QACH,GAAG,EAAE;YACH,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,QAAQ,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;YACpC,MAAM;SACP;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAClD,MAAM,EAAE,KAAK;SACd;KACF,CAAC;IAEF,iBAAiB;IACjB,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAExE,OAAO;QACL,OAAO,EAAE,eAAkC;QAC3C,aAAa,EAAE,KAAK;KACrB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,OAAkB;IACtC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAqC,CAAC;IACjE,IAAI,SAAS,EAAE,IAAI,KAAK,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;IACvE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,EAAE,OAAO,EAAE,MAAyB,EAAE,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;IAC9D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAc,EACd,OAAqB,EACrB,UAAkB,EAClB,SAAkB;IAElB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAElD,iCAAiC;IACjC,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,uBAAuB,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACvE,OAAO;IACT,CAAC;IAED,2BAA2B;IAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,SAAS,CAAC,kCAAkC,CAAC,CAAC;QAC9C,SAAS,CAAC,EAAE,CAAC,CAAC;QACd,SAAS,CAAC,0CAA0C,CAAC,CAAC;QACtD,SAAS,CAAC,qDAAqD,CAAC,CAAC;QACjE,SAAS,CAAC,6DAA6D,CAAC,CAAC;QACzE,SAAS,CAAC,mDAAmD,CAAC,CAAC;QAC/D,SAAS,CAAC,EAAE,CAAC,CAAC;QACd,SAAS,CAAC,YAAY,CAAC,CAAC;QACxB,SAAS,CAAC,oCAAoC,CAAC,CAAC;QAChD,SAAS,CAAC,EAAE,CAAC,CAAC;QACd,SAAS,CAAC,UAAU,CAAC,CAAC;QACtB,SAAS,CAAC,4DAA4D,CAAC,CAAC;QACxE,SAAS,CAAC,sDAAsD,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IAED,iCAAiC;IACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACnB,UAAU,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;QAC/C,SAAS,CAAC,uCAAuC,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,MAAM,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC7E,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAClC,SAAiB,EACjB,OAAqB,EACrB,UAAkB,EAClB,MAAe,EACf,QAAiB;IAEjB,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,wBAAwB;IACxB,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IACnC,IAAI,KAAyB,CAAC;IAC9B,IAAI,SAA6B,CAAC;IAClC,IAAI,WAA+B,CAAC;IAEpC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACnC,UAAU,CAAC,MAAM,CAAC,KAAK,IAAI,yBAAyB,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACjD,UAAU,CAAC,sCAAsC,CAAC,CAAC;YACnD,SAAS,CAAC,4EAA4E,CAAC,CAAC;YACxF,OAAO;QACT,CAAC;QACD,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QACvB,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QAC/B,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;IACrC,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QAC9C,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;QAClB,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;QAC5B,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IAClC,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACnC,UAAU,CAAC,MAAM,CAAC,KAAK,IAAI,0BAA0B,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACjD,UAAU,CAAC,kBAAkB,MAAM,CAAC,EAAE,0BAA0B,CAAC,CAAC;YAClE,SAAS,CAAC,uCAAuC,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QACD,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QACvB,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QAC/B,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;IACrC,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACrC,UAAU,CAAC,oCAAoC,CAAC,CAAC;QACjD,SAAS,CAAC,gGAAgG,CAAC,CAAC;QAC5G,OAAO;IACT,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,mCAAmC,SAAS,EAAE,CAAC,CAAC;QAC3D,SAAS,CAAC,0CAA0C,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,wBAAwB;IACxB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,UAAU,CAAC,yCAAyC,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,eAAe;IACf,MAAM,OAAO,GAAG,WAAW,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,UAAU,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IAED,sBAAsB;IACtB,MAAM,GAAG,GAAc;QACrB,IAAI,EAAE,KAAK;QACX,SAAS,EAAE,WAAW;QACtB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;QAC/B,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;QAC7B,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;KACpC,CAAC;IAEF,gBAAgB;IAChB,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAE9D,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,SAAS,CAAC,eAAe,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,SAAS,CAAC,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACvC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,SAAS,CAAC,qBAAqB,aAAa,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,oBAAoB;IACpB,MAAM,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,uBAAuB,CACpC,SAAiB,EACjB,UAAkB,EAClB,MAAe,EACf,QAAiB;IAEjB,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAEhD,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QACtB,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IAE1C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,SAAS,CAAC,eAAe,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACpB,SAAS,CAAC,QAAQ,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,SAAS,CAAC,qBAAqB,aAAa,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9C,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,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAC5B,OAAwB,EACxB,UAAkB,EAClB,WAAwB,EACxB,MAAe;IAEf,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IAEpC,uBAAuB;IACvB,MAAM,eAAe,GAAoB,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;IAChE,MAAM,oBAAoB,GAAG,eAAe,CAAC,WAAW,IAAI,2BAA2B,CAAC;IACxF,MAAM,iBAAiB,GAAG,eAAe,CAAC,QAAQ,IAAI,sBAAsB,CAAC;IAC7E,MAAM,eAAe,GAAG,eAAe,CAAC,IAAI,IAAI,wBAAwB,CAAC;IAEzE,0BAA0B;IAC1B,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IACvE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,UAAU,CAAC,kCAAkC,oBAAoB,EAAE,CAAC,CAAC;QACrE,SAAS,CAAC,qCAAqC,CAAC,CAAC;QACjD,SAAS,CAAC,cAAc,CAAC,CAAC;QAC1B,SAAS,CAAC,2BAA2B,CAAC,CAAC;QACvC,SAAS,CAAC,uCAAuC,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACvB,UAAU,CAAC,oCAAoC,oBAAoB,EAAE,CAAC,CAAC;QACvE,SAAS,CAAC,iDAAiD,oBAAoB,EAAE,CAAC,CAAC;QACnF,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAgB;QACvB,WAAW,EAAE,oBAAoB;QACjC,SAAS,EAAE,OAAO,CAAC,YAAY,EAAE;KAClC,CAAC;IAEF,uBAAuB;IACvB,SAAS,CAAC,4BAA4B,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAErE,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;QACtB,UAAU,CAAC,mCAAmC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;IACvE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,UAAU,CAAC,gCAAgC,iBAAiB,EAAE,CAAC,CAAC;QAChE,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,SAAS,CAAC,kBAAkB,CAAC,CAAC;YAC9B,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;gBAClC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,OAAO;IACT,CAAC;IAED,qBAAqB;IACrB,SAAS,CAAC,eAAe,CAAC,CAAC;IAE3B,iFAAiF;IACjF,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE;QAC1E,OAAO,EAAE,aAAa,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;QAC1C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;YACtB,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE;gBACJ,OAAO,EAAE,WAAW;gBACpB,IAAI,EAAE,eAAe;aACtB;SACF,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,iBAAiB,EAAE;QACnE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAChC,IAAI,EAAE,eAAe;KACtB,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,UAAU,CAAC,uBAAuB,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;QAEtD,wBAAwB;QACxB,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,kBAAkB,EAAE,UAAU,EAAE;YAC1E,OAAO,EAAE,mBAAmB,UAAU,CAAC,KAAK,EAAE;YAC9C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC;SACrD,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,gBAAgB;IAChB,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAEhE,0BAA0B;IAC1B,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,kBAAkB,EAAE,UAAU,EAAE;QAC1E,OAAO,EAAE,YAAY,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3H,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KACjC,CAAC,CAAC;IAEH,iBAAiB;IACjB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,YAAY,CAAC,yBAAyB,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,yCAAyC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QACnC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,oBAAoB;QACpB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,CAAC,SAAS,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,SAAS,CAAC,YAAY,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -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"}
|