@vm0/cli 9.145.4 → 9.145.6
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.
|
@@ -74083,7 +74083,7 @@ if (DSN) {
|
|
|
74083
74083
|
init2({
|
|
74084
74084
|
dsn: DSN,
|
|
74085
74085
|
environment: process.env.SENTRY_ENVIRONMENT ?? "production",
|
|
74086
|
-
release: "9.145.
|
|
74086
|
+
release: "9.145.6",
|
|
74087
74087
|
sendDefaultPii: false,
|
|
74088
74088
|
tracesSampleRate: 0,
|
|
74089
74089
|
shutdownTimeout: 500,
|
|
@@ -74102,7 +74102,7 @@ if (DSN) {
|
|
|
74102
74102
|
}
|
|
74103
74103
|
});
|
|
74104
74104
|
setContext("cli", {
|
|
74105
|
-
version: "9.145.
|
|
74105
|
+
version: "9.145.6",
|
|
74106
74106
|
command: process.argv.slice(2).join(" ")
|
|
74107
74107
|
});
|
|
74108
74108
|
setContext("runtime", {
|
|
@@ -100940,6 +100940,10 @@ var orgDefaultAgentContract = c8.router({
|
|
|
100940
100940
|
|
|
100941
100941
|
// ../../packages/api-contracts/src/contracts/runs.ts
|
|
100942
100942
|
var c9 = initContract();
|
|
100943
|
+
var MAX_EVENT_SEQUENCE_NUMBER = 2147483647;
|
|
100944
|
+
var eventSequenceNumberSchema = external_exports.number().int().nonnegative().max(MAX_EVENT_SEQUENCE_NUMBER);
|
|
100945
|
+
var eventSequenceCursorSchema = external_exports.number().int().min(-1).max(MAX_EVENT_SEQUENCE_NUMBER);
|
|
100946
|
+
var eventSequenceCursorQuerySchema = external_exports.coerce.number().int().min(-1).max(MAX_EVENT_SEQUENCE_NUMBER);
|
|
100943
100947
|
var ALL_RUN_STATUSES = [
|
|
100944
100948
|
"queued",
|
|
100945
100949
|
"pending",
|
|
@@ -101030,7 +101034,7 @@ var getRunResponseSchema = external_exports.object({
|
|
|
101030
101034
|
completedAt: external_exports.string().optional()
|
|
101031
101035
|
});
|
|
101032
101036
|
var runEventSchema = external_exports.object({
|
|
101033
|
-
sequenceNumber:
|
|
101037
|
+
sequenceNumber: eventSequenceNumberSchema,
|
|
101034
101038
|
eventType: external_exports.string(),
|
|
101035
101039
|
eventData: external_exports.unknown(),
|
|
101036
101040
|
createdAt: external_exports.string()
|
|
@@ -101046,12 +101050,13 @@ var runResultSchema = external_exports.object({
|
|
|
101046
101050
|
var runStateSchema = external_exports.object({
|
|
101047
101051
|
status: runStatusSchema,
|
|
101048
101052
|
result: runResultSchema.optional(),
|
|
101049
|
-
error: external_exports.string().optional()
|
|
101053
|
+
error: external_exports.string().optional(),
|
|
101054
|
+
lastEventSequence: eventSequenceNumberSchema.optional()
|
|
101050
101055
|
});
|
|
101051
101056
|
var eventsResponseSchema = external_exports.object({
|
|
101052
101057
|
events: external_exports.array(runEventSchema),
|
|
101053
101058
|
hasMore: external_exports.boolean(),
|
|
101054
|
-
nextSequence:
|
|
101059
|
+
nextSequence: eventSequenceCursorSchema,
|
|
101055
101060
|
run: runStateSchema,
|
|
101056
101061
|
framework: external_exports.string()
|
|
101057
101062
|
});
|
|
@@ -101179,11 +101184,12 @@ var runEventsContract = c9.router({
|
|
|
101179
101184
|
id: external_exports.uuid("Run ID must be a valid UUID")
|
|
101180
101185
|
}),
|
|
101181
101186
|
query: external_exports.object({
|
|
101182
|
-
since:
|
|
101183
|
-
limit: external_exports.coerce.number().default(100)
|
|
101187
|
+
since: eventSequenceCursorQuerySchema.default(-1),
|
|
101188
|
+
limit: external_exports.coerce.number().int().min(1).max(100).default(100)
|
|
101184
101189
|
}),
|
|
101185
101190
|
responses: {
|
|
101186
101191
|
200: eventsResponseSchema,
|
|
101192
|
+
400: apiErrorSchema,
|
|
101187
101193
|
401: apiErrorSchema,
|
|
101188
101194
|
404: apiErrorSchema
|
|
101189
101195
|
},
|
|
@@ -101695,7 +101701,7 @@ var sandboxReuseResultSchema = external_exports.enum([
|
|
|
101695
101701
|
]);
|
|
101696
101702
|
var agentEventSchema = external_exports.object({
|
|
101697
101703
|
type: external_exports.string(),
|
|
101698
|
-
sequenceNumber:
|
|
101704
|
+
sequenceNumber: eventSequenceNumberSchema
|
|
101699
101705
|
}).passthrough();
|
|
101700
101706
|
var artifactSnapshotsSchema = external_exports.array(
|
|
101701
101707
|
external_exports.object({
|
|
@@ -101747,7 +101753,7 @@ var webhookCompleteContract = c11.router({
|
|
|
101747
101753
|
runId: external_exports.string().min(1, "runId is required"),
|
|
101748
101754
|
exitCode: external_exports.number(),
|
|
101749
101755
|
error: external_exports.string().optional(),
|
|
101750
|
-
lastEventSequence:
|
|
101756
|
+
lastEventSequence: eventSequenceNumberSchema.optional(),
|
|
101751
101757
|
// Sandbox id the run executed against. Optional because a run that fails
|
|
101752
101758
|
// before VM creation has no sandbox. Persisted to agent_runs.sandbox_id;
|
|
101753
101759
|
// the 255-char cap matches the DB column (defense in depth).
|
|
@@ -103230,6 +103236,8 @@ var chatThreadDetailSchema = external_exports.object({
|
|
|
103230
103236
|
* and org defaults) for the next run. Optional for back-compat.
|
|
103231
103237
|
*/
|
|
103232
103238
|
modelProviderId: external_exports.string().nullable().optional(),
|
|
103239
|
+
modelProviderType: modelProviderTypeSchema.nullable().optional(),
|
|
103240
|
+
modelProviderCredentialScope: modelProviderCredentialScopeSchema.nullable().optional(),
|
|
103233
103241
|
selectedModel: external_exports.string().nullable().optional(),
|
|
103234
103242
|
/**
|
|
103235
103243
|
* ISO timestamp at which the user manually renamed this thread. Null/undefined
|
|
@@ -119828,24 +119836,12 @@ var voiceChatTaskSchema = external_exports.object({
|
|
|
119828
119836
|
startedAt: external_exports.string().nullable(),
|
|
119829
119837
|
finishedAt: external_exports.string().nullable()
|
|
119830
119838
|
});
|
|
119831
|
-
var
|
|
119839
|
+
var tokenResponseSchema = external_exports.object({
|
|
119832
119840
|
client_secret: external_exports.object({
|
|
119833
119841
|
value: external_exports.string(),
|
|
119834
119842
|
expires_at: external_exports.number()
|
|
119835
119843
|
})
|
|
119836
119844
|
});
|
|
119837
|
-
var relayBootstrapResponseSchema = external_exports.object({
|
|
119838
|
-
relayUrl: external_exports.url(),
|
|
119839
|
-
relayToken: external_exports.string(),
|
|
119840
|
-
expiresAt: external_exports.number(),
|
|
119841
|
-
sessionId: external_exports.uuid(),
|
|
119842
|
-
transport: external_exports.enum(["websocket"]),
|
|
119843
|
-
minimumCreditsRequired: external_exports.number().int().nonnegative().optional()
|
|
119844
|
-
});
|
|
119845
|
-
var tokenResponseSchema = external_exports.union([
|
|
119846
|
-
legacyTokenResponseSchema,
|
|
119847
|
-
relayBootstrapResponseSchema
|
|
119848
|
-
]);
|
|
119849
119845
|
var createSessionBodySchema = external_exports.object({ agentId: external_exports.uuid() });
|
|
119850
119846
|
var appendItemBodySchema = external_exports.object({
|
|
119851
119847
|
role: voiceChatItemRoleSchema,
|
|
@@ -119990,7 +119986,7 @@ var zeroVoiceChatContract = c54.router({
|
|
|
119990
119986
|
500: apiErrorSchema,
|
|
119991
119987
|
503: apiErrorSchema
|
|
119992
119988
|
},
|
|
119993
|
-
summary: "Mint
|
|
119989
|
+
summary: "Mint an ephemeral OpenAI realtime token for voice-chat"
|
|
119994
119990
|
}
|
|
119995
119991
|
});
|
|
119996
119992
|
|
|
@@ -120575,7 +120571,8 @@ var FEATURE_SWITCHES = {
|
|
|
120575
120571
|
["queueMessage" /* QueueMessage */]: {
|
|
120576
120572
|
maintainer: "linghan@vm0.ai",
|
|
120577
120573
|
description: "Allow keyboard sends during an active chat thread run to append the draft to that thread's pending message queue.",
|
|
120578
|
-
enabled: false
|
|
120574
|
+
enabled: false,
|
|
120575
|
+
enabledOrgIdHashes: STAFF_ORG_ID_HASHES
|
|
120579
120576
|
},
|
|
120580
120577
|
["chatThreadPin" /* ChatThreadPin */]: {
|
|
120581
120578
|
maintainer: "ethan@vm0.ai",
|
|
@@ -120655,9 +120652,8 @@ var FEATURE_SWITCHES = {
|
|
|
120655
120652
|
},
|
|
120656
120653
|
["modelFirstModelProvider" /* ModelFirstModelProvider */]: {
|
|
120657
120654
|
maintainer: "lancy@vm0.ai",
|
|
120658
|
-
description: "Gate the model-first model provider selection foundation. When off, all provider-first resolver, UI, CLI, and legacy model provider defaults remain unchanged. When on, follow-up work can use org model policies, canonical models, and member-scoped OAuth credentials.",
|
|
120659
|
-
enabled: false
|
|
120660
|
-
enabledOrgIdHashes: STAFF_ORG_ID_HASHES
|
|
120655
|
+
description: "Gate the model-first model provider selection foundation. When off, all provider-first resolver, UI, CLI, and legacy model provider defaults remain unchanged. When on, follow-up work can use org model policies, canonical models, and member-scoped OAuth credentials. Default-off for every org, including staff; per-user toggle via Lab.",
|
|
120656
|
+
enabled: false
|
|
120661
120657
|
},
|
|
120662
120658
|
["voiceChatRealtimeBilling" /* VoiceChatRealtimeBilling */]: {
|
|
120663
120659
|
maintainer: "lancy@vm0.ai",
|
|
@@ -121725,57 +121721,164 @@ function renderRunCreated(response) {
|
|
|
121725
121721
|
});
|
|
121726
121722
|
}
|
|
121727
121723
|
}
|
|
121724
|
+
var TERMINAL_RUN_STATUSES = [
|
|
121725
|
+
"completed",
|
|
121726
|
+
"failed",
|
|
121727
|
+
"timeout",
|
|
121728
|
+
"cancelled"
|
|
121729
|
+
];
|
|
121730
|
+
var POLL_INTERVAL_MS = 1e3;
|
|
121731
|
+
var TERMINAL_DRAIN_POLL_INTERVAL_MS = 500;
|
|
121732
|
+
var TERMINAL_DRAIN_IDLE_MS = 1e3;
|
|
121733
|
+
var TERMINAL_DRAIN_MAX_MS = 3e3;
|
|
121734
|
+
function isTerminalRunState(run) {
|
|
121735
|
+
return TERMINAL_RUN_STATUSES.includes(run.status);
|
|
121736
|
+
}
|
|
121737
|
+
function shouldDrainNextEventPage(response, madeSequenceProgress) {
|
|
121738
|
+
return response.hasMore && response.events.length > 0 && madeSequenceProgress;
|
|
121739
|
+
}
|
|
121740
|
+
function isBlockedBySequenceGap(response, madeSequenceProgress) {
|
|
121741
|
+
return response.hasMore && !madeSequenceProgress;
|
|
121742
|
+
}
|
|
121743
|
+
function hasTerminalWatermark(run) {
|
|
121744
|
+
return run.lastEventSequence !== void 0;
|
|
121745
|
+
}
|
|
121746
|
+
function hasReachedTerminalWatermark(run, nextSequence) {
|
|
121747
|
+
return run.lastEventSequence !== void 0 && nextSequence >= run.lastEventSequence;
|
|
121748
|
+
}
|
|
121749
|
+
function shouldCompleteTerminalDrain(terminalSeenAt, lastTerminalProgressAt, blockedByGap) {
|
|
121750
|
+
const now = Date.now();
|
|
121751
|
+
const terminalElapsedMs = now - terminalSeenAt;
|
|
121752
|
+
const terminalIdleMs = now - lastTerminalProgressAt;
|
|
121753
|
+
return terminalElapsedMs >= TERMINAL_DRAIN_MAX_MS || !blockedByGap && terminalIdleMs >= TERMINAL_DRAIN_IDLE_MS;
|
|
121754
|
+
}
|
|
121755
|
+
function updateTerminalDrainState(state, run, madeSequenceProgress, now) {
|
|
121756
|
+
if (isTerminalRunState(run)) {
|
|
121757
|
+
if (!state.runState) {
|
|
121758
|
+
state.seenAt = now;
|
|
121759
|
+
state.lastProgressAt = now;
|
|
121760
|
+
} else if (madeSequenceProgress) {
|
|
121761
|
+
state.lastProgressAt = now;
|
|
121762
|
+
}
|
|
121763
|
+
state.runState = run;
|
|
121764
|
+
return;
|
|
121765
|
+
}
|
|
121766
|
+
if (state.runState && madeSequenceProgress) {
|
|
121767
|
+
state.lastProgressAt = now;
|
|
121768
|
+
}
|
|
121769
|
+
}
|
|
121770
|
+
function isBlockedByTerminalWatermark(run, nextSequence) {
|
|
121771
|
+
return hasTerminalWatermark(run) && !hasReachedTerminalWatermark(run, nextSequence);
|
|
121772
|
+
}
|
|
121773
|
+
function shouldReturnTerminalRunResult(state, response, nextSequence, madeSequenceProgress, seenResultEvent) {
|
|
121774
|
+
const run = state.runState;
|
|
121775
|
+
if (!run) {
|
|
121776
|
+
return false;
|
|
121777
|
+
}
|
|
121778
|
+
if (!hasTerminalWatermark(run) && run.status !== "completed") {
|
|
121779
|
+
if (run.status === "timeout" && shouldDrainNextEventPage(response, madeSequenceProgress)) {
|
|
121780
|
+
return false;
|
|
121781
|
+
}
|
|
121782
|
+
return true;
|
|
121783
|
+
}
|
|
121784
|
+
if (!hasTerminalWatermark(run) && seenResultEvent) {
|
|
121785
|
+
return true;
|
|
121786
|
+
}
|
|
121787
|
+
return shouldCompleteTerminalDrain(
|
|
121788
|
+
state.seenAt,
|
|
121789
|
+
state.lastProgressAt,
|
|
121790
|
+
isBlockedBySequenceGap(response, madeSequenceProgress) || isBlockedByTerminalWatermark(run, nextSequence)
|
|
121791
|
+
);
|
|
121792
|
+
}
|
|
121793
|
+
function renderTerminalRunResult(runId, run) {
|
|
121794
|
+
if (run.status === "completed") {
|
|
121795
|
+
EventRenderer.renderRunCompleted(run.result);
|
|
121796
|
+
return {
|
|
121797
|
+
succeeded: true,
|
|
121798
|
+
runId,
|
|
121799
|
+
sessionId: run.result?.agentSessionId,
|
|
121800
|
+
checkpointId: run.result?.checkpointId
|
|
121801
|
+
};
|
|
121802
|
+
}
|
|
121803
|
+
if (run.status === "failed") {
|
|
121804
|
+
EventRenderer.renderRunFailed(run.error, runId);
|
|
121805
|
+
return { succeeded: false, runId };
|
|
121806
|
+
}
|
|
121807
|
+
if (run.status === "timeout") {
|
|
121808
|
+
console.error(source_default.red("\n\u2717 Run timed out"));
|
|
121809
|
+
console.error(
|
|
121810
|
+
source_default.dim(` (use "vm0 logs ${runId} --system" to view system logs)`)
|
|
121811
|
+
);
|
|
121812
|
+
return { succeeded: false, runId };
|
|
121813
|
+
}
|
|
121814
|
+
console.error(source_default.yellow("\n\u2717 Run cancelled"));
|
|
121815
|
+
return { succeeded: false, runId };
|
|
121816
|
+
}
|
|
121817
|
+
function sleep(ms) {
|
|
121818
|
+
return new Promise((resolve2) => {
|
|
121819
|
+
return setTimeout(resolve2, ms);
|
|
121820
|
+
});
|
|
121821
|
+
}
|
|
121728
121822
|
async function pollEvents(runId, options) {
|
|
121729
121823
|
const renderer = new EventRenderer({ verbose: options?.verbose });
|
|
121730
121824
|
let nextSequence = -1;
|
|
121731
|
-
|
|
121732
|
-
|
|
121733
|
-
|
|
121734
|
-
|
|
121825
|
+
const terminalDrain = {
|
|
121826
|
+
seenAt: 0,
|
|
121827
|
+
lastProgressAt: 0
|
|
121828
|
+
};
|
|
121829
|
+
let seenResultEvent = false;
|
|
121830
|
+
for (; ; ) {
|
|
121831
|
+
const previousSequence = nextSequence;
|
|
121735
121832
|
const response = await getEvents(runId, {
|
|
121736
121833
|
since: nextSequence
|
|
121737
121834
|
});
|
|
121738
|
-
|
|
121739
|
-
|
|
121740
|
-
|
|
121741
|
-
|
|
121742
|
-
|
|
121743
|
-
|
|
121744
|
-
|
|
121745
|
-
|
|
121746
|
-
|
|
121747
|
-
|
|
121748
|
-
|
|
121749
|
-
|
|
121750
|
-
|
|
121751
|
-
|
|
121752
|
-
|
|
121753
|
-
|
|
121754
|
-
|
|
121755
|
-
|
|
121756
|
-
|
|
121757
|
-
|
|
121758
|
-
EventRenderer.renderRunFailed(response.run.error, runId);
|
|
121759
|
-
result = { succeeded: false, runId };
|
|
121760
|
-
} else if (runStatus === "timeout") {
|
|
121761
|
-
complete = true;
|
|
121762
|
-
console.error(source_default.red("\n\u2717 Run timed out"));
|
|
121763
|
-
console.error(
|
|
121764
|
-
source_default.dim(` (use "vm0 logs ${runId} --system" to view system logs)`)
|
|
121765
|
-
);
|
|
121766
|
-
result = { succeeded: false, runId };
|
|
121767
|
-
} else if (runStatus === "cancelled") {
|
|
121768
|
-
complete = true;
|
|
121769
|
-
console.error(source_default.yellow("\n\u2717 Run cancelled"));
|
|
121770
|
-
result = { succeeded: false, runId };
|
|
121771
|
-
}
|
|
121772
|
-
if (!complete) {
|
|
121773
|
-
await new Promise((resolve2) => {
|
|
121774
|
-
return setTimeout(resolve2, pollIntervalMs);
|
|
121775
|
-
});
|
|
121835
|
+
const now = Date.now();
|
|
121836
|
+
const madeSequenceProgress = response.nextSequence > previousSequence;
|
|
121837
|
+
let pageHasResultEvent = false;
|
|
121838
|
+
if (madeSequenceProgress) {
|
|
121839
|
+
for (const event of response.events) {
|
|
121840
|
+
const eventData = event.eventData;
|
|
121841
|
+
const parsed = parseEvent(eventData, response.framework);
|
|
121842
|
+
if (parsed) {
|
|
121843
|
+
renderer.render(parsed);
|
|
121844
|
+
if (parsed.type === "result") {
|
|
121845
|
+
pageHasResultEvent = true;
|
|
121846
|
+
}
|
|
121847
|
+
}
|
|
121848
|
+
}
|
|
121849
|
+
}
|
|
121850
|
+
if (madeSequenceProgress) {
|
|
121851
|
+
if (pageHasResultEvent) {
|
|
121852
|
+
seenResultEvent = true;
|
|
121853
|
+
}
|
|
121854
|
+
nextSequence = response.nextSequence;
|
|
121776
121855
|
}
|
|
121856
|
+
updateTerminalDrainState(
|
|
121857
|
+
terminalDrain,
|
|
121858
|
+
response.run,
|
|
121859
|
+
madeSequenceProgress,
|
|
121860
|
+
now
|
|
121861
|
+
);
|
|
121862
|
+
if (terminalDrain.runState && hasReachedTerminalWatermark(terminalDrain.runState, nextSequence)) {
|
|
121863
|
+
return renderTerminalRunResult(runId, terminalDrain.runState);
|
|
121864
|
+
}
|
|
121865
|
+
const terminalRunState = terminalDrain.runState;
|
|
121866
|
+
if (terminalRunState && shouldReturnTerminalRunResult(
|
|
121867
|
+
terminalDrain,
|
|
121868
|
+
response,
|
|
121869
|
+
nextSequence,
|
|
121870
|
+
madeSequenceProgress,
|
|
121871
|
+
seenResultEvent
|
|
121872
|
+
)) {
|
|
121873
|
+
return renderTerminalRunResult(runId, terminalRunState);
|
|
121874
|
+
}
|
|
121875
|
+
if (shouldDrainNextEventPage(response, madeSequenceProgress)) {
|
|
121876
|
+
continue;
|
|
121877
|
+
}
|
|
121878
|
+
await sleep(
|
|
121879
|
+
terminalDrain.runState ? TERMINAL_DRAIN_POLL_INTERVAL_MS : POLL_INTERVAL_MS
|
|
121880
|
+
);
|
|
121777
121881
|
}
|
|
121778
|
-
return result;
|
|
121779
121882
|
}
|
|
121780
121883
|
function showNextSteps(result) {
|
|
121781
121884
|
const { runId, sessionId, checkpointId } = result;
|
|
@@ -122044,4 +122147,4 @@ undici/lib/web/fetch/body.js:
|
|
|
122044
122147
|
undici/lib/web/websocket/frame.js:
|
|
122045
122148
|
(*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> *)
|
|
122046
122149
|
*/
|
|
122047
|
-
//# sourceMappingURL=chunk-
|
|
122150
|
+
//# sourceMappingURL=chunk-2LVWQ6RG.js.map
|