appduct 0.12.0 → 0.14.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 +43 -37
- package/dist/bin.js +102 -37
- package/dist/cli/command-options.d.ts +7 -17
- package/dist/cli/result-types.d.ts +19 -9
- package/dist/cli/routes/daemon/index.js +70 -17
- package/dist/cli/routes/daemon/run.js +288 -50
- package/dist/cli/routes/daemon/start.js +70 -17
- package/dist/cli/routes/daemon/status.js +70 -17
- package/dist/cli/routes/daemon/stop.js +70 -17
- package/dist/cli/routes/doctor.js +70 -17
- package/dist/cli/routes/events/index.d.ts +6 -0
- package/dist/cli/routes/events/index.js +900 -0
- package/dist/cli/routes/events/ls.d.ts +5 -0
- package/dist/cli/routes/events/ls.js +1798 -0
- package/dist/cli/routes/events/shared-options.d.ts +12 -0
- package/dist/cli/routes/events/shared-options.js +102 -0
- package/dist/cli/routes/events/since.d.ts +6 -0
- package/dist/cli/routes/events/since.js +2034 -0
- package/dist/cli/routes/events/tail.d.ts +6 -0
- package/dist/cli/routes/{events.js → events/tail.js} +235 -163
- package/dist/cli/routes/init.js +72 -19
- package/dist/cli/routes/keygen.js +70 -17
- package/dist/cli/routes/mcp.js +289 -166
- package/dist/cli/routes/sessions/index.d.ts +7 -0
- package/dist/cli/routes/sessions/index.js +900 -0
- package/dist/cli/routes/sessions/link.d.ts +4 -0
- package/dist/cli/routes/{link.js → sessions/link.js} +71 -18
- package/dist/cli/routes/sessions/ls.d.ts +4 -0
- package/dist/cli/routes/{ls.js → sessions/ls.js} +71 -18
- package/dist/cli/routes/sessions/revoke.d.ts +4 -0
- package/dist/cli/routes/{revoke.js → sessions/revoke.js} +72 -19
- package/dist/cli/routes/tools/call.d.ts +4 -0
- package/dist/cli/routes/{invoke.js → tools/call.js} +73 -20
- package/dist/cli/routes/tools/describe.d.ts +6 -0
- package/dist/cli/routes/tools/describe.js +1894 -0
- package/dist/cli/routes/tools/index.d.ts +6 -0
- package/dist/cli/routes/tools/index.js +900 -0
- package/dist/cli/routes/tools/ls.d.ts +4 -0
- package/dist/cli/routes/{tools.js → tools/ls.js} +98 -74
- package/dist/cli/routes/tools/shared-options.d.ts +16 -0
- package/dist/cli/routes/tools/shared-options.js +122 -0
- package/dist/client/app-client.d.ts +96 -37
- package/dist/client/index.d.ts +3 -2
- package/dist/client/index.js +178 -138
- package/dist/commands/events-ls.d.ts +21 -0
- package/dist/commands/events.d.ts +31 -14
- package/dist/commands/invoke.d.ts +1 -1
- package/dist/commands/link.d.ts +1 -1
- package/dist/commands/ls.d.ts +1 -1
- package/dist/commands/revoke.d.ts +1 -1
- package/dist/commands/tools.d.ts +12 -13
- package/dist/daemon/calls.d.ts +3 -1
- package/dist/daemon/config.d.ts +1 -1
- package/dist/daemon/event-bus.d.ts +42 -0
- package/dist/daemon/registry.d.ts +20 -12
- package/dist/daemon/rpc-errors.d.ts +4 -1
- package/dist/daemon/sessions.d.ts +4 -2
- package/dist/errors.d.ts +1 -1
- package/dist/events/index.d.ts +60 -0
- package/dist/index.js +114 -40
- package/dist/link.d.ts +1 -1
- package/dist/mcp/app-tools.d.ts +22 -2
- package/dist/mcp/connect-tool.d.ts +1 -1
- package/dist/mcp/events-tool.d.ts +67 -27
- package/dist/native-scheme.d.ts +1 -1
- package/dist/output.d.ts +29 -6
- package/dist/rpc/client.d.ts +1 -1
- package/dist/scheme.d.ts +4 -4
- package/package.json +2 -2
- package/dist/cli/routes/events.d.ts +0 -3
- package/dist/cli/routes/invoke.d.ts +0 -3
- package/dist/cli/routes/link.d.ts +0 -3
- package/dist/cli/routes/ls.d.ts +0 -3
- package/dist/cli/routes/revoke.d.ts +0 -3
- package/dist/cli/routes/tools.d.ts +0 -3
|
@@ -310,6 +310,7 @@ var formatJson = (value, flags) => {
|
|
|
310
310
|
import pc from "picocolors";
|
|
311
311
|
import {
|
|
312
312
|
formatAgentWebSocketUrl,
|
|
313
|
+
renderEventSignature,
|
|
313
314
|
renderToolSignature,
|
|
314
315
|
summarizeToolDescription
|
|
315
316
|
} from "@appduct/shared";
|
|
@@ -405,6 +406,13 @@ var formatDevice = (device) => {
|
|
|
405
406
|
const label = parts.length > 0 ? parts.join(" ") : "unknown device";
|
|
406
407
|
return device.os ? `${label} (${device.os})` : label;
|
|
407
408
|
};
|
|
409
|
+
var SUSPEND_REASON_LABELS = {
|
|
410
|
+
app_backgrounded: "app in background",
|
|
411
|
+
connection_lost: "connection lost"
|
|
412
|
+
};
|
|
413
|
+
var formatSessionState = (session) => {
|
|
414
|
+
return session.suspendReason ? `${session.state} (${SUSPEND_REASON_LABELS[session.suspendReason]})` : session.state;
|
|
415
|
+
};
|
|
408
416
|
var renderLsData = (colors, data, now) => {
|
|
409
417
|
if (data.length === 0) {
|
|
410
418
|
return [colors.dim("Sessions"), " No Appduct sessions are registered."];
|
|
@@ -413,7 +421,7 @@ var renderLsData = (colors, data, now) => {
|
|
|
413
421
|
const headers = ["Alias", "State", "Device", "Tools", "Age"];
|
|
414
422
|
const rows = data.map((session) => [
|
|
415
423
|
session.alias,
|
|
416
|
-
session
|
|
424
|
+
formatSessionState(session),
|
|
417
425
|
formatDevice(session.device),
|
|
418
426
|
String(session.toolCount),
|
|
419
427
|
formatAge(session.claimedAt ?? session.createdAt, nowIso)
|
|
@@ -427,9 +435,6 @@ var renderLsData = (colors, data, now) => {
|
|
|
427
435
|
...rows.map((row) => ` ${row.map((cell, index) => cell.padEnd(widths[index])).join(" ")}`)
|
|
428
436
|
];
|
|
429
437
|
};
|
|
430
|
-
var isToolsListing = (data) => {
|
|
431
|
-
return typeof data === "object" && data !== null && Array.isArray(data.tools);
|
|
432
|
-
};
|
|
433
438
|
var isToolGroupsListing = (data) => {
|
|
434
439
|
return typeof data === "object" && data !== null && Array.isArray(data.groups) && !Array.isArray(data.tools);
|
|
435
440
|
};
|
|
@@ -447,7 +452,7 @@ var renderEmptyToolsLine = (data) => {
|
|
|
447
452
|
}
|
|
448
453
|
if (data.group !== void 0) {
|
|
449
454
|
const match = data.filter === void 0 ? "" : ` match ${JSON.stringify(data.filter)}`;
|
|
450
|
-
return ` No tools in group ${JSON.stringify(data.group)}${match}. Run \`appduct tools --groups\` to see the session's groups.`;
|
|
455
|
+
return ` No tools in group ${JSON.stringify(data.group)}${match}. Run \`appduct tools ls --groups\` to see the session's groups.`;
|
|
451
456
|
}
|
|
452
457
|
return data.filter === void 0 ? " No tools registered." : ` No tools match ${JSON.stringify(data.filter)}.`;
|
|
453
458
|
};
|
|
@@ -529,7 +534,7 @@ var renderToolSummaryTable = (colors, data) => {
|
|
|
529
534
|
...grouped ? renderGroupedToolLines(colors, data.tools) : data.tools.flatMap((tool) => renderToolSummaryLines(tool, " ")),
|
|
530
535
|
...renderTruncationLine(data),
|
|
531
536
|
"",
|
|
532
|
-
"Run `appduct tools <name>` for a tool's full schema."
|
|
537
|
+
"Run `appduct tools describe <name>` for a tool's full schema."
|
|
533
538
|
];
|
|
534
539
|
};
|
|
535
540
|
var renderToolDetail = (colors, tool, flags) => {
|
|
@@ -581,18 +586,62 @@ var renderToolGroups = (colors, data) => {
|
|
|
581
586
|
colors.green("Groups"),
|
|
582
587
|
...data.groups.map((entry) => ` ${label(entry).padEnd(width)} ${String(entry.total).padStart(countWidth)}`),
|
|
583
588
|
"",
|
|
584
|
-
`${data.total} tool${data.total === 1 ? "" : "s"} in total. ` + (hasAnyGroup(data.groups) ? "Run `appduct tools --group <name>` to list one group's tools." : "No tool declares a group.")
|
|
589
|
+
`${data.total} tool${data.total === 1 ? "" : "s"} in total. ` + (hasAnyGroup(data.groups) ? "Run `appduct tools ls --group <name>` to list one group's tools." : "No tool declares a group.")
|
|
585
590
|
];
|
|
586
591
|
};
|
|
587
|
-
var
|
|
592
|
+
var renderToolsListData = (colors, data, flags, full) => {
|
|
588
593
|
if (isToolGroupsListing(data)) {
|
|
589
594
|
return renderToolGroups(colors, data);
|
|
590
595
|
}
|
|
591
|
-
if (!isToolsListing(data)) {
|
|
592
|
-
return renderToolDetail(colors, data, flags);
|
|
593
|
-
}
|
|
594
596
|
return full ? renderToolsFullListing(colors, data, flags) : renderToolSummaryTable(colors, data);
|
|
595
597
|
};
|
|
598
|
+
var renderEventsTruncationLine = (data) => {
|
|
599
|
+
const offset = data.offset ?? 0;
|
|
600
|
+
if (data.events.length >= data.total) {
|
|
601
|
+
return [];
|
|
602
|
+
}
|
|
603
|
+
return [
|
|
604
|
+
"",
|
|
605
|
+
`Showing ${data.events.length} of ${data.total} events (offset ${offset}). Narrow with --name <glob> or page with --offset <n>.`
|
|
606
|
+
];
|
|
607
|
+
};
|
|
608
|
+
var renderEventsListData = (colors, data, flags) => {
|
|
609
|
+
const [only] = data.events;
|
|
610
|
+
if (data.name !== void 0 && !data.name.includes("*") && only !== void 0) {
|
|
611
|
+
return renderFields(
|
|
612
|
+
colors.green(`Event: ${only.name}`),
|
|
613
|
+
[
|
|
614
|
+
["Signature", renderEventSignature(only)],
|
|
615
|
+
["Description", only.description],
|
|
616
|
+
["Payload schema", only.payload_schema]
|
|
617
|
+
],
|
|
618
|
+
flags
|
|
619
|
+
);
|
|
620
|
+
}
|
|
621
|
+
if (data.events.length === 0 && data.total > 0) {
|
|
622
|
+
return [
|
|
623
|
+
colors.green("Events"),
|
|
624
|
+
` No events at offset ${data.offset ?? 0}; ${data.total} matching event${data.total === 1 ? "" : "s"} in total.`
|
|
625
|
+
];
|
|
626
|
+
}
|
|
627
|
+
if (data.events.length === 0) {
|
|
628
|
+
return [
|
|
629
|
+
colors.green("Events"),
|
|
630
|
+
data.name === void 0 ? " No events declared." : ` No events match ${JSON.stringify(data.name)}.`
|
|
631
|
+
];
|
|
632
|
+
}
|
|
633
|
+
const lines = data.events.flatMap((event) => [
|
|
634
|
+
` ${renderEventSignature(event)}`,
|
|
635
|
+
` ${summarizeToolDescription(event.description)}`
|
|
636
|
+
]);
|
|
637
|
+
return [
|
|
638
|
+
colors.green("Events"),
|
|
639
|
+
...lines,
|
|
640
|
+
...renderEventsTruncationLine(data),
|
|
641
|
+
"",
|
|
642
|
+
"Run `appduct events ls --name <name>` for an event's full payload schema."
|
|
643
|
+
];
|
|
644
|
+
};
|
|
596
645
|
var renderInvokeData = (colors, data, flags) => {
|
|
597
646
|
return [colors.green("Result"), formatScalar(data, flags)];
|
|
598
647
|
};
|
|
@@ -776,15 +825,19 @@ var renderSuccessData = (colors, command, data, options) => {
|
|
|
776
825
|
return renderInitData(colors, data, flags);
|
|
777
826
|
case "keygen":
|
|
778
827
|
return renderKeygenData(colors, data, flags);
|
|
779
|
-
case "link":
|
|
828
|
+
case "sessions link":
|
|
780
829
|
return renderLinkData(colors, data, flags, options.qr);
|
|
781
|
-
case "ls":
|
|
830
|
+
case "sessions ls":
|
|
782
831
|
return renderLsData(colors, data, options.now ?? /* @__PURE__ */ new Date());
|
|
783
|
-
case "tools":
|
|
784
|
-
return
|
|
785
|
-
case "
|
|
832
|
+
case "tools ls":
|
|
833
|
+
return renderToolsListData(colors, data, flags, options.full);
|
|
834
|
+
case "tools describe":
|
|
835
|
+
return renderToolDetail(colors, data, flags);
|
|
836
|
+
case "events ls":
|
|
837
|
+
return renderEventsListData(colors, data, flags);
|
|
838
|
+
case "tools call":
|
|
786
839
|
return renderInvokeData(colors, data, flags);
|
|
787
|
-
case "revoke":
|
|
840
|
+
case "sessions revoke":
|
|
788
841
|
return renderRevokeData(colors, data);
|
|
789
842
|
case "daemon run":
|
|
790
843
|
return renderDaemonRunData(colors, data, flags);
|