oharness 0.9.3 → 0.11.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/dist/ui/auth.d.ts +16 -0
- package/dist/ui/auth.js +51 -3
- package/dist/ui/auth.js.map +1 -1
- package/dist/ui/claude.d.ts +20 -0
- package/dist/ui/claude.js +39 -0
- package/dist/ui/claude.js.map +1 -0
- package/dist/ui/commands.js +3 -0
- package/dist/ui/commands.js.map +1 -1
- package/dist/ui/main.js +178 -17
- package/dist/ui/main.js.map +1 -1
- package/dist/ui/render.d.ts +3 -0
- package/dist/ui/render.js +12 -0
- package/dist/ui/render.js.map +1 -1
- package/dist/ui/tui/app.d.ts +54 -2
- package/dist/ui/tui/app.js +221 -29
- package/dist/ui/tui/app.js.map +1 -1
- package/dist/ui/tui/layout.d.ts +2 -0
- package/dist/ui/tui/layout.js +8 -0
- package/dist/ui/tui/layout.js.map +1 -1
- package/dist/ui/tui/login.js +1 -1
- package/dist/ui/tui/login.js.map +1 -1
- package/dist/ui/tui/screen.d.ts +9 -0
- package/dist/ui/tui/screen.js +30 -1
- package/dist/ui/tui/screen.js.map +1 -1
- package/package.json +4 -4
package/dist/ui/auth.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { createInterface } from "node:readline/promises";
|
|
|
2
2
|
import type { Harness } from "@oharness/engine/harness.ts";
|
|
3
3
|
import type { Session } from "@oharness/engine/agent/session.ts";
|
|
4
4
|
import type { AuthManager } from "@oharness/engine/auth/manager.ts";
|
|
5
|
+
import type { AuthorizeResult, CallbackResult } from "@oharness/engine/auth/types.ts";
|
|
5
6
|
type Readline = ReturnType<typeof createInterface>;
|
|
6
7
|
/**
|
|
7
8
|
* The half of a login that is not the flow: showing a list, reading a line,
|
|
@@ -29,6 +30,8 @@ export interface LoginIo {
|
|
|
29
30
|
secret?: boolean;
|
|
30
31
|
placeholder?: string;
|
|
31
32
|
detail?: string[];
|
|
33
|
+
/** Withdraw the question; it then resolves with nothing. */
|
|
34
|
+
signal?: AbortSignal;
|
|
32
35
|
}): Promise<string | undefined>;
|
|
33
36
|
/** Report progress or an outcome. */
|
|
34
37
|
say(text: string): void;
|
|
@@ -47,6 +50,19 @@ export declare function runLogin(harness: Harness, io: LoginIo, providerId?: str
|
|
|
47
50
|
* switch, and the stored catalog is what the next run reads.
|
|
48
51
|
*/
|
|
49
52
|
session?: Session): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Wait for a browser redirect, while offering to take it pasted instead.
|
|
55
|
+
*
|
|
56
|
+
* The redirect lands on this machine's loopback, which a browser on another
|
|
57
|
+
* machine cannot reach — the usual case over SSH. So alongside the wait the
|
|
58
|
+
* address the browser ended on can be pasted back; whichever comes first
|
|
59
|
+
* finishes the sign-in, and the question is taken down if the redirect wins.
|
|
60
|
+
* A paste that is refused says why and asks again; an empty answer stops
|
|
61
|
+
* asking and goes on waiting.
|
|
62
|
+
*/
|
|
63
|
+
export declare function waitOrPaste(flow: Extract<AuthorizeResult, {
|
|
64
|
+
method: "auto";
|
|
65
|
+
}>, io: LoginIo): Promise<CallbackResult>;
|
|
50
66
|
export declare function runLogout(auth: AuthManager, providerId: string): Promise<void>;
|
|
51
67
|
export declare function printAuthStatus(auth: AuthManager): Promise<void>;
|
|
52
68
|
/**
|
package/dist/ui/auth.js
CHANGED
|
@@ -31,6 +31,12 @@ session) {
|
|
|
31
31
|
io.say(c.yellow(`${provider.label} declares no login methods.`));
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
34
|
+
// Someone with a Claude plan comes here looking for a way to use it. It
|
|
35
|
+
// works in Claude Code, not in other apps, so they are pointed there before
|
|
36
|
+
// being asked for a key they may not want to buy.
|
|
37
|
+
if (provider.id === "anthropic") {
|
|
38
|
+
io.say(c.gray("Have a Claude Pro or Max plan? It works in Claude Code, not in other apps: run /claude (or `claude` in a terminal)."));
|
|
39
|
+
}
|
|
34
40
|
const methodIndex = await pickMethod(provider.methods, io);
|
|
35
41
|
if (methodIndex === undefined)
|
|
36
42
|
return;
|
|
@@ -65,7 +71,7 @@ session) {
|
|
|
65
71
|
}
|
|
66
72
|
if (flow.method === "auto") {
|
|
67
73
|
io.say(c.gray("Waiting for authorization…"));
|
|
68
|
-
await auth.complete(provider.id, await flow
|
|
74
|
+
await auth.complete(provider.id, await waitOrPaste(flow, io));
|
|
69
75
|
}
|
|
70
76
|
else {
|
|
71
77
|
const code = await io.input("Paste the code here");
|
|
@@ -95,6 +101,39 @@ session) {
|
|
|
95
101
|
sayModelHint(result.models, io);
|
|
96
102
|
}
|
|
97
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Wait for a browser redirect, while offering to take it pasted instead.
|
|
106
|
+
*
|
|
107
|
+
* The redirect lands on this machine's loopback, which a browser on another
|
|
108
|
+
* machine cannot reach — the usual case over SSH. So alongside the wait the
|
|
109
|
+
* address the browser ended on can be pasted back; whichever comes first
|
|
110
|
+
* finishes the sign-in, and the question is taken down if the redirect wins.
|
|
111
|
+
* A paste that is refused says why and asks again; an empty answer stops
|
|
112
|
+
* asking and goes on waiting.
|
|
113
|
+
*/
|
|
114
|
+
export async function waitOrPaste(flow, io) {
|
|
115
|
+
const done = flow.callback();
|
|
116
|
+
if (!flow.paste)
|
|
117
|
+
return done;
|
|
118
|
+
const paste = flow.paste.bind(flow);
|
|
119
|
+
const asking = new AbortController();
|
|
120
|
+
void done.finally(() => asking.abort());
|
|
121
|
+
void (async () => {
|
|
122
|
+
while (!asking.signal.aborted) {
|
|
123
|
+
const pasted = await io.input("Browser on another machine? Paste the address it ended on", {
|
|
124
|
+
placeholder: "http://127.0.0.1:…",
|
|
125
|
+
signal: asking.signal,
|
|
126
|
+
});
|
|
127
|
+
if (pasted === undefined)
|
|
128
|
+
return;
|
|
129
|
+
const refused = paste(pasted);
|
|
130
|
+
if (!refused)
|
|
131
|
+
return;
|
|
132
|
+
io.say(c.yellow(refused));
|
|
133
|
+
}
|
|
134
|
+
})();
|
|
135
|
+
return done;
|
|
136
|
+
}
|
|
98
137
|
/**
|
|
99
138
|
* Finish the errand, rather than leaving the last step as homework.
|
|
100
139
|
*
|
|
@@ -375,8 +414,17 @@ export function readlineIo(rl) {
|
|
|
375
414
|
const suffix = opts?.placeholder ? c.gray(` (${opts.placeholder})`) : "";
|
|
376
415
|
const prompt = `\n${message}${suffix}${c.yellow(": ")}`;
|
|
377
416
|
if (!opts?.secret) {
|
|
378
|
-
|
|
379
|
-
|
|
417
|
+
try {
|
|
418
|
+
const answer = opts?.signal ? await rl.question(prompt, { signal: opts.signal }) : await rl.question(prompt);
|
|
419
|
+
return answer.trim() === "" ? undefined : answer.trim();
|
|
420
|
+
}
|
|
421
|
+
catch (err) {
|
|
422
|
+
if (opts?.signal?.aborted) {
|
|
423
|
+
console.log();
|
|
424
|
+
return undefined;
|
|
425
|
+
}
|
|
426
|
+
throw err;
|
|
427
|
+
}
|
|
380
428
|
}
|
|
381
429
|
const iface = rl;
|
|
382
430
|
const real = iface.output;
|
package/dist/ui/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/ui/auth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/ui/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `/claude`: hand the terminal to the user's own Claude Code.
|
|
3
|
+
*
|
|
4
|
+
* The terminal frontends' version of the project menu's "Open in Claude
|
|
5
|
+
* Code". It runs the `claude` the user installed, in this session's folder,
|
|
6
|
+
* with the whole terminal, and comes back when it exits — signed in however
|
|
7
|
+
* they signed it in, which is the one way of using a Claude plan from
|
|
8
|
+
* another app that Anthropic's terms leave plainly open. OHarness starts it
|
|
9
|
+
* and does nothing else.
|
|
10
|
+
*/
|
|
11
|
+
export declare const CLAUDE_CODE_URL = "https://claude.com/claude-code";
|
|
12
|
+
export declare function runClaudeCode(cwd: string): Promise<{
|
|
13
|
+
code: number | null;
|
|
14
|
+
} | {
|
|
15
|
+
missing: true;
|
|
16
|
+
} | {
|
|
17
|
+
error: string;
|
|
18
|
+
}>;
|
|
19
|
+
/** One line for the transcript after `/claude` returns, or could not start. */
|
|
20
|
+
export declare function claudeCodeOutcome(result: Awaited<ReturnType<typeof runClaudeCode>>): string;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { findExecutable } from "@oharness/engine/acp/claude.ts";
|
|
3
|
+
import { spawnTarget } from "@oharness/engine/acp/client.ts";
|
|
4
|
+
/**
|
|
5
|
+
* `/claude`: hand the terminal to the user's own Claude Code.
|
|
6
|
+
*
|
|
7
|
+
* The terminal frontends' version of the project menu's "Open in Claude
|
|
8
|
+
* Code". It runs the `claude` the user installed, in this session's folder,
|
|
9
|
+
* with the whole terminal, and comes back when it exits — signed in however
|
|
10
|
+
* they signed it in, which is the one way of using a Claude plan from
|
|
11
|
+
* another app that Anthropic's terms leave plainly open. OHarness starts it
|
|
12
|
+
* and does nothing else.
|
|
13
|
+
*/
|
|
14
|
+
export const CLAUDE_CODE_URL = "https://claude.com/claude-code";
|
|
15
|
+
export async function runClaudeCode(cwd) {
|
|
16
|
+
const names = process.platform === "win32" ? ["claude.exe", "claude.cmd"] : ["claude"];
|
|
17
|
+
const claude = await findExecutable(names);
|
|
18
|
+
if (!claude)
|
|
19
|
+
return { missing: true };
|
|
20
|
+
const target = spawnTarget(claude, []);
|
|
21
|
+
return new Promise((resolve) => {
|
|
22
|
+
const child = spawn(target.command, target.args, {
|
|
23
|
+
cwd,
|
|
24
|
+
stdio: "inherit",
|
|
25
|
+
...(target.shell ? { shell: true } : {}),
|
|
26
|
+
});
|
|
27
|
+
child.on("error", (err) => resolve({ error: err.message }));
|
|
28
|
+
child.on("exit", (code) => resolve({ code }));
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/** One line for the transcript after `/claude` returns, or could not start. */
|
|
32
|
+
export function claudeCodeOutcome(result) {
|
|
33
|
+
if ("missing" in result)
|
|
34
|
+
return `Claude Code is not installed. Get it at ${CLAUDE_CODE_URL}, then run /claude again.`;
|
|
35
|
+
if ("error" in result)
|
|
36
|
+
return `Could not start Claude Code: ${result.error}`;
|
|
37
|
+
return "Back from Claude Code.";
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=claude.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/ui/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,gCAAgC,CAAC;AAEhE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE;YAC/C,GAAG;YACH,KAAK,EAAE,SAAS;YAChB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5D,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB,CAAC,MAAiD;IACjF,IAAI,SAAS,IAAI,MAAM;QAAE,OAAO,2CAA2C,eAAe,2BAA2B,CAAC;IACtH,IAAI,OAAO,IAAI,MAAM;QAAE,OAAO,gCAAgC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC7E,OAAO,wBAAwB,CAAC;AAClC,CAAC"}
|
package/dist/ui/commands.js
CHANGED
|
@@ -10,6 +10,7 @@ export const SLASH_COMMANDS = [
|
|
|
10
10
|
{ name: "model", args: "[id]", description: "Show or switch the model mid-session" },
|
|
11
11
|
{ name: "models", description: "List registered models (/models refresh to re-query providers)" },
|
|
12
12
|
{ name: "login", args: "[prov]", description: "Sign in to a provider (API key or subscription)" },
|
|
13
|
+
{ name: "claude", description: "Open Claude Code here, on your own Claude account" },
|
|
13
14
|
{ name: "logout", args: "<prov>", description: "Remove stored credentials" },
|
|
14
15
|
{ name: "auth", description: "Show authentication status" },
|
|
15
16
|
{ name: "tools", description: "List available tools" },
|
|
@@ -20,8 +21,10 @@ export const SLASH_COMMANDS = [
|
|
|
20
21
|
{ name: "mcp", description: "Show MCP server status" },
|
|
21
22
|
{ name: "permissions", description: "Show rules; allow/deny/ask <pattern> [scope] to persist one" },
|
|
22
23
|
{ name: "mode", args: "[m]", description: "Pick the permission mode (no argument opens the picker)" },
|
|
24
|
+
{ name: "goal", args: "[text|clear]", description: "Keep working until a goal is done (no argument shows it)" },
|
|
23
25
|
{ name: "compact", description: "Summarize the conversation now" },
|
|
24
26
|
{ name: "todos", description: "Show the current task list" },
|
|
27
|
+
{ name: "tasks", args: "[id|stop id|send id text]", description: "Background tasks: list, read one, stop or message it" },
|
|
25
28
|
{ name: "cost", description: "Show token usage and estimated cost" },
|
|
26
29
|
{ name: "sessions", description: "List recent sessions" },
|
|
27
30
|
{ name: "sync", args: "[on|off]", description: "Whether this machine mirrors sessions to a sync server" },
|
package/dist/ui/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/ui/commands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/ui/commands.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,MAAM,CAAC,MAAM,cAAc,GAA4B;IACrD,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,2BAA2B,EAAE;IAC1D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,sCAAsC,EAAE;IACpF,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gEAAgE,EAAE;IACjG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iDAAiD,EAAE;IACjG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mDAAmD,EAAE;IACpF,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;IAC5E,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,4BAA4B,EAAE;IAC3D,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE;IACtD,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;IACxD,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;IAC3D,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,2BAA2B,EAAE;IAC/D,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,4BAA4B,EAAE;IAC9D,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,wBAAwB,EAAE;IACtD,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,6DAA6D,EAAE;IACnG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,yDAAyD,EAAE;IACrG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,0DAA0D,EAAE;IAC/G,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gCAAgC,EAAE;IAClE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,4BAA4B,EAAE;IAC5D,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,2BAA2B,EAAE,WAAW,EAAE,sDAAsD,EAAE;IACzH,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,qCAAqC,EAAE;IACpE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,sBAAsB,EAAE;IACzD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,wDAAwD,EAAE;IACzG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,uDAAuD,EAAE;IACnG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;IACrE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE;IACvD,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE;CACtC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CACjC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC7E,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC;IACtC,4EAA4E;IAC5E,0EAA0E;IAC1E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAClE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,SAAS;IACvB,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CACvE,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAC7B,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CACtE,CAAC;IACF,4EAA4E;IAC5E,MAAM,EAAE,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/E,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,kEAAkE,CAAC,CAAC;IACvF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC"}
|
package/dist/ui/main.js
CHANGED
|
@@ -10,11 +10,13 @@ import { makeQuestionPrompt } from "./questions.js";
|
|
|
10
10
|
import { MODE_DESCRIPTIONS, MODE_LABELS, PERMISSION_MODES, } from "@oharness/engine/agent/permissions.ts";
|
|
11
11
|
import { getTodos, renderTodos } from "@oharness/engine/tools/builtin/todo.ts";
|
|
12
12
|
import { printAuthStatus, readlineIo, runLogin, runLogout } from "./auth.js";
|
|
13
|
+
import { claudeCodeOutcome, runClaudeCode } from "./claude.js";
|
|
13
14
|
import { visibleText } from "@oharness/engine/core/types.ts";
|
|
14
15
|
import { previewJson } from "@oharness/engine/util/json.ts";
|
|
15
|
-
import { c, explainError, newRenderState, renderEvent } from "./render.js";
|
|
16
|
+
import { c, explainError, goalLine, newRenderState, renderEvent } from "./render.js";
|
|
16
17
|
import { select } from "./select.js";
|
|
17
18
|
import { slashHelp } from "./commands.js";
|
|
19
|
+
import { createWorktree, findWorktree, finishWorktree, listWorktrees, worktreeStatus } from "@oharness/engine/worktree/index.ts";
|
|
18
20
|
import { currentVersion, runUpdateCommand, updateNotice } from "../update.js";
|
|
19
21
|
/** The interactive readline, when there is one. Pickers need it to pause. */
|
|
20
22
|
let activeReadline;
|
|
@@ -43,6 +45,10 @@ function parseArgs(argv) {
|
|
|
43
45
|
case "--permission-mode":
|
|
44
46
|
args.permissionMode = argv[++i];
|
|
45
47
|
break;
|
|
48
|
+
case "-w":
|
|
49
|
+
case "--worktree":
|
|
50
|
+
args.worktree = argv[++i];
|
|
51
|
+
break;
|
|
46
52
|
case "--dangerously-skip-permissions":
|
|
47
53
|
args.permissionMode = "bypassPermissions";
|
|
48
54
|
break;
|
|
@@ -65,6 +71,7 @@ Usage:
|
|
|
65
71
|
oharness auth <login|logout|list> [provider]
|
|
66
72
|
oharness schedule <list|run|pause|resume|daemon> [name]
|
|
67
73
|
oharness session <list|show|fork|rename|delete> [id]
|
|
74
|
+
oharness worktree <list|status|finish> [path] [action]
|
|
68
75
|
oharness update Install the latest version from npm
|
|
69
76
|
|
|
70
77
|
Options:
|
|
@@ -72,6 +79,8 @@ Options:
|
|
|
72
79
|
-p, --print Run one prompt, print the result, and exit
|
|
73
80
|
-c, --continue Resume the most recent session in this directory
|
|
74
81
|
-r, --resume <id> Resume a specific session
|
|
82
|
+
-w, --worktree <task> Start in a new worktree beside this project
|
|
83
|
+
(<project>-<slug>, branch <type>/<slug>)
|
|
75
84
|
--permission-mode <m> default | acceptEdits | plan | auto | bypassPermissions
|
|
76
85
|
--dangerously-skip-permissions
|
|
77
86
|
-v, --version Print the version
|
|
@@ -95,6 +104,10 @@ async function main() {
|
|
|
95
104
|
await runSessionCommand(argv.slice(1));
|
|
96
105
|
return;
|
|
97
106
|
}
|
|
107
|
+
if (argv[0] === "worktree") {
|
|
108
|
+
await runWorktreeCommand(argv.slice(1));
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
98
111
|
if (argv[0] === "update") {
|
|
99
112
|
await runUpdateCommand();
|
|
100
113
|
return;
|
|
@@ -127,7 +140,18 @@ async function main() {
|
|
|
127
140
|
const tui = useTui(args);
|
|
128
141
|
const pendingLogs = [];
|
|
129
142
|
let logLine = (line) => pendingLogs.push(line);
|
|
143
|
+
// A worktree first, so everything after — config, instructions, sessions —
|
|
144
|
+
// belongs to the tree the work happens in.
|
|
145
|
+
let cwd;
|
|
146
|
+
if (args.worktree) {
|
|
147
|
+
const made = await createWorktree(process.cwd(), { task: args.worktree });
|
|
148
|
+
cwd = made.cwd;
|
|
149
|
+
process.chdir(cwd);
|
|
150
|
+
console.log(c.gray(`worktree: ${made.path}${made.branch ? ` on ${made.branch}` : " (a copy of the folder)"}`));
|
|
151
|
+
console.log(c.gray(` finish it with: oharness worktree finish ${made.path} <action>`));
|
|
152
|
+
}
|
|
130
153
|
const harness = await Harness.create({
|
|
154
|
+
...(cwd ? { cwd } : {}),
|
|
131
155
|
permissionPrompt: (request, signal) => activePrompt(request, signal),
|
|
132
156
|
questionPrompt: (request, signal) => activeQuestions ? activeQuestions(request, signal) : Promise.resolve({ outcome: "unavailable" }),
|
|
133
157
|
...(tui ? { logSink: (line) => logLine(line) } : {}),
|
|
@@ -205,6 +229,18 @@ async function main() {
|
|
|
205
229
|
if (outcome && typeof outcome === "object") {
|
|
206
230
|
if ("login" in outcome)
|
|
207
231
|
await runLogin(harness, readlineIo(rl), outcome.login, session);
|
|
232
|
+
else if ("claude" in outcome) {
|
|
233
|
+
// The line editor gives up the terminal for as long as Claude Code has it.
|
|
234
|
+
rl.pause();
|
|
235
|
+
try {
|
|
236
|
+
console.log(c.gray(claudeCodeOutcome(await runClaudeCode(session.cwd))));
|
|
237
|
+
}
|
|
238
|
+
finally {
|
|
239
|
+
rl.resume();
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
else if ("prompt" in outcome)
|
|
243
|
+
await runPrompt(outcome.prompt);
|
|
208
244
|
else {
|
|
209
245
|
session = outcome.session;
|
|
210
246
|
agent = outcome.agent;
|
|
@@ -308,6 +344,10 @@ async function handleSlashCommand(line, harness, session, agent) {
|
|
|
308
344
|
// handled by the caller, which owns the readline instance
|
|
309
345
|
return { login: arg || undefined };
|
|
310
346
|
}
|
|
347
|
+
case "claude": {
|
|
348
|
+
// Handled by the caller too: it owns the terminal Claude Code needs.
|
|
349
|
+
return { claude: true };
|
|
350
|
+
}
|
|
311
351
|
case "logout": {
|
|
312
352
|
if (!arg) {
|
|
313
353
|
console.log("Usage: /logout <provider>");
|
|
@@ -564,24 +604,95 @@ async function handleSlashCommand(line, harness, session, agent) {
|
|
|
564
604
|
console.log(c.magenta(`mode → ${MODE_LABELS[named]}`));
|
|
565
605
|
return undefined;
|
|
566
606
|
}
|
|
567
|
-
case "
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
607
|
+
case "goal": {
|
|
608
|
+
// No argument reports; "clear" drops it; anything else is the goal,
|
|
609
|
+
// and is sent as the first message toward it.
|
|
610
|
+
if (!arg) {
|
|
611
|
+
console.log(session.goal ? goalLine(session.goal) : "No goal set. /goal <what done looks like> sets one.");
|
|
612
|
+
return undefined;
|
|
613
|
+
}
|
|
614
|
+
if (/^(clear|off|stop)$/i.test(arg)) {
|
|
615
|
+
session.goal = undefined;
|
|
616
|
+
await session.persist();
|
|
617
|
+
console.log(c.magenta("goal cleared"));
|
|
618
|
+
return undefined;
|
|
619
|
+
}
|
|
620
|
+
session.setGoal(arg);
|
|
621
|
+
await session.persist();
|
|
622
|
+
console.log(c.magenta(`◎ goal set — working until it is done (Ctrl-C to stop, /goal clear to drop it)`));
|
|
623
|
+
return { prompt: arg };
|
|
624
|
+
}
|
|
625
|
+
case "tasks": {
|
|
626
|
+
const tasks = agent.backgroundTasks;
|
|
627
|
+
if (!tasks) {
|
|
628
|
+
console.log("Background tasks are not available here.");
|
|
629
|
+
return undefined;
|
|
630
|
+
}
|
|
631
|
+
const [sub, id, ...words] = rest;
|
|
632
|
+
if (!sub) {
|
|
633
|
+
const all = tasks.list();
|
|
634
|
+
if (!all.length)
|
|
635
|
+
console.log("No background tasks in this conversation.");
|
|
636
|
+
for (const task of all) {
|
|
637
|
+
const now = task.activity ? c.gray(` · ${task.activity}`) : "";
|
|
638
|
+
console.log(`${task.id} ${task.status.padEnd(9)} ${task.agentType}: ${task.description}${now}`);
|
|
578
639
|
}
|
|
579
|
-
|
|
580
|
-
|
|
640
|
+
if (all.length)
|
|
641
|
+
console.log(c.gray("/tasks <id> reads one · /tasks send <id> <text> · /tasks stop <id>"));
|
|
642
|
+
return undefined;
|
|
581
643
|
}
|
|
582
|
-
|
|
583
|
-
|
|
644
|
+
if (sub === "stop") {
|
|
645
|
+
if (!id || !tasks.get(id))
|
|
646
|
+
return void console.log("Usage: /tasks stop <id>");
|
|
647
|
+
console.log(tasks.stop(id) ? c.magenta(`stopped ${id}`) : `${id} was already stopped.`);
|
|
648
|
+
return undefined;
|
|
584
649
|
}
|
|
650
|
+
if (sub === "send") {
|
|
651
|
+
const text = words.join(" ").trim();
|
|
652
|
+
if (!id || !text)
|
|
653
|
+
return void console.log("Usage: /tasks send <id> <text>");
|
|
654
|
+
const sent = tasks.send(id, `[From the person, directly:]\n${text}`);
|
|
655
|
+
const said = {
|
|
656
|
+
interjected: "told it; it reads this at its next step",
|
|
657
|
+
resumed: "running again with your message",
|
|
658
|
+
busy: "it is between steps; try again in a moment",
|
|
659
|
+
stopped: "it was stopped and cannot be continued",
|
|
660
|
+
unknown: `no background task "${id}"`,
|
|
661
|
+
};
|
|
662
|
+
console.log(sent === "interjected" || sent === "resumed" ? c.magenta(said[sent]) : said[sent]);
|
|
663
|
+
return undefined;
|
|
664
|
+
}
|
|
665
|
+
const task = tasks.get(sub);
|
|
666
|
+
if (!task)
|
|
667
|
+
return void console.log(`No background task "${sub}". /tasks lists them.`);
|
|
668
|
+
console.log(`${task.id} ${task.status} ${task.agentType}: ${task.description} · ${task.turns} turns`);
|
|
669
|
+
if (task.worktree)
|
|
670
|
+
console.log(c.gray(task.worktree));
|
|
671
|
+
// The tail of its conversation: what it was told, said and ran.
|
|
672
|
+
for (const message of (agent.backgroundTranscript(sub) ?? []).slice(-24)) {
|
|
673
|
+
const said = visibleText(message).trim();
|
|
674
|
+
if (said)
|
|
675
|
+
console.log(`${message.role === "assistant" ? "◆" : "›"} ${said.length > 600 ? `${said.slice(0, 600)}…` : said}`);
|
|
676
|
+
for (const block of message.content) {
|
|
677
|
+
if (block.type === "tool_call")
|
|
678
|
+
console.log(c.gray(` ${block.name} ${previewJson(block.input, 100)}`));
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
if (task.error)
|
|
682
|
+
console.log(c.red(task.error));
|
|
683
|
+
return undefined;
|
|
684
|
+
}
|
|
685
|
+
case "compact": {
|
|
686
|
+
// Through the agent, so what is cut is archived for recall and handed to
|
|
687
|
+
// memory extraction, as when the window fills by itself.
|
|
688
|
+
const event = await agent.compactNow();
|
|
689
|
+
if (!event)
|
|
690
|
+
console.log(c.yellow("Nothing safe to compact yet."));
|
|
691
|
+
else if (event.type === "compacted") {
|
|
692
|
+
console.log(c.yellow(`⟳ Compacted ${event.droppedMessages} messages (~${event.tokensBefore} → ~${event.tokensAfter} tokens)`));
|
|
693
|
+
}
|
|
694
|
+
else if (event.type === "notice")
|
|
695
|
+
console.log(c.red(event.message));
|
|
585
696
|
return undefined;
|
|
586
697
|
}
|
|
587
698
|
case "todos": {
|
|
@@ -726,6 +837,51 @@ async function attachImages(prompt, cwd) {
|
|
|
726
837
|
return prompt;
|
|
727
838
|
return [{ role: "user", content: [{ type: "text", text }, ...content] }];
|
|
728
839
|
}
|
|
840
|
+
/**
|
|
841
|
+
* `oharness worktree`: the worktrees made from here or the app, and the way
|
|
842
|
+
* out of one — the terminal's half of the sidebar's "Finish worktree".
|
|
843
|
+
*/
|
|
844
|
+
async function runWorktreeCommand(argv) {
|
|
845
|
+
const [sub, target, action, ...rest] = argv;
|
|
846
|
+
const usage = "usage: oharness worktree <list | status <path> | finish <path> <remove|discard|commit|push|merge|apply> [message]>";
|
|
847
|
+
if (!sub || sub === "list") {
|
|
848
|
+
const all = await listWorktrees();
|
|
849
|
+
if (!all.length)
|
|
850
|
+
return void console.log(c.gray("no worktrees"));
|
|
851
|
+
for (const one of all) {
|
|
852
|
+
const status = await worktreeStatus(one).catch(() => undefined);
|
|
853
|
+
const state = !status ? "?" : !status.exists ? "missing" : status.clean ? "clean" : `${status.commits} commit(s), ${status.changes.length} change(s)`;
|
|
854
|
+
console.log(`${one.path} ${c.gray(one.branch ?? "copy")} ${c.gray(state)}`);
|
|
855
|
+
}
|
|
856
|
+
return;
|
|
857
|
+
}
|
|
858
|
+
const found = target ? await findWorktree(target) : undefined;
|
|
859
|
+
if (!found) {
|
|
860
|
+
console.error(target ? `not a worktree: ${target}` : usage);
|
|
861
|
+
process.exitCode = 1;
|
|
862
|
+
return;
|
|
863
|
+
}
|
|
864
|
+
if (sub === "status") {
|
|
865
|
+
const status = await worktreeStatus(found);
|
|
866
|
+
console.log(JSON.stringify({ ...found, status }, null, 2));
|
|
867
|
+
return;
|
|
868
|
+
}
|
|
869
|
+
if (sub === "finish" && action) {
|
|
870
|
+
try {
|
|
871
|
+
const result = await finishWorktree(found, action, rest.length ? { message: rest.join(" ") } : {});
|
|
872
|
+
console.log(result.message);
|
|
873
|
+
if (result.url)
|
|
874
|
+
console.log(result.url);
|
|
875
|
+
}
|
|
876
|
+
catch (err) {
|
|
877
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
878
|
+
process.exitCode = 1;
|
|
879
|
+
}
|
|
880
|
+
return;
|
|
881
|
+
}
|
|
882
|
+
console.error(usage);
|
|
883
|
+
process.exitCode = 1;
|
|
884
|
+
}
|
|
729
885
|
async function runSessionCommand(argv) {
|
|
730
886
|
const [sub, id, ...rest] = argv;
|
|
731
887
|
const harness = await Harness.create({ ephemeral: true });
|
|
@@ -1103,8 +1259,13 @@ async function runTui(harness, session, agent, args, installPrompt, installLogSi
|
|
|
1103
1259
|
const outcome = await handleSlashCommand(line, harness, tui.session, tui.agent);
|
|
1104
1260
|
if (outcome === "exit")
|
|
1105
1261
|
return "exit";
|
|
1106
|
-
if (outcome && typeof outcome === "object" && "session" in outcome)
|
|
1262
|
+
if (outcome && typeof outcome === "object" && ("session" in outcome || "prompt" in outcome))
|
|
1107
1263
|
return outcome;
|
|
1264
|
+
if (outcome && typeof outcome === "object" && "claude" in outcome) {
|
|
1265
|
+
const result = await tui.suspendWhile(() => runClaudeCode(tui.session.cwd));
|
|
1266
|
+
tui.write(claudeCodeOutcome(result));
|
|
1267
|
+
return undefined;
|
|
1268
|
+
}
|
|
1108
1269
|
if (outcome && typeof outcome === "object" && "login" in outcome) {
|
|
1109
1270
|
// Restore the real console first: the login draws its own overlays
|
|
1110
1271
|
// and writes into the transcript itself, and the capture above would
|