@cydm/happy-elves 0.1.0-beta.311 → 0.1.0-beta.312
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.
|
@@ -116,8 +116,15 @@ const booleanFlags = new Set([
|
|
|
116
116
|
]);
|
|
117
117
|
const knownFlags = new Set([...valueFlags, ...booleanFlags]);
|
|
118
118
|
const dashPrefixedValueFlags = new Set(["secret"]);
|
|
119
|
+
const repeatableValueFlags = new Set([
|
|
120
|
+
"tag",
|
|
121
|
+
"tags",
|
|
122
|
+
"release-tag",
|
|
123
|
+
"reviewer-tag",
|
|
124
|
+
"dogfood-tag",
|
|
125
|
+
]);
|
|
119
126
|
export function parseCliFlags(argv) {
|
|
120
|
-
const parsed = parseSharedFlags(argv, { valueFlags, dashPrefixedValueFlags });
|
|
127
|
+
const parsed = parseSharedFlags(argv, { valueFlags, dashPrefixedValueFlags, repeatableValueFlags });
|
|
121
128
|
const unknown = Object.keys(parsed.flags).filter((flag) => !knownFlags.has(flag));
|
|
122
129
|
if (unknown.length > 0) {
|
|
123
130
|
throw new CliError(`Unknown flag: --${unknown[0]}`, "UNKNOWN_FLAG");
|
|
@@ -14,7 +14,10 @@ export async function topLevelStatus(flags) {
|
|
|
14
14
|
const relayError = snapshotResult.status === "rejected"
|
|
15
15
|
? snapshotResult.reason instanceof Error ? snapshotResult.reason.message : String(snapshotResult.reason)
|
|
16
16
|
: undefined;
|
|
17
|
-
const
|
|
17
|
+
const visibleSessions = snapshot
|
|
18
|
+
? await visibleStatusSessions(client, snapshot.sessions)
|
|
19
|
+
: [];
|
|
20
|
+
const latestSession = [...visibleSessions].sort((left, right) => right.updatedAt - left.updatedAt)[0];
|
|
18
21
|
const latestOutput = latestSession ? await readStoredTurnOutput(latestSession.id).catch(() => undefined) : undefined;
|
|
19
22
|
const latestRelayOutput = latestSession && !latestOutput
|
|
20
23
|
? lastAssistantOutput(await client.history(latestSession.id, 200).catch(() => []))
|
|
@@ -31,8 +34,8 @@ export async function topLevelStatus(flags) {
|
|
|
31
34
|
onlineCount: snapshot?.machines.filter((machine) => machine.online).length ?? 0,
|
|
32
35
|
},
|
|
33
36
|
sessions: {
|
|
34
|
-
count:
|
|
35
|
-
runningCount:
|
|
37
|
+
count: visibleSessions.length,
|
|
38
|
+
runningCount: visibleSessions.filter((session) => session.status === "running").length,
|
|
36
39
|
},
|
|
37
40
|
latestSession: latestSession ? {
|
|
38
41
|
sessionId: latestSession.id,
|
|
@@ -64,4 +67,13 @@ export async function topLevelStatus(flags) {
|
|
|
64
67
|
if (!data.relay.ok)
|
|
65
68
|
process.exitCode = 1;
|
|
66
69
|
}
|
|
70
|
+
async function visibleStatusSessions(client, sessions) {
|
|
71
|
+
const projected = await Promise.all(sessions.map(async (session) => ({
|
|
72
|
+
session,
|
|
73
|
+
metadata: await client.decodeSessionMetadata(session).catch(() => ({})),
|
|
74
|
+
})));
|
|
75
|
+
return projected
|
|
76
|
+
.filter(({ session, metadata }) => session.status !== "closed" && metadata.hiddenFromWorkspace !== true && metadata.source !== "dogfood")
|
|
77
|
+
.map(({ session }) => session);
|
|
78
|
+
}
|
|
67
79
|
//# sourceMappingURL=status.js.map
|
package/apps/cli/package.json
CHANGED
package/apps/daemon/package.json
CHANGED
package/package.json
CHANGED
|
@@ -5,6 +5,7 @@ export type ParsedArgs = {
|
|
|
5
5
|
export type ParseFlagsOptions = {
|
|
6
6
|
valueFlags?: Iterable<string>;
|
|
7
7
|
dashPrefixedValueFlags?: Iterable<string>;
|
|
8
|
+
repeatableValueFlags?: Iterable<string>;
|
|
8
9
|
};
|
|
9
10
|
export declare function parseFlags(argv: string[], options?: ParseFlagsOptions): ParsedArgs;
|
|
10
11
|
//# sourceMappingURL=args.d.ts.map
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export function parseFlags(argv, options = {}) {
|
|
2
2
|
const valueFlags = new Set(options.valueFlags ?? []);
|
|
3
3
|
const dashPrefixedValueFlags = new Set(options.dashPrefixedValueFlags ?? []);
|
|
4
|
+
const repeatableValueFlags = new Set(options.repeatableValueFlags ?? []);
|
|
4
5
|
const positional = [];
|
|
5
6
|
const flags = {};
|
|
6
7
|
for (let i = 0; i < argv.length; i++) {
|
|
@@ -19,17 +20,22 @@ export function parseFlags(argv, options = {}) {
|
|
|
19
20
|
flags[key] = true;
|
|
20
21
|
}
|
|
21
22
|
else if (valueFlags.has(key) && (!next.startsWith("--") || dashPrefixedValueFlags.has(key))) {
|
|
22
|
-
flags[key] = next;
|
|
23
|
+
flags[key] = appendFlagValue(flags[key], next, repeatableValueFlags.has(key));
|
|
23
24
|
i++;
|
|
24
25
|
}
|
|
25
26
|
else if (next.startsWith("--")) {
|
|
26
27
|
flags[key] = true;
|
|
27
28
|
}
|
|
28
29
|
else {
|
|
29
|
-
flags[key] = next;
|
|
30
|
+
flags[key] = appendFlagValue(flags[key], next, repeatableValueFlags.has(key));
|
|
30
31
|
i++;
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
return { positional, flags };
|
|
34
35
|
}
|
|
36
|
+
function appendFlagValue(previous, next, repeatable) {
|
|
37
|
+
if (!repeatable || previous === undefined || previous === true || previous === false)
|
|
38
|
+
return next;
|
|
39
|
+
return `${previous},${next}`;
|
|
40
|
+
}
|
|
35
41
|
//# sourceMappingURL=args.js.map
|