praxis-agent 0.2.0 → 0.3.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/README.md +18 -4
- package/dist/application/session-service.d.ts +34 -0
- package/dist/application/session-service.d.ts.map +1 -1
- package/dist/application/session-service.js +646 -38
- package/dist/application/session-service.js.map +1 -1
- package/dist/cli/interactive.d.ts +68 -8
- package/dist/cli/interactive.d.ts.map +1 -1
- package/dist/cli/interactive.js +2617 -206
- package/dist/cli/interactive.js.map +1 -1
- package/dist/cli/protocol.d.ts +1 -0
- package/dist/cli/protocol.d.ts.map +1 -1
- package/dist/cli/protocol.js.map +1 -1
- package/dist/cli/tui/claude-style.d.ts +142 -3
- package/dist/cli/tui/claude-style.d.ts.map +1 -1
- package/dist/cli/tui/claude-style.js +377 -16
- package/dist/cli/tui/claude-style.js.map +1 -1
- package/dist/cli/tui/clipboard.d.ts +24 -0
- package/dist/cli/tui/clipboard.d.ts.map +1 -0
- package/dist/cli/tui/clipboard.js +153 -0
- package/dist/cli/tui/clipboard.js.map +1 -0
- package/dist/cli/tui/composer-editor.d.ts +19 -0
- package/dist/cli/tui/composer-editor.d.ts.map +1 -0
- package/dist/cli/tui/composer-editor.js +99 -0
- package/dist/cli/tui/composer-editor.js.map +1 -0
- package/dist/cli/tui/composer-images.d.ts +7 -0
- package/dist/cli/tui/composer-images.d.ts.map +1 -0
- package/dist/cli/tui/composer-images.js +48 -0
- package/dist/cli/tui/composer-images.js.map +1 -0
- package/dist/cli/tui/conversation-export.d.ts +6 -0
- package/dist/cli/tui/conversation-export.d.ts.map +1 -0
- package/dist/cli/tui/conversation-export.js +76 -0
- package/dist/cli/tui/conversation-export.js.map +1 -0
- package/dist/cli/tui/external-editor.d.ts +21 -0
- package/dist/cli/tui/external-editor.d.ts.map +1 -0
- package/dist/cli/tui/external-editor.js +144 -0
- package/dist/cli/tui/external-editor.js.map +1 -0
- package/dist/cli/tui/file-picker.d.ts +33 -0
- package/dist/cli/tui/file-picker.d.ts.map +1 -0
- package/dist/cli/tui/file-picker.js +117 -0
- package/dist/cli/tui/file-picker.js.map +1 -0
- package/dist/cli/tui/git-diff.d.ts +14 -0
- package/dist/cli/tui/git-diff.d.ts.map +1 -0
- package/dist/cli/tui/git-diff.js +55 -0
- package/dist/cli/tui/git-diff.js.map +1 -0
- package/dist/cli/tui/keybindings.d.ts +14 -0
- package/dist/cli/tui/keybindings.d.ts.map +1 -0
- package/dist/cli/tui/keybindings.js +430 -0
- package/dist/cli/tui/keybindings.js.map +1 -0
- package/dist/cli/tui/permission-settings.d.ts +18 -0
- package/dist/cli/tui/permission-settings.d.ts.map +1 -0
- package/dist/cli/tui/permission-settings.js +109 -0
- package/dist/cli/tui/permission-settings.js.map +1 -0
- package/dist/cli/tui/slash-commands.d.ts +11 -0
- package/dist/cli/tui/slash-commands.d.ts.map +1 -0
- package/dist/cli/tui/slash-commands.js +183 -0
- package/dist/cli/tui/slash-commands.js.map +1 -0
- package/dist/cli/tui/terminal-suspend.d.ts +5 -0
- package/dist/cli/tui/terminal-suspend.d.ts.map +1 -0
- package/dist/cli/tui/terminal-suspend.js +9 -0
- package/dist/cli/tui/terminal-suspend.js.map +1 -0
- package/dist/cli/tui/workspace-directories.d.ts +3 -0
- package/dist/cli/tui/workspace-directories.d.ts.map +1 -0
- package/dist/cli/tui/workspace-directories.js +55 -0
- package/dist/cli/tui/workspace-directories.js.map +1 -0
- package/dist/cli.d.ts +23 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +45 -5
- package/dist/cli.js.map +1 -1
- package/dist/compatibility/claude/compaction.d.ts +8 -0
- package/dist/compatibility/claude/compaction.d.ts.map +1 -1
- package/dist/compatibility/claude/compaction.js +45 -8
- package/dist/compatibility/claude/compaction.js.map +1 -1
- package/dist/compatibility/claude/fork.d.ts.map +1 -1
- package/dist/compatibility/claude/fork.js +24 -6
- package/dist/compatibility/claude/fork.js.map +1 -1
- package/dist/compatibility/claude/history.d.ts.map +1 -1
- package/dist/compatibility/claude/history.js +41 -1
- package/dist/compatibility/claude/history.js.map +1 -1
- package/dist/compatibility/claude/projection.d.ts +29 -1
- package/dist/compatibility/claude/projection.d.ts.map +1 -1
- package/dist/compatibility/claude/projection.js +132 -2
- package/dist/compatibility/claude/projection.js.map +1 -1
- package/dist/compatibility/claude/schema.d.ts.map +1 -1
- package/dist/compatibility/claude/schema.js +34 -7
- package/dist/compatibility/claude/schema.js.map +1 -1
- package/dist/compatibility/claude/translation.d.ts +7 -0
- package/dist/compatibility/claude/translation.d.ts.map +1 -1
- package/dist/compatibility/claude/translation.js +20 -0
- package/dist/compatibility/claude/translation.js.map +1 -1
- package/dist/core/runtime.d.ts +19 -0
- package/dist/core/runtime.d.ts.map +1 -1
- package/dist/core/runtime.js +30 -11
- package/dist/core/runtime.js.map +1 -1
- package/dist/extensions/claude-extensions.d.ts +12 -0
- package/dist/extensions/claude-extensions.d.ts.map +1 -1
- package/dist/extensions/claude-extensions.js +49 -0
- package/dist/extensions/claude-extensions.js.map +1 -1
- package/dist/hooks/claude-hook-tools.js +2 -2
- package/dist/hooks/claude-hook-tools.js.map +1 -1
- package/dist/persistence/claude-transcript-store.d.ts.map +1 -1
- package/dist/persistence/claude-transcript-store.js +4 -3
- package/dist/persistence/claude-transcript-store.js.map +1 -1
- package/dist/tools/claude-interactive-tools.d.ts +1 -0
- package/dist/tools/claude-interactive-tools.d.ts.map +1 -1
- package/dist/tools/claude-interactive-tools.js +12 -0
- package/dist/tools/claude-interactive-tools.js.map +1 -1
- package/dist/tools/local-tools.d.ts.map +1 -1
- package/dist/tools/local-tools.js +11 -0
- package/dist/tools/local-tools.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
export const BUILTIN_TUI_SLASH_COMMANDS = [
|
|
2
|
+
{
|
|
3
|
+
name: 'add-dir',
|
|
4
|
+
description: 'Add a new working directory',
|
|
5
|
+
source: 'builtin',
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
name: 'branch',
|
|
9
|
+
description: 'Create a branch of the current conversation at this point',
|
|
10
|
+
source: 'builtin',
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: 'cd',
|
|
14
|
+
description: 'Change the current working directory',
|
|
15
|
+
source: 'builtin',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'help',
|
|
19
|
+
description: 'Show help and available commands',
|
|
20
|
+
source: 'builtin',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'clear',
|
|
24
|
+
description: 'Start a new session with empty context; previous session stays on disk (resumable with /resume)',
|
|
25
|
+
source: 'builtin',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: 'compact',
|
|
29
|
+
description: 'Clear conversation history but keep a summary in context',
|
|
30
|
+
source: 'builtin',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'model',
|
|
34
|
+
description: 'Set the AI model for this session',
|
|
35
|
+
source: 'builtin',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'effort',
|
|
39
|
+
description: 'Set effort level for model usage',
|
|
40
|
+
source: 'builtin',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'export',
|
|
44
|
+
description: 'Export the current conversation',
|
|
45
|
+
source: 'builtin',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'keybindings',
|
|
49
|
+
description: 'Open your keyboard shortcuts file',
|
|
50
|
+
source: 'builtin',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'permissions',
|
|
54
|
+
description: 'Manage allow and deny tool permission rules',
|
|
55
|
+
source: 'builtin',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'resume',
|
|
59
|
+
description: 'Resume a previous conversation',
|
|
60
|
+
source: 'builtin',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: 'diff',
|
|
64
|
+
description: 'View uncommitted changes and per-turn diffs',
|
|
65
|
+
source: 'builtin',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'context',
|
|
69
|
+
description: 'Visualize current context usage as a colored grid',
|
|
70
|
+
source: 'builtin',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'config',
|
|
74
|
+
description: 'Open settings',
|
|
75
|
+
source: 'builtin',
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: 'copy',
|
|
79
|
+
description: "Copy Praxis's last response to clipboard (or /copy N for the Nth-latest)",
|
|
80
|
+
source: 'builtin',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: 'status',
|
|
84
|
+
description: 'Show runtime status, configuration, usage, and statistics',
|
|
85
|
+
source: 'builtin',
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
name: 'skills',
|
|
89
|
+
description: 'List available skills',
|
|
90
|
+
source: 'builtin',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: 'skill',
|
|
94
|
+
description: 'List available skills',
|
|
95
|
+
source: 'builtin',
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: 'mcp',
|
|
99
|
+
description: 'Manage MCP servers',
|
|
100
|
+
source: 'builtin',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: 'reload-plugins',
|
|
104
|
+
description: 'Activate pending plugin changes in the current session',
|
|
105
|
+
source: 'builtin',
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
name: 'reload-skills',
|
|
109
|
+
description: 'Pick up skills added or changed on disk during this session',
|
|
110
|
+
source: 'builtin',
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
name: 'rename',
|
|
114
|
+
description: 'Rename the current conversation',
|
|
115
|
+
source: 'builtin',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
name: 'rewind',
|
|
119
|
+
description: 'Restore the code and/or conversation to an earlier point',
|
|
120
|
+
source: 'builtin',
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: 'usage',
|
|
124
|
+
description: 'Show session cost, model usage, and activity stats',
|
|
125
|
+
source: 'builtin',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
name: 'tasks',
|
|
129
|
+
description: 'View background work',
|
|
130
|
+
source: 'builtin',
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
name: 'plan',
|
|
134
|
+
description: 'Enable plan mode for this session',
|
|
135
|
+
source: 'builtin',
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
name: 'workflows',
|
|
139
|
+
description: 'Browse running and completed workflows',
|
|
140
|
+
source: 'builtin',
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
name: 'exit',
|
|
144
|
+
description: 'Exit the CLI',
|
|
145
|
+
source: 'builtin',
|
|
146
|
+
},
|
|
147
|
+
];
|
|
148
|
+
function normalizedName(name) {
|
|
149
|
+
return name.replace(/^\/+/, '').trim();
|
|
150
|
+
}
|
|
151
|
+
export function mergeTuiSlashCommands(commands) {
|
|
152
|
+
const merged = new Map();
|
|
153
|
+
for (const command of [...BUILTIN_TUI_SLASH_COMMANDS, ...commands]) {
|
|
154
|
+
const name = normalizedName(command.name);
|
|
155
|
+
if (!name)
|
|
156
|
+
continue;
|
|
157
|
+
const key = name.toLowerCase();
|
|
158
|
+
if (merged.has(key))
|
|
159
|
+
continue;
|
|
160
|
+
merged.set(key, { ...command, name });
|
|
161
|
+
}
|
|
162
|
+
return [...merged.values()];
|
|
163
|
+
}
|
|
164
|
+
export function slashCommandQuery(input) {
|
|
165
|
+
if (!input.startsWith('/'))
|
|
166
|
+
return null;
|
|
167
|
+
const query = input.slice(1);
|
|
168
|
+
return /\s/u.test(query) ? null : query.toLowerCase();
|
|
169
|
+
}
|
|
170
|
+
export function filterTuiSlashCommands(commands, query) {
|
|
171
|
+
return [...commands]
|
|
172
|
+
.filter((command) => !query ||
|
|
173
|
+
command.name.toLowerCase().includes(query) ||
|
|
174
|
+
command.description.toLowerCase().includes(query))
|
|
175
|
+
.sort((left, right) => {
|
|
176
|
+
const leftPrefix = left.name.toLowerCase().startsWith(query);
|
|
177
|
+
const rightPrefix = right.name.toLowerCase().startsWith(query);
|
|
178
|
+
if (leftPrefix !== rightPrefix)
|
|
179
|
+
return leftPrefix ? -1 : 1;
|
|
180
|
+
return left.name.localeCompare(right.name);
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=slash-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slash-commands.js","sourceRoot":"","sources":["../../../src/cli/tui/slash-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-suspend.d.ts","sourceRoot":"","sources":["../../../src/cli/tui/terminal-suspend.ts"],"names":[],"mappings":"AAIA,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE;IACP,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;IAChC,IAAI,CAAC,IAAI,OAAO,CAAA;CACZ,GACL,IAAI,CAKN"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const SUSPEND_NOTICE = 'Praxis Code has been suspended. Run `fg` to bring Praxis Code back.\n' +
|
|
2
|
+
'Note: ctrl + z now suspends Praxis Code, ctrl + _ undoes input.\n\n';
|
|
3
|
+
export function suspendTuiProcess(options = {}) {
|
|
4
|
+
const write = options.write ?? ((message) => process.stdout.write(message));
|
|
5
|
+
const stop = options.stop ?? (() => process.kill(process.pid, 'SIGTSTP'));
|
|
6
|
+
write(SUSPEND_NOTICE);
|
|
7
|
+
stop();
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=terminal-suspend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-suspend.js","sourceRoot":"","sources":["../../../src/cli/tui/terminal-suspend.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAClB,uEAAuE;IACvE,qEAAqE,CAAA;AAEvE,MAAM,UAAU,iBAAiB,CAC/B,UAGI,EAAE;IAEN,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;IAC3E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;IACzE,KAAK,CAAC,cAAc,CAAC,CAAA;IACrB,IAAI,EAAE,CAAA;AACR,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-directories.d.ts","sourceRoot":"","sources":["../../../src/cli/tui/workspace-directories.ts"],"names":[],"mappings":"AAUA,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CAOjB;AAWD,wBAAsB,6BAA6B,CACjD,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CAwBjB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { readdir, realpath, stat } from 'node:fs/promises';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { join, resolve, sep } from 'node:path';
|
|
4
|
+
function expandHome(path) {
|
|
5
|
+
if (path === '~')
|
|
6
|
+
return homedir();
|
|
7
|
+
if (path.startsWith(`~${sep}`))
|
|
8
|
+
return join(homedir(), path.slice(2));
|
|
9
|
+
return path;
|
|
10
|
+
}
|
|
11
|
+
export async function resolveTuiWorkspaceDirectory(input, cwd) {
|
|
12
|
+
const value = input.trim();
|
|
13
|
+
if (!value)
|
|
14
|
+
throw new Error('Enter a directory path or press Esc.');
|
|
15
|
+
const path = await realpath(resolve(cwd, expandHome(value)));
|
|
16
|
+
if (!(await stat(path)).isDirectory())
|
|
17
|
+
throw new Error(`Not a directory: ${path}`);
|
|
18
|
+
return path;
|
|
19
|
+
}
|
|
20
|
+
function commonPrefix(values) {
|
|
21
|
+
if (values.length === 0)
|
|
22
|
+
return '';
|
|
23
|
+
let prefix = values[0] ?? '';
|
|
24
|
+
for (const value of values.slice(1)) {
|
|
25
|
+
while (!value.startsWith(prefix))
|
|
26
|
+
prefix = prefix.slice(0, -1);
|
|
27
|
+
}
|
|
28
|
+
return prefix;
|
|
29
|
+
}
|
|
30
|
+
export async function completeTuiWorkspaceDirectory(input, cwd) {
|
|
31
|
+
const expanded = expandHome(input);
|
|
32
|
+
const slash = Math.max(expanded.lastIndexOf('/'), expanded.lastIndexOf(sep));
|
|
33
|
+
const typedParent = slash === -1 ? '' : expanded.slice(0, slash + 1);
|
|
34
|
+
const typedName = slash === -1 ? expanded : expanded.slice(slash + 1);
|
|
35
|
+
const parent = resolve(cwd, typedParent || '.');
|
|
36
|
+
let entries;
|
|
37
|
+
try {
|
|
38
|
+
entries = (await readdir(parent, { withFileTypes: true }))
|
|
39
|
+
.filter((entry) => entry.isDirectory() && entry.name.startsWith(typedName))
|
|
40
|
+
.map((entry) => entry.name)
|
|
41
|
+
.sort();
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return input;
|
|
45
|
+
}
|
|
46
|
+
const prefix = commonPrefix(entries);
|
|
47
|
+
if (!prefix || (prefix === typedName && entries.length !== 1))
|
|
48
|
+
return input;
|
|
49
|
+
const completed = `${typedParent}${prefix}${entries.length === 1 ? sep : ''}`;
|
|
50
|
+
if (input.startsWith('~') && completed.startsWith(homedir())) {
|
|
51
|
+
return `~${completed.slice(homedir().length)}`;
|
|
52
|
+
}
|
|
53
|
+
return completed;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=workspace-directories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-directories.js","sourceRoot":"","sources":["../../../src/cli/tui/workspace-directories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAE9C,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,OAAO,EAAE,CAAA;IAClC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,KAAa,EACb,GAAW;IAEX,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC1B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACnE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC5D,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE;QACnC,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAA;IAC7C,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,YAAY,CAAC,MAAyB;IAC7C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAClC,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAChE,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,KAAa,EACb,GAAW;IAEX,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IAClC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IAC5E,MAAM,WAAW,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;IACpE,MAAM,SAAS,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IACrE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,IAAI,GAAG,CAAC,CAAA;IAC/C,IAAI,OAAO,CAAA;IACX,IAAI,CAAC;QACH,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;aACvD,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CACnE;aACA,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;aAC1B,IAAI,EAAE,CAAA;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IACpC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAC3E,MAAM,SAAS,GAAG,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;IAC7E,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC7D,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAA;IAChD,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { type ForkResult, type SessionInspection, type SessionRunResult, type SessionSummary } from './application/session-service.js';
|
|
2
|
+
import { type ForkResult, type ManualCompactResult, type ManualCompactSelection, type RewindPoint, type SessionInspection, type SessionRunResult, type SessionSummary } from './application/session-service.js';
|
|
3
|
+
import type { ClaudeDisplayTranscriptItem } from './compatibility/claude/projection.js';
|
|
3
4
|
import { type ModelDocument, type ModelImage, type ModelProvider, type ModelToolCall, type PermissionApproval, type ToolRegistry, type RuntimeEventSink } from './core/runtime.js';
|
|
4
5
|
import type { InteractiveResumeOptions, InteractiveServiceFactory } from './cli/interactive.js';
|
|
6
|
+
import type { TuiSlashCommand } from './cli/tui/slash-commands.js';
|
|
7
|
+
import { type ClaudePermissionMode } from './permissions/claude-permission-resolver.js';
|
|
5
8
|
import { authenticateMcpServer } from './mcp/claude-mcp-oauth.js';
|
|
6
9
|
import { servePraxisMcpStdio } from './mcp/praxis-mcp-server.js';
|
|
7
10
|
import { parseContextEnvironment, parseProviderEnvironment } from './providers/environment.js';
|
|
@@ -22,8 +25,14 @@ interface SessionCommands {
|
|
|
22
25
|
toolRegistry?: ToolRegistry;
|
|
23
26
|
run(prompt: string, signal?: AbortSignal, sessionId?: string, name?: string, images?: readonly ModelImage[], documents?: readonly ModelDocument[]): Promise<SessionRunResult>;
|
|
24
27
|
resume(sessionId: string, prompt: string, signal?: AbortSignal, name?: string, images?: readonly ModelImage[], documents?: readonly ModelDocument[]): Promise<SessionRunResult>;
|
|
25
|
-
|
|
28
|
+
runShell?(command: string, signal?: AbortSignal, sessionId?: string, name?: string): Promise<SessionRunResult>;
|
|
29
|
+
resumeShell?(sessionId: string, command: string, signal?: AbortSignal, name?: string): Promise<SessionRunResult>;
|
|
30
|
+
fork(sessionId: string, targetSessionId?: string, resumeSessionAt?: string): Promise<ForkResult>;
|
|
31
|
+
setPermissionMode?(sessionId: string, mode: ClaudePermissionMode): Promise<void>;
|
|
26
32
|
rewindFiles?(sessionId: string, userMessageId: string): Promise<void>;
|
|
33
|
+
rewindPoints?(sessionId: string): Promise<RewindPoint[]>;
|
|
34
|
+
changeCwd?(sessionId: string | undefined, cwd: string): Promise<string>;
|
|
35
|
+
recordCdUsage?(sessionId: string): Promise<void>;
|
|
27
36
|
lifecycle?(trigger: 'init' | 'maintenance', options?: {
|
|
28
37
|
sessionStart?: boolean;
|
|
29
38
|
sessionId?: string;
|
|
@@ -31,12 +40,21 @@ interface SessionCommands {
|
|
|
31
40
|
sessions(): Promise<SessionSummary[]>;
|
|
32
41
|
inspect(sessionId: string): Promise<SessionInspection>;
|
|
33
42
|
export(sessionId: string): Promise<Buffer>;
|
|
43
|
+
transcript?(sessionId: string): Promise<ClaudeDisplayTranscriptItem[]>;
|
|
44
|
+
compact?(sessionId: string, signal?: AbortSignal, selection?: ManualCompactSelection): Promise<ManualCompactResult>;
|
|
45
|
+
rename?(sessionId: string, name: string): Promise<void>;
|
|
46
|
+
sessionNameSuggestion?(sessionId: string, signal?: AbortSignal): Promise<string | null>;
|
|
34
47
|
nextScheduledPrompt?(signal?: AbortSignal): Promise<{
|
|
35
48
|
id: string;
|
|
36
49
|
prompt: string;
|
|
37
50
|
} | null>;
|
|
51
|
+
slashCommands?(): readonly TuiSlashCommand[];
|
|
38
52
|
close?(): Promise<void>;
|
|
39
53
|
runtimeInfo?(): CliRuntimeInfo;
|
|
54
|
+
agentDefinitions?(): readonly {
|
|
55
|
+
name: string;
|
|
56
|
+
description: string;
|
|
57
|
+
}[];
|
|
40
58
|
promptSuggestion?(sessionId: string, signal?: AbortSignal): Promise<string | null>;
|
|
41
59
|
}
|
|
42
60
|
interface TopLevelAgentCommands {
|
|
@@ -64,6 +82,9 @@ export interface CliDependencies extends InteractiveServiceFactory {
|
|
|
64
82
|
approveRecovery?: (call: ModelToolCall) => boolean | Promise<boolean>;
|
|
65
83
|
approveTool?: (call: ModelToolCall, originalCall?: ModelToolCall) => PermissionApproval | Promise<PermissionApproval>;
|
|
66
84
|
agent?: string;
|
|
85
|
+
model?: string;
|
|
86
|
+
effort?: CliControls['effort'];
|
|
87
|
+
permissionMode?: ClaudePermissionMode;
|
|
67
88
|
controls?: CliControls;
|
|
68
89
|
interactive?: boolean;
|
|
69
90
|
sessionKind?: 'bg';
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAUA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -685,7 +685,7 @@ const consoleIO = {
|
|
|
685
685
|
isTTY: Boolean(process.stdin.isTTY && process.stdout.isTTY),
|
|
686
686
|
readStdinLines: () => process.stdin,
|
|
687
687
|
};
|
|
688
|
-
const createDefaultService = async ({ eventSink, requireProvider, approveRecovery, approveTool, agent, controls = DEFAULT_CLI_CONTROLS, interactive = false, sessionKind, signal, exposeToolRegistry = false, onElicitation, askUser, approvePlan, emitToolUseSummaries = false, cwd: requestedCwd, configRoot: requestedConfigRoot, environment, providerEnvironment: requestedProviderEnvironment, }) => {
|
|
688
|
+
const createDefaultService = async ({ eventSink, requireProvider, approveRecovery, approveTool, agent, model: interactiveModel, effort: interactiveEffort, permissionMode: interactivePermissionMode, controls = DEFAULT_CLI_CONTROLS, interactive = false, sessionKind, signal, exposeToolRegistry = false, onElicitation, askUser, approvePlan, emitToolUseSummaries = false, cwd: requestedCwd, configRoot: requestedConfigRoot, environment, providerEnvironment: requestedProviderEnvironment, }) => {
|
|
689
689
|
const runtimeEnvironment = requestedProviderEnvironment ?? process.env;
|
|
690
690
|
const claudeVersion = await detectInstalledClaudeVersion();
|
|
691
691
|
const cwd = requestedCwd ?? process.cwd();
|
|
@@ -695,7 +695,14 @@ const createDefaultService = async ({ eventSink, requireProvider, approveRecover
|
|
|
695
695
|
const claudeStatePath = requestedConfigRoot || configuredRoot
|
|
696
696
|
? join(configRoot, '.claude.json')
|
|
697
697
|
: resolve(homedir(), '.claude.json');
|
|
698
|
-
const cli = await resolveCliControls(
|
|
698
|
+
const cli = await resolveCliControls({
|
|
699
|
+
...controls,
|
|
700
|
+
...(interactiveModel === undefined ? {} : { model: interactiveModel }),
|
|
701
|
+
...(interactiveEffort === undefined ? {} : { effort: interactiveEffort }),
|
|
702
|
+
...(interactivePermissionMode === undefined
|
|
703
|
+
? {}
|
|
704
|
+
: { permissionMode: interactivePermissionMode }),
|
|
705
|
+
}, cwd);
|
|
699
706
|
const debug = cli.debug !== undefined || cli.debugFile !== undefined
|
|
700
707
|
? createCliDebugSink(eventSink, {
|
|
701
708
|
cwd,
|
|
@@ -1119,6 +1126,9 @@ const createDefaultService = async ({ eventSink, requireProvider, approveRecover
|
|
|
1119
1126
|
const runtimeInfo = {
|
|
1120
1127
|
cwd: workspace.cwd(),
|
|
1121
1128
|
model: provider?.model ?? runtimeEnvironment.PRAXIS_MODEL ?? 'unknown',
|
|
1129
|
+
...(provider?.capabilities.contextWindowTokens === undefined
|
|
1130
|
+
? {}
|
|
1131
|
+
: { contextWindowTokens: provider.capabilities.contextWindowTokens }),
|
|
1122
1132
|
tools: toolNames,
|
|
1123
1133
|
mcpServers: mcpTools.serverStatuses(),
|
|
1124
1134
|
permissionMode: cli.dangerouslySkipPermissions
|
|
@@ -1149,12 +1159,22 @@ const createDefaultService = async ({ eventSink, requireProvider, approveRecover
|
|
|
1149
1159
|
pendingResumeSessionAt = undefined;
|
|
1150
1160
|
return service.resume(sessionId, prompt, signal, name ?? cli.name, images, documents, resumeSessionAt);
|
|
1151
1161
|
},
|
|
1152
|
-
|
|
1162
|
+
runShell: (command, signal, sessionId, name) => service.runShell(command, signal, sessionId, name ?? cli.name),
|
|
1163
|
+
resumeShell: (sessionId, command, signal, name) => {
|
|
1153
1164
|
const resumeSessionAt = pendingResumeSessionAt;
|
|
1154
1165
|
pendingResumeSessionAt = undefined;
|
|
1166
|
+
return service.resumeShell(sessionId, command, signal, name ?? cli.name, resumeSessionAt);
|
|
1167
|
+
},
|
|
1168
|
+
fork: (sessionId, targetSessionId, requestedResumeSessionAt) => {
|
|
1169
|
+
const resumeSessionAt = requestedResumeSessionAt ?? pendingResumeSessionAt;
|
|
1170
|
+
pendingResumeSessionAt = undefined;
|
|
1155
1171
|
return service.fork(sessionId, targetSessionId, resumeSessionAt);
|
|
1156
1172
|
},
|
|
1173
|
+
setPermissionMode: (sessionId, permissionMode) => service.setPermissionMode(sessionId, permissionMode),
|
|
1157
1174
|
rewindFiles: (sessionId, userMessageId) => service.rewindFiles(sessionId, userMessageId),
|
|
1175
|
+
rewindPoints: (sessionId) => service.rewindPoints(sessionId),
|
|
1176
|
+
changeCwd: (sessionId, cwd) => service.changeCwd(sessionId, cwd),
|
|
1177
|
+
recordCdUsage: (sessionId) => service.recordCdUsage(sessionId),
|
|
1158
1178
|
lifecycle: async (trigger, lifecycleOptions = {}) => {
|
|
1159
1179
|
if (!hooks)
|
|
1160
1180
|
return;
|
|
@@ -1188,8 +1208,18 @@ const createDefaultService = async ({ eventSink, requireProvider, approveRecover
|
|
|
1188
1208
|
}
|
|
1189
1209
|
},
|
|
1190
1210
|
sessions: () => service.sessions(),
|
|
1211
|
+
slashCommands: () => extensions.slashCommandDefinitions().map((definition) => ({
|
|
1212
|
+
name: definition.name,
|
|
1213
|
+
description: definition.description,
|
|
1214
|
+
source: definition.kind,
|
|
1215
|
+
})),
|
|
1216
|
+
agentDefinitions: () => extensions.agentDefinitions(),
|
|
1191
1217
|
inspect: (sessionId) => service.inspect(sessionId),
|
|
1192
1218
|
export: (sessionId) => service.export(sessionId),
|
|
1219
|
+
transcript: (sessionId) => service.transcript(sessionId, pendingResumeSessionAt),
|
|
1220
|
+
compact: (sessionId, signal, selection) => service.compact(sessionId, signal, selection),
|
|
1221
|
+
rename: (sessionId, name) => service.rename(sessionId, name),
|
|
1222
|
+
sessionNameSuggestion: (sessionId, signal) => service.sessionNameSuggestion(sessionId, signal),
|
|
1193
1223
|
nextScheduledPrompt: (signal) => service.nextScheduledPrompt(signal),
|
|
1194
1224
|
close: async () => {
|
|
1195
1225
|
let failure;
|
|
@@ -1398,12 +1428,18 @@ const defaultDependencies = {
|
|
|
1398
1428
|
},
|
|
1399
1429
|
runInteractive: async ({ agent, controls, initialPrompt, resume, signal, }) => {
|
|
1400
1430
|
const { runInteractive } = await import('./cli/interactive.js');
|
|
1431
|
+
const interactiveControls = controls ?? DEFAULT_CLI_CONTROLS;
|
|
1432
|
+
const initialAdditionalDirectories = interactiveControls.addDirectories.map((directory) => realpathSync(resolve(process.cwd(), directory)));
|
|
1401
1433
|
return runInteractive({
|
|
1402
1434
|
factory: {
|
|
1403
|
-
createService: (options) => createDefaultService({
|
|
1435
|
+
createService: ({ additionalDirectories, cwd, ...options }) => createDefaultService({
|
|
1404
1436
|
...options,
|
|
1437
|
+
...(cwd === undefined ? {} : { cwd }),
|
|
1405
1438
|
...(agent === undefined ? {} : { agent }),
|
|
1406
|
-
|
|
1439
|
+
controls: {
|
|
1440
|
+
...interactiveControls,
|
|
1441
|
+
addDirectories: additionalDirectories ?? interactiveControls.addDirectories,
|
|
1442
|
+
},
|
|
1407
1443
|
interactive: true,
|
|
1408
1444
|
}),
|
|
1409
1445
|
scheduledPrompts: true,
|
|
@@ -1411,6 +1447,10 @@ const defaultDependencies = {
|
|
|
1411
1447
|
...(signal ? { signal } : {}),
|
|
1412
1448
|
...(initialPrompt === undefined ? {} : { initialPrompt }),
|
|
1413
1449
|
...(controls?.axScreenReader ? { axScreenReader: true } : {}),
|
|
1450
|
+
...(controls?.allowDangerouslySkipPermissions
|
|
1451
|
+
? { allowDangerouslySkipPermissions: true }
|
|
1452
|
+
: {}),
|
|
1453
|
+
additionalDirectories: initialAdditionalDirectories,
|
|
1414
1454
|
display: {
|
|
1415
1455
|
version: VERSION,
|
|
1416
1456
|
cwd: process.cwd(),
|