@clawos-dev/clawd 0.2.110 → 0.2.111
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.cjs +57 -10
- package/package.json +1 -1
package/dist/cli.cjs
CHANGED
|
@@ -39495,6 +39495,15 @@ function buildSessionHandlers(deps) {
|
|
|
39495
39495
|
const prevProject = prevFile?.appBuilderProject ?? null;
|
|
39496
39496
|
const nextProject = args.patch.appBuilderProject ?? prevProject;
|
|
39497
39497
|
const { response, broadcast } = manager.update(args);
|
|
39498
|
+
if (args.patch.appBuilderProject !== void 0) {
|
|
39499
|
+
deps.logger?.info("session-update.appBuilderProject", {
|
|
39500
|
+
sessionId: args.sessionId,
|
|
39501
|
+
prevProject,
|
|
39502
|
+
nextProject,
|
|
39503
|
+
hasLifecycle: !!deps.devServerLifecycle,
|
|
39504
|
+
hasStore: !!deps.appBuilderStore
|
|
39505
|
+
});
|
|
39506
|
+
}
|
|
39498
39507
|
if (deps.devServerLifecycle && deps.appBuilderStore && args.patch.appBuilderProject !== void 0) {
|
|
39499
39508
|
const lifecycle = deps.devServerLifecycle;
|
|
39500
39509
|
const projectStore = deps.appBuilderStore;
|
|
@@ -39506,6 +39515,13 @@ function buildSessionHandlers(deps) {
|
|
|
39506
39515
|
if (nextProject && nextProject !== "" && nextProject !== prevProject) {
|
|
39507
39516
|
const projects = await projectStore.list();
|
|
39508
39517
|
const target = projects.find((p2) => p2.name === nextProject);
|
|
39518
|
+
deps.logger?.info("session-update.start-dev-server", {
|
|
39519
|
+
sessionId: args.sessionId,
|
|
39520
|
+
projectName: nextProject,
|
|
39521
|
+
targetFound: !!target,
|
|
39522
|
+
projectCwd: target ? projectStore.projectDir(nextProject) : null,
|
|
39523
|
+
tunnelUrl
|
|
39524
|
+
});
|
|
39509
39525
|
if (target) {
|
|
39510
39526
|
lifecycle.startForSession({
|
|
39511
39527
|
sessionId: args.sessionId,
|
|
@@ -39516,7 +39532,11 @@ function buildSessionHandlers(deps) {
|
|
|
39516
39532
|
});
|
|
39517
39533
|
}
|
|
39518
39534
|
}
|
|
39519
|
-
} catch {
|
|
39535
|
+
} catch (err) {
|
|
39536
|
+
deps.logger?.warn("session-update.lifecycle-failed", {
|
|
39537
|
+
sessionId: args.sessionId,
|
|
39538
|
+
error: err instanceof Error ? err.message : String(err)
|
|
39539
|
+
});
|
|
39520
39540
|
}
|
|
39521
39541
|
}
|
|
39522
39542
|
return { response: { type: "session:info", ...response }, broadcast };
|
|
@@ -41561,7 +41581,8 @@ function buildMethodHandlers(deps) {
|
|
|
41561
41581
|
...deps,
|
|
41562
41582
|
devServerLifecycle: deps.devServerLifecycle,
|
|
41563
41583
|
appBuilderStore: deps.appBuilderStore,
|
|
41564
|
-
getTunnelUrl: deps.getTunnelUrl
|
|
41584
|
+
getTunnelUrl: deps.getTunnelUrl,
|
|
41585
|
+
logger: deps.logger
|
|
41565
41586
|
}),
|
|
41566
41587
|
...buildPermissionHandlers(deps),
|
|
41567
41588
|
...buildHistoryHandlers(deps),
|
|
@@ -41715,6 +41736,13 @@ var import_node_events2 = require("events");
|
|
|
41715
41736
|
var DevServerSupervisor = class extends import_node_events2.EventEmitter {
|
|
41716
41737
|
running = /* @__PURE__ */ new Map();
|
|
41717
41738
|
// key: sessionId
|
|
41739
|
+
logger = { warn: () => {
|
|
41740
|
+
}, info: () => {
|
|
41741
|
+
} };
|
|
41742
|
+
/** daemon entry 启动后注入 logger,让 child 输出走 clawd.log */
|
|
41743
|
+
setLogger(logger) {
|
|
41744
|
+
this.logger = logger;
|
|
41745
|
+
}
|
|
41718
41746
|
startForSession(args) {
|
|
41719
41747
|
if (this.running.has(args.sessionId)) return;
|
|
41720
41748
|
const augmentedPath = [
|
|
@@ -41730,20 +41758,38 @@ var DevServerSupervisor = class extends import_node_events2.EventEmitter {
|
|
|
41730
41758
|
CLAWD_TUNNEL_HOST: args.tunnelHost ?? "",
|
|
41731
41759
|
CLAWD_PREVIEW_PORT: String(args.port)
|
|
41732
41760
|
};
|
|
41733
|
-
|
|
41761
|
+
this.logger.info("dev-server.start", {
|
|
41762
|
+
projectName: args.projectName,
|
|
41763
|
+
port: args.port,
|
|
41764
|
+
cwd: args.cwd,
|
|
41765
|
+
sessionId: args.sessionId,
|
|
41766
|
+
tunnelHost: args.tunnelHost
|
|
41767
|
+
});
|
|
41734
41768
|
const child = (0, import_node_child_process7.spawn)("pnpm", ["dev"], { cwd: args.cwd, env, stdio: "pipe", shell: true });
|
|
41735
41769
|
const entry = { ...args, process: child };
|
|
41736
41770
|
this.running.set(args.sessionId, entry);
|
|
41737
41771
|
child.stdout?.on("data", (chunk) => {
|
|
41738
|
-
|
|
41772
|
+
this.logger.info("dev-server.stdout", {
|
|
41773
|
+
projectName: args.projectName,
|
|
41774
|
+
port: args.port,
|
|
41775
|
+
chunk: chunk.toString().trimEnd()
|
|
41776
|
+
});
|
|
41739
41777
|
});
|
|
41740
41778
|
child.stderr?.on("data", (chunk) => {
|
|
41741
|
-
|
|
41779
|
+
this.logger.warn("dev-server.stderr", {
|
|
41780
|
+
projectName: args.projectName,
|
|
41781
|
+
port: args.port,
|
|
41782
|
+
chunk: chunk.toString().trimEnd()
|
|
41783
|
+
});
|
|
41742
41784
|
});
|
|
41743
41785
|
child.on("error", (err) => {
|
|
41744
41786
|
this.running.delete(args.sessionId);
|
|
41745
|
-
|
|
41746
|
-
|
|
41787
|
+
this.logger.warn("dev-server.spawn-failed", {
|
|
41788
|
+
projectName: args.projectName,
|
|
41789
|
+
port: args.port,
|
|
41790
|
+
error: err.message,
|
|
41791
|
+
code: err.code
|
|
41792
|
+
});
|
|
41747
41793
|
this.emit("devServer:failed", {
|
|
41748
41794
|
sessionId: args.sessionId,
|
|
41749
41795
|
projectName: args.projectName,
|
|
@@ -41753,9 +41799,8 @@ var DevServerSupervisor = class extends import_node_events2.EventEmitter {
|
|
|
41753
41799
|
});
|
|
41754
41800
|
child.on("exit", (code) => {
|
|
41755
41801
|
this.running.delete(args.sessionId);
|
|
41802
|
+
this.logger.info("dev-server.exit", { projectName: args.projectName, port: args.port, code });
|
|
41756
41803
|
if (code !== 0 && code !== null) {
|
|
41757
|
-
process.stderr.write(`${tag} exited with code ${code}
|
|
41758
|
-
`);
|
|
41759
41804
|
this.emit("devServer:failed", {
|
|
41760
41805
|
sessionId: args.sessionId,
|
|
41761
41806
|
projectName: args.projectName,
|
|
@@ -42541,6 +42586,7 @@ async function startDaemon(config) {
|
|
|
42541
42586
|
import_node_path45.default.join(config.dataDir, "personas/persona-app-builder")
|
|
42542
42587
|
);
|
|
42543
42588
|
const devServerSupervisor = new DevServerSupervisor();
|
|
42589
|
+
devServerSupervisor.setLogger(logger);
|
|
42544
42590
|
const appBuilderPortRange = [];
|
|
42545
42591
|
for (let p2 = PROJECT_PORT_MIN; p2 <= PROJECT_PORT_MAX; p2++) appBuilderPortRange.push(p2);
|
|
42546
42592
|
const effectivePreviewPorts = Array.from(
|
|
@@ -42624,7 +42670,8 @@ async function startDaemon(config) {
|
|
|
42624
42670
|
// app-builder
|
|
42625
42671
|
appBuilderStore,
|
|
42626
42672
|
deleteSessionsByProject,
|
|
42627
|
-
devServerLifecycle: devServerSupervisor
|
|
42673
|
+
devServerLifecycle: devServerSupervisor,
|
|
42674
|
+
logger
|
|
42628
42675
|
});
|
|
42629
42676
|
const authResolver = new AuthContextResolver({
|
|
42630
42677
|
ownerToken: resolvedAuthToken
|