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.
Files changed (110) hide show
  1. package/README.md +18 -4
  2. package/dist/application/session-service.d.ts +34 -0
  3. package/dist/application/session-service.d.ts.map +1 -1
  4. package/dist/application/session-service.js +646 -38
  5. package/dist/application/session-service.js.map +1 -1
  6. package/dist/cli/interactive.d.ts +68 -8
  7. package/dist/cli/interactive.d.ts.map +1 -1
  8. package/dist/cli/interactive.js +2617 -206
  9. package/dist/cli/interactive.js.map +1 -1
  10. package/dist/cli/protocol.d.ts +1 -0
  11. package/dist/cli/protocol.d.ts.map +1 -1
  12. package/dist/cli/protocol.js.map +1 -1
  13. package/dist/cli/tui/claude-style.d.ts +142 -3
  14. package/dist/cli/tui/claude-style.d.ts.map +1 -1
  15. package/dist/cli/tui/claude-style.js +377 -16
  16. package/dist/cli/tui/claude-style.js.map +1 -1
  17. package/dist/cli/tui/clipboard.d.ts +24 -0
  18. package/dist/cli/tui/clipboard.d.ts.map +1 -0
  19. package/dist/cli/tui/clipboard.js +153 -0
  20. package/dist/cli/tui/clipboard.js.map +1 -0
  21. package/dist/cli/tui/composer-editor.d.ts +19 -0
  22. package/dist/cli/tui/composer-editor.d.ts.map +1 -0
  23. package/dist/cli/tui/composer-editor.js +99 -0
  24. package/dist/cli/tui/composer-editor.js.map +1 -0
  25. package/dist/cli/tui/composer-images.d.ts +7 -0
  26. package/dist/cli/tui/composer-images.d.ts.map +1 -0
  27. package/dist/cli/tui/composer-images.js +48 -0
  28. package/dist/cli/tui/composer-images.js.map +1 -0
  29. package/dist/cli/tui/conversation-export.d.ts +6 -0
  30. package/dist/cli/tui/conversation-export.d.ts.map +1 -0
  31. package/dist/cli/tui/conversation-export.js +76 -0
  32. package/dist/cli/tui/conversation-export.js.map +1 -0
  33. package/dist/cli/tui/external-editor.d.ts +21 -0
  34. package/dist/cli/tui/external-editor.d.ts.map +1 -0
  35. package/dist/cli/tui/external-editor.js +144 -0
  36. package/dist/cli/tui/external-editor.js.map +1 -0
  37. package/dist/cli/tui/file-picker.d.ts +33 -0
  38. package/dist/cli/tui/file-picker.d.ts.map +1 -0
  39. package/dist/cli/tui/file-picker.js +117 -0
  40. package/dist/cli/tui/file-picker.js.map +1 -0
  41. package/dist/cli/tui/git-diff.d.ts +14 -0
  42. package/dist/cli/tui/git-diff.d.ts.map +1 -0
  43. package/dist/cli/tui/git-diff.js +55 -0
  44. package/dist/cli/tui/git-diff.js.map +1 -0
  45. package/dist/cli/tui/keybindings.d.ts +14 -0
  46. package/dist/cli/tui/keybindings.d.ts.map +1 -0
  47. package/dist/cli/tui/keybindings.js +430 -0
  48. package/dist/cli/tui/keybindings.js.map +1 -0
  49. package/dist/cli/tui/permission-settings.d.ts +18 -0
  50. package/dist/cli/tui/permission-settings.d.ts.map +1 -0
  51. package/dist/cli/tui/permission-settings.js +109 -0
  52. package/dist/cli/tui/permission-settings.js.map +1 -0
  53. package/dist/cli/tui/slash-commands.d.ts +11 -0
  54. package/dist/cli/tui/slash-commands.d.ts.map +1 -0
  55. package/dist/cli/tui/slash-commands.js +183 -0
  56. package/dist/cli/tui/slash-commands.js.map +1 -0
  57. package/dist/cli/tui/terminal-suspend.d.ts +5 -0
  58. package/dist/cli/tui/terminal-suspend.d.ts.map +1 -0
  59. package/dist/cli/tui/terminal-suspend.js +9 -0
  60. package/dist/cli/tui/terminal-suspend.js.map +1 -0
  61. package/dist/cli/tui/workspace-directories.d.ts +3 -0
  62. package/dist/cli/tui/workspace-directories.d.ts.map +1 -0
  63. package/dist/cli/tui/workspace-directories.js +55 -0
  64. package/dist/cli/tui/workspace-directories.js.map +1 -0
  65. package/dist/cli.d.ts +23 -2
  66. package/dist/cli.d.ts.map +1 -1
  67. package/dist/cli.js +45 -5
  68. package/dist/cli.js.map +1 -1
  69. package/dist/compatibility/claude/compaction.d.ts +8 -0
  70. package/dist/compatibility/claude/compaction.d.ts.map +1 -1
  71. package/dist/compatibility/claude/compaction.js +45 -8
  72. package/dist/compatibility/claude/compaction.js.map +1 -1
  73. package/dist/compatibility/claude/fork.d.ts.map +1 -1
  74. package/dist/compatibility/claude/fork.js +24 -6
  75. package/dist/compatibility/claude/fork.js.map +1 -1
  76. package/dist/compatibility/claude/history.d.ts.map +1 -1
  77. package/dist/compatibility/claude/history.js +41 -1
  78. package/dist/compatibility/claude/history.js.map +1 -1
  79. package/dist/compatibility/claude/projection.d.ts +29 -1
  80. package/dist/compatibility/claude/projection.d.ts.map +1 -1
  81. package/dist/compatibility/claude/projection.js +132 -2
  82. package/dist/compatibility/claude/projection.js.map +1 -1
  83. package/dist/compatibility/claude/schema.d.ts.map +1 -1
  84. package/dist/compatibility/claude/schema.js +34 -7
  85. package/dist/compatibility/claude/schema.js.map +1 -1
  86. package/dist/compatibility/claude/translation.d.ts +7 -0
  87. package/dist/compatibility/claude/translation.d.ts.map +1 -1
  88. package/dist/compatibility/claude/translation.js +20 -0
  89. package/dist/compatibility/claude/translation.js.map +1 -1
  90. package/dist/core/runtime.d.ts +19 -0
  91. package/dist/core/runtime.d.ts.map +1 -1
  92. package/dist/core/runtime.js +30 -11
  93. package/dist/core/runtime.js.map +1 -1
  94. package/dist/extensions/claude-extensions.d.ts +12 -0
  95. package/dist/extensions/claude-extensions.d.ts.map +1 -1
  96. package/dist/extensions/claude-extensions.js +49 -0
  97. package/dist/extensions/claude-extensions.js.map +1 -1
  98. package/dist/hooks/claude-hook-tools.js +2 -2
  99. package/dist/hooks/claude-hook-tools.js.map +1 -1
  100. package/dist/persistence/claude-transcript-store.d.ts.map +1 -1
  101. package/dist/persistence/claude-transcript-store.js +4 -3
  102. package/dist/persistence/claude-transcript-store.js.map +1 -1
  103. package/dist/tools/claude-interactive-tools.d.ts +1 -0
  104. package/dist/tools/claude-interactive-tools.d.ts.map +1 -1
  105. package/dist/tools/claude-interactive-tools.js +12 -0
  106. package/dist/tools/claude-interactive-tools.js.map +1 -1
  107. package/dist/tools/local-tools.d.ts.map +1 -1
  108. package/dist/tools/local-tools.js +11 -0
  109. package/dist/tools/local-tools.js.map +1 -1
  110. 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,5 @@
1
+ export declare function suspendTuiProcess(options?: {
2
+ write?(message: string): unknown;
3
+ stop?(): unknown;
4
+ }): void;
5
+ //# sourceMappingURL=terminal-suspend.d.ts.map
@@ -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,3 @@
1
+ export declare function resolveTuiWorkspaceDirectory(input: string, cwd: string): Promise<string>;
2
+ export declare function completeTuiWorkspaceDirectory(input: string, cwd: string): Promise<string>;
3
+ //# sourceMappingURL=workspace-directories.d.ts.map
@@ -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":"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"}
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
- fork(sessionId: string, targetSessionId?: string): Promise<ForkResult>;
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":"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"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAUA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,kCAAkC,CAAA;AACzC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAA;AAoBvF,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,UAAU,EAEf,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAGlE,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,6CAA6C,CAAA;AAkBpD,OAAO,EACL,qBAAqB,EAItB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAShE,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,4BAA4B,CAAA;AAInC,OAAO,EAEL,KAAK,8BAA8B,EACpC,MAAM,qCAAqC,CAAA;AAE5C,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,0CAA0C,CAAA;AAIjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAOL,KAAK,WAAW,EAEhB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAI1B,MAAM,mBAAmB,CAAA;AA6B1B,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAA;AAUxC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,8BAA8B,CAAA;AA2rBrC,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,CAAA;AAE5D,MAAM,WAAW,KAAK;IACpB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAA;IAC1C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,cAAc,CAAC,EAAE,MAAM,aAAa,CAAC,MAAM,GAAG,UAAU,CAAC,CAAA;CAC1D;AAED,UAAU,eAAe;IACvB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,GAAG,CACD,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,SAAS,UAAU,EAAE,EAC9B,SAAS,CAAC,EAAE,SAAS,aAAa,EAAE,GACnC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC5B,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,SAAS,UAAU,EAAE,EAC9B,SAAS,CAAC,EAAE,SAAS,aAAa,EAAE,GACnC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC5B,QAAQ,CAAC,CACP,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC5B,WAAW,CAAC,CACV,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC5B,IAAI,CACF,SAAS,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,MAAM,EACxB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,UAAU,CAAC,CAAA;IACtB,iBAAiB,CAAC,CAChB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,WAAW,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrE,YAAY,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;IACxD,SAAS,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACvE,aAAa,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChD,SAAS,CAAC,CACR,OAAO,EAAE,MAAM,GAAG,aAAa,EAC/B,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GACvD,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,QAAQ,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;IACrC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACtD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1C,UAAU,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAAA;IACtE,OAAO,CAAC,CACN,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,sBAAsB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAC/B,MAAM,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvD,qBAAqB,CAAC,CACpB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACzB,mBAAmB,CAAC,CAClB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;IACjD,aAAa,CAAC,IAAI,SAAS,eAAe,EAAE,CAAA;IAC5C,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACvB,WAAW,CAAC,IAAI,cAAc,CAAA;IAC9B,gBAAgB,CAAC,IAAI,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACrE,gBAAgB,CAAC,CACf,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CAC1B;AAED,UAAU,qBAAqB;IAC7B,MAAM,CAAC,OAAO,EAAE;QACd,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,EAAE,CAAA;QACd,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,GAAG,CAAC,EAAE,MAAM,CAAA;KACb,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC9C,IAAI,CAAC,OAAO,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAA;IAC9E,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACjC,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,aAAa,CAAC,MAAM,GAAG,UAAU,CAAC,EACzC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAAA;CACjB;AAED,MAAM,WAAW,eAAgB,SAAQ,yBAAyB;IAChE,aAAa,CAAC,OAAO,EAAE;QACrB,SAAS,EAAE,gBAAgB,CAAA;QAC3B,eAAe,EAAE,OAAO,CAAA;QACxB,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;QACrE,WAAW,CAAC,EAAE,CACZ,IAAI,EAAE,aAAa,EACnB,YAAY,CAAC,EAAE,aAAa,KACzB,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;QACrD,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;QAC9B,cAAc,CAAC,EAAE,oBAAoB,CAAA;QACrC,QAAQ,CAAC,EAAE,WAAW,CAAA;QACtB,WAAW,CAAC,EAAE,OAAO,CAAA;QACrB,WAAW,CAAC,EAAE,IAAI,CAAA;QAClB,MAAM,CAAC,EAAE,WAAW,CAAA;QACpB,kBAAkB,CAAC,EAAE,OAAO,CAAA;QAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAA;QAC9B,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;QAC9C,mBAAmB,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;QACvC,aAAa,CAAC,EAAE,CACd,OAAO,EAAE,qBAAqB,KAC3B,OAAO,CAAC,oBAAoB,CAAC,CAAA;QAClC,OAAO,CAAC,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAA;QACnD,WAAW,CAAC,EAAE,8BAA8B,CAAC,aAAa,CAAC,CAAA;KAC5D,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAC5B,oBAAoB,CAAC,CAAC,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IAC1E,UAAU,CAAC,EAAE,sBAAsB,CAAA;IACnC,cAAc,CAAC,CAAC,OAAO,EAAE;QACvB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,WAAW,CAAA;QACtB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,MAAM,CAAC,EAAE,wBAAwB,GAAG;YAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAA;QAC9D,MAAM,CAAC,EAAE,WAAW,CAAA;KACrB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACnB,kBAAkB,CAAC,CAAC,OAAO,EAAE;QAC3B,OAAO,EAAE,qBAAqB,CAAA;QAC9B,QAAQ,EAAE;YAAE,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;QACnD,MAAM,CAAC,EAAE,WAAW,CAAA;KACrB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACnB,cAAc,CAAC,EAAE,qBAAqB,CAAA;IACtC,UAAU,CAAC,EAAE,OAAO,kBAAkB,CAAA;IACtC,eAAe,CAAC,EAAE,OAAO,qBAAqB,CAAA;IAC9C,QAAQ,CAAC,EAAE,OAAO,mBAAmB,CAAA;IACrC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE;QACrB,SAAS,EAAE,SAAS,GAAG,QAAQ,CAAA;QAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,OAAO,CAAA;KAChB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;CAChC;AAq+BD,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,EAC5B,aAAa,GAAE,eAAe,CAAC,eAAe,CAAwB,GACrE,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAYhE;AAi1FD,wBAAsB,GAAG,CACvB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,GAAE,KAAiB,EACrB,YAAY,GAAE,eAAqC,EACnD,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAgBjB"}
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(controls, cwd);
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
- fork: (sessionId, targetSessionId) => {
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
- ...(controls === undefined ? {} : { controls }),
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(),