cueclaw 0.1.4 → 0.2.1
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/{app-6SXWEUZZ.js → app-P3ERBGJD.js} +55 -29
- package/dist/{chunk-54BGF7G5.js → chunk-2PHW4AV3.js} +3 -3
- package/dist/{chunk-HKZ6IN7X.js → chunk-3LMKPLR6.js} +1 -1
- package/dist/{chunk-3HV3MHME.js → chunk-4KXY2J6M.js} +2 -2
- package/dist/{chunk-MEAAX2SW.js → chunk-7X5HHQEQ.js} +1 -1
- package/dist/{chunk-5TV4LNC3.js → chunk-J53KYCXL.js} +5 -5
- package/dist/cli.js +19 -19
- package/dist/{config-FYL6T5JP.js → config-MIMVWGYE.js} +1 -1
- package/dist/{daemon-Y5HIGH44.js → daemon-IAWVNSJS.js} +4 -4
- package/dist/{executor-44MSZ76T.js → executor-VIWMPELU.js} +3 -3
- package/dist/{service-Q7USNFFB.js → service-SYWHY6SI.js} +2 -2
- package/dist/{setup-JK664Y2M.js → setup-S4LRDLRD.js} +1 -1
- package/package.json +1 -1
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
readPidFile,
|
|
7
7
|
removePidFile,
|
|
8
8
|
spawnDaemonProcess
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-2PHW4AV3.js";
|
|
10
10
|
import {
|
|
11
11
|
getServiceStatus
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-7X5HHQEQ.js";
|
|
13
13
|
import {
|
|
14
14
|
checkEnvironment,
|
|
15
15
|
validateAuth
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
} from "./chunk-DVQFSFIZ.js";
|
|
29
29
|
import {
|
|
30
30
|
executeWorkflow
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-4KXY2J6M.js";
|
|
32
32
|
import {
|
|
33
33
|
deleteWorkflow,
|
|
34
34
|
getStepRunsByRunId,
|
|
@@ -38,14 +38,14 @@ import {
|
|
|
38
38
|
listWorkflows,
|
|
39
39
|
updateWorkflowPhase,
|
|
40
40
|
upsertWorkflow
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-3LMKPLR6.js";
|
|
42
42
|
import {
|
|
43
43
|
cueclawHome,
|
|
44
44
|
loadConfig,
|
|
45
45
|
loadExistingConfig,
|
|
46
46
|
validateConfig,
|
|
47
47
|
writeConfig
|
|
48
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-J53KYCXL.js";
|
|
49
49
|
import "./chunk-BVQG3WYO.js";
|
|
50
50
|
import {
|
|
51
51
|
isDev,
|
|
@@ -510,9 +510,13 @@ async function stopDaemonBridge(bridge) {
|
|
|
510
510
|
function stopExternalDaemon() {
|
|
511
511
|
const pid = readPidFile();
|
|
512
512
|
if (pid && isProcessAlive(pid)) {
|
|
513
|
-
|
|
513
|
+
try {
|
|
514
|
+
process.kill(pid, "SIGTERM");
|
|
515
|
+
logger.info({ pid }, "Stopped external daemon");
|
|
516
|
+
} catch (err) {
|
|
517
|
+
logger.warn({ err, pid }, "Failed to stop external daemon");
|
|
518
|
+
}
|
|
514
519
|
removePidFile();
|
|
515
|
-
logger.info({ pid }, "Stopped external daemon");
|
|
516
520
|
}
|
|
517
521
|
}
|
|
518
522
|
|
|
@@ -528,7 +532,9 @@ function useDaemonBridge(config, db, cwd, dispatch) {
|
|
|
528
532
|
dispatch({ type: "ADD_MESSAGE", message: { type: "system", text: "Starting daemon..." } });
|
|
529
533
|
initDaemonBridge(db, config, cwd, { skipBots: !hasConfiguredBots }).then((bridge) => {
|
|
530
534
|
if (cancelled) {
|
|
531
|
-
stopDaemonBridge(bridge)
|
|
535
|
+
stopDaemonBridge(bridge).catch((err) => {
|
|
536
|
+
logger.error({ err }, "Failed to stop daemon bridge after cancellation");
|
|
537
|
+
});
|
|
532
538
|
return;
|
|
533
539
|
}
|
|
534
540
|
bridgeRef.current = bridge;
|
|
@@ -563,7 +569,9 @@ function useDaemonBridge(config, db, cwd, dispatch) {
|
|
|
563
569
|
return () => {
|
|
564
570
|
cancelled = true;
|
|
565
571
|
if (bridgeRef.current) {
|
|
566
|
-
stopDaemonBridge(bridgeRef.current)
|
|
572
|
+
stopDaemonBridge(bridgeRef.current).catch((err) => {
|
|
573
|
+
logger.error({ err }, "Failed to stop daemon bridge during cleanup");
|
|
574
|
+
});
|
|
567
575
|
bridgeRef.current = null;
|
|
568
576
|
}
|
|
569
577
|
};
|
|
@@ -708,7 +716,7 @@ Guidelines:
|
|
|
708
716
|
}
|
|
709
717
|
|
|
710
718
|
// src/tui/hooks/use-planner-session.ts
|
|
711
|
-
function usePlannerSession(config, dispatch
|
|
719
|
+
function usePlannerSession(config, dispatch) {
|
|
712
720
|
const plannerSessionRef = useRef3(null);
|
|
713
721
|
const handleUserMessage = useCallback3(async (text) => {
|
|
714
722
|
if (!config) return;
|
|
@@ -717,28 +725,25 @@ function usePlannerSession(config, dispatch, streamingText) {
|
|
|
717
725
|
dispatch({ type: "SET_STREAMING_TEXT", text: "" });
|
|
718
726
|
try {
|
|
719
727
|
let result;
|
|
728
|
+
let accumulated = "";
|
|
729
|
+
const onToken = (token) => {
|
|
730
|
+
accumulated += token;
|
|
731
|
+
dispatch({ type: "SET_STREAMING_TEXT", text: accumulated });
|
|
732
|
+
};
|
|
720
733
|
const tuiContext = { channel: "tui" };
|
|
721
734
|
if (plannerSessionRef.current && plannerSessionRef.current.status === "conversing") {
|
|
722
735
|
result = await continuePlannerSession(
|
|
723
736
|
plannerSessionRef.current,
|
|
724
737
|
text,
|
|
725
738
|
config,
|
|
726
|
-
{
|
|
727
|
-
onToken: (token) => {
|
|
728
|
-
dispatch({ type: "SET_STREAMING_TEXT", text: (streamingText || "") + token });
|
|
729
|
-
}
|
|
730
|
-
},
|
|
739
|
+
{ onToken },
|
|
731
740
|
tuiContext
|
|
732
741
|
);
|
|
733
742
|
} else {
|
|
734
743
|
result = await startPlannerSession(
|
|
735
744
|
text,
|
|
736
745
|
config,
|
|
737
|
-
{
|
|
738
|
-
onToken: (token) => {
|
|
739
|
-
dispatch({ type: "SET_STREAMING_TEXT", text: (streamingText || "") + token });
|
|
740
|
-
}
|
|
741
|
-
},
|
|
746
|
+
{ onToken },
|
|
742
747
|
tuiContext
|
|
743
748
|
);
|
|
744
749
|
}
|
|
@@ -774,7 +779,7 @@ function usePlannerSession(config, dispatch, streamingText) {
|
|
|
774
779
|
plannerSessionRef.current = null;
|
|
775
780
|
logger.error({ err }, "Planner session failed");
|
|
776
781
|
}
|
|
777
|
-
}, [config
|
|
782
|
+
}, [config]);
|
|
778
783
|
const handleCancelGeneration = useCallback3(() => {
|
|
779
784
|
if (plannerSessionRef.current) {
|
|
780
785
|
cancelPlannerSession(plannerSessionRef.current);
|
|
@@ -873,7 +878,11 @@ ${failedSteps.join("\n")}` : "";
|
|
|
873
878
|
const handleCancel = useCallback4(() => {
|
|
874
879
|
if (workflow) {
|
|
875
880
|
const rejected = rejectPlan(workflow);
|
|
876
|
-
|
|
881
|
+
try {
|
|
882
|
+
updateWorkflowPhase(db, workflow.id, rejected.phase);
|
|
883
|
+
} catch (err) {
|
|
884
|
+
logger.error({ err }, "Failed to update workflow phase");
|
|
885
|
+
}
|
|
877
886
|
}
|
|
878
887
|
if (plannerSessionRef.current) {
|
|
879
888
|
plannerSessionRef.current = null;
|
|
@@ -1663,7 +1672,7 @@ function AppProvider({ cwd, skipOnboarding, children }) {
|
|
|
1663
1672
|
});
|
|
1664
1673
|
}, []);
|
|
1665
1674
|
const { bridgeRef, daemonStatus } = useDaemonBridge(config, db, cwd, dispatch);
|
|
1666
|
-
const planner = usePlannerSession(config, dispatch
|
|
1675
|
+
const planner = usePlannerSession(config, dispatch);
|
|
1667
1676
|
const execution = useWorkflowExecution(
|
|
1668
1677
|
state.workflow,
|
|
1669
1678
|
db,
|
|
@@ -2498,12 +2507,17 @@ function formatDuration2(ms) {
|
|
|
2498
2507
|
}
|
|
2499
2508
|
|
|
2500
2509
|
// src/tui/workflow-detail-view.tsx
|
|
2501
|
-
import { useState as useState8, useCallback as useCallback14 } from "react";
|
|
2510
|
+
import { useState as useState8, useCallback as useCallback14, useEffect as useEffect7 } from "react";
|
|
2502
2511
|
import { Box as Box18, Text as Text18 } from "ink";
|
|
2503
2512
|
import { Fragment as Fragment4, jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
2504
2513
|
function WorkflowDetailView({ workflow, runs, latestStepRuns, onBack, onSelectRun, onStop }) {
|
|
2505
2514
|
const [selectedRunIndex, setSelectedRunIndex] = useState8(0);
|
|
2506
2515
|
const displayRuns = runs.slice(0, 5);
|
|
2516
|
+
useEffect7(() => {
|
|
2517
|
+
if (selectedRunIndex >= displayRuns.length && displayRuns.length > 0) {
|
|
2518
|
+
setSelectedRunIndex(displayRuns.length - 1);
|
|
2519
|
+
}
|
|
2520
|
+
}, [displayRuns.length, selectedRunIndex]);
|
|
2507
2521
|
useKeypress("detail-view-actions", KeyPriority.Normal, useCallback14((input, key) => {
|
|
2508
2522
|
if (keyBindings.escape(input, key) || keyBindings.quit(input, key)) {
|
|
2509
2523
|
onBack();
|
|
@@ -2678,7 +2692,7 @@ function formatDuration3(ms) {
|
|
|
2678
2692
|
}
|
|
2679
2693
|
|
|
2680
2694
|
// src/tui/onboarding.tsx
|
|
2681
|
-
import { useState as useState9, useCallback as useCallback15, useMemo as useMemo5 } from "react";
|
|
2695
|
+
import { useState as useState9, useCallback as useCallback15, useMemo as useMemo5, useRef as useRef9, useEffect as useEffect8 } from "react";
|
|
2682
2696
|
import { Box as Box19, Text as Text19, useStdout as useStdout4 } from "ink";
|
|
2683
2697
|
import { TextInput, PasswordInput, ConfirmInput, Spinner, StatusMessage } from "@inkjs/ui";
|
|
2684
2698
|
import { jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
@@ -2690,6 +2704,12 @@ function Onboarding({ onComplete, onCancel, issues }) {
|
|
|
2690
2704
|
const { stdout } = useStdout4();
|
|
2691
2705
|
const cols = stdout?.columns ?? 80;
|
|
2692
2706
|
const existing = useMemo5(() => loadExistingConfig(), []);
|
|
2707
|
+
const completeTimerRef = useRef9(null);
|
|
2708
|
+
useEffect8(() => {
|
|
2709
|
+
return () => {
|
|
2710
|
+
if (completeTimerRef.current) clearTimeout(completeTimerRef.current);
|
|
2711
|
+
};
|
|
2712
|
+
}, []);
|
|
2693
2713
|
const initialStep = useMemo5(() => {
|
|
2694
2714
|
if (!issues || issues.length === 0) return "welcome";
|
|
2695
2715
|
const errorFields = new Set(issues.filter((i) => i.severity === "error").map((i) => i.field));
|
|
@@ -2710,6 +2730,7 @@ function Onboarding({ onComplete, onCancel, issues }) {
|
|
|
2710
2730
|
const env = checkEnvironment();
|
|
2711
2731
|
useKeypress("onboarding-cancel", KeyPriority.Normal, useCallback15((input, key) => {
|
|
2712
2732
|
if (onCancel && keyBindings.escape(input, key)) {
|
|
2733
|
+
if (completeTimerRef.current) clearTimeout(completeTimerRef.current);
|
|
2713
2734
|
onCancel();
|
|
2714
2735
|
return true;
|
|
2715
2736
|
}
|
|
@@ -2848,7 +2869,7 @@ function Onboarding({ onComplete, onCancel, issues }) {
|
|
|
2848
2869
|
}
|
|
2849
2870
|
const config = loadConfig();
|
|
2850
2871
|
setStep("done");
|
|
2851
|
-
setTimeout(() => onComplete(config), 1500);
|
|
2872
|
+
completeTimerRef.current = setTimeout(() => onComplete(config), 1500);
|
|
2852
2873
|
}, [onComplete]);
|
|
2853
2874
|
const StepLayout = ({ children, input }) => /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", flexGrow: 1, children: [
|
|
2854
2875
|
/* @__PURE__ */ jsx23(Box19, { flexDirection: "column", flexGrow: 1, children }),
|
|
@@ -3106,14 +3127,19 @@ function Onboarding({ onComplete, onCancel, issues }) {
|
|
|
3106
3127
|
}
|
|
3107
3128
|
|
|
3108
3129
|
// src/tui/status.tsx
|
|
3109
|
-
import { useState as useState10, useCallback as useCallback16, useEffect as
|
|
3130
|
+
import { useState as useState10, useCallback as useCallback16, useEffect as useEffect9 } from "react";
|
|
3110
3131
|
import { Box as Box20, Text as Text20 } from "ink";
|
|
3111
3132
|
import { Fragment as Fragment5, jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
3112
3133
|
function Status({ workflows, onSelect, onBack, onStop, onDelete }) {
|
|
3113
3134
|
const [selectedIndex, setSelectedIndex] = useState10(0);
|
|
3114
3135
|
const [confirm, setConfirm] = useState10(null);
|
|
3115
3136
|
const [message, setMessage] = useState10(null);
|
|
3116
|
-
|
|
3137
|
+
useEffect9(() => {
|
|
3138
|
+
if (selectedIndex >= workflows.length && workflows.length > 0) {
|
|
3139
|
+
setSelectedIndex(workflows.length - 1);
|
|
3140
|
+
}
|
|
3141
|
+
}, [workflows.length, selectedIndex]);
|
|
3142
|
+
useEffect9(() => {
|
|
3117
3143
|
if (!message) return;
|
|
3118
3144
|
const timer = setTimeout(() => setMessage(null), 3e3);
|
|
3119
3145
|
return () => clearTimeout(timer);
|
|
@@ -3224,7 +3250,7 @@ function AppLayout({ cwd }) {
|
|
|
3224
3250
|
const configIssues = useMemo6(() => {
|
|
3225
3251
|
const validation = validateConfig();
|
|
3226
3252
|
return validation.issues.filter((i) => i.severity === "error");
|
|
3227
|
-
}, []);
|
|
3253
|
+
}, [config]);
|
|
3228
3254
|
return /* @__PURE__ */ jsxs21(Box21, { flexDirection: "column", height: rows, children: [
|
|
3229
3255
|
/* @__PURE__ */ jsx25(Static, { items: view !== "onboarding" ? ["banner"] : [], children: (item) => /* @__PURE__ */ jsx25(
|
|
3230
3256
|
Banner,
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
import {
|
|
11
11
|
cleanupStaleSessions,
|
|
12
12
|
executeWorkflow
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-4KXY2J6M.js";
|
|
14
14
|
import {
|
|
15
15
|
getWorkflow,
|
|
16
16
|
initDb,
|
|
@@ -18,11 +18,11 @@ import {
|
|
|
18
18
|
listWorkflows,
|
|
19
19
|
updateWorkflowPhase,
|
|
20
20
|
upsertWorkflow
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-3LMKPLR6.js";
|
|
22
22
|
import {
|
|
23
23
|
cueclawHome,
|
|
24
24
|
loadConfig
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-J53KYCXL.js";
|
|
26
26
|
import {
|
|
27
27
|
logger
|
|
28
28
|
} from "./chunk-KBLMQZ3P.js";
|
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
updateStepRunStatus,
|
|
5
5
|
updateWorkflowPhase,
|
|
6
6
|
updateWorkflowRunStatus
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-3LMKPLR6.js";
|
|
8
8
|
import {
|
|
9
9
|
cueclawHome,
|
|
10
10
|
getDefaultImage,
|
|
11
11
|
loadConfig
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-J53KYCXL.js";
|
|
13
13
|
import {
|
|
14
14
|
ConfigError,
|
|
15
15
|
ExecutorError
|
|
@@ -18,13 +18,13 @@ var ConfigSchema = z.object({
|
|
|
18
18
|
claude: z.object({
|
|
19
19
|
api_key: z.string(),
|
|
20
20
|
base_url: z.url().default("https://api.anthropic.com"),
|
|
21
|
-
planner: z.object({ model: z.string().default("claude-
|
|
21
|
+
planner: z.object({ model: z.string().default("claude-opus-4-6") }).default({ model: "claude-opus-4-6" }),
|
|
22
22
|
executor: z.object({
|
|
23
|
-
model: z.string().default("claude-
|
|
23
|
+
model: z.string().default("claude-opus-4-6"),
|
|
24
24
|
api_key: z.string().optional(),
|
|
25
25
|
base_url: z.url().optional(),
|
|
26
26
|
skip_permissions: z.boolean().default(false)
|
|
27
|
-
}).default({ model: "claude-
|
|
27
|
+
}).default({ model: "claude-opus-4-6", skip_permissions: false })
|
|
28
28
|
}),
|
|
29
29
|
identity: z.object({ name: z.string() }).optional(),
|
|
30
30
|
whatsapp: z.object({
|
|
@@ -141,9 +141,9 @@ var DEFAULT_CONFIG = `# CueClaw Configuration
|
|
|
141
141
|
claude:
|
|
142
142
|
api_key: \${ANTHROPIC_API_KEY}
|
|
143
143
|
planner:
|
|
144
|
-
model: claude-
|
|
144
|
+
model: claude-opus-4-6
|
|
145
145
|
executor:
|
|
146
|
-
model: claude-
|
|
146
|
+
model: claude-opus-4-6
|
|
147
147
|
|
|
148
148
|
container:
|
|
149
149
|
enabled: true
|
package/dist/cli.js
CHANGED
|
@@ -8,13 +8,13 @@ import {
|
|
|
8
8
|
insertWorkflow,
|
|
9
9
|
listWorkflows,
|
|
10
10
|
updateWorkflowPhase
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-3LMKPLR6.js";
|
|
12
12
|
import {
|
|
13
13
|
createDefaultConfig,
|
|
14
14
|
cueclawHome,
|
|
15
15
|
ensureCueclawHome,
|
|
16
16
|
loadConfig
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-J53KYCXL.js";
|
|
18
18
|
import "./chunk-BVQG3WYO.js";
|
|
19
19
|
import {
|
|
20
20
|
loadSecrets
|
|
@@ -115,7 +115,7 @@ program.command("new").description("Create a new workflow from a natural languag
|
|
|
115
115
|
try {
|
|
116
116
|
const config = loadConfig();
|
|
117
117
|
const { generatePlan, confirmPlan } = await import("./planner-MJ3XBCWH.js");
|
|
118
|
-
const { executeWorkflow } = await import("./executor-
|
|
118
|
+
const { executeWorkflow } = await import("./executor-VIWMPELU.js");
|
|
119
119
|
logger.info({ description: description.slice(0, 100) }, "Starting plan generation");
|
|
120
120
|
console.log("Planning workflow...");
|
|
121
121
|
const workflow = await generatePlan(description, config);
|
|
@@ -295,7 +295,7 @@ program.command("resume").argument("<workflow-id>", "Workflow ID").description("
|
|
|
295
295
|
updateWorkflowPhase(db, workflowId, "executing");
|
|
296
296
|
logger.info({ workflowId }, "Resuming workflow execution");
|
|
297
297
|
console.log(`Executing workflow "${wf.name}"...`);
|
|
298
|
-
const { executeWorkflow } = await import("./executor-
|
|
298
|
+
const { executeWorkflow } = await import("./executor-VIWMPELU.js");
|
|
299
299
|
const result = await executeWorkflow({
|
|
300
300
|
workflow: { ...wf, phase: "executing" },
|
|
301
301
|
triggerData: null,
|
|
@@ -359,7 +359,7 @@ var daemonCmd = program.command("daemon").description("Manage background daemon"
|
|
|
359
359
|
daemonCmd.command("start").option("--foreground", "Run in foreground (for system services)").description("Start the daemon (runs in background by default)").action(async (opts) => {
|
|
360
360
|
if (opts.foreground) {
|
|
361
361
|
try {
|
|
362
|
-
const { startDaemon } = await import("./daemon-
|
|
362
|
+
const { startDaemon } = await import("./daemon-IAWVNSJS.js");
|
|
363
363
|
await startDaemon();
|
|
364
364
|
} catch (err) {
|
|
365
365
|
logger.error({ err }, "Daemon failed");
|
|
@@ -367,7 +367,7 @@ daemonCmd.command("start").option("--foreground", "Run in foreground (for system
|
|
|
367
367
|
}
|
|
368
368
|
return;
|
|
369
369
|
}
|
|
370
|
-
const { isDaemonRunning, spawnDaemonProcess } = await import("./daemon-
|
|
370
|
+
const { isDaemonRunning, spawnDaemonProcess } = await import("./daemon-IAWVNSJS.js");
|
|
371
371
|
if (isDaemonRunning()) {
|
|
372
372
|
console.log("Daemon is already running.");
|
|
373
373
|
return;
|
|
@@ -382,7 +382,7 @@ daemonCmd.command("start").option("--foreground", "Run in foreground (for system
|
|
|
382
382
|
}
|
|
383
383
|
});
|
|
384
384
|
daemonCmd.command("stop").description("Stop the daemon").action(async () => {
|
|
385
|
-
const { readPidFile, isProcessAlive, removePidFile } = await import("./daemon-
|
|
385
|
+
const { readPidFile, isProcessAlive, removePidFile } = await import("./daemon-IAWVNSJS.js");
|
|
386
386
|
const pid = readPidFile();
|
|
387
387
|
if (pid && isProcessAlive(pid)) {
|
|
388
388
|
process.kill(pid, "SIGTERM");
|
|
@@ -391,7 +391,7 @@ daemonCmd.command("stop").description("Stop the daemon").action(async () => {
|
|
|
391
391
|
console.log(`Daemon stopped (PID ${pid}).`);
|
|
392
392
|
return;
|
|
393
393
|
}
|
|
394
|
-
const { getServiceStatus, stopService } = await import("./service-
|
|
394
|
+
const { getServiceStatus, stopService } = await import("./service-SYWHY6SI.js");
|
|
395
395
|
const status = getServiceStatus();
|
|
396
396
|
if (status === "running") {
|
|
397
397
|
const result = stopService();
|
|
@@ -409,14 +409,14 @@ daemonCmd.command("stop").description("Stop the daemon").action(async () => {
|
|
|
409
409
|
console.log("Daemon is not running.");
|
|
410
410
|
});
|
|
411
411
|
daemonCmd.command("restart").description("Restart the daemon").action(async () => {
|
|
412
|
-
const { readPidFile, isProcessAlive, removePidFile } = await import("./daemon-
|
|
412
|
+
const { readPidFile, isProcessAlive, removePidFile } = await import("./daemon-IAWVNSJS.js");
|
|
413
413
|
const pid = readPidFile();
|
|
414
414
|
if (pid && isProcessAlive(pid)) {
|
|
415
415
|
process.kill(pid, "SIGTERM");
|
|
416
416
|
removePidFile();
|
|
417
417
|
console.log(`Stopped daemon (PID ${pid}).`);
|
|
418
418
|
} else {
|
|
419
|
-
const { getServiceStatus, stopService } = await import("./service-
|
|
419
|
+
const { getServiceStatus, stopService } = await import("./service-SYWHY6SI.js");
|
|
420
420
|
if (getServiceStatus() === "running") {
|
|
421
421
|
const result = stopService();
|
|
422
422
|
if (!result.success) {
|
|
@@ -426,7 +426,7 @@ daemonCmd.command("restart").description("Restart the daemon").action(async () =
|
|
|
426
426
|
console.log("Stopped system service daemon.");
|
|
427
427
|
}
|
|
428
428
|
}
|
|
429
|
-
const { spawnDaemonProcess } = await import("./daemon-
|
|
429
|
+
const { spawnDaemonProcess } = await import("./daemon-IAWVNSJS.js");
|
|
430
430
|
const newPid = spawnDaemonProcess();
|
|
431
431
|
if (newPid) {
|
|
432
432
|
console.log(`Daemon restarted in background (PID ${newPid})`);
|
|
@@ -436,7 +436,7 @@ daemonCmd.command("restart").description("Restart the daemon").action(async () =
|
|
|
436
436
|
}
|
|
437
437
|
});
|
|
438
438
|
daemonCmd.command("install").description("Install system service").action(async () => {
|
|
439
|
-
const { installService } = await import("./service-
|
|
439
|
+
const { installService } = await import("./service-SYWHY6SI.js");
|
|
440
440
|
const result = installService();
|
|
441
441
|
if (result.success) {
|
|
442
442
|
logger.info("System service installed");
|
|
@@ -448,7 +448,7 @@ daemonCmd.command("install").description("Install system service").action(async
|
|
|
448
448
|
}
|
|
449
449
|
});
|
|
450
450
|
daemonCmd.command("uninstall").description("Remove system service").action(async () => {
|
|
451
|
-
const { uninstallService } = await import("./service-
|
|
451
|
+
const { uninstallService } = await import("./service-SYWHY6SI.js");
|
|
452
452
|
const result = uninstallService();
|
|
453
453
|
if (result.success) {
|
|
454
454
|
logger.info("System service uninstalled");
|
|
@@ -460,13 +460,13 @@ daemonCmd.command("uninstall").description("Remove system service").action(async
|
|
|
460
460
|
}
|
|
461
461
|
});
|
|
462
462
|
daemonCmd.command("status").description("View daemon status").action(async () => {
|
|
463
|
-
const { readPidFile, isProcessAlive } = await import("./daemon-
|
|
463
|
+
const { readPidFile, isProcessAlive } = await import("./daemon-IAWVNSJS.js");
|
|
464
464
|
const pid = readPidFile();
|
|
465
465
|
if (pid && isProcessAlive(pid)) {
|
|
466
466
|
console.log(`Daemon status: running (PID ${pid})`);
|
|
467
467
|
return;
|
|
468
468
|
}
|
|
469
|
-
const { getServiceStatus } = await import("./service-
|
|
469
|
+
const { getServiceStatus } = await import("./service-SYWHY6SI.js");
|
|
470
470
|
const status = getServiceStatus();
|
|
471
471
|
if (status === "running") {
|
|
472
472
|
console.log(`Daemon status: running (system service)`);
|
|
@@ -476,7 +476,7 @@ daemonCmd.command("status").description("View daemon status").action(async () =>
|
|
|
476
476
|
});
|
|
477
477
|
daemonCmd.command("logs").description("View daemon logs").action(async () => {
|
|
478
478
|
const { join } = await import("path");
|
|
479
|
-
const { cueclawHome: cueclawHome2 } = await import("./config-
|
|
479
|
+
const { cueclawHome: cueclawHome2 } = await import("./config-MIMVWGYE.js");
|
|
480
480
|
const logPath = join(cueclawHome2(), "logs", "daemon.log");
|
|
481
481
|
const { existsSync } = await import("fs");
|
|
482
482
|
if (!existsSync(logPath)) {
|
|
@@ -495,7 +495,7 @@ botCmd.command("status").description("View channel connection status").action(()
|
|
|
495
495
|
program.command("setup").description("First-run setup: validate Docker, build container, smoke test").action(async () => {
|
|
496
496
|
try {
|
|
497
497
|
const config = loadConfig();
|
|
498
|
-
const { runSetup } = await import("./setup-
|
|
498
|
+
const { runSetup } = await import("./setup-S4LRDLRD.js");
|
|
499
499
|
await runSetup(config, process.cwd());
|
|
500
500
|
} catch (err) {
|
|
501
501
|
logger.error({ err }, "Setup failed");
|
|
@@ -508,7 +508,7 @@ program.command("tui").description("Start interactive TUI").option("--skip-onboa
|
|
|
508
508
|
enableTuiLogging();
|
|
509
509
|
const React = await import("react");
|
|
510
510
|
const { render } = await import("ink");
|
|
511
|
-
const { App } = await import("./app-
|
|
511
|
+
const { App } = await import("./app-P3ERBGJD.js");
|
|
512
512
|
render(React.createElement(App, { cwd: process.cwd(), skipOnboarding: opts.skipOnboarding }), { exitOnCtrlC: false });
|
|
513
513
|
} catch (err) {
|
|
514
514
|
logger.error({ err }, "Failed to start TUI");
|
|
@@ -522,7 +522,7 @@ program.option("--skip-onboarding", "Skip first-run onboarding wizard").action(a
|
|
|
522
522
|
enableTuiLogging();
|
|
523
523
|
const React = await import("react");
|
|
524
524
|
const { render } = await import("ink");
|
|
525
|
-
const { App } = await import("./app-
|
|
525
|
+
const { App } = await import("./app-P3ERBGJD.js");
|
|
526
526
|
render(React.createElement(App, { cwd: process.cwd(), skipOnboarding }), { exitOnCtrlC: false });
|
|
527
527
|
} catch (err) {
|
|
528
528
|
logger.error({ err }, "Failed to start TUI");
|
|
@@ -7,12 +7,12 @@ import {
|
|
|
7
7
|
spawnDaemonProcess,
|
|
8
8
|
startDaemon,
|
|
9
9
|
writePidFile
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-2PHW4AV3.js";
|
|
11
11
|
import "./chunk-ZOFGQYXX.js";
|
|
12
12
|
import "./chunk-DVQFSFIZ.js";
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-4KXY2J6M.js";
|
|
14
|
+
import "./chunk-3LMKPLR6.js";
|
|
15
|
+
import "./chunk-J53KYCXL.js";
|
|
16
16
|
import "./chunk-BVQG3WYO.js";
|
|
17
17
|
import "./chunk-ZCK3IFLC.js";
|
|
18
18
|
import "./chunk-KBLMQZ3P.js";
|
|
@@ -2,9 +2,9 @@ import {
|
|
|
2
2
|
executeWorkflow,
|
|
3
3
|
resolveInputs,
|
|
4
4
|
resolveValue
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-4KXY2J6M.js";
|
|
6
|
+
import "./chunk-3LMKPLR6.js";
|
|
7
|
+
import "./chunk-J53KYCXL.js";
|
|
8
8
|
import "./chunk-BVQG3WYO.js";
|
|
9
9
|
import "./chunk-ZCK3IFLC.js";
|
|
10
10
|
import "./chunk-KBLMQZ3P.js";
|
|
@@ -3,8 +3,8 @@ import {
|
|
|
3
3
|
installService,
|
|
4
4
|
stopService,
|
|
5
5
|
uninstallService
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-7X5HHQEQ.js";
|
|
7
|
+
import "./chunk-J53KYCXL.js";
|
|
8
8
|
import "./chunk-BVQG3WYO.js";
|
|
9
9
|
import "./chunk-ZCK3IFLC.js";
|
|
10
10
|
import "./chunk-KBLMQZ3P.js";
|