@treeseed/cli 0.6.12 → 0.6.14
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/dist/cli/handlers/dev.js
CHANGED
|
@@ -43,14 +43,37 @@ function resolveCoreDevEntrypoint(cwd) {
|
|
|
43
43
|
const handleDev = async (invocation, context) => {
|
|
44
44
|
try {
|
|
45
45
|
const watch = invocation.commandName === "dev:watch" || invocation.args.watch === true;
|
|
46
|
+
const passthroughArgs = [];
|
|
47
|
+
const forwardStringOption = (name, flag) => {
|
|
48
|
+
const value = invocation.args[name];
|
|
49
|
+
if (typeof value === "string" && value.trim().length > 0) {
|
|
50
|
+
passthroughArgs.push(flag, value);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
const forwardBooleanOption = (name, flag) => {
|
|
54
|
+
if (invocation.args[name] === true) {
|
|
55
|
+
passthroughArgs.push(flag);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
forwardStringOption("surface", "--surface");
|
|
59
|
+
forwardStringOption("host", "--host");
|
|
60
|
+
forwardStringOption("port", "--port");
|
|
61
|
+
forwardStringOption("apiHost", "--api-host");
|
|
62
|
+
forwardStringOption("apiPort", "--api-port");
|
|
63
|
+
forwardStringOption("managerPort", "--manager-port");
|
|
64
|
+
forwardStringOption("setup", "--setup");
|
|
65
|
+
forwardStringOption("feedback", "--feedback");
|
|
66
|
+
forwardStringOption("open", "--open");
|
|
67
|
+
forwardBooleanOption("plan", "--plan");
|
|
68
|
+
forwardBooleanOption("json", "--json");
|
|
46
69
|
const workspaceRoot = findNearestTreeseedWorkspaceRoot(context.cwd);
|
|
47
70
|
const workspaceLinksMode = typeof invocation.args.workspaceLinks === "string" ? invocation.args.workspaceLinks : void 0;
|
|
48
71
|
const workspaceLinks = workspaceRoot ? ensureLocalWorkspaceLinks(workspaceRoot, { env: context.env, mode: workspaceLinksMode }) : null;
|
|
49
|
-
if (workspaceLinks?.created.length) {
|
|
72
|
+
if (workspaceLinks?.created.length && invocation.args.json !== true) {
|
|
50
73
|
context.write(`[workspace][link] Linked ${workspaceLinks.created.length} local workspace package paths.`, "stdout");
|
|
51
74
|
}
|
|
52
75
|
const resolved = resolveCoreDevEntrypoint(context.cwd);
|
|
53
|
-
const args = watch ? [...resolved.args, "--watch"] : resolved.args;
|
|
76
|
+
const args = watch ? [...resolved.args, ...passthroughArgs, "--watch"] : [...resolved.args, ...passthroughArgs];
|
|
54
77
|
const result = context.spawn(resolved.command, args, {
|
|
55
78
|
cwd: context.cwd,
|
|
56
79
|
env: resolveTreeseedLaunchEnvironment({
|
|
@@ -62,6 +85,7 @@ const handleDev = async (invocation, context) => {
|
|
|
62
85
|
});
|
|
63
86
|
return {
|
|
64
87
|
exitCode: result.status ?? 1,
|
|
88
|
+
suppressJsonResult: invocation.args.json === true,
|
|
65
89
|
report: {
|
|
66
90
|
command: "dev",
|
|
67
91
|
ok: (result.status ?? 1) === 0,
|
|
@@ -49,6 +49,9 @@ function guidedResult(options) {
|
|
|
49
49
|
}
|
|
50
50
|
function writeResult(result, context) {
|
|
51
51
|
if (context.outputFormat === "json") {
|
|
52
|
+
if (result.suppressJsonResult === true) {
|
|
53
|
+
return result.exitCode ?? 0;
|
|
54
|
+
}
|
|
52
55
|
const payload = result.report ?? {
|
|
53
56
|
ok: (result.exitCode ?? 0) === 0,
|
|
54
57
|
stdout: result.stdout ?? [],
|
|
@@ -20,6 +20,21 @@ function detail(name, detailText) {
|
|
|
20
20
|
function related(name, why) {
|
|
21
21
|
return { name, why };
|
|
22
22
|
}
|
|
23
|
+
const DEV_RUNTIME_OPTIONS = [
|
|
24
|
+
{ name: "surface", flags: "--surface <surface>", description: "Select the local dev surface to run.", kind: "enum", values: ["integrated", "web", "api", "manager", "worker", "services"] },
|
|
25
|
+
{ name: "host", flags: "--host <host>", description: "Host for the web dev server.", kind: "string" },
|
|
26
|
+
{ name: "port", flags: "--port <port>", description: "Port for the web dev server.", kind: "string" },
|
|
27
|
+
{ name: "apiHost", flags: "--api-host <host>", description: "Host used to construct the local API URL.", kind: "string" },
|
|
28
|
+
{ name: "apiPort", flags: "--api-port <port>", description: "Port for the local API server.", kind: "string" },
|
|
29
|
+
{ name: "managerPort", flags: "--manager-port <port>", description: "Port used for the local manager service URL.", kind: "string" },
|
|
30
|
+
{ name: "setup", flags: "--setup <mode>", description: "Control automatic local runtime setup.", kind: "enum", values: ["auto", "check", "off"] },
|
|
31
|
+
{ name: "feedback", flags: "--feedback <mode>", description: "Control live feedback, service restarts, and browser reload stamps.", kind: "enum", values: ["live", "restart", "off"] },
|
|
32
|
+
{ name: "open", flags: "--open <mode>", description: "Control whether dev opens the browser after readiness.", kind: "enum", values: ["auto", "on", "off"] },
|
|
33
|
+
{ name: "plan", flags: "--plan", description: "Print the dev runtime plan and exit without starting services.", kind: "boolean" },
|
|
34
|
+
{ name: "json", flags: "--json", description: "Emit structured JSON or newline-delimited dev events.", kind: "boolean" },
|
|
35
|
+
{ name: "watch", flags: "--watch", description: "Enable live watch behavior. `dev` defaults to live feedback; this remains for compatibility.", kind: "boolean" },
|
|
36
|
+
{ name: "workspaceLinks", flags: "--workspace-links <mode>", description: "Control local workspace package links.", kind: "enum", values: ["auto", "off"] }
|
|
37
|
+
];
|
|
23
38
|
function genericWorkflowPosition(spec) {
|
|
24
39
|
if (spec.group === "Workflow") {
|
|
25
40
|
if (spec.name === "switch") return "start work";
|
|
@@ -1036,31 +1051,30 @@ const CLI_COMMAND_OVERLAYS = /* @__PURE__ */ new Map([
|
|
|
1036
1051
|
handlerName: "destroy"
|
|
1037
1052
|
})],
|
|
1038
1053
|
["dev", command({
|
|
1039
|
-
options:
|
|
1040
|
-
|
|
1041
|
-
],
|
|
1042
|
-
examples: ["treeseed dev"],
|
|
1054
|
+
options: DEV_RUNTIME_OPTIONS,
|
|
1055
|
+
examples: ["treeseed dev", "treeseed dev --plan --json", "treeseed dev --surface web --port 4322 --open off"],
|
|
1043
1056
|
help: {
|
|
1044
1057
|
longSummary: ["Dev starts the unified local Treeseed runtime so you can work against the integrated web, API, and supporting local surfaces."],
|
|
1045
1058
|
examples: [
|
|
1046
1059
|
example("treeseed dev", "Start integrated local development", "Run the default integrated local runtime."),
|
|
1060
|
+
example("treeseed dev --plan --json", "Inspect the runtime plan", "Emit a structured plan with setup steps, commands, ports, URLs, readiness checks, and watch entries."),
|
|
1061
|
+
example("treeseed dev --surface web --port 4322 --open off", "Run only the web surface", "Start the Astro UI on a specific port without opening a browser."),
|
|
1047
1062
|
example("trsd dev", "Use the short alias", "Start the same local runtime through the shorter entrypoint."),
|
|
1048
|
-
example("treeseed dev
|
|
1063
|
+
example("treeseed dev --json", "Stream dev events", "Emit newline-delimited events while the long-running dev process supervises local services.")
|
|
1049
1064
|
]
|
|
1050
1065
|
},
|
|
1051
1066
|
executionMode: "handler",
|
|
1052
1067
|
handlerName: "dev"
|
|
1053
1068
|
})],
|
|
1054
1069
|
["dev:watch", command({
|
|
1055
|
-
options:
|
|
1056
|
-
|
|
1057
|
-
],
|
|
1058
|
-
examples: ["treeseed dev:watch"],
|
|
1070
|
+
options: DEV_RUNTIME_OPTIONS,
|
|
1071
|
+
examples: ["treeseed dev:watch", "treeseed dev:watch --json"],
|
|
1059
1072
|
help: {
|
|
1060
1073
|
longSummary: ["Dev:watch starts local development with rebuild and watch semantics so code changes are reflected continuously during active development."],
|
|
1061
1074
|
examples: [
|
|
1062
1075
|
example("treeseed dev:watch", "Start watch mode", "Run the local runtime with watch and rebuild behavior enabled."),
|
|
1063
1076
|
example("trsd dev:watch", "Use the short alias", "Start the same watch-mode runtime through the shorter entrypoint."),
|
|
1077
|
+
example("treeseed dev:watch --feedback restart", "Restart services without browser reload", "Use watcher-driven service restarts while leaving browser refresh to your own tooling."),
|
|
1064
1078
|
example("treeseed dev:watch --help", "Inspect watch help", "Read the help surface before starting a longer watch session.")
|
|
1065
1079
|
]
|
|
1066
1080
|
},
|
|
@@ -59,6 +59,7 @@ export type TreeseedCommandResult = {
|
|
|
59
59
|
stdout?: string[];
|
|
60
60
|
stderr?: string[];
|
|
61
61
|
report?: Record<string, unknown> | null;
|
|
62
|
+
suppressJsonResult?: boolean;
|
|
62
63
|
};
|
|
63
64
|
export type TreeseedWriter = NonNullable<SdkOperationContext['write']>;
|
|
64
65
|
export type TreeseedSpawner = NonNullable<SdkOperationContext['spawn']>;
|
package/dist/cli/runtime.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export declare function writeTreeseedResult(result: TreeseedOperationResult | {
|
|
|
6
6
|
stdout?: string[];
|
|
7
7
|
stderr?: string[];
|
|
8
8
|
report?: Record<string, unknown> | null;
|
|
9
|
+
suppressJsonResult?: boolean;
|
|
9
10
|
}, context: TreeseedCommandContext): number;
|
|
10
11
|
export type TreeseedOperationsSdkOptions = {
|
|
11
12
|
resolveHandler?: TreeseedHandlerResolver;
|
package/dist/cli/runtime.js
CHANGED
|
@@ -137,6 +137,9 @@ function createTreeseedCommandContext(overrides = {}) {
|
|
|
137
137
|
}
|
|
138
138
|
function writeTreeseedResult(result, context) {
|
|
139
139
|
if (context.outputFormat === "json") {
|
|
140
|
+
if (result.suppressJsonResult === true) {
|
|
141
|
+
return result.exitCode ?? 0;
|
|
142
|
+
}
|
|
140
143
|
const payload = result.report ?? {
|
|
141
144
|
ok: (result.exitCode ?? 0) === 0,
|
|
142
145
|
stdout: result.stdout ?? [],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@treeseed/cli",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.14",
|
|
4
4
|
"description": "Operator-facing Treeseed CLI package.",
|
|
5
5
|
"license": "AGPL-3.0-only",
|
|
6
6
|
"repository": {
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"release:publish": "node ./scripts/run-ts.mjs ./scripts/publish-package.ts"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@treeseed/sdk": "0.6.
|
|
48
|
+
"@treeseed/sdk": "0.6.14",
|
|
49
49
|
"ink": "^7.0.0",
|
|
50
50
|
"react": "^19.2.5"
|
|
51
51
|
},
|