feat(core,web,cli): add file tools and per-tool call descriptions (#62)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -26,9 +26,9 @@
|
||||
*/
|
||||
import { createInterface, type Interface } from "node:readline";
|
||||
import type { Command } from "commander";
|
||||
import { createAgent, userText } from "@prismshadow/penguin-core";
|
||||
import { createAgent, userText, VERSION } from "@prismshadow/penguin-core";
|
||||
import type { ApprovalDecision, OmniMessage, ToolCallPayload } from "@prismshadow/penguin-core";
|
||||
import { StreamRenderer, dim, renderHistory } from "../render.js";
|
||||
import { StreamRenderer, dim, renderHistory, sessionMetaTools } from "../render.js";
|
||||
import { runTask } from "../task-loop.js";
|
||||
import { parseApprovalAnswer, resolveApprovalMode } from "../approval.js";
|
||||
import { LineComposer, PasteFilter } from "../input.js";
|
||||
@@ -113,9 +113,11 @@ export function registerChatCommand(program: Command, t: Messages): void {
|
||||
}
|
||||
|
||||
const renderer = new StreamRenderer(out, t);
|
||||
// The assembled tool schemas decide each tool's call-line preview path (see render.ts).
|
||||
renderer.useToolSchemas(sessionMetaTools(session));
|
||||
|
||||
out.write(
|
||||
`${t.header("chat", agent.state.agentId, session.workspaceDir, session.modelId)}\n` +
|
||||
`${t.header("chat", VERSION, agent.state.agentId, session.workspaceDir, session.modelId)}\n` +
|
||||
`${t.chatHints()}\n`,
|
||||
);
|
||||
// On resume, first render the history messages of the current context per Trace
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
* Docs: /docs/cli § "penguin run".
|
||||
*/
|
||||
import type { Command } from "commander";
|
||||
import { createAgent, userText } from "@prismshadow/penguin-core";
|
||||
import { StreamRenderer } from "../render.js";
|
||||
import { createAgent, userText, VERSION } from "@prismshadow/penguin-core";
|
||||
import { StreamRenderer, sessionMetaTools } from "../render.js";
|
||||
import { runTask } from "../task-loop.js";
|
||||
import { denyActivePrompt, resolveApprovalMode } from "../approval.js";
|
||||
import type { Messages } from "../i18n.js";
|
||||
@@ -53,7 +53,9 @@ export function registerRunCommand(program: Command, t: Messages): void {
|
||||
});
|
||||
|
||||
const out = process.stdout;
|
||||
out.write(`${t.header("run", agent.state.agentId, session.workspaceDir, session.modelId)}\n`);
|
||||
out.write(
|
||||
`${t.header("run", VERSION, agent.state.agentId, session.workspaceDir, session.modelId)}\n`,
|
||||
);
|
||||
|
||||
const controller = new AbortController();
|
||||
const onSigint = () => {
|
||||
@@ -65,6 +67,8 @@ export function registerRunCommand(program: Command, t: Messages): void {
|
||||
process.on("SIGINT", onSigint);
|
||||
|
||||
const renderer = new StreamRenderer(out, t);
|
||||
// The assembled tool schemas decide each tool's call-line preview path (see render.ts).
|
||||
renderer.useToolSchemas(sessionMetaTools(session));
|
||||
try {
|
||||
const result = await runTask(session, [userText(opts.message)], {
|
||||
mode,
|
||||
|
||||
Reference in New Issue
Block a user