@serviceme/devtools-cli 0.4.0 → 0.4.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/bridgeServer.js +1 -1
- package/dist/cli.js +75 -20
- package/package.json +3 -3
package/dist/bridgeServer.js
CHANGED
|
@@ -213,7 +213,7 @@ function normalizeServicemeError(error, fallbackCode = "internal_error") {
|
|
|
213
213
|
}
|
|
214
214
|
|
|
215
215
|
// src/version.ts
|
|
216
|
-
var SERVICEME_CLI_VERSION = "0.4.
|
|
216
|
+
var SERVICEME_CLI_VERSION = "0.4.2";
|
|
217
217
|
|
|
218
218
|
// src/bridge/handlers/AuthBridgeHandlers.ts
|
|
219
219
|
var import_auth2 = require("@serviceme/devtools-core/auth");
|
package/dist/cli.js
CHANGED
|
@@ -777,7 +777,7 @@ var readline = __toESM(require("readline"));
|
|
|
777
777
|
|
|
778
778
|
// src/version.ts
|
|
779
779
|
var SERVICEME_CLI_NAME = "serviceme";
|
|
780
|
-
var SERVICEME_CLI_VERSION = "0.4.
|
|
780
|
+
var SERVICEME_CLI_VERSION = "0.4.2";
|
|
781
781
|
|
|
782
782
|
// src/bridge/handlers/AuthBridgeHandlers.ts
|
|
783
783
|
var import_auth3 = require("@serviceme/devtools-core/auth");
|
|
@@ -2264,17 +2264,26 @@ async function runScheduleCommand(parsed) {
|
|
|
2264
2264
|
function requireWorkspace(parsed) {
|
|
2265
2265
|
const wp = getStringFlag(parsed, "workspacePath");
|
|
2266
2266
|
if (!wp) {
|
|
2267
|
-
throw createServicemeError(
|
|
2267
|
+
throw createServicemeError(
|
|
2268
|
+
"invalid_params",
|
|
2269
|
+
"Missing required flag: --workspacePath"
|
|
2270
|
+
);
|
|
2268
2271
|
}
|
|
2269
2272
|
if (!fs3.existsSync(wp)) {
|
|
2270
|
-
throw createServicemeError(
|
|
2273
|
+
throw createServicemeError(
|
|
2274
|
+
"workspace_not_found",
|
|
2275
|
+
`Workspace path does not exist: ${wp}`
|
|
2276
|
+
);
|
|
2271
2277
|
}
|
|
2272
2278
|
return wp;
|
|
2273
2279
|
}
|
|
2274
2280
|
function requireId(parsed) {
|
|
2275
2281
|
const id = getStringFlag(parsed, "id");
|
|
2276
2282
|
if (!id) {
|
|
2277
|
-
throw createServicemeError(
|
|
2283
|
+
throw createServicemeError(
|
|
2284
|
+
"invalid_params",
|
|
2285
|
+
"Missing required flag: --id <task-id>"
|
|
2286
|
+
);
|
|
2278
2287
|
}
|
|
2279
2288
|
return id;
|
|
2280
2289
|
}
|
|
@@ -2295,7 +2304,10 @@ function parsePayload(parsed, taskType) {
|
|
|
2295
2304
|
try {
|
|
2296
2305
|
return JSON.parse(payloadJson);
|
|
2297
2306
|
} catch {
|
|
2298
|
-
throw createServicemeError(
|
|
2307
|
+
throw createServicemeError(
|
|
2308
|
+
"invalid_payload",
|
|
2309
|
+
"Invalid --payload-json: must be valid JSON"
|
|
2310
|
+
);
|
|
2299
2311
|
}
|
|
2300
2312
|
}
|
|
2301
2313
|
switch (taskType) {
|
|
@@ -2344,7 +2356,10 @@ function parsePayload(parsed, taskType) {
|
|
|
2344
2356
|
};
|
|
2345
2357
|
}
|
|
2346
2358
|
default:
|
|
2347
|
-
throw createServicemeError(
|
|
2359
|
+
throw createServicemeError(
|
|
2360
|
+
"invalid_payload",
|
|
2361
|
+
`Unknown task type: ${taskType}`
|
|
2362
|
+
);
|
|
2348
2363
|
}
|
|
2349
2364
|
}
|
|
2350
2365
|
function parseScheduleType(schedule) {
|
|
@@ -2354,7 +2369,9 @@ function parseScheduleType(schedule) {
|
|
|
2354
2369
|
function validateSchedule(schedule) {
|
|
2355
2370
|
const scheduleType = parseScheduleType(schedule);
|
|
2356
2371
|
if (scheduleType === "interval") {
|
|
2357
|
-
const match = /^every\s+(\d+)\s*(s|sec|m|min|h|hr|d|day)s?$/i.exec(
|
|
2372
|
+
const match = /^every\s+(\d+)\s*(s|sec|m|min|h|hr|d|day)s?$/i.exec(
|
|
2373
|
+
schedule
|
|
2374
|
+
);
|
|
2358
2375
|
if (!match) {
|
|
2359
2376
|
throw createServicemeError(
|
|
2360
2377
|
"invalid_schedule",
|
|
@@ -2385,7 +2402,11 @@ function filterFields(obj, fields) {
|
|
|
2385
2402
|
async function handleCreate(parsed) {
|
|
2386
2403
|
const wp = requireWorkspace(parsed);
|
|
2387
2404
|
const name = getStringFlag(parsed, "name");
|
|
2388
|
-
if (!name)
|
|
2405
|
+
if (!name)
|
|
2406
|
+
throw createServicemeError(
|
|
2407
|
+
"invalid_params",
|
|
2408
|
+
"Missing required flag: --name"
|
|
2409
|
+
);
|
|
2389
2410
|
const typeStr = getStringFlag(parsed, "type");
|
|
2390
2411
|
if (!typeStr)
|
|
2391
2412
|
throw createServicemeError(
|
|
@@ -2400,7 +2421,11 @@ async function handleCreate(parsed) {
|
|
|
2400
2421
|
);
|
|
2401
2422
|
}
|
|
2402
2423
|
const schedule = getStringFlag(parsed, "schedule");
|
|
2403
|
-
if (!schedule)
|
|
2424
|
+
if (!schedule)
|
|
2425
|
+
throw createServicemeError(
|
|
2426
|
+
"invalid_params",
|
|
2427
|
+
"Missing required flag: --schedule"
|
|
2428
|
+
);
|
|
2404
2429
|
validateSchedule(schedule);
|
|
2405
2430
|
const payload = parsePayload(parsed, taskType);
|
|
2406
2431
|
const description = getStringFlag(parsed, "description");
|
|
@@ -2466,10 +2491,16 @@ function handleGet(parsed) {
|
|
|
2466
2491
|
const mgr = new import_devtools_core11.TaskConfigManager();
|
|
2467
2492
|
const task = mgr.getTask(id);
|
|
2468
2493
|
if (!task) {
|
|
2469
|
-
throw createServicemeError(
|
|
2494
|
+
throw createServicemeError(
|
|
2495
|
+
"task_not_found",
|
|
2496
|
+
`Task '${id}' does not exist in this workspace`
|
|
2497
|
+
);
|
|
2470
2498
|
}
|
|
2471
2499
|
const fields = getStringFlag(parsed, "fields");
|
|
2472
|
-
const result = filterFields(
|
|
2500
|
+
const result = filterFields(
|
|
2501
|
+
task,
|
|
2502
|
+
fields
|
|
2503
|
+
);
|
|
2473
2504
|
writeSuccess({ task: result });
|
|
2474
2505
|
}
|
|
2475
2506
|
async function handleEdit(parsed) {
|
|
@@ -2478,7 +2509,10 @@ async function handleEdit(parsed) {
|
|
|
2478
2509
|
const mgr = new import_devtools_core11.TaskConfigManager();
|
|
2479
2510
|
const existing = mgr.getTask(id);
|
|
2480
2511
|
if (!existing) {
|
|
2481
|
-
throw createServicemeError(
|
|
2512
|
+
throw createServicemeError(
|
|
2513
|
+
"task_not_found",
|
|
2514
|
+
`Task '${id}' does not exist in this workspace`
|
|
2515
|
+
);
|
|
2482
2516
|
}
|
|
2483
2517
|
const input = {};
|
|
2484
2518
|
const name = getStringFlag(parsed, "name");
|
|
@@ -2500,7 +2534,10 @@ async function handleEdit(parsed) {
|
|
|
2500
2534
|
try {
|
|
2501
2535
|
input.payload = JSON.parse(payloadJson);
|
|
2502
2536
|
} catch {
|
|
2503
|
-
throw createServicemeError(
|
|
2537
|
+
throw createServicemeError(
|
|
2538
|
+
"invalid_payload",
|
|
2539
|
+
"Invalid --payload-json: must be valid JSON"
|
|
2540
|
+
);
|
|
2504
2541
|
}
|
|
2505
2542
|
}
|
|
2506
2543
|
if (getBooleanFlag(parsed, "dry-run")) {
|
|
@@ -2523,7 +2560,10 @@ function handleDelete(parsed) {
|
|
|
2523
2560
|
const mgr = new import_devtools_core11.TaskConfigManager();
|
|
2524
2561
|
const existing = mgr.getTask(id);
|
|
2525
2562
|
if (!existing) {
|
|
2526
|
-
throw createServicemeError(
|
|
2563
|
+
throw createServicemeError(
|
|
2564
|
+
"task_not_found",
|
|
2565
|
+
`Task '${id}' does not exist in this workspace`
|
|
2566
|
+
);
|
|
2527
2567
|
}
|
|
2528
2568
|
if (getBooleanFlag(parsed, "dry-run")) {
|
|
2529
2569
|
writeSuccess({ action: "delete", task: existing });
|
|
@@ -2537,27 +2577,40 @@ function handleToggle(parsed) {
|
|
|
2537
2577
|
const id = requireId(parsed);
|
|
2538
2578
|
const enabledStr = getStringFlag(parsed, "enabled");
|
|
2539
2579
|
if (enabledStr === void 0) {
|
|
2540
|
-
throw createServicemeError(
|
|
2580
|
+
throw createServicemeError(
|
|
2581
|
+
"invalid_params",
|
|
2582
|
+
"Missing required flag: --enabled <true|false>"
|
|
2583
|
+
);
|
|
2541
2584
|
}
|
|
2542
2585
|
const enabled = enabledStr !== "false";
|
|
2543
2586
|
const mgr = new import_devtools_core11.TaskConfigManager();
|
|
2544
2587
|
const existing = mgr.getTask(id);
|
|
2545
2588
|
if (!existing) {
|
|
2546
|
-
throw createServicemeError(
|
|
2589
|
+
throw createServicemeError(
|
|
2590
|
+
"task_not_found",
|
|
2591
|
+
`Task '${id}' does not exist in this workspace`
|
|
2592
|
+
);
|
|
2547
2593
|
}
|
|
2548
2594
|
const task = mgr.toggleTask(id, enabled);
|
|
2549
2595
|
writeSuccess({ task });
|
|
2550
2596
|
}
|
|
2551
2597
|
async function handleTrigger(parsed) {
|
|
2552
|
-
const
|
|
2598
|
+
const _wp = requireWorkspace(parsed);
|
|
2553
2599
|
const id = requireId(parsed);
|
|
2554
2600
|
const mgr = new import_devtools_core11.TaskConfigManager();
|
|
2555
2601
|
const task = mgr.getTask(id);
|
|
2556
2602
|
if (!task) {
|
|
2557
|
-
throw createServicemeError(
|
|
2603
|
+
throw createServicemeError(
|
|
2604
|
+
"task_not_found",
|
|
2605
|
+
`Task '${id}' does not exist in this workspace`
|
|
2606
|
+
);
|
|
2558
2607
|
}
|
|
2559
2608
|
const startedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
2560
|
-
const executionPayload = (0, import_devtools_core11.resolveTaskExecutionPayload)(
|
|
2609
|
+
const executionPayload = (0, import_devtools_core11.resolveTaskExecutionPayload)(
|
|
2610
|
+
task.taskType,
|
|
2611
|
+
task.payload,
|
|
2612
|
+
task.workspace.path
|
|
2613
|
+
);
|
|
2561
2614
|
(0, import_devtools_core11.validateTaskPayload)(task.taskType, executionPayload);
|
|
2562
2615
|
const executor = (0, import_devtools_core11.getExecutor)(task.taskType);
|
|
2563
2616
|
const result = await executor.execute(executionPayload);
|
|
@@ -2582,7 +2635,9 @@ function handleLogs(parsed) {
|
|
|
2582
2635
|
const fields = getStringFlag(parsed, "fields");
|
|
2583
2636
|
const logMgr = new import_devtools_core11.TaskLogManager();
|
|
2584
2637
|
const { logs, total } = logMgr.getLogs({ taskId, limit });
|
|
2585
|
-
const result = logs.map(
|
|
2638
|
+
const result = logs.map(
|
|
2639
|
+
(l) => filterFields(l, fields)
|
|
2640
|
+
);
|
|
2586
2641
|
writeSuccess({ logs: result, total });
|
|
2587
2642
|
}
|
|
2588
2643
|
function writeDescribe(action) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serviceme/devtools-cli",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Unified SERVICEME CLI for automation, project scaffolding, and bridge-based tooling.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"repository": {
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"registry": "https://registry.npmjs.org/"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@serviceme/devtools-core": "0.4.
|
|
43
|
-
"@serviceme/devtools-protocol": "0.4.
|
|
42
|
+
"@serviceme/devtools-core": "0.4.2",
|
|
43
|
+
"@serviceme/devtools-protocol": "0.4.2"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@types/node": "^24",
|