@vm0/cli 9.244.5 → 9.244.7
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/{agent-NQVS6VCY.js → agent-2TIFNP32.js} +7 -7
- package/{banking-U5U2G6QH.js → banking-UR7XJI3L.js} +3 -3
- package/{chat-BGF7IB3O.js → chat-5N4C3FDV.js} +4 -4
- package/{chunk-UEGRDQR3.js → chunk-26BGLMA3.js} +4 -32
- package/chunk-26BGLMA3.js.map +1 -0
- package/{chunk-ZMTKJ4VW.js → chunk-5QJVQEHO.js} +69 -6
- package/chunk-5QJVQEHO.js.map +1 -0
- package/{chunk-SBH7L4UT.js → chunk-7KSTVBNN.js} +4 -4
- package/{chunk-624QMD56.js → chunk-BIJC6U3G.js} +2 -2
- package/{chunk-KS62N6VR.js → chunk-E32I3TNQ.js} +26 -129
- package/chunk-E32I3TNQ.js.map +1 -0
- package/{chunk-4V373IPM.js → chunk-JWDLLCI3.js} +2 -2
- package/{chunk-PBFD5MP4.js → chunk-M6GLCPCJ.js} +3 -3
- package/{chunk-VUUGKMER.js → chunk-NR6ANGRK.js} +41 -245
- package/chunk-NR6ANGRK.js.map +1 -0
- package/{chunk-NOUED6XP.js → chunk-QCG2H3VD.js} +2 -2
- package/{chunk-MKPBFN7W.js → chunk-STMJYQTH.js} +2 -2
- package/chunk-ZUSDQG2O.js +50 -0
- package/chunk-ZUSDQG2O.js.map +1 -0
- package/{computer-use-F4VFLO6X.js → computer-use-3WUKJYHK.js} +3 -3
- package/{connector-SWU3H7YL.js → connector-PDEOFNTE.js} +9 -21
- package/connector-PDEOFNTE.js.map +1 -0
- package/{credit-ZMXGA5CQ.js → credit-ET4RS32X.js} +4 -4
- package/{developer-support-IOTX3JWR.js → developer-support-3DJEJT2A.js} +3 -3
- package/{doctor-DTMFWDXL.js → doctor-F7OWYXXH.js} +3 -3
- package/{generate-IQUCOIYW.js → generate-4GKWSL6P.js} +4 -4
- package/{github-AJT3E56L.js → github-S5HFK2IC.js} +3 -3
- package/{goal-NCK5T57P.js → goal-ISJWIT2Q.js} +3 -3
- package/{host-BRKGWZLP.js → host-T52XQ2SZ.js} +4 -5
- package/{host-BRKGWZLP.js.map → host-T52XQ2SZ.js.map} +1 -1
- package/index.js +12 -2040
- package/index.js.map +1 -1
- package/{logs-WZVT4BS7.js → logs-D4IL5OLR.js} +8 -8
- package/{mail-QS4HABXH.js → mail-JXO3GW72.js} +5 -5
- package/{maps-3X6V34JQ.js → maps-T3YFBRLP.js} +3 -3
- package/{model-6ETRDASM.js → model-GJRTV6E5.js} +4 -4
- package/{model-provider-XEKOLWZY.js → model-provider-T4VN4HNU.js} +4 -4
- package/{org-DKGPME4L.js → org-GNNU77Y5.js} +3 -3
- package/package.json +1 -1
- package/{phone-6455TFON.js → phone-EQ4R2GBO.js} +3 -3
- package/{preference-2XMANS52.js → preference-3FHEQPKG.js} +3 -3
- package/{chunk-CK6ATTWW.js → resource-EOO2VATC.js} +133 -4
- package/resource-EOO2VATC.js.map +1 -0
- package/{scrape-CIP2FZED.js → scrape-TZCFJY6X.js} +3 -3
- package/{search-GCQ55FYS.js → search-RXP4DMUC.js} +7 -7
- package/{secret-NVLEVYXQ.js → secret-S4ZCVY2X.js} +3 -3
- package/{slack-EGYW76W2.js → slack-7YJFUJE6.js} +3 -3
- package/{teams-2D63XX2R.js → teams-45MMUROF.js} +3 -3
- package/{telegram-GQARG3MD.js → telegram-7ZCSI24W.js} +3 -3
- package/{variable-WMKLX7TF.js → variable-O33TDP4J.js} +3 -3
- package/{video-NAUNUYGP.js → video-D5LSABFJ.js} +2 -2
- package/{web-7U3YS3KP.js → web-JW7AH2UT.js} +3 -3
- package/{web-search-EIO3GVKH.js → web-search-MHFQFZS6.js} +3 -3
- package/{whoami-QZJAGTDW.js → whoami-5DJLOQUZ.js} +5 -5
- package/{workflow-RMJIYOUB.js → workflow-TXG3RBJR.js} +3 -3
- package/zero.js +35 -35
- package/chunk-CK6ATTWW.js.map +0 -1
- package/chunk-KS62N6VR.js.map +0 -1
- package/chunk-T6TZMDU6.js +0 -132
- package/chunk-T6TZMDU6.js.map +0 -1
- package/chunk-UEGRDQR3.js.map +0 -1
- package/chunk-VUUGKMER.js.map +0 -1
- package/chunk-ZMTKJ4VW.js.map +0 -1
- package/connector-SWU3H7YL.js.map +0 -1
- package/resource-MIFLTTK6.js +0 -143
- package/resource-MIFLTTK6.js.map +0 -1
- /package/{agent-NQVS6VCY.js.map → agent-2TIFNP32.js.map} +0 -0
- /package/{banking-U5U2G6QH.js.map → banking-UR7XJI3L.js.map} +0 -0
- /package/{chat-BGF7IB3O.js.map → chat-5N4C3FDV.js.map} +0 -0
- /package/{chunk-SBH7L4UT.js.map → chunk-7KSTVBNN.js.map} +0 -0
- /package/{chunk-624QMD56.js.map → chunk-BIJC6U3G.js.map} +0 -0
- /package/{chunk-4V373IPM.js.map → chunk-JWDLLCI3.js.map} +0 -0
- /package/{chunk-PBFD5MP4.js.map → chunk-M6GLCPCJ.js.map} +0 -0
- /package/{chunk-NOUED6XP.js.map → chunk-QCG2H3VD.js.map} +0 -0
- /package/{chunk-MKPBFN7W.js.map → chunk-STMJYQTH.js.map} +0 -0
- /package/{computer-use-F4VFLO6X.js.map → computer-use-3WUKJYHK.js.map} +0 -0
- /package/{credit-ZMXGA5CQ.js.map → credit-ET4RS32X.js.map} +0 -0
- /package/{developer-support-IOTX3JWR.js.map → developer-support-3DJEJT2A.js.map} +0 -0
- /package/{doctor-DTMFWDXL.js.map → doctor-F7OWYXXH.js.map} +0 -0
- /package/{generate-IQUCOIYW.js.map → generate-4GKWSL6P.js.map} +0 -0
- /package/{github-AJT3E56L.js.map → github-S5HFK2IC.js.map} +0 -0
- /package/{goal-NCK5T57P.js.map → goal-ISJWIT2Q.js.map} +0 -0
- /package/{logs-WZVT4BS7.js.map → logs-D4IL5OLR.js.map} +0 -0
- /package/{mail-QS4HABXH.js.map → mail-JXO3GW72.js.map} +0 -0
- /package/{maps-3X6V34JQ.js.map → maps-T3YFBRLP.js.map} +0 -0
- /package/{model-6ETRDASM.js.map → model-GJRTV6E5.js.map} +0 -0
- /package/{model-provider-XEKOLWZY.js.map → model-provider-T4VN4HNU.js.map} +0 -0
- /package/{org-DKGPME4L.js.map → org-GNNU77Y5.js.map} +0 -0
- /package/{phone-6455TFON.js.map → phone-EQ4R2GBO.js.map} +0 -0
- /package/{preference-2XMANS52.js.map → preference-3FHEQPKG.js.map} +0 -0
- /package/{scrape-CIP2FZED.js.map → scrape-TZCFJY6X.js.map} +0 -0
- /package/{search-GCQ55FYS.js.map → search-RXP4DMUC.js.map} +0 -0
- /package/{secret-NVLEVYXQ.js.map → secret-S4ZCVY2X.js.map} +0 -0
- /package/{slack-EGYW76W2.js.map → slack-7YJFUJE6.js.map} +0 -0
- /package/{teams-2D63XX2R.js.map → teams-45MMUROF.js.map} +0 -0
- /package/{telegram-GQARG3MD.js.map → telegram-7ZCSI24W.js.map} +0 -0
- /package/{variable-WMKLX7TF.js.map → variable-O33TDP4J.js.map} +0 -0
- /package/{video-NAUNUYGP.js.map → video-D5LSABFJ.js.map} +0 -0
- /package/{web-7U3YS3KP.js.map → web-JW7AH2UT.js.map} +0 -0
- /package/{web-search-EIO3GVKH.js.map → web-search-MHFQFZS6.js.map} +0 -0
- /package/{whoami-QZJAGTDW.js.map → whoami-5DJLOQUZ.js.map} +0 -0
- /package/{workflow-RMJIYOUB.js.map → workflow-TXG3RBJR.js.map} +0 -0
|
@@ -7,17 +7,15 @@ import {
|
|
|
7
7
|
formatIsoTimestamp,
|
|
8
8
|
isSupportedFramework,
|
|
9
9
|
isUUID,
|
|
10
|
-
parseBoundedLogCount,
|
|
11
|
-
parseSearchQuery,
|
|
12
10
|
parseTime
|
|
13
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-E32I3TNQ.js";
|
|
14
12
|
import {
|
|
15
13
|
searchZeroLogs
|
|
16
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-NR6ANGRK.js";
|
|
17
15
|
import {
|
|
18
16
|
source_default,
|
|
19
17
|
withErrorHandler
|
|
20
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-26BGLMA3.js";
|
|
21
19
|
import {
|
|
22
20
|
Command
|
|
23
21
|
} from "./chunk-B3W2RUBP.js";
|
|
@@ -25,6 +23,67 @@ import {
|
|
|
25
23
|
init_esm_shims
|
|
26
24
|
} from "./chunk-DIRAZ3YX.js";
|
|
27
25
|
|
|
26
|
+
// src/lib/utils/log-pagination.ts
|
|
27
|
+
init_esm_shims();
|
|
28
|
+
function parsePositiveLogCount(value, optionName) {
|
|
29
|
+
const trimmed = value.trim();
|
|
30
|
+
if (!/^0*[1-9]\d*$/.test(trimmed)) {
|
|
31
|
+
throw new Error(`Option ${optionName} must be a positive integer`);
|
|
32
|
+
}
|
|
33
|
+
const count = Number(trimmed);
|
|
34
|
+
if (!Number.isSafeInteger(count)) {
|
|
35
|
+
throw new Error(`Option ${optionName} must be a positive integer`);
|
|
36
|
+
}
|
|
37
|
+
return count;
|
|
38
|
+
}
|
|
39
|
+
function parseBoundedLogCount(value, optionName, min, max) {
|
|
40
|
+
const trimmed = value.trim();
|
|
41
|
+
if (!/^\d+$/.test(trimmed)) {
|
|
42
|
+
throw new Error(`${optionName} must be between ${min} and ${max}`);
|
|
43
|
+
}
|
|
44
|
+
const count = Number(trimmed);
|
|
45
|
+
if (!Number.isSafeInteger(count) || count < min || count > max) {
|
|
46
|
+
throw new Error(`${optionName} must be between ${min} and ${max}`);
|
|
47
|
+
}
|
|
48
|
+
return count;
|
|
49
|
+
}
|
|
50
|
+
async function collectLogItems(options) {
|
|
51
|
+
const collected = [];
|
|
52
|
+
const seenCursors = /* @__PURE__ */ new Set();
|
|
53
|
+
let cursor;
|
|
54
|
+
while (true) {
|
|
55
|
+
const requestLimit = options.targetCount === "all" ? options.pageLimit : Math.min(options.pageLimit, options.targetCount - collected.length);
|
|
56
|
+
const page = await options.fetchPage({
|
|
57
|
+
sinceTime: options.sinceTime,
|
|
58
|
+
cursor,
|
|
59
|
+
limit: requestLimit,
|
|
60
|
+
order: options.order
|
|
61
|
+
});
|
|
62
|
+
collected.push(...page.items);
|
|
63
|
+
if (options.targetCount !== "all" && collected.length >= options.targetCount) {
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
const nextCursor = page.nextCursor ?? null;
|
|
67
|
+
if (!page.hasMore || !nextCursor || seenCursors.has(nextCursor)) {
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
seenCursors.add(nextCursor);
|
|
71
|
+
cursor = nextCursor;
|
|
72
|
+
}
|
|
73
|
+
const entries = options.targetCount === "all" ? collected : collected.slice(0, options.targetCount);
|
|
74
|
+
return options.order === "desc" ? entries.reverse() : entries;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// src/lib/utils/search-query.ts
|
|
78
|
+
init_esm_shims();
|
|
79
|
+
function parseSearchQuery(value, label) {
|
|
80
|
+
const trimmed = value.trim();
|
|
81
|
+
if (!trimmed) {
|
|
82
|
+
throw new Error(`${label} cannot be empty.`);
|
|
83
|
+
}
|
|
84
|
+
return trimmed;
|
|
85
|
+
}
|
|
86
|
+
|
|
28
87
|
// src/commands/zero/logs/search.ts
|
|
29
88
|
init_esm_shims();
|
|
30
89
|
var SEVEN_DAYS_MS = 7 * 24 * 60 * 60 * 1e3;
|
|
@@ -171,7 +230,11 @@ Examples:
|
|
|
171
230
|
);
|
|
172
231
|
|
|
173
232
|
export {
|
|
233
|
+
parsePositiveLogCount,
|
|
234
|
+
parseBoundedLogCount,
|
|
235
|
+
collectLogItems,
|
|
236
|
+
parseSearchQuery,
|
|
174
237
|
runLogsSearch,
|
|
175
238
|
searchCommand
|
|
176
239
|
};
|
|
177
|
-
//# sourceMappingURL=chunk-
|
|
240
|
+
//# sourceMappingURL=chunk-5QJVQEHO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils/log-pagination.ts","../src/lib/utils/search-query.ts","../src/commands/zero/logs/search.ts"],"sourcesContent":["type LogOrder = \"asc\" | \"desc\";\n\ninterface CursorLogPageRequest {\n readonly sinceTime?: number;\n readonly cursor?: string;\n readonly limit: number;\n readonly order: LogOrder;\n}\n\ninterface CursorLogPage<T> {\n readonly items: readonly T[];\n readonly hasMore: boolean;\n readonly nextCursor?: string | null;\n}\n\ninterface CollectLogItemsOptions<T> {\n readonly fetchPage: (\n request: CursorLogPageRequest,\n ) => Promise<CursorLogPage<T>>;\n readonly sinceTime?: number;\n readonly targetCount: number | \"all\";\n readonly order: LogOrder;\n readonly pageLimit: number;\n}\n\nexport function parsePositiveLogCount(\n value: string,\n optionName: string,\n): number {\n const trimmed = value.trim();\n if (!/^0*[1-9]\\d*$/.test(trimmed)) {\n throw new Error(`Option ${optionName} must be a positive integer`);\n }\n\n const count = Number(trimmed);\n if (!Number.isSafeInteger(count)) {\n throw new Error(`Option ${optionName} must be a positive integer`);\n }\n\n return count;\n}\n\nexport function parseBoundedLogCount(\n value: string,\n optionName: string,\n min: number,\n max: number,\n): number {\n const trimmed = value.trim();\n if (!/^\\d+$/.test(trimmed)) {\n throw new Error(`${optionName} must be between ${min} and ${max}`);\n }\n\n const count = Number(trimmed);\n if (!Number.isSafeInteger(count) || count < min || count > max) {\n throw new Error(`${optionName} must be between ${min} and ${max}`);\n }\n\n return count;\n}\n\nexport async function collectLogItems<T>(\n options: CollectLogItemsOptions<T>,\n): Promise<T[]> {\n const collected: T[] = [];\n const seenCursors = new Set<string>();\n let cursor: string | undefined;\n\n while (true) {\n const requestLimit =\n options.targetCount === \"all\"\n ? options.pageLimit\n : Math.min(options.pageLimit, options.targetCount - collected.length);\n\n const page = await options.fetchPage({\n sinceTime: options.sinceTime,\n cursor,\n limit: requestLimit,\n order: options.order,\n });\n\n collected.push(...page.items);\n\n if (\n options.targetCount !== \"all\" &&\n collected.length >= options.targetCount\n ) {\n break;\n }\n\n const nextCursor = page.nextCursor ?? null;\n if (!page.hasMore || !nextCursor || seenCursors.has(nextCursor)) {\n break;\n }\n\n seenCursors.add(nextCursor);\n cursor = nextCursor;\n }\n\n const entries =\n options.targetCount === \"all\"\n ? collected\n : collected.slice(0, options.targetCount);\n\n return options.order === \"desc\" ? entries.reverse() : entries;\n}\n","export function parseSearchQuery(value: string, label: string): string {\n const trimmed = value.trim();\n if (!trimmed) {\n throw new Error(`${label} cannot be empty.`);\n }\n return trimmed;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport {\n searchZeroLogs,\n type RunEvent,\n type LogsSearchResponse,\n} from \"../../../lib/api\";\nimport { parseTime } from \"../../../lib/utils/time-parser\";\nimport { formatIsoTimestamp } from \"../../../lib/utils/time-format\";\nimport { EventRenderer } from \"../../../lib/events/event-renderer\";\nimport { EventStreamNormalizer } from \"../../../lib/events/event-stream-normalizer\";\nimport { withErrorHandler } from \"../../../lib/command\";\nimport { isUUID } from \"../../run/shared\";\nimport { parseBoundedLogCount } from \"../../../lib/utils/log-pagination\";\nimport { parseSearchQuery } from \"../../../lib/utils/search-query\";\nimport { isSupportedFramework } from \"@vm0/core/frameworks\";\n\nconst SEVEN_DAYS_MS = 7 * 24 * 60 * 60 * 1000;\n\nexport interface LogsSearchCliOptions {\n afterContext?: string;\n beforeContext?: string;\n context?: string;\n agentId?: string;\n run?: string;\n since?: string;\n limit?: string;\n}\n\ninterface LogsSearchCommandOptions extends Omit<\n LogsSearchCliOptions,\n \"agentId\"\n> {\n agent?: string;\n}\n\nfunction supportedSearchFramework(\n framework: string | null | undefined,\n): string | undefined {\n const normalized = framework ?? undefined;\n return isSupportedFramework(normalized) ? normalized : undefined;\n}\n\nfunction renderSearchEvent(\n event: RunEvent,\n framework: string | null | undefined,\n renderer: EventRenderer,\n normalizer: EventStreamNormalizer,\n): void {\n const parsedEvents = normalizer.process(\n event.eventData,\n supportedSearchFramework(framework),\n new Date(event.createdAt),\n );\n for (const parsed of parsedEvents) {\n renderer.render(parsed);\n }\n}\n\nfunction flushSearchRenderer(\n renderer: EventRenderer,\n normalizer: EventStreamNormalizer,\n): void {\n for (const parsed of normalizer.flush()) {\n renderer.render(parsed);\n }\n renderer.flush();\n}\n\nfunction formatRunHeader(\n runId: string,\n agentName: string,\n timestamp: string,\n): string {\n const time = formatIsoTimestamp(timestamp);\n return `── Run ${runId} (${agentName}, ${time}) ──────────`;\n}\n\nfunction parseContextOptions(options: LogsSearchCliOptions): {\n before: number;\n after: number;\n} {\n const contextN =\n options.context !== undefined\n ? parseBoundedLogCount(options.context, \"--context\", 0, 10)\n : 0;\n const before =\n options.beforeContext !== undefined\n ? parseBoundedLogCount(options.beforeContext, \"--before-context\", 0, 10)\n : contextN;\n const after =\n options.afterContext !== undefined\n ? parseBoundedLogCount(options.afterContext, \"--after-context\", 0, 10)\n : contextN;\n\n return { before, after };\n}\n\nfunction parseLimit(value: string | undefined): number | undefined {\n if (value === undefined) return undefined;\n return parseBoundedLogCount(value, \"--limit\", 1, 50);\n}\n\nfunction renderResults(response: LogsSearchResponse): void {\n const grouped = new Map<\n string,\n { agentName: string; results: LogsSearchResponse[\"results\"] }\n >();\n for (const result of response.results) {\n const existing = grouped.get(result.runId);\n if (existing) {\n existing.results.push(result);\n } else {\n grouped.set(result.runId, {\n agentName: result.agentName,\n results: [result],\n });\n }\n }\n\n let isFirstGroup = true;\n for (const [runId, group] of grouped) {\n if (!isFirstGroup) {\n console.log();\n }\n isFirstGroup = false;\n\n const firstTimestamp = group.results[0]!.matchedEvent.createdAt;\n console.log(\n chalk.bold(formatRunHeader(runId, group.agentName, firstTimestamp)),\n );\n\n for (const result of group.results) {\n const renderer = new EventRenderer({\n showTimestamp: true,\n verbose: false,\n });\n const normalizer = new EventStreamNormalizer();\n\n for (const event of result.contextBefore) {\n renderSearchEvent(event, result.framework, renderer, normalizer);\n }\n renderSearchEvent(\n result.matchedEvent,\n result.framework,\n renderer,\n normalizer,\n );\n for (const event of result.contextAfter) {\n renderSearchEvent(event, result.framework, renderer, normalizer);\n }\n flushSearchRenderer(renderer, normalizer);\n }\n }\n\n if (response.hasMore) {\n console.log();\n console.log(\n chalk.dim(\n ` Showing first ${response.results.length} matches. Use --limit to see more.`,\n ),\n );\n }\n}\n\nexport async function runLogsSearch(\n keyword: string,\n options: LogsSearchCliOptions,\n): Promise<void> {\n const searchKeyword = parseSearchQuery(keyword, \"Keyword\");\n const { before, after } = parseContextOptions(options);\n\n if (options.agentId !== undefined && !isUUID(options.agentId)) {\n console.error(\n chalk.red(`✗ Invalid agent ID \"${options.agentId}\" — expected a UUID`),\n );\n console.error(chalk.dim(\" Run: zero logs list to find agent IDs\"));\n process.exit(1);\n }\n\n if (options.run !== undefined && !isUUID(options.run)) {\n console.error(\n chalk.red(`✗ Invalid run ID \"${options.run}\" — expected a UUID`),\n );\n console.error(chalk.dim(\" Run: zero logs list to find run IDs\"));\n process.exit(1);\n }\n\n const since =\n options.since !== undefined\n ? parseTime(options.since)\n : Date.now() - SEVEN_DAYS_MS;\n const limit = parseLimit(options.limit);\n\n const response = await searchZeroLogs({\n keyword: searchKeyword,\n agentId: options.agentId,\n runId: options.run,\n since,\n limit,\n before,\n after,\n });\n\n if (response.results.length === 0) {\n console.log(chalk.dim(\"No matches found\"));\n console.log(\n chalk.dim(\n \" Try a broader search with --since 30d or a different keyword\",\n ),\n );\n return;\n }\n\n renderResults(response);\n}\n\nexport const searchCommand = new Command()\n .name(\"search\")\n .description(\"Search agent events across runs\")\n .argument(\"<keyword>\", \"Search keyword\")\n .option(\"-A, --after-context <n>\", \"Show n events after each match\")\n .option(\"-B, --before-context <n>\", \"Show n events before each match\")\n .option(\"-C, --context <n>\", \"Show n events before and after each match\")\n .option(\"--agent <id>\", \"Filter by Zero agent ID\")\n .option(\"--run <id>\", \"Filter by specific run ID\")\n .option(\"--since <time>\", \"Search logs since (default: 7d)\")\n .option(\"--limit <n>\", \"Maximum number of matches (default: 20)\")\n .addHelpText(\n \"after\",\n `\nExamples:\n zero logs search \"error\"\n zero logs search \"timeout\" --agent 123e4567-e89b-12d3-a456-426614174000 -C 2\n zero logs search \"failed\" --since 30d --limit 50`,\n )\n .action(\n withErrorHandler(\n async (keyword: string, options: LogsSearchCommandOptions) => {\n const { agent, ...searchOptions } = options;\n await runLogsSearch(keyword, { ...searchOptions, agentId: agent });\n },\n ),\n );\n"],"mappings":"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","names":[]}
|
|
@@ -3,13 +3,13 @@ import { createRequire as __createRequire } from "node:module";
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
resolveFirewallMetadataPolicies
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-STMJYQTH.js";
|
|
7
7
|
import {
|
|
8
8
|
getZeroConnectorCatalogPermissions
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-NR6ANGRK.js";
|
|
10
10
|
import {
|
|
11
11
|
source_default
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-26BGLMA3.js";
|
|
13
13
|
import {
|
|
14
14
|
init_esm_shims
|
|
15
15
|
} from "./chunk-DIRAZ3YX.js";
|
|
@@ -89,4 +89,4 @@ export {
|
|
|
89
89
|
policyIcon,
|
|
90
90
|
loadConnectorPermissionInfos
|
|
91
91
|
};
|
|
92
|
-
//# sourceMappingURL=chunk-
|
|
92
|
+
//# sourceMappingURL=chunk-7KSTVBNN.js.map
|
|
@@ -3,7 +3,7 @@ import { createRequire as __createRequire } from "node:module";
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
getApiUrl
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-26BGLMA3.js";
|
|
7
7
|
import {
|
|
8
8
|
init_esm_shims
|
|
9
9
|
} from "./chunk-DIRAZ3YX.js";
|
|
@@ -39,4 +39,4 @@ export {
|
|
|
39
39
|
toPlatformUrl,
|
|
40
40
|
getPlatformOrigin
|
|
41
41
|
};
|
|
42
|
-
//# sourceMappingURL=chunk-
|
|
42
|
+
//# sourceMappingURL=chunk-BIJC6U3G.js.map
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
getEvents,
|
|
13
13
|
runnerGroupSchema,
|
|
14
14
|
zeroAgentVisibilitySchema
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-NR6ANGRK.js";
|
|
16
16
|
import {
|
|
17
17
|
apiErrorSchema,
|
|
18
18
|
external_exports,
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
supportedRunModelSchema,
|
|
25
25
|
upsertModelProviderRequestSchema,
|
|
26
26
|
upsertModelProviderResponseSchema
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-26BGLMA3.js";
|
|
28
28
|
import {
|
|
29
29
|
__commonJS,
|
|
30
30
|
__require,
|
|
@@ -7832,14 +7832,6 @@ function getFrameworkDisplayName(framework) {
|
|
|
7832
7832
|
assertSupportedFramework(framework);
|
|
7833
7833
|
return FRAMEWORK_DISPLAY_NAMES[framework];
|
|
7834
7834
|
}
|
|
7835
|
-
var FRAMEWORK_INSTRUCTIONS_FILENAMES = {
|
|
7836
|
-
"claude-code": "CLAUDE.md",
|
|
7837
|
-
codex: "AGENTS.md"
|
|
7838
|
-
};
|
|
7839
|
-
function getInstructionsFilename(framework) {
|
|
7840
|
-
const validated = getValidatedFramework(framework);
|
|
7841
|
-
return FRAMEWORK_INSTRUCTIONS_FILENAMES[validated];
|
|
7842
|
-
}
|
|
7843
7835
|
|
|
7844
7836
|
// src/lib/events/event-stream-normalizer.ts
|
|
7845
7837
|
init_esm_shims();
|
|
@@ -10917,10 +10909,10 @@ var presentationImageAssetSchema = external_exports.object({
|
|
|
10917
10909
|
source: external_exports.enum(["unsplash", "pexels"]),
|
|
10918
10910
|
sourceName: external_exports.enum(["Unsplash", "Pexels"]),
|
|
10919
10911
|
sourceUrl: external_exports.url(),
|
|
10920
|
-
//
|
|
10921
|
-
|
|
10922
|
-
//
|
|
10923
|
-
// carries the
|
|
10912
|
+
// Provider-neutral link rendered for the source in image attribution.
|
|
10913
|
+
sourceAttributionUrl: external_exports.url(),
|
|
10914
|
+
// Deprecated compatibility field for published presentation and website
|
|
10915
|
+
// packages. It carries the same value as `sourceAttributionUrl`.
|
|
10924
10916
|
unsplashUrl: external_exports.url(),
|
|
10925
10917
|
photographerName: external_exports.string().min(1),
|
|
10926
10918
|
photographerUrl: external_exports.url(),
|
|
@@ -13921,6 +13913,11 @@ var googleCalendar = {
|
|
|
13921
13913
|
|
|
13922
13914
|
// ../../packages/connectors/src/connectors/google-contacts.ts
|
|
13923
13915
|
init_esm_shims();
|
|
13916
|
+
|
|
13917
|
+
// ../../packages/connectors/src/feature-switch-key.ts
|
|
13918
|
+
init_esm_shims();
|
|
13919
|
+
|
|
13920
|
+
// ../../packages/connectors/src/connectors/google-contacts.ts
|
|
13924
13921
|
var googleContacts = {
|
|
13925
13922
|
"google-contacts": {
|
|
13926
13923
|
label: "Google Contacts",
|
|
@@ -31626,9 +31623,6 @@ init_esm_shims();
|
|
|
31626
31623
|
|
|
31627
31624
|
// ../../packages/core/src/storage-names.ts
|
|
31628
31625
|
init_esm_shims();
|
|
31629
|
-
function getInstructionsStorageName(agentName) {
|
|
31630
|
-
return `agent-instructions@${agentName}`;
|
|
31631
|
-
}
|
|
31632
31626
|
|
|
31633
31627
|
// ../../packages/core/src/github-url.ts
|
|
31634
31628
|
init_esm_shims();
|
|
@@ -31859,11 +31853,6 @@ var FEATURE_SWITCHES = {
|
|
|
31859
31853
|
enabled: false,
|
|
31860
31854
|
enabledOrgIdHashes: STAFF_ORG_ID_HASHES
|
|
31861
31855
|
},
|
|
31862
|
-
["agentDetailWorkflowsTab" /* AgentDetailWorkflowsTab */]: {
|
|
31863
|
-
maintainer: "ethan@vm0.ai",
|
|
31864
|
-
description: "Show the Workflows tab on agent detail pages, scoped to workflows visible for that agent.",
|
|
31865
|
-
enabled: false
|
|
31866
|
-
},
|
|
31867
31856
|
["testOauthConnector" /* TestOauthConnector */]: {
|
|
31868
31857
|
maintainer: "liangyou@vm0.ai",
|
|
31869
31858
|
description: "Enable the test-oauth connector, a synthetic OAuth 2.0 provider used only for automated tests. Off in prod.",
|
|
@@ -31895,11 +31884,6 @@ var FEATURE_SWITCHES = {
|
|
|
31895
31884
|
enabled: false,
|
|
31896
31885
|
enabledOrgIdHashes: STAFF_ORG_ID_HASHES
|
|
31897
31886
|
},
|
|
31898
|
-
["codexFrameworkForMinimax" /* CodexFrameworkForMinimax */]: {
|
|
31899
|
-
maintainer: "lancy@vm0.ai",
|
|
31900
|
-
description: "Expose the experimental MiniMax Codex framework provider route for Responses API compatibility testing.",
|
|
31901
|
-
enabled: false
|
|
31902
|
-
},
|
|
31903
31887
|
["codexFastMode" /* CodexFastMode */]: {
|
|
31904
31888
|
maintainer: "lancy@vm0.ai",
|
|
31905
31889
|
description: "Enable Codex fast mode for ChatGPT subscription GPT 5.5 and GPT 5.6 web chat runs.",
|
|
@@ -31957,11 +31941,6 @@ var FEATURE_SWITCHES = {
|
|
|
31957
31941
|
enabled: false,
|
|
31958
31942
|
enabledOrgIdHashes: STAFF_ORG_ID_HASHES
|
|
31959
31943
|
},
|
|
31960
|
-
["mobileUnreadChatThreadShortcuts" /* MobileUnreadChatThreadShortcuts */]: {
|
|
31961
|
-
maintainer: "ethan@vm0.ai",
|
|
31962
|
-
description: "Show unread chat thread shortcuts between the mobile agent chat composer and suggested prompt cards.",
|
|
31963
|
-
enabled: false
|
|
31964
|
-
},
|
|
31965
31944
|
["chatThreadUnifiedSearch" /* ChatThreadUnifiedSearch */]: {
|
|
31966
31945
|
maintainer: "ethan@vm0.ai",
|
|
31967
31946
|
description: "Show chat thread title results from the local event-driven thread cache in the command-shift-a conversation picker.",
|
|
@@ -32031,11 +32010,6 @@ var FEATURE_SWITCHES = {
|
|
|
32031
32010
|
enabled: false,
|
|
32032
32011
|
enabledOrgIdHashes: STAFF_ORG_ID_HASHES
|
|
32033
32012
|
},
|
|
32034
|
-
["artifactPreviewImage" /* ArtifactPreviewImage */]: {
|
|
32035
|
-
maintainer: "bingjie@vm0.ai",
|
|
32036
|
-
description: "Render a static preview image (screenshot) for HTML/website artifacts on deploy so the artifacts grid shows an image instead of a live iframe.",
|
|
32037
|
-
enabled: true
|
|
32038
|
-
},
|
|
32039
32013
|
["websiteTemplateV2" /* WebsiteTemplateV2 */]: {
|
|
32040
32014
|
maintainer: "bingjie@vm0.ai",
|
|
32041
32015
|
description: "Generate websites from refreshed self-contained template packages. When off, website generation uses the existing package versions.",
|
|
@@ -32056,15 +32030,11 @@ var FEATURE_SWITCHES = {
|
|
|
32056
32030
|
enabledOrgIdHashes: STAFF_ORG_ID_HASHES,
|
|
32057
32031
|
userOverridable: false
|
|
32058
32032
|
},
|
|
32059
|
-
["connectorActionCallback" /* ConnectorActionCallback */]: {
|
|
32060
|
-
maintainer: "ethan@vm0.ai",
|
|
32061
|
-
description: "Resume a web chat with a callback prompt after a connector or permission action succeeds.",
|
|
32062
|
-
enabled: true
|
|
32063
|
-
},
|
|
32064
32033
|
["zeroMail" /* ZeroMail */]: {
|
|
32065
|
-
maintainer: "
|
|
32034
|
+
maintainer: "ethan@vm0.ai",
|
|
32066
32035
|
description: "Enable persistent Gmail and Outlook draft cards created through the Zero Mail CLI.",
|
|
32067
|
-
enabled: false
|
|
32036
|
+
enabled: false,
|
|
32037
|
+
enabledOrgIdHashes: STAFF_ORG_ID_HASHES
|
|
32068
32038
|
},
|
|
32069
32039
|
["composerConnectorPermissions" /* ComposerConnectorPermissions */]: {
|
|
32070
32040
|
maintainer: "ming@vm0.ai",
|
|
@@ -33314,7 +33284,7 @@ function formatToolResult(toolUse, result, verbose) {
|
|
|
33314
33284
|
const remaining = resultLines.length - previewCount;
|
|
33315
33285
|
if (remaining > 0) {
|
|
33316
33286
|
lines.push(
|
|
33317
|
-
` ${source_default.dim(`\u2026 +${remaining} ${pluralize(remaining, "line", "lines")} (
|
|
33287
|
+
` ${source_default.dim(`\u2026 +${remaining} ${pluralize(remaining, "line", "lines")} (zero logs <runId> to see all)`)}`
|
|
33318
33288
|
);
|
|
33319
33289
|
}
|
|
33320
33290
|
}
|
|
@@ -33378,7 +33348,7 @@ function formatReadContent(resultText, verbose) {
|
|
|
33378
33348
|
const remaining = totalLines - previewCount;
|
|
33379
33349
|
if (remaining > 0) {
|
|
33380
33350
|
lines.push(
|
|
33381
|
-
` ${source_default.dim(`\u2026 +${remaining} ${pluralize(remaining, "line", "lines")} (
|
|
33351
|
+
` ${source_default.dim(`\u2026 +${remaining} ${pluralize(remaining, "line", "lines")} (zero logs <runId> to see all)`)}`
|
|
33382
33352
|
);
|
|
33383
33353
|
}
|
|
33384
33354
|
}
|
|
@@ -33403,7 +33373,7 @@ function formatWritePreview(input, verbose) {
|
|
|
33403
33373
|
const remaining = totalLines - previewCount;
|
|
33404
33374
|
if (remaining > 0) {
|
|
33405
33375
|
lines.push(
|
|
33406
|
-
` ${source_default.dim(`\u2026 +${remaining} ${pluralize(remaining, "line", "lines")} (
|
|
33376
|
+
` ${source_default.dim(`\u2026 +${remaining} ${pluralize(remaining, "line", "lines")} (zero logs <runId> to see all)`)}`
|
|
33407
33377
|
);
|
|
33408
33378
|
}
|
|
33409
33379
|
}
|
|
@@ -33436,7 +33406,7 @@ function formatEditDiff(input, verbose) {
|
|
|
33436
33406
|
const remainingOld = oldLines.length - previewLimit;
|
|
33437
33407
|
if (remainingOld > 0) {
|
|
33438
33408
|
lines.push(
|
|
33439
|
-
` ${source_default.dim(`\u2026 +${remainingOld} ${pluralize(remainingOld, "line", "lines")} (
|
|
33409
|
+
` ${source_default.dim(`\u2026 +${remainingOld} ${pluralize(remainingOld, "line", "lines")} (zero logs <runId> to see all)`)}`
|
|
33440
33410
|
);
|
|
33441
33411
|
}
|
|
33442
33412
|
for (let i = 0; i < showNew; i++) {
|
|
@@ -33445,7 +33415,7 @@ function formatEditDiff(input, verbose) {
|
|
|
33445
33415
|
const remainingNew = newLines.length - previewLimit;
|
|
33446
33416
|
if (remainingNew > 0) {
|
|
33447
33417
|
lines.push(
|
|
33448
|
-
` ${source_default.dim(`\u2026 +${remainingNew} ${pluralize(remainingNew, "line", "lines")} (
|
|
33418
|
+
` ${source_default.dim(`\u2026 +${remainingNew} ${pluralize(remainingNew, "line", "lines")} (zero logs <runId> to see all)`)}`
|
|
33449
33419
|
);
|
|
33450
33420
|
}
|
|
33451
33421
|
}
|
|
@@ -33475,7 +33445,7 @@ function formatTodoList(input) {
|
|
|
33475
33445
|
const remaining = todos.length - MAX_FORMATTED_TODOS;
|
|
33476
33446
|
if (remaining > 0) {
|
|
33477
33447
|
lines.push(
|
|
33478
|
-
` ${source_default.dim(`\u2026 +${remaining} ${pluralize(remaining, "task", "tasks")} (
|
|
33448
|
+
` ${source_default.dim(`\u2026 +${remaining} ${pluralize(remaining, "task", "tasks")} (zero logs <runId> to see all)`)}`
|
|
33479
33449
|
);
|
|
33480
33450
|
}
|
|
33481
33451
|
return lines;
|
|
@@ -33537,7 +33507,7 @@ var EventRenderer = class _EventRenderer {
|
|
|
33537
33507
|
if (info.sandboxId) {
|
|
33538
33508
|
console.log(` Sandbox: ${source_default.dim(info.sandboxId)}`);
|
|
33539
33509
|
}
|
|
33540
|
-
console.log(source_default.dim(` (use "
|
|
33510
|
+
console.log(source_default.dim(` (use "zero logs ${info.runId}" to view logs)`));
|
|
33541
33511
|
console.log();
|
|
33542
33512
|
}
|
|
33543
33513
|
/**
|
|
@@ -33636,9 +33606,7 @@ var EventRenderer = class _EventRenderer {
|
|
|
33636
33606
|
} else {
|
|
33637
33607
|
console.error(` Error: ${source_default.red(errorText)}`);
|
|
33638
33608
|
}
|
|
33639
|
-
console.error(
|
|
33640
|
-
source_default.dim(` (use "vm0 logs ${runId} --system" to view system logs)`)
|
|
33641
|
-
);
|
|
33609
|
+
console.error(source_default.dim(` (use "zero logs ${runId}" to view agent logs)`));
|
|
33642
33610
|
}
|
|
33643
33611
|
/**
|
|
33644
33612
|
* Handle tool_use event - buffer it for later grouping with result (when buffered)
|
|
@@ -34125,9 +34093,7 @@ function renderTerminalRunResult(runId, run) {
|
|
|
34125
34093
|
}
|
|
34126
34094
|
if (run.status === "timeout") {
|
|
34127
34095
|
console.error(source_default.red("\n\u2717 Run timed out"));
|
|
34128
|
-
console.error(
|
|
34129
|
-
source_default.dim(` (use "vm0 logs ${runId} --system" to view system logs)`)
|
|
34130
|
-
);
|
|
34096
|
+
console.error(source_default.dim(` (use "zero logs ${runId}" to view logs)`));
|
|
34131
34097
|
return { succeeded: false, runId };
|
|
34132
34098
|
}
|
|
34133
34099
|
console.error(source_default.yellow("\n\u2717 Run cancelled"));
|
|
@@ -34214,7 +34180,7 @@ function showNextSteps(result) {
|
|
|
34214
34180
|
const { runId, sessionId, checkpointId } = result;
|
|
34215
34181
|
console.log();
|
|
34216
34182
|
console.log(" View agent logs:");
|
|
34217
|
-
console.log(source_default.cyan(`
|
|
34183
|
+
console.log(source_default.cyan(` zero logs ${runId}`));
|
|
34218
34184
|
if (sessionId) {
|
|
34219
34185
|
console.log(" Continue with session (latest conversation and artifact):");
|
|
34220
34186
|
console.log(
|
|
@@ -34315,73 +34281,8 @@ function isValidTimestamp(timestamp) {
|
|
|
34315
34281
|
return Number.isSafeInteger(timestamp) && Math.abs(timestamp) <= MAX_DATE_TIMESTAMP_MS;
|
|
34316
34282
|
}
|
|
34317
34283
|
|
|
34318
|
-
// src/lib/utils/log-pagination.ts
|
|
34319
|
-
init_esm_shims();
|
|
34320
|
-
function parsePositiveLogCount(value, optionName) {
|
|
34321
|
-
const trimmed = value.trim();
|
|
34322
|
-
if (!/^0*[1-9]\d*$/.test(trimmed)) {
|
|
34323
|
-
throw new Error(`Option ${optionName} must be a positive integer`);
|
|
34324
|
-
}
|
|
34325
|
-
const count = Number(trimmed);
|
|
34326
|
-
if (!Number.isSafeInteger(count)) {
|
|
34327
|
-
throw new Error(`Option ${optionName} must be a positive integer`);
|
|
34328
|
-
}
|
|
34329
|
-
return count;
|
|
34330
|
-
}
|
|
34331
|
-
function parseBoundedLogCount(value, optionName, min, max) {
|
|
34332
|
-
const trimmed = value.trim();
|
|
34333
|
-
if (!/^\d+$/.test(trimmed)) {
|
|
34334
|
-
throw new Error(`${optionName} must be between ${min} and ${max}`);
|
|
34335
|
-
}
|
|
34336
|
-
const count = Number(trimmed);
|
|
34337
|
-
if (!Number.isSafeInteger(count) || count < min || count > max) {
|
|
34338
|
-
throw new Error(`${optionName} must be between ${min} and ${max}`);
|
|
34339
|
-
}
|
|
34340
|
-
return count;
|
|
34341
|
-
}
|
|
34342
|
-
async function collectLogItems(options) {
|
|
34343
|
-
const collected = [];
|
|
34344
|
-
const seenCursors = /* @__PURE__ */ new Set();
|
|
34345
|
-
let cursor2;
|
|
34346
|
-
while (true) {
|
|
34347
|
-
const requestLimit = options.targetCount === "all" ? options.pageLimit : Math.min(options.pageLimit, options.targetCount - collected.length);
|
|
34348
|
-
const page = await options.fetchPage({
|
|
34349
|
-
sinceTime: options.sinceTime,
|
|
34350
|
-
cursor: cursor2,
|
|
34351
|
-
limit: requestLimit,
|
|
34352
|
-
order: options.order
|
|
34353
|
-
});
|
|
34354
|
-
collected.push(...page.items);
|
|
34355
|
-
if (options.targetCount !== "all" && collected.length >= options.targetCount) {
|
|
34356
|
-
break;
|
|
34357
|
-
}
|
|
34358
|
-
const nextCursor = page.nextCursor ?? null;
|
|
34359
|
-
if (!page.hasMore || !nextCursor || seenCursors.has(nextCursor)) {
|
|
34360
|
-
break;
|
|
34361
|
-
}
|
|
34362
|
-
seenCursors.add(nextCursor);
|
|
34363
|
-
cursor2 = nextCursor;
|
|
34364
|
-
}
|
|
34365
|
-
const entries = options.targetCount === "all" ? collected : collected.slice(0, options.targetCount);
|
|
34366
|
-
return options.order === "desc" ? entries.reverse() : entries;
|
|
34367
|
-
}
|
|
34368
|
-
|
|
34369
|
-
// src/lib/utils/search-query.ts
|
|
34370
|
-
init_esm_shims();
|
|
34371
|
-
function parseSearchQuery(value, label) {
|
|
34372
|
-
const trimmed = value.trim();
|
|
34373
|
-
if (!trimmed) {
|
|
34374
|
-
throw new Error(`${label} cannot be empty.`);
|
|
34375
|
-
}
|
|
34376
|
-
return trimmed;
|
|
34377
|
-
}
|
|
34378
|
-
|
|
34379
34284
|
export {
|
|
34380
|
-
require_dist,
|
|
34381
|
-
extractAndGroupVariables,
|
|
34382
|
-
getInstructionsStorageName,
|
|
34383
34285
|
isSupportedFramework,
|
|
34384
|
-
getInstructionsFilename,
|
|
34385
34286
|
EventStreamNormalizer,
|
|
34386
34287
|
formatIsoTimestamp,
|
|
34387
34288
|
EventRenderer,
|
|
@@ -34398,10 +34299,6 @@ export {
|
|
|
34398
34299
|
renderRunCreated,
|
|
34399
34300
|
pollEvents,
|
|
34400
34301
|
showNextSteps,
|
|
34401
|
-
parseTime
|
|
34402
|
-
parsePositiveLogCount,
|
|
34403
|
-
parseBoundedLogCount,
|
|
34404
|
-
collectLogItems,
|
|
34405
|
-
parseSearchQuery
|
|
34302
|
+
parseTime
|
|
34406
34303
|
};
|
|
34407
|
-
//# sourceMappingURL=chunk-
|
|
34304
|
+
//# sourceMappingURL=chunk-E32I3TNQ.js.map
|