@snutils/snu 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +156 -0
- package/bin/snu.js +8 -0
- package/dist/cli/format.d.ts +14 -0
- package/dist/cli/format.d.ts.map +1 -0
- package/dist/cli/format.js +231 -0
- package/dist/cli/format.js.map +1 -0
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +296 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/stdin.d.ts +14 -0
- package/dist/cli/stdin.d.ts.map +1 -0
- package/dist/cli/stdin.js +75 -0
- package/dist/cli/stdin.js.map +1 -0
- package/dist/client.d.ts +43 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +350 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/index.d.ts +4 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +185 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/registry.d.ts +5 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +527 -0
- package/dist/registry.js.map +1 -0
- package/dist/server/canonical.d.ts +10 -0
- package/dist/server/canonical.d.ts.map +1 -0
- package/dist/server/canonical.js +72 -0
- package/dist/server/canonical.js.map +1 -0
- package/dist/server/config.d.ts +9 -0
- package/dist/server/config.d.ts.map +1 -0
- package/dist/server/config.js +117 -0
- package/dist/server/config.js.map +1 -0
- package/dist/server/dispatcher.d.ts +32 -0
- package/dist/server/dispatcher.d.ts.map +1 -0
- package/dist/server/dispatcher.js +631 -0
- package/dist/server/dispatcher.js.map +1 -0
- package/dist/server/httpBridge.d.ts +20 -0
- package/dist/server/httpBridge.d.ts.map +1 -0
- package/dist/server/httpBridge.js +219 -0
- package/dist/server/httpBridge.js.map +1 -0
- package/dist/server/pendingRegistry.d.ts +26 -0
- package/dist/server/pendingRegistry.d.ts.map +1 -0
- package/dist/server/pendingRegistry.js +76 -0
- package/dist/server/pendingRegistry.js.map +1 -0
- package/dist/server/policy.d.ts +18 -0
- package/dist/server/policy.d.ts.map +1 -0
- package/dist/server/policy.js +53 -0
- package/dist/server/policy.js.map +1 -0
- package/dist/server/standalone.d.ts +24 -0
- package/dist/server/standalone.d.ts.map +1 -0
- package/dist/server/standalone.js +152 -0
- package/dist/server/standalone.js.map +1 -0
- package/dist/server/wsBridge.d.ts +45 -0
- package/dist/server/wsBridge.d.ts.map +1 -0
- package/dist/server/wsBridge.js +321 -0
- package/dist/server/wsBridge.js.map +1 -0
- package/dist/types.d.ts +123 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VERSION = void 0;
|
|
4
|
+
exports.printHelp = printHelp;
|
|
5
|
+
exports.runCli = runCli;
|
|
6
|
+
const util_1 = require("util");
|
|
7
|
+
const registry_js_1 = require("../registry.js");
|
|
8
|
+
const client_js_1 = require("../client.js");
|
|
9
|
+
const stdin_js_1 = require("./stdin.js");
|
|
10
|
+
const format_js_1 = require("./format.js");
|
|
11
|
+
const index_js_1 = require("../mcp/index.js");
|
|
12
|
+
const standalone_js_1 = require("../server/standalone.js");
|
|
13
|
+
exports.VERSION = '0.1.0';
|
|
14
|
+
function printHelp() {
|
|
15
|
+
console.log(`
|
|
16
|
+
\x1b[1mSN Utils CLI (snu)\x1b[0m — Unified CLI and MCP Bridge for ServiceNow
|
|
17
|
+
|
|
18
|
+
\x1b[1mUSAGE:\x1b[0m
|
|
19
|
+
snu <command> [arguments...] [options...]
|
|
20
|
+
snu --mcp Start Model Context Protocol (MCP) server on stdio
|
|
21
|
+
snu serve [--port <p>] [--ws <p>] Start persistent standalone bridge daemon
|
|
22
|
+
|
|
23
|
+
\x1b[1mCORE COMMANDS:\x1b[0m
|
|
24
|
+
context Show active connection, helper tab, and instance roster
|
|
25
|
+
search <term> Fast GraphQL code search across script tables (Pro)
|
|
26
|
+
schema <table> Inspect table columns, types, references, and choices
|
|
27
|
+
query <table> [query] Query records with encoded query and field projections
|
|
28
|
+
run [script] Execute server-side Background Script and capture output
|
|
29
|
+
|
|
30
|
+
\x1b[1mRECORD & ARTIFACT COMMANDS:\x1b[0m
|
|
31
|
+
record get <table> <sys_id> Fetch a record by sys_id
|
|
32
|
+
record update <table> <sys_id> <f> Update a record field (--value <v>, --file <p>, or stdin)
|
|
33
|
+
record delete <table> <sys_id> Delete a record (--confirm or --dry-run)
|
|
34
|
+
artifact create <table> <name> Create a scriptable artifact (Script Include, etc.)
|
|
35
|
+
|
|
36
|
+
\x1b[1mBROWSER COMMANDS:\x1b[0m
|
|
37
|
+
browser form Read live form table, sys_id, and fields via g_form
|
|
38
|
+
browser set <field> <value> Set live form field value via g_form.setValue
|
|
39
|
+
browser action <action> Trigger form UI action (e.g. save, sysverb_update)
|
|
40
|
+
browser nav <url> Navigate connected tab to URL and wait for load
|
|
41
|
+
screenshot Capture viewport screenshot of active tab
|
|
42
|
+
|
|
43
|
+
\x1b[1mGLOBAL OPTIONS:\x1b[0m
|
|
44
|
+
-j, --json Output strict JSON on stdout for scripting/agents
|
|
45
|
+
-i, --instance <name> Target specific instance folder
|
|
46
|
+
--port-file <path> Explicit path to sn-agent-port.json
|
|
47
|
+
-h, --help Show help
|
|
48
|
+
-v, --version Show version
|
|
49
|
+
`);
|
|
50
|
+
}
|
|
51
|
+
async function runCli(argv = process.argv.slice(2)) {
|
|
52
|
+
// Check for MCP server trigger first
|
|
53
|
+
if (argv.includes('--mcp')) {
|
|
54
|
+
await (0, index_js_1.startMcpServer)();
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (argv.includes('-h') || argv.includes('--help') || argv.length === 0) {
|
|
58
|
+
printHelp();
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (argv.includes('-v') || argv.includes('--version')) {
|
|
62
|
+
console.log(`snu v${exports.VERSION}`);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
let isJsonMode = argv.includes('-j') || argv.includes('--json');
|
|
66
|
+
let instance;
|
|
67
|
+
let portFile;
|
|
68
|
+
// Extract global options and identify the command tokens
|
|
69
|
+
const nonGlobalTokens = [];
|
|
70
|
+
for (let i = 0; i < argv.length; i++) {
|
|
71
|
+
const arg = argv[i];
|
|
72
|
+
if (arg === '-j' || arg === '--json') {
|
|
73
|
+
isJsonMode = true;
|
|
74
|
+
}
|
|
75
|
+
else if (arg === '-i' || arg === '--instance') {
|
|
76
|
+
instance = argv[++i];
|
|
77
|
+
}
|
|
78
|
+
else if (arg.startsWith('--instance=')) {
|
|
79
|
+
instance = arg.slice('--instance='.length);
|
|
80
|
+
}
|
|
81
|
+
else if (arg === '--port-file') {
|
|
82
|
+
portFile = argv[++i];
|
|
83
|
+
}
|
|
84
|
+
else if (arg.startsWith('--port-file=')) {
|
|
85
|
+
portFile = arg.slice('--port-file='.length);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
nonGlobalTokens.push(arg);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (nonGlobalTokens.length === 0) {
|
|
92
|
+
printHelp();
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
// Handle standalone daemon command: snu serve
|
|
96
|
+
if (nonGlobalTokens[0] === 'serve') {
|
|
97
|
+
const standalone = new standalone_js_1.StandaloneBridge({
|
|
98
|
+
cwd: process.cwd(),
|
|
99
|
+
onYield: () => {
|
|
100
|
+
console.log('\n[snu] VS Code requested port handover. Standalone bridge yielded ports.');
|
|
101
|
+
process.exit(0);
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
try {
|
|
105
|
+
const { httpPort, wsPort } = await standalone.start();
|
|
106
|
+
console.log(`\n\x1b[1m\x1b[32m[snu] Standalone Bridge Active\x1b[0m`);
|
|
107
|
+
console.log(` • HTTP API: http://127.0.0.1:${httpPort}/api`);
|
|
108
|
+
console.log(` • WebSocket: ws://127.0.0.1:${wsPort} (connect via SN Utils helper tab)`);
|
|
109
|
+
console.log(`\n\x1b[90mRunning standalone. Press Ctrl+C to stop.\x1b[0m\n`);
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
(0, format_js_1.outputError)(err, false);
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
try {
|
|
118
|
+
// 1. Check for 2-word command matches (e.g. "record get", "artifact create", "browser form")
|
|
119
|
+
let tool = nonGlobalTokens.length >= 2 ? (0, registry_js_1.getToolByCliCommand)(`${nonGlobalTokens[0]} ${nonGlobalTokens[1]}`) : undefined;
|
|
120
|
+
let commandArgOffset = tool ? 2 : 1;
|
|
121
|
+
// 2. If not matched, check 1-word command matches (e.g. "search", "query", "schema", "context")
|
|
122
|
+
if (!tool) {
|
|
123
|
+
tool = (0, registry_js_1.getToolByCliCommand)(nonGlobalTokens[0]);
|
|
124
|
+
}
|
|
125
|
+
if (!tool) {
|
|
126
|
+
throw new client_js_1.ScriptSyncClientError(`Unknown command: ${nonGlobalTokens.join(' ')}. Run 'snu --help' for usage.`, 'E_UNKNOWN_COMMAND');
|
|
127
|
+
}
|
|
128
|
+
const commandArgs = nonGlobalTokens.slice(commandArgOffset);
|
|
129
|
+
// Prepare parseArgs options schema from tool definition
|
|
130
|
+
const optionsConfig = {
|
|
131
|
+
json: { type: 'boolean', short: 'j' },
|
|
132
|
+
instance: { type: 'string', short: 'i' },
|
|
133
|
+
'port-file': { type: 'string' },
|
|
134
|
+
};
|
|
135
|
+
if (tool.cliOptions) {
|
|
136
|
+
for (const [optName, optDef] of Object.entries(tool.cliOptions)) {
|
|
137
|
+
optionsConfig[optName] = {
|
|
138
|
+
type: optDef.type,
|
|
139
|
+
short: optDef.short,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
const parsed = (0, util_1.parseArgs)({
|
|
144
|
+
args: commandArgs,
|
|
145
|
+
options: optionsConfig,
|
|
146
|
+
allowPositionals: true,
|
|
147
|
+
strict: false,
|
|
148
|
+
});
|
|
149
|
+
const positionals = parsed.positionals;
|
|
150
|
+
const values = parsed.values;
|
|
151
|
+
const inputData = {
|
|
152
|
+
instance: instance || values.instance,
|
|
153
|
+
...values,
|
|
154
|
+
};
|
|
155
|
+
// Subcommand-specific positional argument mapping & validation
|
|
156
|
+
switch (tool.cliCommand) {
|
|
157
|
+
case 'context':
|
|
158
|
+
break;
|
|
159
|
+
case 'search':
|
|
160
|
+
if (!positionals[0])
|
|
161
|
+
throw new client_js_1.ScriptSyncClientError('Missing required search term: snu search <term>', 'E_INVALID_PARAMS');
|
|
162
|
+
inputData.term = positionals.join(' ');
|
|
163
|
+
break;
|
|
164
|
+
case 'schema':
|
|
165
|
+
if (!positionals[0])
|
|
166
|
+
throw new client_js_1.ScriptSyncClientError('Missing required table: snu schema <table>', 'E_INVALID_PARAMS');
|
|
167
|
+
inputData.table = positionals[0];
|
|
168
|
+
break;
|
|
169
|
+
case 'query':
|
|
170
|
+
if (!positionals[0])
|
|
171
|
+
throw new client_js_1.ScriptSyncClientError('Missing required table: snu query <table> [query]', 'E_INVALID_PARAMS');
|
|
172
|
+
inputData.table = positionals[0];
|
|
173
|
+
inputData.query = positionals.slice(1).join(' ') || values.query;
|
|
174
|
+
break;
|
|
175
|
+
case 'record get':
|
|
176
|
+
if (!positionals[0] || !positionals[1]) {
|
|
177
|
+
throw new client_js_1.ScriptSyncClientError('Usage: snu record get <table> <sys_id>', 'E_INVALID_PARAMS');
|
|
178
|
+
}
|
|
179
|
+
inputData.table = positionals[0];
|
|
180
|
+
inputData.sys_id = positionals[1];
|
|
181
|
+
break;
|
|
182
|
+
case 'artifact create':
|
|
183
|
+
if (!positionals[0] || !positionals[1]) {
|
|
184
|
+
throw new client_js_1.ScriptSyncClientError('Usage: snu artifact create <table> <name>', 'E_INVALID_PARAMS');
|
|
185
|
+
}
|
|
186
|
+
inputData.table = positionals[0];
|
|
187
|
+
inputData.name = positionals[1];
|
|
188
|
+
break;
|
|
189
|
+
case 'record update':
|
|
190
|
+
if (positionals.length < 2) {
|
|
191
|
+
throw new client_js_1.ScriptSyncClientError('Usage: snu record update <table> <sys_id> <field> (--value <v> | --file <path> | stdin)', 'E_INVALID_PARAMS');
|
|
192
|
+
}
|
|
193
|
+
inputData.table = positionals[0];
|
|
194
|
+
inputData.sys_id = positionals[1];
|
|
195
|
+
// If 3rd positional is given (e.g. "short_description" or "short_description=foo")
|
|
196
|
+
if (positionals[2]) {
|
|
197
|
+
const rawFieldToken = positionals[2];
|
|
198
|
+
if (rawFieldToken.includes('=') && values.value === undefined && values.file === undefined) {
|
|
199
|
+
const eqIdx = rawFieldToken.indexOf('=');
|
|
200
|
+
inputData.field = rawFieldToken.slice(0, eqIdx);
|
|
201
|
+
inputData.content = rawFieldToken.slice(eqIdx + 1);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
inputData.field = rawFieldToken;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (inputData.content === undefined) {
|
|
208
|
+
inputData.content = await (0, stdin_js_1.resolveContentInput)({
|
|
209
|
+
value: values.value,
|
|
210
|
+
filePath: values.file,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
if (!inputData.field) {
|
|
214
|
+
throw new client_js_1.ScriptSyncClientError('Missing field name to update', 'E_INVALID_PARAMS');
|
|
215
|
+
}
|
|
216
|
+
if (inputData.content === undefined) {
|
|
217
|
+
throw new client_js_1.ScriptSyncClientError('Missing new field content: provide --value <v>, --file <path>, or pipe via stdin', 'E_INVALID_PARAMS');
|
|
218
|
+
}
|
|
219
|
+
break;
|
|
220
|
+
case 'record delete':
|
|
221
|
+
if (!positionals[0] || !positionals[1]) {
|
|
222
|
+
throw new client_js_1.ScriptSyncClientError('Usage: snu record delete <table> <sys_id> [--confirm] [--dry-run]', 'E_INVALID_PARAMS');
|
|
223
|
+
}
|
|
224
|
+
inputData.table = positionals[0];
|
|
225
|
+
inputData.sys_id = positionals[1];
|
|
226
|
+
break;
|
|
227
|
+
case 'run':
|
|
228
|
+
const positionalScript = positionals.length > 0 ? positionals.join(' ') : undefined;
|
|
229
|
+
inputData.script = await (0, stdin_js_1.resolveContentInput)({
|
|
230
|
+
value: positionalScript,
|
|
231
|
+
filePath: values.file,
|
|
232
|
+
});
|
|
233
|
+
if (!inputData.script) {
|
|
234
|
+
throw new client_js_1.ScriptSyncClientError('Usage: snu run [script] [--file <path>] or pipe via stdin', 'E_INVALID_PARAMS');
|
|
235
|
+
}
|
|
236
|
+
break;
|
|
237
|
+
case 'browser form':
|
|
238
|
+
if (values.fields) {
|
|
239
|
+
inputData.fields = String(values.fields).split(',').map((f) => f.trim()).filter(Boolean);
|
|
240
|
+
}
|
|
241
|
+
break;
|
|
242
|
+
case 'browser set':
|
|
243
|
+
if (!positionals[0] || positionals[1] === undefined) {
|
|
244
|
+
throw new client_js_1.ScriptSyncClientError('Usage: snu browser set <field> <value>', 'E_INVALID_PARAMS');
|
|
245
|
+
}
|
|
246
|
+
inputData.field = positionals[0];
|
|
247
|
+
inputData.value = positionals.slice(1).join(' ');
|
|
248
|
+
break;
|
|
249
|
+
case 'browser action':
|
|
250
|
+
if (!positionals[0]) {
|
|
251
|
+
throw new client_js_1.ScriptSyncClientError('Usage: snu browser action <action>', 'E_INVALID_PARAMS');
|
|
252
|
+
}
|
|
253
|
+
inputData.uiAction = positionals[0];
|
|
254
|
+
break;
|
|
255
|
+
case 'browser nav':
|
|
256
|
+
if (!positionals[0]) {
|
|
257
|
+
throw new client_js_1.ScriptSyncClientError('Usage: snu browser nav <url>', 'E_INVALID_PARAMS');
|
|
258
|
+
}
|
|
259
|
+
inputData.url = positionals[0];
|
|
260
|
+
break;
|
|
261
|
+
case 'screenshot':
|
|
262
|
+
if (values.url)
|
|
263
|
+
inputData.url = values.url;
|
|
264
|
+
if (values.tab)
|
|
265
|
+
inputData.tabId = parseInt(String(values.tab), 10);
|
|
266
|
+
if (!inputData.url && inputData.tabId === undefined) {
|
|
267
|
+
// If neither provided, default to matching ServiceNow tab
|
|
268
|
+
inputData.url = 'https://*.service-now.com/*';
|
|
269
|
+
}
|
|
270
|
+
break;
|
|
271
|
+
}
|
|
272
|
+
// Execute through Client
|
|
273
|
+
const client = new client_js_1.ScriptSyncClient({ portFile, cwd: process.cwd() });
|
|
274
|
+
let result;
|
|
275
|
+
if (tool.agentCommand === 'get_context') {
|
|
276
|
+
result = await client.getContext(inputData.instance);
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
const mapped = tool.mapInput(inputData);
|
|
280
|
+
const resp = await client.execute(mapped);
|
|
281
|
+
result = resp.result;
|
|
282
|
+
}
|
|
283
|
+
// Output Result
|
|
284
|
+
if (isJsonMode) {
|
|
285
|
+
(0, format_js_1.outputJson)(result);
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
process.stdout.write((0, format_js_1.formatHumanOutput)(tool.agentCommand, result));
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
catch (err) {
|
|
292
|
+
(0, format_js_1.outputError)(err, isJsonMode);
|
|
293
|
+
process.exit(1);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read all text from process.stdin asynchronously.
|
|
3
|
+
*/
|
|
4
|
+
export declare function readStdin(): Promise<string>;
|
|
5
|
+
/**
|
|
6
|
+
* Resolve content from either direct string, local file path, or stdin.
|
|
7
|
+
* Strictly rejects conflicting sources (e.g. both value and file provided).
|
|
8
|
+
*/
|
|
9
|
+
export declare function resolveContentInput(options: {
|
|
10
|
+
value?: string;
|
|
11
|
+
filePath?: string;
|
|
12
|
+
allowStdin?: boolean;
|
|
13
|
+
}): Promise<string | undefined>;
|
|
14
|
+
//# sourceMappingURL=stdin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdin.d.ts","sourceRoot":"","sources":["../../src/cli/stdin.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAOjD;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAwB9B"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.readStdin = readStdin;
|
|
37
|
+
exports.resolveContentInput = resolveContentInput;
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
/**
|
|
41
|
+
* Read all text from process.stdin asynchronously.
|
|
42
|
+
*/
|
|
43
|
+
async function readStdin() {
|
|
44
|
+
const chunks = [];
|
|
45
|
+
return new Promise((resolve, reject) => {
|
|
46
|
+
process.stdin.on('data', (chunk) => chunks.push(Buffer.from(chunk)));
|
|
47
|
+
process.stdin.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
|
|
48
|
+
process.stdin.on('error', reject);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Resolve content from either direct string, local file path, or stdin.
|
|
53
|
+
* Strictly rejects conflicting sources (e.g. both value and file provided).
|
|
54
|
+
*/
|
|
55
|
+
async function resolveContentInput(options) {
|
|
56
|
+
const { value, filePath, allowStdin = true } = options;
|
|
57
|
+
if (value !== undefined && filePath !== undefined) {
|
|
58
|
+
throw new Error('Conflicting arguments: provide either a direct value or --file <path>, not both.');
|
|
59
|
+
}
|
|
60
|
+
if (value !== undefined) {
|
|
61
|
+
return value;
|
|
62
|
+
}
|
|
63
|
+
if (filePath !== undefined) {
|
|
64
|
+
const resolved = path.resolve(process.cwd(), filePath);
|
|
65
|
+
if (!fs.existsSync(resolved)) {
|
|
66
|
+
throw new Error(`File not found: ${resolved}`);
|
|
67
|
+
}
|
|
68
|
+
return fs.readFileSync(resolved, 'utf8');
|
|
69
|
+
}
|
|
70
|
+
if (allowStdin && !process.stdin.isTTY) {
|
|
71
|
+
return await readStdin();
|
|
72
|
+
}
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=stdin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdin.js","sourceRoot":"","sources":["../../src/cli/stdin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,8BAOC;AAMD,kDA4BC;AA/CD,uCAAyB;AACzB,2CAA6B;AAE7B;;GAEG;AACI,KAAK,UAAU,SAAS;IAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,mBAAmB,CAAC,OAIzC;IACC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAEvD,IAAI,KAAK,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;IACtG,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,UAAU,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACvC,OAAO,MAAM,SAAS,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { AgentResponse, DiscoveryOptions, DiscoveryResult, HealthResponse, MappedCommand } from './types.js';
|
|
2
|
+
export declare const MIN_API_VERSION = 7;
|
|
3
|
+
export declare const DEFAULT_COMMAND_TIMEOUT_MS = 70000;
|
|
4
|
+
export declare const REVIEWED_COMMAND_TIMEOUT_MS = 310000;
|
|
5
|
+
export declare const HEALTH_CHECK_TIMEOUT_MS = 1500;
|
|
6
|
+
export declare class ScriptSyncClientError extends Error {
|
|
7
|
+
code?: string | undefined;
|
|
8
|
+
status?: number | undefined;
|
|
9
|
+
details?: any | undefined;
|
|
10
|
+
constructor(message: string, code?: string | undefined, status?: number | undefined, details?: any | undefined);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Global port file path (~/.sn-scriptsync/agent-port.json).
|
|
14
|
+
* Written when a Pro/Trial/Enterprise license is connected in the browser.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getGlobalPortFilePath(): string;
|
|
17
|
+
/**
|
|
18
|
+
* Walk up directory tree from startDir looking for .vscode/sn-agent-port.json.
|
|
19
|
+
*/
|
|
20
|
+
export declare function findWorkspacePortFile(startDir: string): string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Discover the active ScriptSync bridge port and token using deterministic precedence.
|
|
23
|
+
*/
|
|
24
|
+
export declare function discoverBridge(options?: DiscoveryOptions): Promise<DiscoveryResult>;
|
|
25
|
+
/**
|
|
26
|
+
* Probe GET /api/health with a short timeout.
|
|
27
|
+
*/
|
|
28
|
+
export declare function checkHealth(port: number, expectedPid?: number): Promise<HealthResponse>;
|
|
29
|
+
/**
|
|
30
|
+
* ScriptSync Client for sending typed commands to the bridge.
|
|
31
|
+
*/
|
|
32
|
+
export declare class ScriptSyncClient {
|
|
33
|
+
private options?;
|
|
34
|
+
private discoveryResult?;
|
|
35
|
+
constructor(options?: DiscoveryOptions | undefined);
|
|
36
|
+
getDiscovery(): Promise<DiscoveryResult>;
|
|
37
|
+
execute<T = any>(mapped: MappedCommand, timeoutMs?: number): Promise<AgentResponse<T>>;
|
|
38
|
+
/**
|
|
39
|
+
* Composite context fetcher for `snu context` / `snu_get_context`
|
|
40
|
+
*/
|
|
41
|
+
getContext(instance?: string): Promise<Record<string, any>>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,aAAa,EAEb,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,eAAO,MAAM,2BAA2B,SAAU,CAAC;AACnD,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAE7C,qBAAa,qBAAsB,SAAQ,KAAK;IAGrC,IAAI,CAAC,EAAE,MAAM;IACb,MAAM,CAAC,EAAE,MAAM;IACf,OAAO,CAAC,EAAE,GAAG;gBAHpB,OAAO,EAAE,MAAM,EACR,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,OAAO,CAAC,EAAE,GAAG,YAAA;CAKvB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAc1E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CA+C7F;AAiDD;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAoC7F;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAGf,OAAO,CAAC,OAAO,CAAC;IAF5B,OAAO,CAAC,eAAe,CAAC,CAAkB;gBAEtB,OAAO,CAAC,EAAE,gBAAgB,YAAA;IAExC,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC;IAOxC,OAAO,CAAC,CAAC,GAAG,GAAG,EACnB,MAAM,EAAE,aAAa,EACrB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAsF5B;;OAEG;IACG,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CA2DlE"}
|