psyclaw 0.27.6 → 0.27.12
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 +17 -14
- package/dist/apps/panel/index.html +11 -11
- package/dist/src/adapters/pi/extension.js +593 -101
- package/dist/src/adapters/pi/extension.js.map +1 -1
- package/dist/src/agents/import.js +2 -1
- package/dist/src/agents/import.js.map +1 -1
- package/dist/src/analysis/hooks.d.ts +19 -2
- package/dist/src/analysis/hooks.js +48 -7
- package/dist/src/analysis/hooks.js.map +1 -1
- package/dist/src/branding.d.ts +2 -2
- package/dist/src/branding.js +2 -2
- package/dist/src/branding.js.map +1 -1
- package/dist/src/chat.js +5 -2
- package/dist/src/chat.js.map +1 -1
- package/dist/src/cli.js +21 -6
- package/dist/src/cli.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/install/installer.js +3 -0
- package/dist/src/install/installer.js.map +1 -1
- package/dist/src/integrations/mcp-runtime.d.ts +13 -0
- package/dist/src/integrations/mcp-runtime.js +48 -0
- package/dist/src/integrations/mcp-runtime.js.map +1 -1
- package/dist/src/orchestration/runner.js +1 -0
- package/dist/src/orchestration/runner.js.map +1 -1
- package/dist/src/panel/events.d.ts +2 -1
- package/dist/src/panel/events.js +2 -5
- package/dist/src/panel/events.js.map +1 -1
- package/dist/src/panel/server.js +44 -18
- package/dist/src/panel/server.js.map +1 -1
- package/dist/src/project/approvals.d.ts +50 -0
- package/dist/src/project/approvals.js +62 -0
- package/dist/src/project/approvals.js.map +1 -0
- package/dist/src/project/bootstrap.d.ts +17 -0
- package/dist/src/project/bootstrap.js +87 -1
- package/dist/src/project/bootstrap.js.map +1 -1
- package/dist/src/project/paths.js +5 -2
- package/dist/src/project/paths.js.map +1 -1
- package/dist/src/research/ledger.d.ts +3 -2
- package/dist/src/research/ledger.js +47 -2
- package/dist/src/research/ledger.js.map +1 -1
- package/dist/src/skills/user-skills.d.ts +65 -0
- package/dist/src/skills/user-skills.js +340 -0
- package/dist/src/skills/user-skills.js.map +1 -0
- package/dist/src/style/cli-ui.js +19 -30
- package/dist/src/style/cli-ui.js.map +1 -1
- package/dist/src/telemetry/export.d.ts +8 -6
- package/dist/src/telemetry/export.js +81 -18
- package/dist/src/telemetry/export.js.map +1 -1
- package/dist/src/tui/provider-picker.d.ts +2 -0
- package/dist/src/tui/provider-picker.js +10 -0
- package/dist/src/tui/provider-picker.js.map +1 -1
- package/dist/src/tui/skill-manager.d.ts +3 -0
- package/dist/src/tui/skill-manager.js +11 -1
- package/dist/src/tui/skill-manager.js.map +1 -1
- package/dist/src/updates/update.js +10 -17
- package/dist/src/updates/update.js.map +1 -1
- package/dist/src/wizard.js +22 -8
- package/dist/src/wizard.js.map +1 -1
- package/dist/src/workflows/analysis-delegation.js +2 -2
- package/dist/src/workflows/analysis-delegation.js.map +1 -1
- package/package.json +2 -2
- package/scripts/rebrand-pi.mjs +94 -4
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
import { cp, lstat, mkdir, readFile, readdir, realpath, rm } from "node:fs/promises";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { basename, delimiter, isAbsolute, join, relative, resolve, sep } from "node:path";
|
|
4
|
+
import { getAgentDir } from "@earendil-works/pi-coding-agent";
|
|
5
|
+
import { parse as parseYaml } from "yaml";
|
|
6
|
+
import { atomicWriteFile } from "../project/jsonl.js";
|
|
7
|
+
const USER_SKILL_STATE = "psyclaw/user-skill-state/v1";
|
|
8
|
+
const INSTALL_MANIFEST = "psyclaw-install.json";
|
|
9
|
+
function isRecord(value) {
|
|
10
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
11
|
+
}
|
|
12
|
+
function expandConfiguredPath(value, cwd, home) {
|
|
13
|
+
const expanded = value === "~"
|
|
14
|
+
? home
|
|
15
|
+
: value.startsWith("~/") || value.startsWith("~\\")
|
|
16
|
+
? join(home, value.slice(2))
|
|
17
|
+
: value;
|
|
18
|
+
return isAbsolute(expanded) ? resolve(expanded) : resolve(cwd, expanded);
|
|
19
|
+
}
|
|
20
|
+
export function localSkillRoots(cwd) {
|
|
21
|
+
const home = homedir();
|
|
22
|
+
const envPaths = (process.env.PSYCLAW_SKILLS_PATH ?? "")
|
|
23
|
+
.split(delimiter)
|
|
24
|
+
.map((path) => path.trim())
|
|
25
|
+
.filter(Boolean)
|
|
26
|
+
.map((path) => expandConfiguredPath(path, cwd, home));
|
|
27
|
+
return [
|
|
28
|
+
// Fixed precedence: explicit project roots, other project roots, then
|
|
29
|
+
// user-level PsyClaw/Pi and other host agents.
|
|
30
|
+
join(cwd, ".psyclaw", "skills"),
|
|
31
|
+
join(cwd, "skills"),
|
|
32
|
+
join(cwd, ".claude", "skills"),
|
|
33
|
+
join(cwd, ".claude", "commands"),
|
|
34
|
+
join(cwd, ".codex", "skills"),
|
|
35
|
+
join(cwd, ".agents", "skills"),
|
|
36
|
+
join(cwd, ".opencode", "skills"),
|
|
37
|
+
join(cwd, ".cc-switch", "skills"),
|
|
38
|
+
join(home, ".psyclaw", "skills"),
|
|
39
|
+
join(home, ".claude", "skills"),
|
|
40
|
+
join(home, ".claude", "commands"),
|
|
41
|
+
join(home, ".codex", "skills"),
|
|
42
|
+
join(home, ".agents", "skills"),
|
|
43
|
+
join(home, ".opencode", "skills"),
|
|
44
|
+
join(home, ".cc-switch", "skills"),
|
|
45
|
+
...envPaths,
|
|
46
|
+
];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Roots whose contents are fully governed by the recommended Skill manager
|
|
50
|
+
* (`.psyclaw/imports/recommended` and `getAgentDir()/skills`). These are
|
|
51
|
+
* excluded from the local *load* path so a disabled recommended Skill is not
|
|
52
|
+
* silently re-enabled by the user-skill scan; the management page still shows
|
|
53
|
+
* them through their recommended rows.
|
|
54
|
+
*/
|
|
55
|
+
export function managedSkillRoots(cwd) {
|
|
56
|
+
return [
|
|
57
|
+
join(getAgentDir(), "skills"),
|
|
58
|
+
join(cwd, ".psyclaw", "imports", "recommended"),
|
|
59
|
+
];
|
|
60
|
+
}
|
|
61
|
+
function parseSkillFrontmatter(text) {
|
|
62
|
+
const normalized = text.replace(/^\uFEFF/, "");
|
|
63
|
+
const match = normalized.match(/^---[ \t]*\r?\n([\s\S]*?)\r?\n(?:---|\.\.\.)[ \t]*(?:\r?\n|$)/);
|
|
64
|
+
if (!match?.[1])
|
|
65
|
+
return null;
|
|
66
|
+
try {
|
|
67
|
+
const metadata = parseYaml(match[1]);
|
|
68
|
+
if (!isRecord(metadata))
|
|
69
|
+
return null;
|
|
70
|
+
const name = typeof metadata.name === "string" ? metadata.name.trim() : undefined;
|
|
71
|
+
const description = typeof metadata.description === "string" ? metadata.description.trim() : undefined;
|
|
72
|
+
if (!name)
|
|
73
|
+
return null;
|
|
74
|
+
return { name, ...(description === undefined ? {} : { description }) };
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async function readLocalSkill(dir, root, scope) {
|
|
81
|
+
try {
|
|
82
|
+
const text = await readFile(join(dir, "SKILL.md"), "utf8");
|
|
83
|
+
const meta = parseSkillFrontmatter(text);
|
|
84
|
+
if (!meta)
|
|
85
|
+
return null;
|
|
86
|
+
return {
|
|
87
|
+
id: meta.name,
|
|
88
|
+
name: meta.name,
|
|
89
|
+
description: meta.description ?? "",
|
|
90
|
+
path: dir,
|
|
91
|
+
root,
|
|
92
|
+
scope,
|
|
93
|
+
duplicatePaths: [],
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* A skill directory that carries a `psyclaw-install.json` manifest is a
|
|
102
|
+
* managed recommended install and must not be double-listed as a local skill.
|
|
103
|
+
*/
|
|
104
|
+
async function hasInstallManifest(directory) {
|
|
105
|
+
try {
|
|
106
|
+
await readFile(join(directory, INSTALL_MANIFEST), "utf8");
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Collect every directory under `root` that directly contains SKILL.md,
|
|
115
|
+
* mirroring Pi's loader semantics (a directory with SKILL.md is a skill and
|
|
116
|
+
* its children are not scanned separately). Hidden dirs and dependency
|
|
117
|
+
* folders are skipped. When `skipManaged` is set, skill directories that are
|
|
118
|
+
* managed recommended installs (carrying a manifest) are excluded.
|
|
119
|
+
*/
|
|
120
|
+
async function collectSkillDirs(directory, root, scope, depth, out, skipManaged = false) {
|
|
121
|
+
if (depth > 5)
|
|
122
|
+
return;
|
|
123
|
+
let entries;
|
|
124
|
+
try {
|
|
125
|
+
entries = await readdir(directory, { withFileTypes: true });
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (entries.some((entry) => entry.isFile() && entry.name === "SKILL.md")) {
|
|
131
|
+
if (skipManaged && (await hasInstallManifest(directory)))
|
|
132
|
+
return;
|
|
133
|
+
const info = await readLocalSkill(directory, root, scope);
|
|
134
|
+
if (info)
|
|
135
|
+
out.push(info);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
for (const entry of entries) {
|
|
139
|
+
if (entry.name.startsWith(".") || entry.name === "node_modules")
|
|
140
|
+
continue;
|
|
141
|
+
if (!entry.isDirectory() || entry.isSymbolicLink())
|
|
142
|
+
continue;
|
|
143
|
+
await collectSkillDirs(join(directory, entry.name), root, scope, depth + 1, out, skipManaged);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/** Scan all discovery roots for user-installed skills (used by the manager). */
|
|
147
|
+
export async function scanLocalSkills(cwd, options = {}) {
|
|
148
|
+
const roots = options.includeManaged === false
|
|
149
|
+
? localSkillRoots(cwd)
|
|
150
|
+
: [...localSkillRoots(cwd), ...managedSkillRoots(cwd)];
|
|
151
|
+
const out = [];
|
|
152
|
+
for (const root of roots) {
|
|
153
|
+
const scope = root.includes(cwd) && !root.startsWith(homedir()) ? "project" : "user";
|
|
154
|
+
// Managed roots carry manifests; skip them so a managed recommended
|
|
155
|
+
// install is not double-listed as a local skill.
|
|
156
|
+
const skipManaged = options.includeManaged !== false && managedSkillRoots(cwd).includes(root);
|
|
157
|
+
await collectSkillDirs(root, root, scope, 0, out, skipManaged);
|
|
158
|
+
}
|
|
159
|
+
const selected = new Map();
|
|
160
|
+
for (const skill of out) {
|
|
161
|
+
const key = skill.name.trim().toLocaleLowerCase();
|
|
162
|
+
const existing = selected.get(key);
|
|
163
|
+
if (existing) {
|
|
164
|
+
if (existing.path !== skill.path && !existing.duplicatePaths.includes(skill.path)) {
|
|
165
|
+
existing.duplicatePaths.push(skill.path);
|
|
166
|
+
}
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
selected.set(key, skill);
|
|
170
|
+
}
|
|
171
|
+
return [...selected.values()];
|
|
172
|
+
}
|
|
173
|
+
/** Read only descriptors from already-selected roots, including collections. */
|
|
174
|
+
export async function skillNamesInPaths(paths) {
|
|
175
|
+
const names = new Set();
|
|
176
|
+
for (const root of paths) {
|
|
177
|
+
const skills = [];
|
|
178
|
+
await collectSkillDirs(root, root, "project", 0, skills);
|
|
179
|
+
for (const skill of skills)
|
|
180
|
+
names.add(skill.name.trim().toLocaleLowerCase());
|
|
181
|
+
}
|
|
182
|
+
return [...names];
|
|
183
|
+
}
|
|
184
|
+
/** Claude command markdown is a prompt resource, not a Skill directory. */
|
|
185
|
+
export async function enabledLocalPromptPaths(cwd) {
|
|
186
|
+
const roots = [join(cwd, ".claude", "commands"), join(homedir(), ".claude", "commands")];
|
|
187
|
+
const selected = new Set();
|
|
188
|
+
const paths = [];
|
|
189
|
+
for (const root of roots) {
|
|
190
|
+
let entries;
|
|
191
|
+
try {
|
|
192
|
+
entries = await readdir(root, { withFileTypes: true });
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {
|
|
198
|
+
if (!entry.isFile() || !entry.name.toLocaleLowerCase().endsWith(".md"))
|
|
199
|
+
continue;
|
|
200
|
+
const key = entry.name.slice(0, -3).toLocaleLowerCase();
|
|
201
|
+
if (selected.has(key))
|
|
202
|
+
continue;
|
|
203
|
+
selected.add(key);
|
|
204
|
+
paths.push(resolve(root, entry.name));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return paths;
|
|
208
|
+
}
|
|
209
|
+
function userSkillStatePath(root) {
|
|
210
|
+
return join(root, ".psyclaw", "user-skills.json");
|
|
211
|
+
}
|
|
212
|
+
export async function readUserSkillState(root) {
|
|
213
|
+
try {
|
|
214
|
+
const value = JSON.parse(await readFile(userSkillStatePath(root), "utf8"));
|
|
215
|
+
if (!isRecord(value) || value.schemaVersion !== USER_SKILL_STATE)
|
|
216
|
+
throw new Error("invalid state");
|
|
217
|
+
const disabled = Array.isArray(value.disabled)
|
|
218
|
+
? value.disabled.filter((id) => typeof id === "string")
|
|
219
|
+
: [];
|
|
220
|
+
return { schemaVersion: USER_SKILL_STATE, disabled: [...new Set(disabled)].sort() };
|
|
221
|
+
}
|
|
222
|
+
catch {
|
|
223
|
+
return { schemaVersion: USER_SKILL_STATE, disabled: [] };
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
async function saveUserSkillState(root, state) {
|
|
227
|
+
await atomicWriteFile(userSkillStatePath(root), `${JSON.stringify({
|
|
228
|
+
schemaVersion: USER_SKILL_STATE,
|
|
229
|
+
disabled: [...new Set(state.disabled)].sort(),
|
|
230
|
+
}, null, 2)}\n`);
|
|
231
|
+
}
|
|
232
|
+
export async function setLocalSkillEnabled(root, id, enabled) {
|
|
233
|
+
const state = await readUserSkillState(root);
|
|
234
|
+
const current = new Set(state.disabled);
|
|
235
|
+
if (enabled)
|
|
236
|
+
current.delete(id);
|
|
237
|
+
else
|
|
238
|
+
current.add(id);
|
|
239
|
+
await saveUserSkillState(root, { schemaVersion: USER_SKILL_STATE, disabled: [...current] });
|
|
240
|
+
}
|
|
241
|
+
export async function setLocalSkillsEnabled(root, ids, enabled) {
|
|
242
|
+
const state = await readUserSkillState(root);
|
|
243
|
+
const current = new Set(state.disabled);
|
|
244
|
+
for (const id of ids) {
|
|
245
|
+
if (enabled)
|
|
246
|
+
current.delete(id);
|
|
247
|
+
else
|
|
248
|
+
current.add(id);
|
|
249
|
+
}
|
|
250
|
+
await saveUserSkillState(root, { schemaVersion: USER_SKILL_STATE, disabled: [...current] });
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Return existing, absolute Skill directories for Pi. Same-name skills are
|
|
254
|
+
* selected once by the root order above; loose markdown commands are not
|
|
255
|
+
* treated as Skills.
|
|
256
|
+
*/
|
|
257
|
+
export async function enabledLocalSkillPaths(cwd, options = {}) {
|
|
258
|
+
const state = await readUserSkillState(cwd);
|
|
259
|
+
const disabled = new Set(state.disabled);
|
|
260
|
+
const selectedNames = new Set([...(options.excludedNames ?? [])].map((name) => name.trim().toLocaleLowerCase()));
|
|
261
|
+
const paths = [];
|
|
262
|
+
const warnings = [];
|
|
263
|
+
const seen = new Set();
|
|
264
|
+
for (const root of localSkillRoots(cwd)) {
|
|
265
|
+
const exists = await lstat(root).then((stat) => stat.isDirectory()).catch(() => false);
|
|
266
|
+
if (!exists)
|
|
267
|
+
continue;
|
|
268
|
+
const skills = [];
|
|
269
|
+
const scope = root.includes(cwd) && !root.startsWith(homedir()) ? "project" : "user";
|
|
270
|
+
await collectSkillDirs(root, root, scope, 0, skills);
|
|
271
|
+
if (skills.length === 0)
|
|
272
|
+
continue;
|
|
273
|
+
for (const skill of skills) {
|
|
274
|
+
const nameKey = skill.name.trim().toLocaleLowerCase();
|
|
275
|
+
if (selectedNames.has(nameKey))
|
|
276
|
+
continue;
|
|
277
|
+
if (disabled.has(skill.id)) {
|
|
278
|
+
warnings.push(`User Skill '${skill.id}' is disabled and was not loaded.`);
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
const key = process.platform === "win32" ? skill.path.toLocaleLowerCase() : skill.path;
|
|
282
|
+
if (!seen.has(key)) {
|
|
283
|
+
seen.add(key);
|
|
284
|
+
selectedNames.add(nameKey);
|
|
285
|
+
paths.push(skill.path);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
return { paths, warnings };
|
|
290
|
+
}
|
|
291
|
+
export function userSkillId(name) {
|
|
292
|
+
return `local:${name}`;
|
|
293
|
+
}
|
|
294
|
+
async function assertNoSymlinks(directory) {
|
|
295
|
+
for (const entry of await readdir(directory, { withFileTypes: true })) {
|
|
296
|
+
if (entry.name === ".git" || entry.name === "node_modules")
|
|
297
|
+
continue;
|
|
298
|
+
const path = join(directory, entry.name);
|
|
299
|
+
if (entry.isSymbolicLink())
|
|
300
|
+
throw new Error(`Local Skill contains a symbolic link: ${path}`);
|
|
301
|
+
if (entry.isDirectory())
|
|
302
|
+
await assertNoSymlinks(path);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/** Copy one local Skill directory into PsyClaw's user-level Skill directory. */
|
|
306
|
+
export async function installLocalSkill(source, cwd, options = {}) {
|
|
307
|
+
const requested = resolve(cwd, source);
|
|
308
|
+
const sourcePath = await realpath(requested);
|
|
309
|
+
const stat = await lstat(sourcePath);
|
|
310
|
+
if (!stat.isDirectory() || stat.isSymbolicLink())
|
|
311
|
+
throw new Error("Local Skill source must be a real directory");
|
|
312
|
+
const skill = await readLocalSkill(sourcePath, sourcePath, "user");
|
|
313
|
+
if (!skill)
|
|
314
|
+
throw new Error("Local Skill directory must contain a valid SKILL.md with name frontmatter");
|
|
315
|
+
if (!/^[a-z0-9][a-z0-9-]{0,127}$/.test(skill.name))
|
|
316
|
+
throw new Error(`Invalid local Skill name: ${skill.name}`);
|
|
317
|
+
await assertNoSymlinks(sourcePath);
|
|
318
|
+
const targetRoot = options.targetRoot ?? join(homedir(), ".psyclaw", "skills");
|
|
319
|
+
const target = join(targetRoot, skill.name);
|
|
320
|
+
const rel = relative(targetRoot, target);
|
|
321
|
+
if (!rel || rel.startsWith(`..${sep}`) || isAbsolute(rel))
|
|
322
|
+
throw new Error("Local Skill target escapes the user Skill directory");
|
|
323
|
+
const exists = await lstat(target).then(() => true).catch(() => false);
|
|
324
|
+
if (exists)
|
|
325
|
+
throw new Error(`Skill '${skill.name}' is already installed at ${target}`);
|
|
326
|
+
await mkdir(targetRoot, { recursive: true });
|
|
327
|
+
try {
|
|
328
|
+
await cp(sourcePath, target, {
|
|
329
|
+
recursive: true,
|
|
330
|
+
errorOnExist: true,
|
|
331
|
+
filter: (path) => basename(path) !== ".git" && basename(path) !== "node_modules",
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
catch (error) {
|
|
335
|
+
await rm(target, { recursive: true, force: true }).catch(() => undefined);
|
|
336
|
+
throw error;
|
|
337
|
+
}
|
|
338
|
+
return { name: skill.name, source: sourcePath, target };
|
|
339
|
+
}
|
|
340
|
+
//# sourceMappingURL=user-skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-skills.js","sourceRoot":"","sources":["../../../src/skills/user-skills.ts"],"names":[],"mappings":"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"}
|
package/dist/src/style/cli-ui.js
CHANGED
|
@@ -51,41 +51,30 @@ export function renderCliBanner() {
|
|
|
51
51
|
*/
|
|
52
52
|
export function formatCliUsage() {
|
|
53
53
|
const banner = renderCliBanner();
|
|
54
|
-
const
|
|
55
|
-
const cmd = (name, args, desc) => ` ${c.teal(name.padEnd(14))} ${c.gray(args.padEnd(30))} ${desc}`;
|
|
54
|
+
const cmd = (name, args, desc) => ` ${c.teal(name.padEnd(10))} ${c.gray(args.padEnd(34))} ${desc}`;
|
|
56
55
|
return [
|
|
57
56
|
banner,
|
|
58
57
|
"",
|
|
59
|
-
` ${c.bold(c.white("
|
|
60
|
-
` ${c.cyan("$")} psyclaw ${c.gray("<command> [options...]")}`,
|
|
58
|
+
` ${c.bold(c.white("输入 psyclaw 进入对话,然后使用以下 / 命令:"))}`,
|
|
61
59
|
"",
|
|
62
|
-
|
|
63
|
-
cmd("
|
|
64
|
-
cmd("
|
|
65
|
-
cmd("
|
|
60
|
+
cmd("/init", "[--paradigm <id>] <research goal>", c.white("初始化研究项目并开始学术追问")),
|
|
61
|
+
cmd("/approve", "", c.white("审批 /init 生成的主要计划文档")),
|
|
62
|
+
cmd("/run", "[auto] [--skills a,b] [objective]", c.white("启动人在环路或自动研究流程")),
|
|
63
|
+
cmd("/brief", "", c.white("生成离线证据门控简报")),
|
|
64
|
+
cmd("/grill", "[subject]", c.white("逐题压力测试研究方案")),
|
|
65
|
+
cmd("/review", "", c.white("运行多角色模拟同行评审")),
|
|
66
|
+
cmd("/loop", "[objective|stop]", c.white("推进或停止当前有界研究循环")),
|
|
67
|
+
cmd("/skill", "[status|enable|disable|install]", c.white("管理和安装 Skill")),
|
|
68
|
+
cmd("/mcp", "", c.white("管理 MCP 服务器")),
|
|
69
|
+
cmd("/plugin", "list|install|remove", c.white("管理 Plugin / Extension")),
|
|
70
|
+
cmd("/install", "[skill|mcp] [id]", c.white("查看或安装推荐能力")),
|
|
71
|
+
cmd("/provider", "[provider-id]", c.white("查看、配置或切换 Provider")),
|
|
72
|
+
cmd("/panel", "", c.white("打开科研工作台")),
|
|
73
|
+
cmd("/export", "", c.white("导出当前会话的完整使用路径")),
|
|
74
|
+
cmd("/pet", "on|off|status", c.white("开启、关闭或查看启动横幅宠物")),
|
|
75
|
+
cmd("/help", "", c.white("查看全部对话命令")),
|
|
66
76
|
"",
|
|
67
|
-
` ${c.
|
|
68
|
-
cmd("psyclaw init", "<goal> [--paradigm <id>]", c.white("创建社科研究课题项目")),
|
|
69
|
-
cmd("psyclaw hitl init", "", c.white("初始化人工裁决 (HITL) 检查点模板")),
|
|
70
|
-
cmd("psyclaw handoff", "", c.white("生成 HANDOFF 研究移交备忘录")),
|
|
71
|
-
"",
|
|
72
|
-
` ${c.bold(c.cyan("🔬 科研工作流 (Research Workflows)"))}`,
|
|
73
|
-
cmd("psyclaw brief", "", c.white("生成离线证据简报 (Offline Brief)")),
|
|
74
|
-
"",
|
|
75
|
-
` ${c.bold(c.cyan("📁 证据与沙盒 (Evidence & Ledger)"))}`,
|
|
76
|
-
cmd("psyclaw evidence add", "<path> [--level fulltext|...]", c.white("登记只读文献与证据文件指纹")),
|
|
77
|
-
"",
|
|
78
|
-
` ${c.bold(c.cyan("📊 看板与 TUI (Observability & UI)"))}`,
|
|
79
|
-
cmd("psyclaw shell", "", c.white("启动终端 TUI 智能体管理界面")),
|
|
80
|
-
cmd("/panel (对话内)", "", c.white("在 psyclaw 对话中输入 /panel 打开科研工作台")),
|
|
81
|
-
"",
|
|
82
|
-
` ${c.bold(c.cyan("🧩 生态与更新 (Ecosystem & Updates)"))}`,
|
|
83
|
-
cmd("psyclaw agents", "", c.white("扫描已安装的外部领域智能体")),
|
|
84
|
-
cmd("psyclaw install", "<agent-id> [--yes]", c.white("安装受信任扩展与技能")),
|
|
85
|
-
cmd("psyclaw import", "<agent-id> [--yes]", c.white("导入外部智能体技能")),
|
|
86
|
-
cmd("psyclaw check-updates", "", c.white("检查运行时与生态更新报告")),
|
|
87
|
-
cmd("psyclaw update", "[--check] [--force]", c.white("升级 PsyClaw 及其内置 Pi(默认直接更新)")),
|
|
88
|
-
cmd("psyclaw traces export", "[--output <path>]", c.white("导出脱敏 OTLP 使用路径(Langfuse/LangSmith)")),
|
|
77
|
+
` ${c.gray("终端:")} ${c.teal("psyclaw -V")} ${c.darkGray("/")} ${c.teal("psyclaw --version")} ${c.gray("查看版本号")}`,
|
|
89
78
|
"",
|
|
90
79
|
` ${c.darkGray("──────────────────────────────────────────────────────────")}`,
|
|
91
80
|
` ${c.gray("文档与源码:")} ${c.cyan(c.underline("https://github.com/Exekiel179/psyclaw"))}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-ui.js","sourceRoot":"","sources":["../../../src/style/cli-ui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,gBAAgB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,CAAC;AAE5G,SAAS,IAAI,CAAC,IAAY,EAAE,IAAY;IACtC,OAAO,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,MAAM,CAAC,GAAG;IACf,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;IACxC,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACvC,GAAG,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACzC,SAAS,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAE5C,iCAAiC;IACjC,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACrD,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACrD,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACrD,KAAK,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;IACrD,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACvD,GAAG,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;IACnD,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACtD,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;IACxD,KAAK,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAEvD,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;IAC1D,KAAK,EAAE,CAAC,KAAa,EAAE,OAA6C,MAAM,EAAE,EAAE;QAC5E,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,oCAAoC;YAC1C,KAAK,EAAE,mCAAmC;YAC1C,MAAM,EAAE,oCAAoC;YAC5C,IAAI,EAAE,qCAAqC;SAC5C,CAAC;QACF,OAAO,gBAAgB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC;IAC7E,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,OAAO;QACL,EAAE;QACF,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,eAAe,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;QACxG,KAAK,CAAC,CAAC,QAAQ,CAAC,iDAAiD,CAAC,EAAE;QACpE,KAAK,IAAI,EAAE;KACZ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"cli-ui.js","sourceRoot":"","sources":["../../../src/style/cli-ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,9 +15,9 @@ export interface TraceExportResult {
|
|
|
15
15
|
workflowRuns: number;
|
|
16
16
|
};
|
|
17
17
|
privacy: {
|
|
18
|
-
contentIncluded:
|
|
19
|
-
originalIdsIncluded:
|
|
20
|
-
absolutePathsIncluded:
|
|
18
|
+
contentIncluded: true;
|
|
19
|
+
originalIdsIncluded: true;
|
|
20
|
+
absolutePathsIncluded: true;
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
export interface PanelTraceEvent {
|
|
@@ -26,6 +26,8 @@ export interface PanelTraceEvent {
|
|
|
26
26
|
at: string;
|
|
27
27
|
status: "ok" | "error";
|
|
28
28
|
category?: string;
|
|
29
|
+
/** Full tool input / message text for debugging (not redacted). */
|
|
30
|
+
detail?: string;
|
|
29
31
|
}
|
|
30
32
|
export interface PanelTrace {
|
|
31
33
|
id: string;
|
|
@@ -45,9 +47,9 @@ export interface PanelTraceSnapshot {
|
|
|
45
47
|
workflowRuns: number;
|
|
46
48
|
};
|
|
47
49
|
privacy: {
|
|
48
|
-
contentIncluded:
|
|
49
|
-
originalIdsIncluded:
|
|
50
|
-
absolutePathsIncluded:
|
|
50
|
+
contentIncluded: true;
|
|
51
|
+
originalIdsIncluded: true;
|
|
52
|
+
absolutePathsIncluded: true;
|
|
51
53
|
};
|
|
52
54
|
}
|
|
53
55
|
/** Build a stable, metadata-only trace view for the local Panel without writing an export file. */
|