camelagi 0.5.0
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/LICENSE +21 -0
- package/README.md +224 -0
- package/camelagi.mjs +2 -0
- package/config.example.yaml +107 -0
- package/dist/agent/agent-openai.js +206 -0
- package/dist/agent/agent-openai.js.map +1 -0
- package/dist/agent/agent-sdk.js +209 -0
- package/dist/agent/agent-sdk.js.map +1 -0
- package/dist/agent/tool-adapter.js +31 -0
- package/dist/agent/tool-adapter.js.map +1 -0
- package/dist/agent/types.js +3 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agent.js +17 -0
- package/dist/agent.js.map +1 -0
- package/dist/approval-forward.js +42 -0
- package/dist/approval-forward.js.map +1 -0
- package/dist/approvals.js +151 -0
- package/dist/approvals.js.map +1 -0
- package/dist/boot.js +34 -0
- package/dist/boot.js.map +1 -0
- package/dist/bootstrap.js +451 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/camelagi-gateway.mjs +93611 -0
- package/dist/camelagi-gateway.mjs.map +7 -0
- package/dist/channels/adapter.js +10 -0
- package/dist/channels/adapter.js.map +1 -0
- package/dist/channels/discord.js +232 -0
- package/dist/channels/discord.js.map +1 -0
- package/dist/channels/handler.js +349 -0
- package/dist/channels/handler.js.map +1 -0
- package/dist/channels/index.js +19 -0
- package/dist/channels/index.js.map +1 -0
- package/dist/channels/registry.js +71 -0
- package/dist/channels/registry.js.map +1 -0
- package/dist/channels/telegram.js +83 -0
- package/dist/channels/telegram.js.map +1 -0
- package/dist/channels/types.js +3 -0
- package/dist/channels/types.js.map +1 -0
- package/dist/chunker.js +102 -0
- package/dist/chunker.js.map +1 -0
- package/dist/cli/cmd-agents.js +65 -0
- package/dist/cli/cmd-agents.js.map +1 -0
- package/dist/cli/cmd-bootstrap.js +10 -0
- package/dist/cli/cmd-bootstrap.js.map +1 -0
- package/dist/cli/cmd-chat.js +32 -0
- package/dist/cli/cmd-chat.js.map +1 -0
- package/dist/cli/cmd-config.js +88 -0
- package/dist/cli/cmd-config.js.map +1 -0
- package/dist/cli/cmd-cron.js +120 -0
- package/dist/cli/cmd-cron.js.map +1 -0
- package/dist/cli/cmd-daemon.js +37 -0
- package/dist/cli/cmd-daemon.js.map +1 -0
- package/dist/cli/cmd-doctor.js +18 -0
- package/dist/cli/cmd-doctor.js.map +1 -0
- package/dist/cli/cmd-logs.js +30 -0
- package/dist/cli/cmd-logs.js.map +1 -0
- package/dist/cli/cmd-pairing.js +41 -0
- package/dist/cli/cmd-pairing.js.map +1 -0
- package/dist/cli/cmd-reset.js +39 -0
- package/dist/cli/cmd-reset.js.map +1 -0
- package/dist/cli/cmd-serve.js +30 -0
- package/dist/cli/cmd-serve.js.map +1 -0
- package/dist/cli/cmd-sessions.js +56 -0
- package/dist/cli/cmd-sessions.js.map +1 -0
- package/dist/cli/cmd-setup.js +11 -0
- package/dist/cli/cmd-setup.js.map +1 -0
- package/dist/cli/cmd-soul.js +43 -0
- package/dist/cli/cmd-soul.js.map +1 -0
- package/dist/cli/parse.js +50 -0
- package/dist/cli/parse.js.map +1 -0
- package/dist/cli/registry.js +15 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/cli.js +103 -0
- package/dist/cli.js.map +1 -0
- package/dist/compact.js +92 -0
- package/dist/compact.js.map +1 -0
- package/dist/config.js +153 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.js +21 -0
- package/dist/constants.js.map +1 -0
- package/dist/core/config.js +212 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/constants.js +21 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/errors.js +5 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/log.js +41 -0
- package/dist/core/log.js.map +1 -0
- package/dist/core/models.js +123 -0
- package/dist/core/models.js.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/update-check.js +51 -0
- package/dist/core/update-check.js.map +1 -0
- package/dist/cron.js +81 -0
- package/dist/cron.js.map +1 -0
- package/dist/daemon.js +109 -0
- package/dist/daemon.js.map +1 -0
- package/dist/doctor.js +194 -0
- package/dist/doctor.js.map +1 -0
- package/dist/errors.js +5 -0
- package/dist/errors.js.map +1 -0
- package/dist/extensions/approval-forward.js +42 -0
- package/dist/extensions/approval-forward.js.map +1 -0
- package/dist/extensions/approvals.js +144 -0
- package/dist/extensions/approvals.js.map +1 -0
- package/dist/extensions/cron.js +306 -0
- package/dist/extensions/cron.js.map +1 -0
- package/dist/extensions/hooks.js +72 -0
- package/dist/extensions/hooks.js.map +1 -0
- package/dist/extensions/skills.js +97 -0
- package/dist/extensions/skills.js.map +1 -0
- package/dist/gateway/csrf.js +44 -0
- package/dist/gateway/csrf.js.map +1 -0
- package/dist/gateway/logger.js +81 -0
- package/dist/gateway/logger.js.map +1 -0
- package/dist/gateway/rate-limit.js +33 -0
- package/dist/gateway/rate-limit.js.map +1 -0
- package/dist/gateway/routes.js +315 -0
- package/dist/gateway/routes.js.map +1 -0
- package/dist/gateway/state.js +54 -0
- package/dist/gateway/state.js.map +1 -0
- package/dist/gateway/ws-handler.js +200 -0
- package/dist/gateway/ws-handler.js.map +1 -0
- package/dist/gateway-entry.js +16 -0
- package/dist/gateway-entry.js.map +1 -0
- package/dist/hooks.js +72 -0
- package/dist/hooks.js.map +1 -0
- package/dist/lanes.js +62 -0
- package/dist/lanes.js.map +1 -0
- package/dist/model.js +30 -0
- package/dist/model.js.map +1 -0
- package/dist/policy.js +22 -0
- package/dist/policy.js.map +1 -0
- package/dist/queue.js +45 -0
- package/dist/queue.js.map +1 -0
- package/dist/retry.js +96 -0
- package/dist/retry.js.map +1 -0
- package/dist/runs.js +83 -0
- package/dist/runs.js.map +1 -0
- package/dist/runtime/compact.js +99 -0
- package/dist/runtime/compact.js.map +1 -0
- package/dist/runtime/lanes.js +66 -0
- package/dist/runtime/lanes.js.map +1 -0
- package/dist/runtime/orchestrate.js +121 -0
- package/dist/runtime/orchestrate.js.map +1 -0
- package/dist/runtime/queue.js +50 -0
- package/dist/runtime/queue.js.map +1 -0
- package/dist/runtime/retry.js +127 -0
- package/dist/runtime/retry.js.map +1 -0
- package/dist/runtime/runs.js +105 -0
- package/dist/runtime/runs.js.map +1 -0
- package/dist/serve.js +209 -0
- package/dist/serve.js.map +1 -0
- package/dist/session.js +75 -0
- package/dist/session.js.map +1 -0
- package/dist/setup.js +254 -0
- package/dist/setup.js.map +1 -0
- package/dist/skills.js +89 -0
- package/dist/skills.js.map +1 -0
- package/dist/subagent.js +71 -0
- package/dist/subagent.js.map +1 -0
- package/dist/system-prompt.js +157 -0
- package/dist/system-prompt.js.map +1 -0
- package/dist/telegram/admin-bot.js +705 -0
- package/dist/telegram/admin-bot.js.map +1 -0
- package/dist/telegram/agent-bot.js +551 -0
- package/dist/telegram/agent-bot.js.map +1 -0
- package/dist/telegram/bot-approval.js +63 -0
- package/dist/telegram/bot-approval.js.map +1 -0
- package/dist/telegram/draft-stream.js +86 -0
- package/dist/telegram/draft-stream.js.map +1 -0
- package/dist/telegram/format.js +106 -0
- package/dist/telegram/format.js.map +1 -0
- package/dist/telegram/helpers.js +87 -0
- package/dist/telegram/helpers.js.map +1 -0
- package/dist/telegram/pairing-notify.js +52 -0
- package/dist/telegram/pairing-notify.js.map +1 -0
- package/dist/telegram/pairing.js +138 -0
- package/dist/telegram/pairing.js.map +1 -0
- package/dist/telegram/resolve.js +33 -0
- package/dist/telegram/resolve.js.map +1 -0
- package/dist/telegram/transcribe.js +77 -0
- package/dist/telegram/transcribe.js.map +1 -0
- package/dist/telegram/types.js +3 -0
- package/dist/telegram/types.js.map +1 -0
- package/dist/telegram/voice-wizard.js +84 -0
- package/dist/telegram/voice-wizard.js.map +1 -0
- package/dist/telegram/wizard.js +89 -0
- package/dist/telegram/wizard.js.map +1 -0
- package/dist/telegram/wizards.js +297 -0
- package/dist/telegram/wizards.js.map +1 -0
- package/dist/telegram-admin.js +800 -0
- package/dist/telegram-admin.js.map +1 -0
- package/dist/telegram.js +118 -0
- package/dist/telegram.js.map +1 -0
- package/dist/tools/cron.js +94 -0
- package/dist/tools/cron.js.map +1 -0
- package/dist/tools/edit.js +29 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/exec.js +38 -0
- package/dist/tools/exec.js.map +1 -0
- package/dist/tools/fetch.js +28 -0
- package/dist/tools/fetch.js.map +1 -0
- package/dist/tools/index.js +16 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/memory.js +164 -0
- package/dist/tools/memory.js.map +1 -0
- package/dist/tools/patch.js +284 -0
- package/dist/tools/patch.js.map +1 -0
- package/dist/tools/read.js +26 -0
- package/dist/tools/read.js.map +1 -0
- package/dist/tools/search.js +62 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/subagent.js +48 -0
- package/dist/tools/subagent.js.map +1 -0
- package/dist/tools/write.js +22 -0
- package/dist/tools/write.js.map +1 -0
- package/dist/tui/commands.js +450 -0
- package/dist/tui/commands.js.map +1 -0
- package/dist/tui/components/assistant-message.js +26 -0
- package/dist/tui/components/assistant-message.js.map +1 -0
- package/dist/tui/components/chat-log.js +94 -0
- package/dist/tui/components/chat-log.js.map +1 -0
- package/dist/tui/components/custom-editor.js +40 -0
- package/dist/tui/components/custom-editor.js.map +1 -0
- package/dist/tui/components/hint-bar.js +13 -0
- package/dist/tui/components/hint-bar.js.map +1 -0
- package/dist/tui/components/tool-execution.js +73 -0
- package/dist/tui/components/tool-execution.js.map +1 -0
- package/dist/tui/components/user-message.js +19 -0
- package/dist/tui/components/user-message.js.map +1 -0
- package/dist/tui/components/welcome.js +147 -0
- package/dist/tui/components/welcome.js.map +1 -0
- package/dist/tui/context.js +3 -0
- package/dist/tui/context.js.map +1 -0
- package/dist/tui/theme.js +91 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/tui/tui.js +389 -0
- package/dist/tui/tui.js.map +1 -0
- package/dist/tui/ws-handler.js +154 -0
- package/dist/tui/ws-handler.js.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/usage.js +88 -0
- package/dist/usage.js.map +1 -0
- package/dist/workspace.js +245 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Hint bar component — shows keyboard shortcuts below the editor
|
|
2
|
+
import { Text } from "@mariozechner/pi-tui";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
const dim = (s) => chalk.hex("#7B7F87")(s);
|
|
5
|
+
export class HintBar extends Text {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(dim(" ? for shortcuts"), 0, 0);
|
|
8
|
+
}
|
|
9
|
+
setHint(text) {
|
|
10
|
+
this.setText(dim(` ${text}`));
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=hint-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hint-bar.js","sourceRoot":"","sources":["../../../src/tui/components/hint-bar.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAEjE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnD,MAAM,OAAO,OAAQ,SAAQ,IAAI;IAC/B;QACE,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// Tool execution display component (adapted from OpenClaw)
|
|
2
|
+
import { Box, Container, Markdown, Spacer, Text } from "@mariozechner/pi-tui";
|
|
3
|
+
import { markdownTheme, theme } from "../theme.js";
|
|
4
|
+
const PREVIEW_LINES = 12;
|
|
5
|
+
export class ToolExecutionComponent extends Container {
|
|
6
|
+
box;
|
|
7
|
+
header;
|
|
8
|
+
argsLine;
|
|
9
|
+
output;
|
|
10
|
+
toolName;
|
|
11
|
+
args;
|
|
12
|
+
resultText = "";
|
|
13
|
+
expanded = false;
|
|
14
|
+
isError = false;
|
|
15
|
+
isPartial = true;
|
|
16
|
+
constructor(toolName, args) {
|
|
17
|
+
super();
|
|
18
|
+
this.toolName = toolName;
|
|
19
|
+
this.args = args;
|
|
20
|
+
this.box = new Box(1, 1, (line) => theme.toolPendingBg(line));
|
|
21
|
+
this.header = new Text("", 0, 0);
|
|
22
|
+
this.argsLine = new Text("", 0, 0);
|
|
23
|
+
this.output = new Markdown("", 0, 0, markdownTheme, {
|
|
24
|
+
color: (line) => theme.toolOutput(line),
|
|
25
|
+
});
|
|
26
|
+
this.addChild(new Spacer(1));
|
|
27
|
+
this.addChild(this.box);
|
|
28
|
+
this.box.addChild(this.header);
|
|
29
|
+
this.box.addChild(this.argsLine);
|
|
30
|
+
this.box.addChild(this.output);
|
|
31
|
+
this.refresh();
|
|
32
|
+
}
|
|
33
|
+
setArgs(args) {
|
|
34
|
+
this.args = args;
|
|
35
|
+
this.refresh();
|
|
36
|
+
}
|
|
37
|
+
setExpanded(expanded) {
|
|
38
|
+
this.expanded = expanded;
|
|
39
|
+
this.refresh();
|
|
40
|
+
}
|
|
41
|
+
setResult(text, opts) {
|
|
42
|
+
this.resultText = text;
|
|
43
|
+
this.isPartial = false;
|
|
44
|
+
this.isError = Boolean(opts?.isError);
|
|
45
|
+
this.refresh();
|
|
46
|
+
}
|
|
47
|
+
refresh() {
|
|
48
|
+
const bg = this.isPartial
|
|
49
|
+
? theme.toolPendingBg
|
|
50
|
+
: this.isError
|
|
51
|
+
? theme.toolErrorBg
|
|
52
|
+
: theme.toolSuccessBg;
|
|
53
|
+
this.box.setBgFn((line) => bg(line));
|
|
54
|
+
const title = `${this.toolName}${this.isPartial ? " (running)" : ""}`;
|
|
55
|
+
this.header.setText(theme.toolTitle(theme.bold(title)));
|
|
56
|
+
let argStr = "";
|
|
57
|
+
try {
|
|
58
|
+
argStr = JSON.stringify(this.args).slice(0, 200);
|
|
59
|
+
}
|
|
60
|
+
catch { /* ignore */ }
|
|
61
|
+
this.argsLine.setText(argStr ? theme.dim(argStr) : theme.dim(" "));
|
|
62
|
+
const text = this.resultText || (this.isPartial ? "..." : "");
|
|
63
|
+
if (!this.expanded && text) {
|
|
64
|
+
const lines = text.split("\n");
|
|
65
|
+
const preview = lines.length > PREVIEW_LINES ? `${lines.slice(0, PREVIEW_LINES).join("\n")}\n...` : text;
|
|
66
|
+
this.output.setText(preview);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
this.output.setText(text);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=tool-execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-execution.js","sourceRoot":"","sources":["../../../src/tui/components/tool-execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// User message component (from OpenClaw)
|
|
2
|
+
import { Container, Markdown, Spacer } from "@mariozechner/pi-tui";
|
|
3
|
+
import { markdownTheme, theme } from "../theme.js";
|
|
4
|
+
export class UserMessageComponent extends Container {
|
|
5
|
+
body;
|
|
6
|
+
constructor(text) {
|
|
7
|
+
super();
|
|
8
|
+
this.body = new Markdown(text, 1, 1, markdownTheme, {
|
|
9
|
+
bgColor: (line) => theme.userBg(line),
|
|
10
|
+
color: (line) => theme.userText(line),
|
|
11
|
+
});
|
|
12
|
+
this.addChild(new Spacer(1));
|
|
13
|
+
this.addChild(this.body);
|
|
14
|
+
}
|
|
15
|
+
setText(text) {
|
|
16
|
+
this.body.setText(text);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=user-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-message.js","sourceRoot":"","sources":["../../../src/tui/components/user-message.ts"],"names":[],"mappings":"AAAA,yCAAyC;AAEzC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,OAAO,oBAAqB,SAAQ,SAAS;IACzC,IAAI,CAAW;IAEvB,YAAY,IAAY;QACtB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE;YAClD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;YACrC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;SACtC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
// Welcome screen component — Claude Code-inspired layout
|
|
2
|
+
// Renders a bordered box with ASCII art, tips, and recent activity
|
|
3
|
+
import { Text, visibleWidth } from "@mariozechner/pi-tui";
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
const palette = {
|
|
6
|
+
border: "#3C414B",
|
|
7
|
+
title: "#F6C453",
|
|
8
|
+
heading: "#F6C453",
|
|
9
|
+
text: "#E8E3D5",
|
|
10
|
+
dim: "#7B7F87",
|
|
11
|
+
accent: "#F2A65A",
|
|
12
|
+
camelBody: "#F6C453",
|
|
13
|
+
camelDetail: "#D4A843",
|
|
14
|
+
camelAccessory: "#F2A65A",
|
|
15
|
+
};
|
|
16
|
+
const c = {
|
|
17
|
+
border: (s) => chalk.hex(palette.border)(s),
|
|
18
|
+
title: (s) => chalk.bold.hex(palette.title)(s),
|
|
19
|
+
heading: (s) => chalk.hex(palette.heading)(s),
|
|
20
|
+
text: (s) => chalk.hex(palette.text)(s),
|
|
21
|
+
dim: (s) => chalk.hex(palette.dim)(s),
|
|
22
|
+
accent: (s) => chalk.hex(palette.accent)(s),
|
|
23
|
+
bold: (s) => chalk.bold.hex(palette.text)(s),
|
|
24
|
+
camelBody: (s) => chalk.hex(palette.camelBody)(s),
|
|
25
|
+
camelDetail: (s) => chalk.hex(palette.camelDetail)(s),
|
|
26
|
+
camelAccessory: (s) => chalk.hex(palette.camelAccessory)(s),
|
|
27
|
+
};
|
|
28
|
+
// Camel ASCII art
|
|
29
|
+
const CAMEL_ART = [
|
|
30
|
+
` ${c.camelAccessory("╭──╮")}`,
|
|
31
|
+
` ${c.camelAccessory("│")}${c.camelBody("@@")}${c.camelAccessory("│")}`,
|
|
32
|
+
` ${c.camelBody("╭╯")}${c.camelAccessory("╰──╯")}${c.camelBody("╮")}`,
|
|
33
|
+
` ${c.camelBody("│")} ${c.camelDetail("◉◉")} ${c.camelBody("│")}`,
|
|
34
|
+
` ${c.camelBody("╭╯")} ${c.camelBody("╰──╯")} ${c.camelBody("╲")}`,
|
|
35
|
+
` ${c.camelBody("│")} ${c.camelDetail("╭────╮")} ${c.camelBody("│")}`,
|
|
36
|
+
` ${c.camelBody("╰╮")}${c.camelDetail("│")} ${c.camelDetail("│")}${c.camelBody("╭╯")}`,
|
|
37
|
+
` ${c.camelBody("║")}${c.camelDetail("╰────╯")}${c.camelBody("║")}`,
|
|
38
|
+
` ${c.camelBody("╨")} ${c.camelBody("╨╨")} ${c.camelBody("╨")}`,
|
|
39
|
+
];
|
|
40
|
+
function padRight(str, width) {
|
|
41
|
+
const visible = visibleWidth(str);
|
|
42
|
+
if (visible >= width)
|
|
43
|
+
return str;
|
|
44
|
+
return str + " ".repeat(width - visible);
|
|
45
|
+
}
|
|
46
|
+
function formatRelativeTime(timestamp) {
|
|
47
|
+
const diff = Date.now() - timestamp;
|
|
48
|
+
const minutes = Math.floor(diff / 60_000);
|
|
49
|
+
if (minutes < 1)
|
|
50
|
+
return "just now";
|
|
51
|
+
if (minutes < 60)
|
|
52
|
+
return `${minutes}m ago`;
|
|
53
|
+
const hours = Math.floor(minutes / 60);
|
|
54
|
+
if (hours < 24)
|
|
55
|
+
return `${hours}h ago`;
|
|
56
|
+
const days = Math.floor(hours / 24);
|
|
57
|
+
return `${days}d ago`;
|
|
58
|
+
}
|
|
59
|
+
function truncateStr(str, maxLen) {
|
|
60
|
+
if (str.length <= maxLen)
|
|
61
|
+
return str;
|
|
62
|
+
return str.slice(0, maxLen - 1) + "…";
|
|
63
|
+
}
|
|
64
|
+
export function buildWelcomeScreen(opts, termWidth) {
|
|
65
|
+
const boxWidth = Math.min(termWidth - 2, 90);
|
|
66
|
+
const innerWidth = boxWidth - 4; // 2 for borders, 2 for inner padding
|
|
67
|
+
const leftColWidth = 30;
|
|
68
|
+
const rightColWidth = innerWidth - leftColWidth - 2; // 2 for gap
|
|
69
|
+
// --- Left column ---
|
|
70
|
+
const greeting = opts.userName
|
|
71
|
+
? c.bold(`Welcome back ${opts.userName}!`)
|
|
72
|
+
: c.bold("Welcome to CamelAGI!");
|
|
73
|
+
const thinkingStr = opts.thinking && opts.thinking !== "off"
|
|
74
|
+
? ` [think:${opts.thinking}]`
|
|
75
|
+
: "";
|
|
76
|
+
const modelLine = c.dim(`${opts.model}${thinkingStr}`);
|
|
77
|
+
const effortLine = c.dim(`${opts.effort} effort · ${opts.provider}`);
|
|
78
|
+
// Shorten cwd
|
|
79
|
+
const home = process.env.HOME ?? "";
|
|
80
|
+
let cwdDisplay = opts.cwd;
|
|
81
|
+
if (home && cwdDisplay.startsWith(home)) {
|
|
82
|
+
cwdDisplay = "~" + cwdDisplay.slice(home.length);
|
|
83
|
+
}
|
|
84
|
+
const cwdLine = c.dim(truncateStr(cwdDisplay, leftColWidth));
|
|
85
|
+
const leftLines = [];
|
|
86
|
+
leftLines.push("");
|
|
87
|
+
leftLines.push(greeting);
|
|
88
|
+
leftLines.push("");
|
|
89
|
+
for (const art of CAMEL_ART) {
|
|
90
|
+
leftLines.push(art);
|
|
91
|
+
}
|
|
92
|
+
leftLines.push("");
|
|
93
|
+
leftLines.push(modelLine);
|
|
94
|
+
leftLines.push(effortLine);
|
|
95
|
+
leftLines.push(cwdLine);
|
|
96
|
+
// --- Right column ---
|
|
97
|
+
const rightLines = [];
|
|
98
|
+
rightLines.push("");
|
|
99
|
+
rightLines.push(c.heading("Tips for getting started"));
|
|
100
|
+
rightLines.push(c.text("Type a message to start chatting"));
|
|
101
|
+
rightLines.push(c.text("Use /help for all commands"));
|
|
102
|
+
rightLines.push("");
|
|
103
|
+
rightLines.push(c.heading("Recent activity"));
|
|
104
|
+
const recentSessions = opts.sessions.slice(0, 3);
|
|
105
|
+
if (recentSessions.length === 0) {
|
|
106
|
+
rightLines.push(c.dim("No recent sessions"));
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
for (const s of recentSessions) {
|
|
110
|
+
const timeStr = formatRelativeTime(s.createdAt);
|
|
111
|
+
const displayName = s.label ? `${s.id} (${s.label})` : s.id;
|
|
112
|
+
const idStr = truncateStr(displayName, rightColWidth - 12);
|
|
113
|
+
rightLines.push(c.dim(`${padRight(timeStr, 10)}`) + c.text(idStr));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
rightLines.push(c.dim("/sessions for more"));
|
|
117
|
+
// --- Combine columns ---
|
|
118
|
+
const maxHeight = Math.max(leftLines.length, rightLines.length);
|
|
119
|
+
// Pad both columns to same height
|
|
120
|
+
while (leftLines.length < maxHeight)
|
|
121
|
+
leftLines.push("");
|
|
122
|
+
while (rightLines.length < maxHeight)
|
|
123
|
+
rightLines.push("");
|
|
124
|
+
// Build the box
|
|
125
|
+
const lines = [];
|
|
126
|
+
// Top border with title
|
|
127
|
+
const titleText = ` CamelAGI v${opts.version} `;
|
|
128
|
+
const titleLen = titleText.length;
|
|
129
|
+
const leftBorderLen = 2;
|
|
130
|
+
const rightBorderLen = boxWidth - leftBorderLen - titleLen - 2;
|
|
131
|
+
lines.push(c.border("╭─") +
|
|
132
|
+
c.title(titleText) +
|
|
133
|
+
c.border("─".repeat(Math.max(0, rightBorderLen)) + "╮"));
|
|
134
|
+
// Content rows
|
|
135
|
+
for (let i = 0; i < maxHeight; i++) {
|
|
136
|
+
const left = padRight(leftLines[i], leftColWidth);
|
|
137
|
+
const right = padRight(rightLines[i], rightColWidth);
|
|
138
|
+
lines.push(c.border("│") +
|
|
139
|
+
" " + left + " " + right +
|
|
140
|
+
" " + c.border("│"));
|
|
141
|
+
}
|
|
142
|
+
// Bottom border
|
|
143
|
+
lines.push(c.border("╰" + "─".repeat(boxWidth - 2) + "╯"));
|
|
144
|
+
const rendered = lines.join("\n");
|
|
145
|
+
return new Text(rendered, 0, 0);
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=welcome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../../src/tui/components/welcome.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/tui/context.ts"],"names":[],"mappings":"AAAA,mDAAmD"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// Theme: colors and markdown styling (adapted from OpenClaw)
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { highlight, supportsLanguage } from "cli-highlight";
|
|
4
|
+
const palette = {
|
|
5
|
+
text: "#E8E3D5",
|
|
6
|
+
dim: "#7B7F87",
|
|
7
|
+
accent: "#F6C453",
|
|
8
|
+
accentSoft: "#F2A65A",
|
|
9
|
+
border: "#3C414B",
|
|
10
|
+
userBg: "#2B2F36",
|
|
11
|
+
userText: "#F3EEE0",
|
|
12
|
+
systemText: "#9BA3B2",
|
|
13
|
+
toolPendingBg: "#1F2A2F",
|
|
14
|
+
toolSuccessBg: "#1E2D23",
|
|
15
|
+
toolErrorBg: "#2F1F1F",
|
|
16
|
+
toolTitle: "#F6C453",
|
|
17
|
+
toolOutput: "#E1DACB",
|
|
18
|
+
quote: "#8CC8FF",
|
|
19
|
+
quoteBorder: "#3B4D6B",
|
|
20
|
+
code: "#F0C987",
|
|
21
|
+
codeBlock: "#1E232A",
|
|
22
|
+
codeBorder: "#343A45",
|
|
23
|
+
link: "#7DD3A5",
|
|
24
|
+
error: "#F97066",
|
|
25
|
+
success: "#7DD3A5",
|
|
26
|
+
};
|
|
27
|
+
const fg = (hex) => (text) => chalk.hex(hex)(text);
|
|
28
|
+
const bg = (hex) => (text) => chalk.bgHex(hex)(text);
|
|
29
|
+
function highlightCode(code, lang) {
|
|
30
|
+
try {
|
|
31
|
+
const language = lang && supportsLanguage(lang) ? lang : undefined;
|
|
32
|
+
const highlighted = highlight(code, {
|
|
33
|
+
language,
|
|
34
|
+
ignoreIllegals: true,
|
|
35
|
+
});
|
|
36
|
+
return highlighted.split("\n");
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return code.split("\n").map((line) => fg(palette.code)(line));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export const theme = {
|
|
43
|
+
fg: fg(palette.text),
|
|
44
|
+
assistantText: (text) => text,
|
|
45
|
+
dim: fg(palette.dim),
|
|
46
|
+
accent: fg(palette.accent),
|
|
47
|
+
accentSoft: fg(palette.accentSoft),
|
|
48
|
+
success: fg(palette.success),
|
|
49
|
+
error: fg(palette.error),
|
|
50
|
+
header: (text) => chalk.bold(fg(palette.accent)(text)),
|
|
51
|
+
system: fg(palette.systemText),
|
|
52
|
+
userBg: bg(palette.userBg),
|
|
53
|
+
userText: fg(palette.userText),
|
|
54
|
+
toolTitle: fg(palette.toolTitle),
|
|
55
|
+
toolOutput: fg(palette.toolOutput),
|
|
56
|
+
toolPendingBg: bg(palette.toolPendingBg),
|
|
57
|
+
toolSuccessBg: bg(palette.toolSuccessBg),
|
|
58
|
+
toolErrorBg: bg(palette.toolErrorBg),
|
|
59
|
+
border: fg(palette.border),
|
|
60
|
+
bold: (text) => chalk.bold(text),
|
|
61
|
+
italic: (text) => chalk.italic(text),
|
|
62
|
+
};
|
|
63
|
+
export const markdownTheme = {
|
|
64
|
+
heading: (text) => chalk.bold(fg(palette.accent)(text)),
|
|
65
|
+
link: (text) => fg(palette.link)(text),
|
|
66
|
+
linkUrl: (text) => chalk.dim(text),
|
|
67
|
+
code: (text) => fg(palette.code)(text),
|
|
68
|
+
codeBlock: (text) => fg(palette.code)(text),
|
|
69
|
+
codeBlockBorder: (text) => fg(palette.codeBorder)(text),
|
|
70
|
+
quote: (text) => fg(palette.quote)(text),
|
|
71
|
+
quoteBorder: (text) => fg(palette.quoteBorder)(text),
|
|
72
|
+
hr: (text) => fg(palette.border)(text),
|
|
73
|
+
listBullet: (text) => fg(palette.accentSoft)(text),
|
|
74
|
+
bold: (text) => chalk.bold(text),
|
|
75
|
+
italic: (text) => chalk.italic(text),
|
|
76
|
+
strikethrough: (text) => chalk.strikethrough(text),
|
|
77
|
+
underline: (text) => chalk.underline(text),
|
|
78
|
+
highlightCode,
|
|
79
|
+
};
|
|
80
|
+
export const selectListTheme = {
|
|
81
|
+
selectedPrefix: (text) => fg(palette.accent)(text),
|
|
82
|
+
selectedText: (text) => chalk.bold(fg(palette.accent)(text)),
|
|
83
|
+
description: (text) => fg(palette.dim)(text),
|
|
84
|
+
scrollInfo: (text) => fg(palette.dim)(text),
|
|
85
|
+
noMatch: (text) => fg(palette.dim)(text),
|
|
86
|
+
};
|
|
87
|
+
export const editorTheme = {
|
|
88
|
+
borderColor: (text) => fg(palette.border)(text),
|
|
89
|
+
selectList: selectListTheme,
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/tui/theme.ts"],"names":[],"mappings":"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"}
|