@pentoshi/clai 2.0.26 → 2.0.27
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 +1 -1
- package/dist/agent/context-manager.d.ts +5 -2
- package/dist/agent/context-manager.js +26 -69
- package/dist/agent/context-manager.js.map +1 -1
- package/dist/agent/events.d.ts +1 -1
- package/dist/agent/runner.d.ts +21 -1
- package/dist/agent/runner.js +686 -135
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/session-title.d.ts +27 -0
- package/dist/agent/session-title.js +109 -0
- package/dist/agent/session-title.js.map +1 -0
- package/dist/commands/update.js +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/llm/http.js +20 -6
- package/dist/llm/http.js.map +1 -1
- package/dist/modes/ask.d.ts +29 -0
- package/dist/modes/ask.js +188 -23
- package/dist/modes/ask.js.map +1 -1
- package/dist/prompts/index.d.ts +2 -2
- package/dist/prompts/index.js +32 -9
- package/dist/prompts/index.js.map +1 -1
- package/dist/repl.js +104 -3
- package/dist/repl.js.map +1 -1
- package/dist/safety/classifier.js +66 -7
- package/dist/safety/classifier.js.map +1 -1
- package/dist/store/history.js +68 -48
- package/dist/store/history.js.map +1 -1
- package/dist/tools/fs.d.ts +4 -0
- package/dist/tools/fs.js +40 -2
- package/dist/tools/fs.js.map +1 -1
- package/dist/tools/registry.d.ts +8 -0
- package/dist/tools/registry.js +3 -1
- package/dist/tools/registry.js.map +1 -1
- package/dist/tui/App.js +242 -33
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/components/ConfirmModal.js +14 -2
- package/dist/tui/components/ConfirmModal.js.map +1 -1
- package/dist/tui/components/PickerPanel.d.ts +2 -1
- package/dist/tui/components/PickerPanel.js +73 -23
- package/dist/tui/components/PickerPanel.js.map +1 -1
- package/dist/tui/confirm.d.ts +1 -1
- package/dist/tui/confirm.js +8 -0
- package/dist/tui/confirm.js.map +1 -1
- package/dist/tui/hooks/useAgentRunner.d.ts +27 -2
- package/dist/tui/hooks/useAgentRunner.js +132 -17
- package/dist/tui/hooks/useAgentRunner.js.map +1 -1
- package/dist/tui/render-lines.js +28 -1
- package/dist/tui/render-lines.js.map +1 -1
- package/dist/tui/state.d.ts +1 -1
- package/dist/ui/markdown.js +63 -30
- package/dist/ui/markdown.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -59,7 +59,7 @@ clai --classic # start the legacy line-based REPL
|
|
|
59
59
|
CLAI_CLASSIC=1 clai # persistent shell-level opt-out (CLAI_TUI=0 also works)
|
|
60
60
|
|
|
61
61
|
# One-shot ask mode (explains but doesn't execute)
|
|
62
|
-
clai --mode ask "create a python venv and install requests"
|
|
62
|
+
clai --mode ask "how to create a python venv and install requests"
|
|
63
63
|
|
|
64
64
|
# One-shot agent mode (executes)
|
|
65
65
|
clai --mode agent "find all PDFs larger than 10MB in ~/Documents"
|
|
@@ -35,7 +35,10 @@ export interface CompactResult {
|
|
|
35
35
|
export declare function compactMessages(messages: ChatMessage[], options?: CompactOptions): ChatMessage[];
|
|
36
36
|
/**
|
|
37
37
|
* Compact older turns into a model-written memory while retaining recent
|
|
38
|
-
* messages verbatim.
|
|
39
|
-
*
|
|
38
|
+
* messages verbatim. The model summary is the ONLY compaction path: if the
|
|
39
|
+
* model fails to produce a summary we DO NOT fall back to a mechanical dump
|
|
40
|
+
* of the transcript (that historically produced an enormous, low-quality
|
|
41
|
+
* "memory" of tens of thousands of lines). Instead we throw, so the caller
|
|
42
|
+
* can report the failure and the original messages stay untouched.
|
|
40
43
|
*/
|
|
41
44
|
export declare function compactMessagesWithSummary(messages: ChatMessage[], summarize: (prompt: string) => Promise<string>, options?: CompactOptions, sessionTranscript?: string | undefined): Promise<CompactResult>;
|
|
@@ -69,8 +69,11 @@ export function compactMessages(messages, options = {}) {
|
|
|
69
69
|
}
|
|
70
70
|
/**
|
|
71
71
|
* Compact older turns into a model-written memory while retaining recent
|
|
72
|
-
* messages verbatim.
|
|
73
|
-
*
|
|
72
|
+
* messages verbatim. The model summary is the ONLY compaction path: if the
|
|
73
|
+
* model fails to produce a summary we DO NOT fall back to a mechanical dump
|
|
74
|
+
* of the transcript (that historically produced an enormous, low-quality
|
|
75
|
+
* "memory" of tens of thousands of lines). Instead we throw, so the caller
|
|
76
|
+
* can report the failure and the original messages stay untouched.
|
|
74
77
|
*/
|
|
75
78
|
export async function compactMessagesWithSummary(messages, summarize, options = {}, sessionTranscript) {
|
|
76
79
|
const before = messages.length;
|
|
@@ -88,6 +91,7 @@ export async function compactMessagesWithSummary(messages, summarize, options =
|
|
|
88
91
|
older = messages.slice(start, tailStart);
|
|
89
92
|
}
|
|
90
93
|
if (older.length === 0 && !sessionTranscript?.trim()) {
|
|
94
|
+
// Genuinely nothing to compact yet — return a no-op result.
|
|
91
95
|
return {
|
|
92
96
|
messages: [...messages],
|
|
93
97
|
before,
|
|
@@ -111,73 +115,26 @@ export async function compactMessagesWithSummary(messages, summarize, options =
|
|
|
111
115
|
"",
|
|
112
116
|
transcript,
|
|
113
117
|
].join("\n");
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
afterTokens: detTokens,
|
|
135
|
-
summarized: false,
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
return {
|
|
139
|
-
messages: [...messages],
|
|
140
|
-
before,
|
|
141
|
-
after: before,
|
|
142
|
-
beforeTokens,
|
|
143
|
-
afterTokens: beforeTokens,
|
|
144
|
-
summarized: false,
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
return {
|
|
148
|
-
messages: compacted,
|
|
149
|
-
before,
|
|
150
|
-
after: compacted.length,
|
|
151
|
-
beforeTokens,
|
|
152
|
-
afterTokens,
|
|
153
|
-
summarized: true,
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
catch (error) {
|
|
157
|
-
if (error instanceof Error && (error.name === "AbortError" || error.message?.includes("aborted"))) {
|
|
158
|
-
throw error;
|
|
159
|
-
}
|
|
160
|
-
const compacted = compactMessages(messages, { ...options, budgetTokens: 0 });
|
|
161
|
-
const afterTokens = estimateMessagesTokens(compacted);
|
|
162
|
-
if (afterTokens >= beforeTokens && !isForced) {
|
|
163
|
-
return {
|
|
164
|
-
messages: [...messages],
|
|
165
|
-
before,
|
|
166
|
-
after: before,
|
|
167
|
-
beforeTokens,
|
|
168
|
-
afterTokens: beforeTokens,
|
|
169
|
-
summarized: false,
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
return {
|
|
173
|
-
messages: compacted,
|
|
174
|
-
before,
|
|
175
|
-
after: compacted.length,
|
|
176
|
-
beforeTokens,
|
|
177
|
-
afterTokens,
|
|
178
|
-
summarized: false,
|
|
179
|
-
};
|
|
180
|
-
}
|
|
118
|
+
// The summary is the only path. Any failure propagates to the caller —
|
|
119
|
+
// there is deliberately NO deterministic fallback.
|
|
120
|
+
const summary = redactSecrets((await summarize(prompt)).trim());
|
|
121
|
+
if (!summary)
|
|
122
|
+
throw new Error("compaction failed: model returned an empty summary");
|
|
123
|
+
const head = start === 1 ? [messages[0]] : [];
|
|
124
|
+
const compacted = [
|
|
125
|
+
...head,
|
|
126
|
+
{ role: "system", content: `Session memory from compacted earlier turns:\n\n${summary}` },
|
|
127
|
+
...messages.slice(tailStart),
|
|
128
|
+
];
|
|
129
|
+
const afterTokens = estimateMessagesTokens(compacted);
|
|
130
|
+
return {
|
|
131
|
+
messages: compacted,
|
|
132
|
+
before,
|
|
133
|
+
after: compacted.length,
|
|
134
|
+
beforeTokens,
|
|
135
|
+
afterTokens,
|
|
136
|
+
summarized: true,
|
|
137
|
+
};
|
|
181
138
|
}
|
|
182
139
|
function oneLine(text, maxChars) {
|
|
183
140
|
const cleaned = text.replace(/\s+/g, " ").trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../src/agent/context-manager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../src/agent/context-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/events.d.ts
CHANGED
package/dist/agent/runner.d.ts
CHANGED
|
@@ -14,12 +14,21 @@ export interface SessionPolicy {
|
|
|
14
14
|
value: boolean;
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
export declare function createSessionPolicy(): SessionPolicy;
|
|
17
|
+
export declare function createSessionPolicy(sessionId?: string): SessionPolicy;
|
|
18
18
|
export interface ConfirmPort {
|
|
19
19
|
confirmTool(call: ToolCall): Promise<boolean>;
|
|
20
20
|
confirmPentest(): Promise<boolean>;
|
|
21
21
|
/** Ask the user whether to continue after hitting the step budget. */
|
|
22
22
|
confirmContinue?(steps: number): Promise<boolean>;
|
|
23
|
+
/**
|
|
24
|
+
* Ask whether to leave ask mode and run an action task in agent mode.
|
|
25
|
+
* Optional so existing ports keep working; ask-mode handoff falls back to a
|
|
26
|
+
* default "no" when a port doesn't implement it.
|
|
27
|
+
*/
|
|
28
|
+
confirmAgentSwitch?(info: {
|
|
29
|
+
reason: string;
|
|
30
|
+
tools: string[];
|
|
31
|
+
}): Promise<boolean>;
|
|
23
32
|
}
|
|
24
33
|
export interface AgentRunOptions {
|
|
25
34
|
provider?: ProviderId | undefined;
|
|
@@ -115,6 +124,16 @@ export declare function countToolFences(text: string): number;
|
|
|
115
124
|
export declare function parseAllToolCalls(text: string): ToolCall[];
|
|
116
125
|
/** Structural equality for two tool calls (name + canonical args JSON). */
|
|
117
126
|
export declare function sameToolCall(a: ToolCall, b: ToolCall): boolean;
|
|
127
|
+
/**
|
|
128
|
+
* Partition a batch of tool calls (in document order) into execution groups.
|
|
129
|
+
* A run of consecutive parallel-safe calls forms one group to be run
|
|
130
|
+
* concurrently (bounded by maxGroupSize); every non-parallel-safe call is its
|
|
131
|
+
* own single-element group, i.e. a sequential barrier. Because plan updates
|
|
132
|
+
* and side-effecting tools are never parallel-safe, they always split the
|
|
133
|
+
* batch — which keeps parallelism scoped within a single task and prevents
|
|
134
|
+
* plan-state races and overlapping writes.
|
|
135
|
+
*/
|
|
136
|
+
export declare function groupToolCallsForExecution(calls: ToolCall[], isParallelSafe: (call: ToolCall) => boolean, maxGroupSize?: number): ToolCall[][];
|
|
118
137
|
/**
|
|
119
138
|
* Collapse pathological repetition before a message is stored in history.
|
|
120
139
|
* Some models degenerate into emitting the same short phrase hundreds of
|
|
@@ -123,6 +142,7 @@ export declare function sameToolCall(a: ToolCall, b: ToolCall): boolean;
|
|
|
123
142
|
* copies and note the collapse so the meaning is preserved without the bulk.
|
|
124
143
|
*/
|
|
125
144
|
export declare function collapseRepeatedText(text: string): string;
|
|
145
|
+
export declare function formatToolArgs(call: ToolCall): string;
|
|
126
146
|
/**
|
|
127
147
|
* Detect pentest/security tasks that need the full step budget.
|
|
128
148
|
* Mirrors looksLikeBuildTask but for security work.
|