Repository navigation
Add JSONL output to theme dev - #8996
isaacroldan wants to merge 6 commits into
Conversation
|
/snapit |
87bf45a to
c891369
Compare
|
🫰✨ Thanks @isaacroldan! Your snapshot has been published to npm. Built from Test the snapshot by installing your package globally: pnpm i -g --@shopify:registry=https://registry.npmjs.org @shopify/[email protected]Caution After installing, validate the version by running |
eac3b4a to
36ee858
Compare
|
/snapit |
|
🫰✨ Thanks @gonzaloriestra! Your snapshot has been published to npm. Built from Test the snapshot by installing your package globally: pnpm i -g --@shopify:registry=https://registry.npmjs.org @shopify/[email protected]Caution After installing, validate the version by running |
36ee858 to
31116c6
Compare
|
/snapit |
|
🫰✨ Thanks @gonzaloriestra! Your snapshot has been published to npm. Built from Test the snapshot by installing your package globally: pnpm i -g --@shopify:registry=https://registry.npmjs.org @shopify/[email protected]Caution After installing, validate the version by running |
Differences in type declarationsWe detected differences in the type declarations generated by Typescript for this branch compared to the baseline ('main' branch). Please, review them to ensure they are backward-compatible. Here are some important things to keep in mind:
New type declarationsWe found no new type declarations in this PR Existing type declarationspackages/cli-kit/dist/private/node/dev-instance-output.d.ts@@ -2,18 +2,18 @@ import { zod } from '../../public/node/schema.js';
import { Writable, type WritableOptions } from 'stream';
export declare const devInstanceLogOutputSchema: import("../../public/node/json-output-schema.js").JsonOutputSchema<zod.ZodObject<{
timestamp: zod.ZodString;
- source: zod.ZodString;
+ source: zod.ZodOptional<zod.ZodString>;
level: zod.ZodOptional<zod.ZodEnum<["debug", "info", "warning", "error"]>>;
message: zod.ZodString;
}, "strict", zod.ZodTypeAny, {
- source: string;
message: string;
timestamp: string;
+ source?: string | undefined;
level?: "info" | "error" | "debug" | "warning" | undefined;
}, {
- source: string;
message: string;
timestamp: string;
+ source?: string | undefined;
level?: "info" | "error" | "debug" | "warning" | undefined;
}>>;
/** One line of a dev instance's JSON Lines log. */
@@ -30,7 +30,7 @@ export declare function createDevInstanceOutput({ logFile, logOutput, isActive,
timestamp?: string;
}) => Promise<void>;
tee: (target: Writable, { source, stringWritesAreMessages }: {
- source: string;
+ source?: string;
stringWritesAreMessages?: boolean;
}) => DevInstanceOutput;
flush: () => Promise<PromiseSettledResult<void>[]>;
packages/cli-kit/dist/private/node/output-context.d.ts@@ -2,6 +2,8 @@ export interface ConcurrentOutputContext {
outputPrefix?: string;
/** Controls ANSI stripping for terminal output. JSON diagnostics are always unstyled. */
stripAnsi?: boolean;
+ /** Captures console messages before the terminal renderer handles them. */
+ consoleWarn?: (message: string) => void;
}
export declare function useConcurrentOutputContext<T>(context: ConcurrentOutputContext, callback: () => T): T;
/** Returns the source and styling context for the current output write. */
packages/cli-kit/dist/public/node/dev-instance.d.ts@@ -80,7 +80,8 @@ export interface DevInstance {
* The returned stream forwards the original bytes to `target` unchanged.
*/
tee: (target: Writable, options: {
- source: string;
+ /** Omit the source field when the stream does not need to distinguish producers. */
+ source?: string;
/** Treat each string write as a complete message. Byte writes remain buffered into lines. */
stringWritesAreMessages?: boolean;
}) => Writable;
|
WHY are these changes introduced?
Agents need structured live output from
theme devwhile the session runs.WHAT is this pull request doing?
Add
--json(-j) to stream the same JSONL bytes to stdout and the Dev Instance log. Reuse the shared log schema and writer; records containtimestampandmessage, withouttype,stream, orsource. Setup diagnostics use stderr, and fatal CLI errors use the standard JSON error envelope on stdout. Request and synchronization messages omit terminal timestamps and decoration; request paths remain complete. There is no final success result.Disable terminal progress UI and hotkeys in JSON mode. Keep a named theme environment on the single-session path instead of collecting a finite batch result. Expose the record schema through
--json-schema, update generated help/docs, and remove theapp devandtheme devlint exceptions now that both support typed JSON.Stacked on #8976.
How to manually test your changes?
pnpm shopify theme dev --path /path/to/theme --store your-store.myshopify.com --theme THEME_ID --json --no-input > /tmp/theme-dev.jsonlwith existing authentication..shopify/dev/*.jsonlfile and compare it with/tmp/theme-dev.jsonl; the bytes should match.pnpm shopify theme dev --json-schemato inspect the record and fatal-error schemas.Validation
--json,-j, the environment variable, named/configured environments,--no-input, schemas, and fatal errors. The command tests leave the remembered theme store unchanged.Checklist