@oharness/engine 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/acp/claude.d.ts +34 -0
- package/dist/acp/claude.js +122 -0
- package/dist/acp/claude.js.map +1 -0
- package/dist/acp/client.d.ts +193 -0
- package/dist/acp/client.js +279 -0
- package/dist/acp/client.js.map +1 -0
- package/dist/acp/runner.d.ts +80 -0
- package/dist/acp/runner.js +159 -0
- package/dist/acp/runner.js.map +1 -0
- package/dist/agent/agent.d.ts +258 -2
- package/dist/agent/agent.js +1010 -53
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/background.d.ts +135 -0
- package/dist/agent/background.js +307 -0
- package/dist/agent/background.js.map +1 -0
- package/dist/agent/compaction.d.ts +7 -0
- package/dist/agent/compaction.js +11 -3
- package/dist/agent/compaction.js.map +1 -1
- package/dist/agent/goal.d.ts +36 -0
- package/dist/agent/goal.js +71 -0
- package/dist/agent/goal.js.map +1 -0
- package/dist/agent/hooks.js +6 -6
- package/dist/agent/hooks.js.map +1 -1
- package/dist/agent/permissions.d.ts +6 -0
- package/dist/agent/permissions.js +2 -1
- package/dist/agent/permissions.js.map +1 -1
- package/dist/agent/session.d.ts +38 -0
- package/dist/agent/session.js +91 -2
- package/dist/agent/session.js.map +1 -1
- package/dist/agent/store.d.ts +25 -0
- package/dist/agent/store.js +21 -0
- package/dist/agent/store.js.map +1 -1
- package/dist/agent/subagent.d.ts +21 -0
- package/dist/agent/subagent.js +17 -1
- package/dist/agent/subagent.js.map +1 -1
- package/dist/agent/workspace.d.ts +9 -0
- package/dist/agent/workspace.js +59 -5
- package/dist/agent/workspace.js.map +1 -1
- package/dist/auth/index.d.ts +3 -1
- package/dist/auth/index.js +3 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/manager.d.ts +9 -0
- package/dist/auth/manager.js +71 -6
- package/dist/auth/manager.js.map +1 -1
- package/dist/auth/oauth.d.ts +33 -0
- package/dist/auth/oauth.js +59 -8
- package/dist/auth/oauth.js.map +1 -1
- package/dist/auth/providers/account.js +5 -4
- package/dist/auth/providers/account.js.map +1 -1
- package/dist/auth/providers/anthropic.d.ts +25 -5
- package/dist/auth/providers/anthropic.js +47 -6
- package/dist/auth/providers/anthropic.js.map +1 -1
- package/dist/auth/providers/chatgpt.d.ts +8 -0
- package/dist/auth/providers/chatgpt.js +180 -0
- package/dist/auth/providers/chatgpt.js.map +1 -0
- package/dist/auth/providers/openrouter.d.ts +2 -0
- package/dist/auth/providers/openrouter.js +101 -0
- package/dist/auth/providers/openrouter.js.map +1 -0
- package/dist/auth/types.d.ts +15 -0
- package/dist/auth/types.js.map +1 -1
- package/dist/browser/index.d.ts +1 -1
- package/dist/browser/plugin.d.ts +6 -1
- package/dist/browser/plugin.js.map +1 -1
- package/dist/browser/session.d.ts +47 -0
- package/dist/browser/session.js +177 -2
- package/dist/browser/session.js.map +1 -1
- package/dist/browser/tools.js +142 -18
- package/dist/browser/tools.js.map +1 -1
- package/dist/computer/arbiter.d.ts +69 -0
- package/dist/computer/arbiter.js +128 -0
- package/dist/computer/arbiter.js.map +1 -0
- package/dist/computer/cua-driver.d.ts +174 -0
- package/dist/computer/cua-driver.js +597 -0
- package/dist/computer/cua-driver.js.map +1 -0
- package/dist/computer/helper-client.d.ts +80 -0
- package/dist/computer/helper-client.js +166 -0
- package/dist/computer/helper-client.js.map +1 -0
- package/dist/computer/index.d.ts +16 -0
- package/dist/computer/index.js +9 -0
- package/dist/computer/index.js.map +1 -0
- package/dist/computer/mode.d.ts +34 -0
- package/dist/computer/mode.js +52 -0
- package/dist/computer/mode.js.map +1 -0
- package/dist/computer/plugin.d.ts +24 -0
- package/dist/computer/plugin.js +17 -0
- package/dist/computer/plugin.js.map +1 -0
- package/dist/computer/policy.d.ts +29 -0
- package/dist/computer/policy.js +127 -0
- package/dist/computer/policy.js.map +1 -0
- package/dist/computer/session.d.ts +228 -0
- package/dist/computer/session.js +493 -0
- package/dist/computer/session.js.map +1 -0
- package/dist/computer/target.d.ts +206 -0
- package/dist/computer/target.js +31 -0
- package/dist/computer/target.js.map +1 -0
- package/dist/computer/tools.d.ts +8 -0
- package/dist/computer/tools.js +664 -0
- package/dist/computer/tools.js.map +1 -0
- package/dist/config.d.ts +7 -0
- package/dist/config.js.map +1 -1
- package/dist/core/tokens.js +4 -0
- package/dist/core/tokens.js.map +1 -1
- package/dist/core/types.d.ts +16 -1
- package/dist/core/types.js.map +1 -1
- package/dist/harness.d.ts +128 -1
- package/dist/harness.js +287 -30
- package/dist/harness.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/manager.d.ts +15 -0
- package/dist/mcp/manager.js +28 -1
- package/dist/mcp/manager.js.map +1 -1
- package/dist/mcp/transport.js +3 -0
- package/dist/mcp/transport.js.map +1 -1
- package/dist/providers/catalog.js +6 -0
- package/dist/providers/catalog.js.map +1 -1
- package/dist/providers/catalog.json +14 -3
- package/dist/providers/discovery.js +10 -2
- package/dist/providers/discovery.js.map +1 -1
- package/dist/providers/models-dev.d.ts +15 -0
- package/dist/providers/models-dev.js +15 -0
- package/dist/providers/models-dev.js.map +1 -1
- package/dist/providers/models-dev.json +114 -102
- package/dist/providers/piai.d.ts +54 -2
- package/dist/providers/piai.js +154 -9
- package/dist/providers/piai.js.map +1 -1
- package/dist/providers/registry.d.ts +16 -1
- package/dist/providers/registry.js +42 -11
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/types.d.ts +6 -0
- package/dist/providers/types.js.map +1 -1
- package/dist/runtime-plugins/builtin/studio.d.ts +7 -0
- package/dist/runtime-plugins/builtin/studio.js +69 -4
- package/dist/runtime-plugins/builtin/studio.js.map +1 -1
- package/dist/runtime-plugins/cloud-connector.js +5 -0
- package/dist/runtime-plugins/cloud-connector.js.map +1 -1
- package/dist/schedule/scheduler.d.ts +38 -0
- package/dist/schedule/scheduler.js +101 -1
- package/dist/schedule/scheduler.js.map +1 -1
- package/dist/tools/builtin/bash.d.ts +6 -0
- package/dist/tools/builtin/bash.js +8 -11
- package/dist/tools/builtin/bash.js.map +1 -1
- package/dist/tools/builtin/recall.js +4 -0
- package/dist/tools/builtin/recall.js.map +1 -1
- package/dist/tools/builtin/routine.d.ts +9 -0
- package/dist/tools/builtin/routine.js +23 -2
- package/dist/tools/builtin/routine.js.map +1 -1
- package/dist/tools/builtin/task-control.d.ts +21 -0
- package/dist/tools/builtin/task-control.js +120 -0
- package/dist/tools/builtin/task-control.js.map +1 -0
- package/dist/tools/builtin/task.js +50 -9
- package/dist/tools/builtin/task.js.map +1 -1
- package/dist/tools/builtin/todo.d.ts +1 -1
- package/dist/tools/builtin/worktree.d.ts +10 -0
- package/dist/tools/builtin/worktree.js +52 -0
- package/dist/tools/builtin/worktree.js.map +1 -0
- package/dist/tools/define.d.ts +4 -1
- package/dist/tools/define.js +2 -0
- package/dist/tools/define.js.map +1 -1
- package/dist/tools/types.d.ts +112 -0
- package/dist/tools/types.js.map +1 -1
- package/dist/util/shell.d.ts +30 -0
- package/dist/util/shell.js +70 -0
- package/dist/util/shell.js.map +1 -1
- package/dist/worktree/index.d.ts +109 -0
- package/dist/worktree/index.js +463 -0
- package/dist/worktree/index.js.map +1 -0
- package/package.json +3 -3
- package/skills/media-generation/SKILL.md +22 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../src/agent/subagent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../src/agent/subagent.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,13 @@ export declare function createPolicy(cwd: string, opts?: {
|
|
|
35
35
|
writableRoots?: string[];
|
|
36
36
|
readableRoots?: string[];
|
|
37
37
|
}): WorkspacePolicy;
|
|
38
|
+
/**
|
|
39
|
+
* The same policy for a session working in another tree: the working
|
|
40
|
+
* directory's place among the roots goes to the new one, and every other root
|
|
41
|
+
* stays. A worktree is a different project, not a wider one, so the tree it
|
|
42
|
+
* came from is not writable from it.
|
|
43
|
+
*/
|
|
44
|
+
export declare function retargetPolicy(policy: WorkspacePolicy, from: string, to: string): WorkspacePolicy;
|
|
38
45
|
/** Whether a resolved path falls inside one of the writable roots. */
|
|
39
46
|
export declare function isWritable(policy: WorkspacePolicy, target: string): boolean;
|
|
40
47
|
/** Whether a resolved path falls inside one of the readable roots. */
|
|
@@ -58,3 +65,5 @@ export declare function resolveWithin(policy: WorkspacePolicy | undefined, cwd:
|
|
|
58
65
|
* explicitly not a security boundary — see the note at the top of this file.
|
|
59
66
|
*/
|
|
60
67
|
export declare function checkWrite(policy: WorkspacePolicy, toolName: string, input: unknown, cwd: string): WriteCheck;
|
|
68
|
+
/** A command with its redirections to /dev/null and the standard streams removed. */
|
|
69
|
+
export declare function withoutStreamRedirects(command: string): string;
|
package/dist/agent/workspace.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { realpathSync } from "node:fs";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
1
3
|
import path from "node:path";
|
|
2
|
-
import { expandHome, userPath, within } from "../paths.js";
|
|
4
|
+
import { expandHome, userDir, userPath, within } from "../paths.js";
|
|
3
5
|
export function createPolicy(cwd, opts = {}) {
|
|
4
6
|
const resolve = (roots) => dedupeRoots(roots.map((root) => path.resolve(cwd, expandHome(root))));
|
|
5
|
-
const writableRoots = resolve([cwd, ...userExtensionRoots(), ...(opts.writableRoots ?? [])]);
|
|
7
|
+
const writableRoots = resolve([cwd, ...userExtensionRoots(), ...scratchRoots(), ...(opts.writableRoots ?? [])]);
|
|
6
8
|
return {
|
|
7
9
|
mode: opts.mode ?? "workspace-write",
|
|
8
10
|
writableRoots,
|
|
@@ -25,13 +27,57 @@ export function createPolicy(cwd, opts = {}) {
|
|
|
25
27
|
function userExtensionRoots() {
|
|
26
28
|
return [userPath("skills"), userPath("agents"), userPath("plugins")];
|
|
27
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* The system's temporary directories.
|
|
32
|
+
*
|
|
33
|
+
* Scratch space is what a task reaches for to hold an intermediate file — a
|
|
34
|
+
* frame pulled out of a video, a converted image — and nothing the user keeps
|
|
35
|
+
* lives there, so refusing it only sent the agent asking for something that
|
|
36
|
+
* could not hurt. Both spellings on macOS, where /tmp is a link to
|
|
37
|
+
* /private/tmp and the per-user directory sits under /var/folders.
|
|
38
|
+
*/
|
|
39
|
+
function scratchRoots() {
|
|
40
|
+
const roots = [tmpdir()];
|
|
41
|
+
if (process.platform !== "win32")
|
|
42
|
+
roots.push("/tmp", "/var/tmp");
|
|
43
|
+
for (const root of [...roots]) {
|
|
44
|
+
try {
|
|
45
|
+
roots.push(realpathSync(root));
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// A directory that is not there is a root nothing can be written to.
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return roots;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The same policy for a session working in another tree: the working
|
|
55
|
+
* directory's place among the roots goes to the new one, and every other root
|
|
56
|
+
* stays. A worktree is a different project, not a wider one, so the tree it
|
|
57
|
+
* came from is not writable from it.
|
|
58
|
+
*/
|
|
59
|
+
export function retargetPolicy(policy, from, to) {
|
|
60
|
+
const swap = (roots) => {
|
|
61
|
+
const kept = roots.filter((root) => path.resolve(root) !== path.resolve(from));
|
|
62
|
+
return dedupeRoots([path.resolve(to), ...kept]);
|
|
63
|
+
};
|
|
64
|
+
return { mode: policy.mode, writableRoots: swap(policy.writableRoots), readableRoots: swap(policy.readableRoots) };
|
|
65
|
+
}
|
|
28
66
|
/** Whether a resolved path falls inside one of the writable roots. */
|
|
29
67
|
export function isWritable(policy, target) {
|
|
30
68
|
if (policy.mode === "full-access")
|
|
31
69
|
return true;
|
|
32
70
|
if (policy.mode === "read-only")
|
|
33
71
|
return false;
|
|
34
|
-
|
|
72
|
+
const resolved = path.resolve(target);
|
|
73
|
+
// The user directory holds the credentials, so only a root inside it opens
|
|
74
|
+
// any of it — never a broader one that merely contains it, as the temporary
|
|
75
|
+
// directory does when OHARNESS_HOME points there.
|
|
76
|
+
const home = userDir();
|
|
77
|
+
if (within([home], resolved)) {
|
|
78
|
+
return within([...userExtensionRoots(), ...policy.writableRoots.filter((root) => within([home], root))], resolved);
|
|
79
|
+
}
|
|
80
|
+
return within(policy.writableRoots, resolved);
|
|
35
81
|
}
|
|
36
82
|
/** Whether a resolved path falls inside one of the readable roots. */
|
|
37
83
|
export function isReadable(policy, target) {
|
|
@@ -100,9 +146,13 @@ export function checkWrite(policy, toolName, input, cwd) {
|
|
|
100
146
|
};
|
|
101
147
|
}
|
|
102
148
|
if (toolName === "bash") {
|
|
103
|
-
const
|
|
104
|
-
if (typeof
|
|
149
|
+
const raw = record["command"];
|
|
150
|
+
if (typeof raw !== "string")
|
|
105
151
|
return { allowed: true };
|
|
152
|
+
// Output thrown away or sent back to the terminal writes no file:
|
|
153
|
+
// `find … 2>/dev/null` is a read, and reading it as a write outside the
|
|
154
|
+
// project denied searches that were never going to touch anything.
|
|
155
|
+
const command = withoutStreamRedirects(raw);
|
|
106
156
|
if (policy.mode === "read-only" && looksMutating(command)) {
|
|
107
157
|
return {
|
|
108
158
|
allowed: false,
|
|
@@ -121,6 +171,10 @@ export function checkWrite(policy, toolName, input, cwd) {
|
|
|
121
171
|
}
|
|
122
172
|
return { allowed: true };
|
|
123
173
|
}
|
|
174
|
+
/** A command with its redirections to /dev/null and the standard streams removed. */
|
|
175
|
+
export function withoutStreamRedirects(command) {
|
|
176
|
+
return command.replace(/(?:\d*|&)>>?\s*\/dev\/(?:null|stdout|stderr|tty|fd\/\d+)(?![\w/.-])/g, " ");
|
|
177
|
+
}
|
|
124
178
|
/**
|
|
125
179
|
* A rough test for whether a shell command changes anything.
|
|
126
180
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/agent/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/agent/workspace.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/index.d.ts
CHANGED
|
@@ -3,11 +3,13 @@ export { AuthManager, BUILTIN_AUTH_PROVIDERS } from "./manager.ts";
|
|
|
3
3
|
export type { AuthStatus } from "./manager.ts";
|
|
4
4
|
export { anthropicAuth, antAccessToken, ANT_PROFILE_MARKER } from "./providers/anthropic.ts";
|
|
5
5
|
export { ottoportAuth, ottoportBaseUrl } from "./providers/ottoport.ts";
|
|
6
|
+
export { chatgptAuth } from "./providers/chatgpt.ts";
|
|
7
|
+
export { openrouterAuth } from "./providers/openrouter.ts";
|
|
6
8
|
export { officialAuth, officialBaseUrl } from "./providers/official.ts";
|
|
7
9
|
export { accountsConfigured, browserKeyUrl, browserSignInUrl, exchangeHandoff, siteUrl, } from "./providers/account.ts";
|
|
8
10
|
export { apiKeyProvider, oauthProvider } from "./providers/generic.ts";
|
|
9
11
|
export type { OAuthProviderOptions } from "./providers/generic.ts";
|
|
10
|
-
export { createPkce, exchangeToken, refreshCredential, startAuthCodeFlow, startDeviceFlow, startLoopbackFlow, toCredential, } from "./oauth.ts";
|
|
12
|
+
export { createPkce, exchangeToken, listenForCallback, refreshCredential, startAuthCodeFlow, startDeviceFlow, startLoopbackFlow, toCredential, } from "./oauth.ts";
|
|
11
13
|
export type { DeviceFlowOptions, AuthCodeFlowOptions, TokenResponse } from "./oauth.ts";
|
|
12
14
|
export { isExpired } from "./types.ts";
|
|
13
15
|
export type { ApiCredential, ApiKeyMethod, AuthContext, AuthMethod, AuthProvider, AuthResolver, AuthorizeResult, CallbackResult, Credential, OAuthCredential, OAuthMethod, Prompt, PromptCondition, ResolvedAuth, SelectPrompt, TextPrompt, WellKnownCredential, } from "./types.ts";
|
package/dist/auth/index.js
CHANGED
|
@@ -2,9 +2,11 @@ export { AuthStore } from "./store.js";
|
|
|
2
2
|
export { AuthManager, BUILTIN_AUTH_PROVIDERS } from "./manager.js";
|
|
3
3
|
export { anthropicAuth, antAccessToken, ANT_PROFILE_MARKER } from "./providers/anthropic.js";
|
|
4
4
|
export { ottoportAuth, ottoportBaseUrl } from "./providers/ottoport.js";
|
|
5
|
+
export { chatgptAuth } from "./providers/chatgpt.js";
|
|
6
|
+
export { openrouterAuth } from "./providers/openrouter.js";
|
|
5
7
|
export { officialAuth, officialBaseUrl } from "./providers/official.js";
|
|
6
8
|
export { accountsConfigured, browserKeyUrl, browserSignInUrl, exchangeHandoff, siteUrl, } from "./providers/account.js";
|
|
7
9
|
export { apiKeyProvider, oauthProvider } from "./providers/generic.js";
|
|
8
|
-
export { createPkce, exchangeToken, refreshCredential, startAuthCodeFlow, startDeviceFlow, startLoopbackFlow, toCredential, } from "./oauth.js";
|
|
10
|
+
export { createPkce, exchangeToken, listenForCallback, refreshCredential, startAuthCodeFlow, startDeviceFlow, startLoopbackFlow, toCredential, } from "./oauth.js";
|
|
9
11
|
export { isExpired } from "./types.js";
|
|
10
12
|
//# sourceMappingURL=index.js.map
|
package/dist/auth/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,OAAO,GACR,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvE,OAAO,EACL,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,OAAO,GACR,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvE,OAAO,EACL,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/auth/manager.d.ts
CHANGED
|
@@ -108,6 +108,15 @@ export declare class AuthManager {
|
|
|
108
108
|
/** Store the result of a completed OAuth callback. */
|
|
109
109
|
complete(providerId: string, result: Awaited<ReturnType<AuthorizeResult["callback"]>>): Promise<Credential>;
|
|
110
110
|
logout(providerId: string): Promise<boolean>;
|
|
111
|
+
/**
|
|
112
|
+
* Drop the chosen team when the OHarness account is replaced or signed out.
|
|
113
|
+
*
|
|
114
|
+
* The team is a property of the account that chose it, but it lives in the
|
|
115
|
+
* machine's config, so it outlived a switch of account: the next account
|
|
116
|
+
* kept naming a team it is not on, and every turn came back 403
|
|
117
|
+
* not_a_member. A fresh sign-in starts on the account's own plan.
|
|
118
|
+
*/
|
|
119
|
+
private forgetTeam;
|
|
111
120
|
private persist;
|
|
112
121
|
private methodAt;
|
|
113
122
|
/** Collapse concurrent refreshes of the same provider into one exchange. */
|
package/dist/auth/manager.js
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
|
-
import { errorMessage } from "../core/errors.js";
|
|
1
|
+
import { errorMessage, ProviderError } from "../core/errors.js";
|
|
2
2
|
import { createLogger } from "../util/logger.js";
|
|
3
3
|
import { anthropicAuth } from "./providers/anthropic.js";
|
|
4
4
|
import { officialAuth } from "./providers/official.js";
|
|
5
|
+
import { chatgptAuth } from "./providers/chatgpt.js";
|
|
5
6
|
import { openaiCodexAuth } from "./providers/openai-codex.js";
|
|
7
|
+
import { openrouterAuth } from "./providers/openrouter.js";
|
|
6
8
|
import { ottoportAuth } from "./providers/ottoport.js";
|
|
7
9
|
import { apiKeyProvider } from "./providers/generic.js";
|
|
8
10
|
import { AuthStore } from "./store.js";
|
|
11
|
+
import { updateUserConfig } from "../config.js";
|
|
9
12
|
import { isExpired } from "./types.js";
|
|
10
13
|
export const BUILTIN_AUTH_PROVIDERS = [
|
|
11
14
|
officialAuth,
|
|
12
15
|
anthropicAuth,
|
|
13
16
|
ottoportAuth,
|
|
17
|
+
chatgptAuth,
|
|
14
18
|
openaiCodexAuth,
|
|
19
|
+
openrouterAuth,
|
|
15
20
|
apiKeyProvider({
|
|
16
21
|
id: "openai",
|
|
17
22
|
label: "OpenAI",
|
|
@@ -75,7 +80,11 @@ export class AuthManager {
|
|
|
75
80
|
return undefined;
|
|
76
81
|
let credential = await this.store.get(ctx.providerId);
|
|
77
82
|
if (credential?.type === "oauth" && isExpired(credential) && provider.refresh) {
|
|
78
|
-
|
|
83
|
+
// A transient failure leaves the stored credential in place; a
|
|
84
|
+
// definitive rejection removes it. Re-read after the attempt so this
|
|
85
|
+
// request does not use the stale in-memory value after that removal.
|
|
86
|
+
credential = (await this.refreshOnce(ctx.providerId, provider, credential)) ??
|
|
87
|
+
(await this.store.get(ctx.providerId));
|
|
79
88
|
}
|
|
80
89
|
if (!provider.loader)
|
|
81
90
|
return undefined;
|
|
@@ -117,9 +126,10 @@ export class AuthManager {
|
|
|
117
126
|
if (credential?.type !== "oauth")
|
|
118
127
|
return undefined;
|
|
119
128
|
if (isExpired(credential, validForMs) && provider.refresh) {
|
|
120
|
-
credential = (await this.refreshOnce(providerId, provider, credential)) ??
|
|
129
|
+
credential = (await this.refreshOnce(providerId, provider, credential)) ??
|
|
130
|
+
(await this.store.get(providerId));
|
|
121
131
|
}
|
|
122
|
-
return credential
|
|
132
|
+
return credential?.type === "oauth" && !isExpired(credential) ? credential.access : undefined;
|
|
123
133
|
}
|
|
124
134
|
/**
|
|
125
135
|
* The raw secret for a provider, from the same places `resolve` looks.
|
|
@@ -238,6 +248,7 @@ export class AuthManager {
|
|
|
238
248
|
...(Object.keys(metadata).length ? { metadata } : {}),
|
|
239
249
|
};
|
|
240
250
|
await this.store.set(provider.id, credential);
|
|
251
|
+
await this.forgetTeam(provider.id);
|
|
241
252
|
return credential;
|
|
242
253
|
}
|
|
243
254
|
throw new Error(`method ${methodIndex} of ${provider.id} requires the OAuth flow`);
|
|
@@ -250,7 +261,32 @@ export class AuthManager {
|
|
|
250
261
|
return this.persist(providerId, result);
|
|
251
262
|
}
|
|
252
263
|
async logout(providerId) {
|
|
253
|
-
|
|
264
|
+
const removed = await this.store.remove(providerId);
|
|
265
|
+
await this.forgetTeam(providerId);
|
|
266
|
+
return removed;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Drop the chosen team when the OHarness account is replaced or signed out.
|
|
270
|
+
*
|
|
271
|
+
* The team is a property of the account that chose it, but it lives in the
|
|
272
|
+
* machine's config, so it outlived a switch of account: the next account
|
|
273
|
+
* kept naming a team it is not on, and every turn came back 403
|
|
274
|
+
* not_a_member. A fresh sign-in starts on the account's own plan.
|
|
275
|
+
*/
|
|
276
|
+
async forgetTeam(providerId) {
|
|
277
|
+
if (providerId !== officialAuth.id)
|
|
278
|
+
return;
|
|
279
|
+
try {
|
|
280
|
+
await updateUserConfig((config) => {
|
|
281
|
+
if (!("team" in config))
|
|
282
|
+
return config;
|
|
283
|
+
const { team: _was, ...rest } = config;
|
|
284
|
+
return rest;
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
catch (error) {
|
|
288
|
+
this.logger.warn("could not clear the chosen team", { error: errorMessage(error) });
|
|
289
|
+
}
|
|
254
290
|
}
|
|
255
291
|
async persist(providerId, result) {
|
|
256
292
|
const credential = "access" in result
|
|
@@ -269,6 +305,7 @@ export class AuthManager {
|
|
|
269
305
|
...(result.metadata ? { metadata: result.metadata } : {}),
|
|
270
306
|
};
|
|
271
307
|
await this.store.set(providerId, credential);
|
|
308
|
+
await this.forgetTeam(providerId);
|
|
272
309
|
return credential;
|
|
273
310
|
}
|
|
274
311
|
methodAt(providerId, index) {
|
|
@@ -288,6 +325,7 @@ export class AuthManager {
|
|
|
288
325
|
const inFlight = this.refreshing.get(providerId);
|
|
289
326
|
if (inFlight)
|
|
290
327
|
return inFlight;
|
|
328
|
+
let rejectedCredentialRemoved = false;
|
|
291
329
|
const task = (async () => {
|
|
292
330
|
try {
|
|
293
331
|
const refreshed = await this.store.withLock(async () => {
|
|
@@ -302,7 +340,27 @@ export class AuthManager {
|
|
|
302
340
|
!isExpired(current)) {
|
|
303
341
|
return current;
|
|
304
342
|
}
|
|
305
|
-
const
|
|
343
|
+
const attempted = current?.type === "oauth" ? current : credential;
|
|
344
|
+
let fresh;
|
|
345
|
+
try {
|
|
346
|
+
fresh = await provider.refresh(attempted);
|
|
347
|
+
}
|
|
348
|
+
catch (error) {
|
|
349
|
+
// Supabase refresh tokens rotate and a rejected token cannot heal.
|
|
350
|
+
// Removing it while the cross-process refresh lock is still held
|
|
351
|
+
// prevents every poller and process from presenting it forever.
|
|
352
|
+
// Temporary failures stay stored and may be retried later.
|
|
353
|
+
if (refreshWasRejected(error)) {
|
|
354
|
+
const latest = await this.store.get(providerId);
|
|
355
|
+
if (latest?.type === "oauth" &&
|
|
356
|
+
latest.access === attempted.access &&
|
|
357
|
+
latest.refresh === attempted.refresh) {
|
|
358
|
+
await this.store.remove(providerId);
|
|
359
|
+
rejectedCredentialRemoved = true;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
throw error;
|
|
363
|
+
}
|
|
306
364
|
if (fresh)
|
|
307
365
|
await this.store.set(providerId, fresh);
|
|
308
366
|
return fresh;
|
|
@@ -316,6 +374,8 @@ export class AuthManager {
|
|
|
316
374
|
catch (err) {
|
|
317
375
|
const message = errorMessage(err);
|
|
318
376
|
this.refreshErrors.set(providerId, message);
|
|
377
|
+
if (rejectedCredentialRemoved)
|
|
378
|
+
await this.forgetTeam(providerId);
|
|
319
379
|
this.logger.warn("token refresh failed", { provider: providerId, error: message });
|
|
320
380
|
return undefined;
|
|
321
381
|
}
|
|
@@ -327,4 +387,9 @@ export class AuthManager {
|
|
|
327
387
|
return task;
|
|
328
388
|
}
|
|
329
389
|
}
|
|
390
|
+
/** A refresh credential rejected by the authority will never become valid again. */
|
|
391
|
+
function refreshWasRejected(error) {
|
|
392
|
+
return error instanceof ProviderError &&
|
|
393
|
+
(error.status === 400 || error.status === 401 || error.status === 403);
|
|
394
|
+
}
|
|
330
395
|
//# sourceMappingURL=manager.js.map
|
package/dist/auth/manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/auth/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/auth/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/oauth.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createServer } from "node:http";
|
|
1
2
|
import type { AuthorizeResult, OAuthCredential } from "./types.ts";
|
|
2
3
|
export interface Pkce {
|
|
3
4
|
verifier: string;
|
|
@@ -81,3 +82,35 @@ export declare function startAuthCodeFlow(opts: AuthCodeFlowOptions & {
|
|
|
81
82
|
export declare function startLoopbackFlow(opts: AuthCodeFlowOptions & {
|
|
82
83
|
prepare?(redirectUri: string): Promise<Partial<AuthCodeFlowOptions>>;
|
|
83
84
|
}): Promise<AuthorizeResult>;
|
|
85
|
+
export interface CallbackListenerOptions {
|
|
86
|
+
/**
|
|
87
|
+
* The port to claim. Absent means any free one, which is right whenever the
|
|
88
|
+
* redirect URI is ours to name. A vendor that registered one fixed redirect
|
|
89
|
+
* for every client — Sign in with ChatGPT does — needs that exact port.
|
|
90
|
+
*/
|
|
91
|
+
port?: number;
|
|
92
|
+
/** Only this path completes the flow; anything else is a 404. */
|
|
93
|
+
path?: string;
|
|
94
|
+
/**
|
|
95
|
+
* The `state` the redirect must carry. `null` for a vendor that sends none
|
|
96
|
+
* back (OpenRouter), where the PKCE verifier is what ties the code to us.
|
|
97
|
+
*/
|
|
98
|
+
state: string | null;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* A one-shot loopback listener for an OAuth redirect.
|
|
102
|
+
*
|
|
103
|
+
* Resolves with the redirect's whole query rather than only the code, because
|
|
104
|
+
* some vendors hand back more than a code there — Sign in with ChatGPT issues
|
|
105
|
+
* the client id on the same redirect.
|
|
106
|
+
*/
|
|
107
|
+
export declare function listenForCallback(opts: CallbackListenerOptions): Promise<{
|
|
108
|
+
server: ReturnType<typeof createServer>;
|
|
109
|
+
port: number;
|
|
110
|
+
waitForCallback: Promise<URLSearchParams>;
|
|
111
|
+
/**
|
|
112
|
+
* Complete with a redirect address pasted by hand, under the same checks
|
|
113
|
+
* the listener applies. Returns the reason it was refused, if it was.
|
|
114
|
+
*/
|
|
115
|
+
deliver(input: string): string | undefined;
|
|
116
|
+
}>;
|
package/dist/auth/oauth.js
CHANGED
|
@@ -267,14 +267,30 @@ export async function startLoopbackFlow(opts) {
|
|
|
267
267
|
};
|
|
268
268
|
}
|
|
269
269
|
async function listenForCode(expectedState) {
|
|
270
|
+
const { server, port, waitForCallback } = await listenForCallback({ state: expectedState });
|
|
271
|
+
return { server, port, waitForCode: waitForCallback.then((params) => params.get("code")) };
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* A one-shot loopback listener for an OAuth redirect.
|
|
275
|
+
*
|
|
276
|
+
* Resolves with the redirect's whole query rather than only the code, because
|
|
277
|
+
* some vendors hand back more than a code there — Sign in with ChatGPT issues
|
|
278
|
+
* the client id on the same redirect.
|
|
279
|
+
*/
|
|
280
|
+
export async function listenForCallback(opts) {
|
|
270
281
|
let resolveCode;
|
|
271
282
|
let rejectCode;
|
|
272
|
-
const
|
|
283
|
+
const waitForCallback = new Promise((resolve, reject) => {
|
|
273
284
|
resolveCode = resolve;
|
|
274
285
|
rejectCode = reject;
|
|
275
286
|
});
|
|
287
|
+
const expectedState = opts.state;
|
|
276
288
|
const server = createServer((req, res) => {
|
|
277
289
|
const requestUrl = new URL(req.url ?? "/", "http://127.0.0.1");
|
|
290
|
+
if (opts.path && requestUrl.pathname !== opts.path) {
|
|
291
|
+
res.writeHead(404).end();
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
278
294
|
const code = requestUrl.searchParams.get("code");
|
|
279
295
|
const state = requestUrl.searchParams.get("state");
|
|
280
296
|
const error = requestUrl.searchParams.get("error");
|
|
@@ -289,7 +305,7 @@ async function listenForCode(expectedState) {
|
|
|
289
305
|
rejectCode(new Error(`authorization failed: ${error}`));
|
|
290
306
|
return;
|
|
291
307
|
}
|
|
292
|
-
if (state !== expectedState) {
|
|
308
|
+
if (expectedState !== null && state !== expectedState) {
|
|
293
309
|
reply(400, "State mismatch — the login may have been tampered with. Please retry.");
|
|
294
310
|
rejectCode(new Error("state mismatch"));
|
|
295
311
|
return;
|
|
@@ -298,13 +314,17 @@ async function listenForCode(expectedState) {
|
|
|
298
314
|
reply(400, "No authorization code was returned.");
|
|
299
315
|
return;
|
|
300
316
|
}
|
|
301
|
-
reply(200, "You can close this tab and return to
|
|
302
|
-
resolveCode(
|
|
317
|
+
reply(200, "You can close this tab and return to OHarness.");
|
|
318
|
+
resolveCode(requestUrl.searchParams);
|
|
303
319
|
});
|
|
304
320
|
await new Promise((resolve, reject) => {
|
|
305
|
-
server.once("error",
|
|
321
|
+
server.once("error", (err) => {
|
|
322
|
+
reject(err.code === "EADDRINUSE" && opts.port
|
|
323
|
+
? new Error(`port ${opts.port} is in use — finish or cancel the other sign-in using it, then retry`)
|
|
324
|
+
: err);
|
|
325
|
+
});
|
|
306
326
|
// Port 0 lets the OS pick a free port; 127.0.0.1 keeps it off the network.
|
|
307
|
-
server.listen(0, "127.0.0.1", resolve);
|
|
327
|
+
server.listen(opts.port ?? 0, "127.0.0.1", resolve);
|
|
308
328
|
});
|
|
309
329
|
const address = server.address();
|
|
310
330
|
// Don't leave a listener open forever if the user abandons the browser.
|
|
@@ -315,8 +335,39 @@ async function listenForCode(expectedState) {
|
|
|
315
335
|
server.close();
|
|
316
336
|
}, 5 * 60_000);
|
|
317
337
|
timeout.unref?.();
|
|
318
|
-
|
|
319
|
-
|
|
338
|
+
waitForCallback.finally(() => clearTimeout(timeout)).catch(() => { });
|
|
339
|
+
let delivered = false;
|
|
340
|
+
const deliver = (input) => {
|
|
341
|
+
if (delivered)
|
|
342
|
+
return "this sign-in has already finished";
|
|
343
|
+
const trimmed = input.trim();
|
|
344
|
+
let params;
|
|
345
|
+
try {
|
|
346
|
+
const url = new URL(trimmed);
|
|
347
|
+
if (opts.path && url.pathname !== opts.path)
|
|
348
|
+
return `that is not this sign-in's address — it should end in ${opts.path}`;
|
|
349
|
+
params = url.searchParams;
|
|
350
|
+
}
|
|
351
|
+
catch {
|
|
352
|
+
// A bare code is enough only where no state is checked; otherwise the
|
|
353
|
+
// whole address is what proves the redirect is ours.
|
|
354
|
+
if (expectedState !== null || !/^[\w.~-]+$/.test(trimmed))
|
|
355
|
+
return "paste the whole address the browser ended on";
|
|
356
|
+
params = new URLSearchParams({ code: trimmed });
|
|
357
|
+
}
|
|
358
|
+
const error = params.get("error");
|
|
359
|
+
if (error)
|
|
360
|
+
return `the provider returned: ${error}`;
|
|
361
|
+
if (expectedState !== null && params.get("state") !== expectedState)
|
|
362
|
+
return "that address is from a different sign-in — start again";
|
|
363
|
+
if (!params.get("code"))
|
|
364
|
+
return "that address carries no authorization code";
|
|
365
|
+
delivered = true;
|
|
366
|
+
resolveCode(params);
|
|
367
|
+
server.close();
|
|
368
|
+
return undefined;
|
|
369
|
+
};
|
|
370
|
+
return { server, port: address.port, waitForCallback, deliver };
|
|
320
371
|
}
|
|
321
372
|
function escapeHtml(value) {
|
|
322
373
|
return value.replace(/[&<>"']/g, (ch) => ch === "&" ? "&" : ch === "<" ? "<" : ch === ">" ? ">" : ch === '"' ? """ : "'");
|