camelagi 0.5.39 → 0.5.45
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/README.md +159 -27
- package/dashboard/404.html +1 -0
- package/dashboard/__next.__PAGE__.txt +9 -0
- package/dashboard/__next._full.txt +19 -0
- package/dashboard/__next._head.txt +6 -0
- package/dashboard/__next._index.txt +5 -0
- package/dashboard/__next._tree.txt +3 -0
- package/dashboard/_next/_next/static/T-oVqD_b6KFHCZwRKsnRE/_buildManifest.js +11 -0
- package/dashboard/_next/_next/static/T-oVqD_b6KFHCZwRKsnRE/_clientMiddlewareManifest.js +1 -0
- package/dashboard/_next/_next/static/T-oVqD_b6KFHCZwRKsnRE/_ssgManifest.js +1 -0
- package/dashboard/_next/_next/static/chunks/0.9wqq91a2h.e.js +3 -0
- package/dashboard/_next/_next/static/chunks/00-nlsz4ud071.js +11 -0
- package/dashboard/_next/_next/static/chunks/00noe7du3vxk9.js +1 -0
- package/dashboard/_next/_next/static/chunks/03~yq9q893hmn.js +1 -0
- package/dashboard/_next/_next/static/chunks/04wr2uisy8870.js +5 -0
- package/dashboard/_next/_next/static/chunks/05f.w0h0j~.3g.js +1 -0
- package/dashboard/_next/_next/static/chunks/0geaa8~wrpcj6.js +1 -0
- package/dashboard/_next/_next/static/chunks/0nrlwe_~wde44.js +1 -0
- package/dashboard/_next/_next/static/chunks/12l48lp-434~..js +31 -0
- package/dashboard/_next/_next/static/chunks/14qcm-bqojrb9.js +1 -0
- package/dashboard/_next/_next/static/chunks/15~vsexhgsteo.js +1 -0
- package/dashboard/_next/_next/static/chunks/turbopack-173kubfog5kol.js +1 -0
- package/dashboard/_next/static/8Qf-y5Z4kUHAaWZgy3BFF/_buildManifest.js +11 -0
- package/dashboard/_next/static/8Qf-y5Z4kUHAaWZgy3BFF/_clientMiddlewareManifest.js +1 -0
- package/dashboard/_next/static/8Qf-y5Z4kUHAaWZgy3BFF/_ssgManifest.js +1 -0
- package/dashboard/_next/static/IQ8CU45QQ3REnyUqiqjou/_buildManifest.js +11 -0
- package/dashboard/_next/static/IQ8CU45QQ3REnyUqiqjou/_clientMiddlewareManifest.js +1 -0
- package/dashboard/_next/static/IQ8CU45QQ3REnyUqiqjou/_ssgManifest.js +1 -0
- package/dashboard/_next/static/PXgzS7j3kuwIb14Ph3vgL/_buildManifest.js +11 -0
- package/dashboard/_next/static/PXgzS7j3kuwIb14Ph3vgL/_clientMiddlewareManifest.js +1 -0
- package/dashboard/_next/static/PXgzS7j3kuwIb14Ph3vgL/_ssgManifest.js +1 -0
- package/dashboard/_next/static/S6BdJ1Ro25a6twuts7gHi/_buildManifest.js +11 -0
- package/dashboard/_next/static/S6BdJ1Ro25a6twuts7gHi/_clientMiddlewareManifest.js +1 -0
- package/dashboard/_next/static/S6BdJ1Ro25a6twuts7gHi/_ssgManifest.js +1 -0
- package/dashboard/_next/static/T-oVqD_b6KFHCZwRKsnRE/_buildManifest.js +11 -0
- package/dashboard/_next/static/T-oVqD_b6KFHCZwRKsnRE/_clientMiddlewareManifest.js +1 -0
- package/dashboard/_next/static/T-oVqD_b6KFHCZwRKsnRE/_ssgManifest.js +1 -0
- package/dashboard/_next/static/bvUynE5XeBkbLQynmgHa8/_buildManifest.js +11 -0
- package/dashboard/_next/static/bvUynE5XeBkbLQynmgHa8/_clientMiddlewareManifest.js +1 -0
- package/dashboard/_next/static/bvUynE5XeBkbLQynmgHa8/_ssgManifest.js +1 -0
- package/dashboard/_next/static/chunks/0.9wqq91a2h.e.js +3 -0
- package/dashboard/_next/static/chunks/00-nlsz4ud071.js +11 -0
- package/dashboard/_next/static/chunks/00noe7du3vxk9.js +1 -0
- package/dashboard/_next/static/chunks/03~yq9q893hmn.js +1 -0
- package/dashboard/_next/static/chunks/04wr2uisy8870.js +5 -0
- package/dashboard/_next/static/chunks/05f.w0h0j~.3g.js +1 -0
- package/dashboard/_next/static/chunks/08ug0khjvhl6m.js +11 -0
- package/dashboard/_next/static/chunks/0d1s5w1cd08~7.js +11 -0
- package/dashboard/_next/static/chunks/0geaa8~wrpcj6.js +1 -0
- package/dashboard/_next/static/chunks/0lyajo4_yki3f.js +11 -0
- package/dashboard/_next/static/chunks/0nrlwe_~wde44.js +1 -0
- package/dashboard/_next/static/chunks/0pd15v2_1spxb.js +11 -0
- package/dashboard/_next/static/chunks/0vnhcfh7g1u6i.js +11 -0
- package/dashboard/_next/static/chunks/0ynuwcqa7w3o..css +2 -0
- package/dashboard/_next/static/chunks/11dfqgfbc8fk2.js +11 -0
- package/dashboard/_next/static/chunks/12l48lp-434~..js +31 -0
- package/dashboard/_next/static/chunks/14qcm-bqojrb9.js +1 -0
- package/dashboard/_next/static/chunks/15~vsexhgsteo.js +1 -0
- package/dashboard/_next/static/chunks/turbopack-173kubfog5kol.js +1 -0
- package/dashboard/_next/static/media/1bffadaabf893a1e-s.16ipb6fqu393i.woff2 +0 -0
- package/dashboard/_next/static/media/2bbe8d2671613f1f-s.067x_6k0k23tk.woff2 +0 -0
- package/dashboard/_next/static/media/2c55a0e60120577a-s.0bjc5tiuqdqro.woff2 +0 -0
- package/dashboard/_next/static/media/5476f68d60460930-s.0wxq9webf.ew4.woff2 +0 -0
- package/dashboard/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2 +0 -0
- package/dashboard/_next/static/media/9c72aa0f40e4eef8-s.0m6w47a4e5dy9.woff2 +0 -0
- package/dashboard/_next/static/media/ad66f9afd8947f86-s.11u06r12fd6v_.woff2 +0 -0
- package/dashboard/_next/static/media/favicon.0x3dzn~oxb6tn.ico +0 -0
- package/dashboard/_next/static/uQ6ZB7JlP8tE93mlzKtXM/_buildManifest.js +11 -0
- package/dashboard/_next/static/uQ6ZB7JlP8tE93mlzKtXM/_clientMiddlewareManifest.js +1 -0
- package/dashboard/_next/static/uQ6ZB7JlP8tE93mlzKtXM/_ssgManifest.js +1 -0
- package/dashboard/_not-found/__next._full.txt +16 -0
- package/dashboard/_not-found/__next._head.txt +6 -0
- package/dashboard/_not-found/__next._index.txt +5 -0
- package/dashboard/_not-found/__next._not-found.__PAGE__.txt +5 -0
- package/dashboard/_not-found/__next._not-found.txt +5 -0
- package/dashboard/_not-found/__next._tree.txt +2 -0
- package/dashboard/_not-found.html +1 -0
- package/dashboard/_not-found.txt +16 -0
- package/dashboard/favicon.ico +0 -0
- package/dashboard/file.svg +1 -0
- package/dashboard/globe.svg +1 -0
- package/dashboard/index.html +1 -0
- package/dashboard/index.txt +19 -0
- package/dashboard/next.svg +1 -0
- package/dashboard/vercel.svg +1 -0
- package/dashboard/window.svg +1 -0
- package/dist/agent/agent-cursor.js +138 -0
- package/dist/agent/agent-cursor.js.map +1 -0
- package/dist/agent/agent-sdk.js +71 -57
- package/dist/agent/agent-sdk.js.map +1 -1
- package/dist/agent/types.js +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/agent.js +11 -7
- package/dist/agent.js.map +1 -1
- package/dist/bootstrap.js +1 -1
- package/dist/bootstrap.js.map +1 -1
- package/dist/cli/cmd-config.js +1 -1
- package/dist/cli/cmd-config.js.map +1 -1
- package/dist/cli/cmd-dashboard.js +63 -0
- package/dist/cli/cmd-dashboard.js.map +1 -0
- package/dist/cli/cmd-pairing.js +1 -1
- package/dist/cli/cmd-pairing.js.map +1 -1
- package/dist/cli/cmd-projects.js +128 -0
- package/dist/cli/cmd-projects.js.map +1 -0
- package/dist/cli/cmd-team.js +587 -0
- package/dist/cli/cmd-team.js.map +1 -0
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/core/config.js +33 -48
- package/dist/core/config.js.map +1 -1
- package/dist/core/constants.js +2 -0
- package/dist/core/constants.js.map +1 -1
- package/dist/core/version.js +1 -1
- package/dist/extensions/bot-approval.js.map +1 -0
- package/dist/extensions/pairing.js.map +1 -0
- package/dist/extensions/team-coordinator.js +63 -0
- package/dist/extensions/team-coordinator.js.map +1 -0
- package/dist/gateway/csrf.js +1 -1
- package/dist/gateway/csrf.js.map +1 -1
- package/dist/gateway/routes.js +198 -95
- package/dist/gateway/routes.js.map +1 -1
- package/dist/gateway/ws-handler.js +200 -168
- package/dist/gateway/ws-handler.js.map +1 -1
- package/dist/gateway-entry.js +8 -2
- package/dist/gateway-entry.js.map +1 -1
- package/dist/model.js +5 -4
- package/dist/model.js.map +1 -1
- package/dist/runtime/orchestrate.js +19 -8
- package/dist/runtime/orchestrate.js.map +1 -1
- package/dist/serve.js +18 -3
- package/dist/serve.js.map +1 -1
- package/dist/session.js +14 -2
- package/dist/session.js.map +1 -1
- package/dist/setup.js +17 -2
- package/dist/setup.js.map +1 -1
- package/dist/team.js +203 -0
- package/dist/team.js.map +1 -0
- package/dist/telegram/admin-agents.js +498 -0
- package/dist/telegram/admin-agents.js.map +1 -0
- package/dist/telegram/admin-bot.js +13 -934
- package/dist/telegram/admin-bot.js.map +1 -1
- package/dist/telegram/admin-commands.js +403 -0
- package/dist/telegram/admin-commands.js.map +1 -0
- package/dist/telegram/agent-bot.js +45 -1338
- package/dist/telegram/agent-bot.js.map +1 -1
- package/dist/telegram/agent-claude-code.js +555 -0
- package/dist/telegram/agent-claude-code.js.map +1 -0
- package/dist/telegram/agent-commands.js +396 -0
- package/dist/telegram/agent-commands.js.map +1 -0
- package/dist/telegram/agent-context.js +136 -0
- package/dist/telegram/agent-context.js.map +1 -0
- package/dist/telegram/agent-messages.js +249 -0
- package/dist/telegram/agent-messages.js.map +1 -0
- package/dist/telegram/dir-browser.js +9 -0
- package/dist/telegram/dir-browser.js.map +1 -1
- package/dist/telegram/draft-stream.js +4 -2
- package/dist/telegram/draft-stream.js.map +1 -1
- package/dist/telegram/resolve.js +15 -28
- package/dist/telegram/resolve.js.map +1 -1
- package/dist/telegram/terminal.js +139 -32
- package/dist/telegram/terminal.js.map +1 -1
- package/dist/telegram/wizards.js +1 -1
- package/dist/telegram/wizards.js.map +1 -1
- package/dist/telegram.js +4 -3
- package/dist/telegram.js.map +1 -1
- package/dist/tools/admin.js +841 -0
- package/dist/tools/admin.js.map +1 -0
- package/dist/tools/team.js +182 -0
- package/dist/tools/team.js.map +1 -0
- package/dist/tui/commands.js +15 -0
- package/dist/tui/commands.js.map +1 -1
- package/dist/tui/components/welcome.js +2 -1
- package/dist/tui/components/welcome.js.map +1 -1
- package/dist/tui/tui.js +13 -1
- package/dist/tui/tui.js.map +1 -1
- package/package.json +4 -1
- package/dist/cli/cmd-install.js +0 -80
- package/dist/cli/cmd-install.js.map +0 -1
- package/dist/telegram/bot-approval.js.map +0 -1
- package/dist/telegram/pairing.js.map +0 -1
- /package/dist/{telegram → extensions}/bot-approval.js +0 -0
- /package/dist/{telegram → extensions}/pairing.js +0 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import { register } from "./registry.js";
|
|
4
|
+
import { loadConfig, saveConfig, ensureDirs } from "../core/config.js";
|
|
5
|
+
import { hasFlag, getFlag } from "./parse.js";
|
|
6
|
+
function slugify(name) {
|
|
7
|
+
return name.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "") || `project-${Date.now()}`;
|
|
8
|
+
}
|
|
9
|
+
register({
|
|
10
|
+
name: "projects",
|
|
11
|
+
description: "Manage project workspaces (the cwd agents run in)",
|
|
12
|
+
usage: `Usage: camelagi projects [subcommand]
|
|
13
|
+
|
|
14
|
+
A "project" is a registered workspace directory. When chat is sent with a
|
|
15
|
+
projectId, that project's path becomes the run's working directory.
|
|
16
|
+
|
|
17
|
+
Subcommands:
|
|
18
|
+
(none) List projects
|
|
19
|
+
list List projects
|
|
20
|
+
add [path] Register the directory at <path> (default: cwd)
|
|
21
|
+
remove <id> Unregister a project
|
|
22
|
+
|
|
23
|
+
Options for add:
|
|
24
|
+
--name <n> Display name (default: directory basename)
|
|
25
|
+
--kind <k> e.g. nextjs, ios, rust, python (free-form)
|
|
26
|
+
--agent <id> Default agent for chats sent to this project
|
|
27
|
+
--yes, -y Skip confirmation
|
|
28
|
+
|
|
29
|
+
Examples:
|
|
30
|
+
camelagi projects
|
|
31
|
+
camelagi projects add # registers cwd
|
|
32
|
+
camelagi projects add ~/code/api --kind rust --agent developer
|
|
33
|
+
camelagi projects remove api`,
|
|
34
|
+
run: async (args) => {
|
|
35
|
+
const p = await import("@clack/prompts");
|
|
36
|
+
ensureDirs();
|
|
37
|
+
const sub = args[0];
|
|
38
|
+
if (!sub || sub === "list") {
|
|
39
|
+
listProjects(p);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (sub === "add") {
|
|
43
|
+
await addProject(p, args.slice(1));
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (sub === "remove" || sub === "rm") {
|
|
47
|
+
await removeProject(p, args.slice(1));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
p.log.error(`Unknown subcommand: ${sub}`);
|
|
51
|
+
p.log.info("Run: camelagi projects --help");
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
function listProjects(p) {
|
|
55
|
+
const config = loadConfig();
|
|
56
|
+
const list = config.projects ?? [];
|
|
57
|
+
if (list.length === 0) {
|
|
58
|
+
p.log.info("No projects registered.");
|
|
59
|
+
p.log.message("Run: camelagi projects add");
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
p.log.step(`Projects (${list.length}):`);
|
|
63
|
+
for (const pr of list) {
|
|
64
|
+
const agent = pr.defaultAgentId ? ` agent=${pr.defaultAgentId}` : "";
|
|
65
|
+
const kind = pr.kind ? ` kind=${pr.kind}` : "";
|
|
66
|
+
p.log.message(` ${pr.id.padEnd(20)} ${pr.path}${kind}${agent}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async function addProject(p, args) {
|
|
70
|
+
const config = loadConfig();
|
|
71
|
+
const skip = hasFlag(args, "--yes") || hasFlag(args, "-y");
|
|
72
|
+
const positional = args.find((a) => !a.startsWith("--") && !a.startsWith("-"));
|
|
73
|
+
const dir = path.resolve(positional ?? process.cwd());
|
|
74
|
+
if (!fs.existsSync(dir) || !fs.statSync(dir).isDirectory()) {
|
|
75
|
+
p.log.error(`Not a directory: ${dir}`);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const name = getFlag(args, "--name") ?? path.basename(dir);
|
|
79
|
+
const kind = getFlag(args, "--kind");
|
|
80
|
+
const agent = getFlag(args, "--agent");
|
|
81
|
+
const id = slugify(name);
|
|
82
|
+
if (agent && !config.agents[agent]) {
|
|
83
|
+
p.log.error(`Agent not found in config: ${agent}`);
|
|
84
|
+
p.log.info(`Known agents: ${Object.keys(config.agents).join(", ") || "(none)"}`);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const existing = (config.projects ?? []).find((pr) => pr.id === id);
|
|
88
|
+
if (existing && !skip) {
|
|
89
|
+
const ok = await p.confirm({ message: `Project "${id}" exists. Overwrite path?` });
|
|
90
|
+
if (p.isCancel(ok) || !ok) {
|
|
91
|
+
p.cancel("Cancelled.");
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const project = { id, name, path: dir, kind, defaultAgentId: agent, registeredAt: Date.now() };
|
|
96
|
+
const others = (config.projects ?? []).filter((pr) => pr.id !== id);
|
|
97
|
+
saveConfig({ projects: [...others, project] });
|
|
98
|
+
p.log.success(`Registered: ${id}`);
|
|
99
|
+
p.log.message(` path: ${dir}`);
|
|
100
|
+
if (kind)
|
|
101
|
+
p.log.message(` kind: ${kind}`);
|
|
102
|
+
if (agent)
|
|
103
|
+
p.log.message(` agent: ${agent}`);
|
|
104
|
+
}
|
|
105
|
+
async function removeProject(p, args) {
|
|
106
|
+
const id = args.find((a) => !a.startsWith("-"));
|
|
107
|
+
if (!id) {
|
|
108
|
+
p.log.error("Usage: camelagi projects remove <id>");
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const config = loadConfig();
|
|
112
|
+
const list = config.projects ?? [];
|
|
113
|
+
if (!list.some((pr) => pr.id === id)) {
|
|
114
|
+
p.log.warn(`Not found: ${id}`);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const skip = hasFlag(args, "--yes") || hasFlag(args, "-y");
|
|
118
|
+
if (!skip) {
|
|
119
|
+
const ok = await p.confirm({ message: `Remove project "${id}"?` });
|
|
120
|
+
if (p.isCancel(ok) || !ok) {
|
|
121
|
+
p.cancel("Cancelled.");
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
saveConfig({ projects: list.filter((pr) => pr.id !== id) });
|
|
126
|
+
p.log.success(`Removed: ${id}`);
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=cmd-projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmd-projects.js","sourceRoot":"","sources":["../../src/cli/cmd-projects.ts"],"names":[],"mappings":"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"}
|