background-agents 0.1.1 → 0.1.2
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 +173 -241
- package/dist/agents/claude/index.d.ts +11 -0
- package/dist/agents/claude/index.d.ts.map +1 -0
- package/dist/agents/claude/index.js +78 -0
- package/dist/agents/claude/index.js.map +1 -0
- package/dist/agents/claude/parser.d.ts +16 -0
- package/dist/agents/claude/parser.d.ts.map +1 -0
- package/dist/agents/claude/parser.js +87 -0
- package/dist/agents/claude/parser.js.map +1 -0
- package/dist/agents/claude/tools.d.ts +7 -0
- package/dist/agents/claude/tools.d.ts.map +1 -0
- package/dist/agents/claude/tools.js +15 -0
- package/dist/agents/claude/tools.js.map +1 -0
- package/dist/agents/codex/index.d.ts +11 -0
- package/dist/agents/codex/index.d.ts.map +1 -0
- package/dist/agents/codex/index.js +60 -0
- package/dist/agents/codex/index.js.map +1 -0
- package/dist/agents/codex/parser.d.ts +12 -0
- package/dist/agents/codex/parser.d.ts.map +1 -0
- package/dist/agents/codex/parser.js +108 -0
- package/dist/agents/codex/parser.js.map +1 -0
- package/dist/agents/codex/tools.d.ts +11 -0
- package/dist/agents/codex/tools.d.ts.map +1 -0
- package/dist/agents/codex/tools.js +40 -0
- package/dist/agents/codex/tools.js.map +1 -0
- package/dist/agents/eliza/bundle-content.d.ts +6 -0
- package/dist/agents/eliza/bundle-content.d.ts.map +1 -0
- package/dist/agents/eliza/bundle-content.js +7 -0
- package/dist/agents/eliza/bundle-content.js.map +1 -0
- package/dist/agents/eliza/cli.bundle.js +579 -0
- package/dist/agents/eliza/cli.d.ts +10 -0
- package/dist/agents/eliza/cli.d.ts.map +1 -0
- package/dist/agents/eliza/cli.js +342 -0
- package/dist/agents/eliza/cli.js.map +1 -0
- package/dist/agents/eliza/index.d.ts +22 -0
- package/dist/agents/eliza/index.d.ts.map +1 -0
- package/dist/agents/eliza/index.js +54 -0
- package/dist/agents/eliza/index.js.map +1 -0
- package/dist/agents/eliza/parser.d.ts +16 -0
- package/dist/agents/eliza/parser.d.ts.map +1 -0
- package/dist/agents/eliza/parser.js +67 -0
- package/dist/agents/eliza/parser.js.map +1 -0
- package/dist/agents/eliza/patterns.d.ts +41 -0
- package/dist/agents/eliza/patterns.d.ts.map +1 -0
- package/dist/agents/eliza/patterns.js +259 -0
- package/dist/agents/eliza/patterns.js.map +1 -0
- package/dist/agents/eliza/tools.d.ts +7 -0
- package/dist/agents/eliza/tools.d.ts.map +1 -0
- package/dist/agents/eliza/tools.js +14 -0
- package/dist/agents/eliza/tools.js.map +1 -0
- package/dist/agents/gemini/index.d.ts +11 -0
- package/dist/agents/gemini/index.d.ts.map +1 -0
- package/dist/agents/gemini/index.js +46 -0
- package/dist/agents/gemini/index.js.map +1 -0
- package/dist/agents/gemini/parser.d.ts +31 -0
- package/dist/agents/gemini/parser.d.ts.map +1 -0
- package/dist/agents/gemini/parser.js +106 -0
- package/dist/agents/gemini/parser.js.map +1 -0
- package/dist/agents/gemini/tools.d.ts +7 -0
- package/dist/agents/gemini/tools.d.ts.map +1 -0
- package/dist/agents/gemini/tools.js +23 -0
- package/dist/agents/gemini/tools.js.map +1 -0
- package/dist/agents/goose/index.d.ts +11 -0
- package/dist/agents/goose/index.d.ts.map +1 -0
- package/dist/agents/goose/index.js +73 -0
- package/dist/agents/goose/index.js.map +1 -0
- package/dist/agents/goose/parser.d.ts +24 -0
- package/dist/agents/goose/parser.d.ts.map +1 -0
- package/dist/agents/goose/parser.js +86 -0
- package/dist/agents/goose/parser.js.map +1 -0
- package/dist/agents/goose/tools.d.ts +10 -0
- package/dist/agents/goose/tools.d.ts.map +1 -0
- package/dist/agents/goose/tools.js +30 -0
- package/dist/agents/goose/tools.js.map +1 -0
- package/dist/agents/index.d.ts +27 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +46 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/opencode/index.d.ts +12 -0
- package/dist/agents/opencode/index.d.ts.map +1 -0
- package/dist/agents/opencode/index.js +53 -0
- package/dist/agents/opencode/index.js.map +1 -0
- package/dist/agents/opencode/parser.d.ts +15 -0
- package/dist/agents/opencode/parser.d.ts.map +1 -0
- package/dist/agents/opencode/parser.js +71 -0
- package/dist/agents/opencode/parser.js.map +1 -0
- package/dist/agents/opencode/tools.d.ts +7 -0
- package/dist/agents/opencode/tools.d.ts.map +1 -0
- package/dist/agents/opencode/tools.js +10 -0
- package/dist/agents/opencode/tools.js.map +1 -0
- package/dist/agents/openhands/index.d.ts +17 -0
- package/dist/agents/openhands/index.d.ts.map +1 -0
- package/dist/agents/openhands/index.js +67 -0
- package/dist/agents/openhands/index.js.map +1 -0
- package/dist/agents/openhands/parser.d.ts +16 -0
- package/dist/agents/openhands/parser.d.ts.map +1 -0
- package/dist/agents/openhands/parser.js +93 -0
- package/dist/agents/openhands/parser.js.map +1 -0
- package/dist/agents/openhands/tools.d.ts +7 -0
- package/dist/agents/openhands/tools.d.ts.map +1 -0
- package/dist/agents/openhands/tools.js +24 -0
- package/dist/agents/openhands/tools.js.map +1 -0
- package/dist/agents/pi/index.d.ts +14 -0
- package/dist/agents/pi/index.d.ts.map +1 -0
- package/dist/agents/pi/index.js +54 -0
- package/dist/agents/pi/index.js.map +1 -0
- package/dist/agents/pi/parser.d.ts +21 -0
- package/dist/agents/pi/parser.d.ts.map +1 -0
- package/dist/agents/pi/parser.js +91 -0
- package/dist/agents/pi/parser.js.map +1 -0
- package/dist/agents/pi/tools.d.ts +8 -0
- package/dist/agents/pi/tools.d.ts.map +1 -0
- package/dist/agents/pi/tools.js +16 -0
- package/dist/agents/pi/tools.js.map +1 -0
- package/dist/agents/picocode/index.d.ts +18 -0
- package/dist/agents/picocode/index.d.ts.map +1 -0
- package/dist/agents/picocode/index.js +68 -0
- package/dist/agents/picocode/index.js.map +1 -0
- package/dist/agents/picocode/parser.d.ts +19 -0
- package/dist/agents/picocode/parser.d.ts.map +1 -0
- package/dist/agents/picocode/parser.js +104 -0
- package/dist/agents/picocode/parser.js.map +1 -0
- package/dist/agents/picocode/tools.d.ts +9 -0
- package/dist/agents/picocode/tools.d.ts.map +1 -0
- package/dist/agents/picocode/tools.js +27 -0
- package/dist/agents/picocode/tools.js.map +1 -0
- package/dist/background/index.d.ts +6 -0
- package/dist/background/index.d.ts.map +1 -0
- package/dist/background/index.js +5 -0
- package/dist/background/index.js.map +1 -0
- package/dist/background/session.d.ts +47 -0
- package/dist/background/session.d.ts.map +1 -0
- package/dist/background/session.js +481 -0
- package/dist/background/session.js.map +1 -0
- package/dist/background/types.d.ts +55 -0
- package/dist/background/types.d.ts.map +1 -0
- package/dist/background/types.js +5 -0
- package/dist/background/types.js.map +1 -0
- package/dist/core/agent.d.ts +95 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +8 -0
- package/dist/core/agent.js.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/registry.d.ts +48 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +68 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/tools.d.ts +31 -0
- package/dist/core/tools.d.ts.map +1 -0
- package/dist/core/tools.js +82 -0
- package/dist/core/tools.js.map +1 -0
- package/dist/debug.js +1 -1
- package/dist/debug.js.map +1 -1
- package/dist/factory.d.ts +1 -4
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +1 -4
- package/dist/factory.js.map +1 -1
- package/dist/index.d.ts +29 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +41 -14
- package/dist/index.js.map +1 -1
- package/dist/providers/base.d.ts +45 -18
- package/dist/providers/base.d.ts.map +1 -1
- package/dist/providers/base.js +228 -265
- package/dist/providers/base.js.map +1 -1
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +18 -8
- package/dist/providers/gemini.js.map +1 -1
- package/dist/sandbox/daytona.d.ts +5 -1
- package/dist/sandbox/daytona.d.ts.map +1 -1
- package/dist/sandbox/daytona.js +157 -214
- package/dist/sandbox/daytona.js.map +1 -1
- package/dist/sandbox/index.d.ts +3 -3
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +2 -2
- package/dist/sandbox/index.js.map +1 -1
- package/dist/session.d.ts +62 -51
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +94 -90
- package/dist/session.js.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/provider.d.ts +37 -94
- package/dist/types/provider.d.ts.map +1 -1
- package/dist/types/provider.js +3 -0
- package/dist/types/provider.js.map +1 -1
- package/dist/utils/index.d.ts +2 -3
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -3
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/install.d.ts +12 -2
- package/dist/utils/install.d.ts.map +1 -1
- package/dist/utils/install.js +40 -4
- package/dist/utils/install.js.map +1 -1
- package/package.json +24 -13
- package/src/index.ts +156 -0
- package/dist/sandbox/daytona-ssh.d.ts +0 -9
- package/dist/sandbox/daytona-ssh.d.ts.map +0 -1
- package/dist/sandbox/daytona-ssh.js +0 -113
- package/dist/sandbox/daytona-ssh.js.map +0 -1
- package/dist/utils/session.d.ts +0 -17
- package/dist/utils/session.d.ts.map +0 -1
- package/dist/utils/session.js +0 -59
- package/dist/utils/session.js.map +0 -1
- package/next.config.codeagentsdk.cjs +0 -22
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Picocode tool name mappings
|
|
3
|
+
*
|
|
4
|
+
* Maps Picocode tool names to canonical tool names.
|
|
5
|
+
* Picocode tool names (from tools.rs): read_file, write_file, edit_file,
|
|
6
|
+
* copy_file, move_file, list_dir, make_dir, remove, glob_files, grep_text, bash, agent_browser
|
|
7
|
+
*/
|
|
8
|
+
export const PICOCODE_TOOL_MAPPINGS = {
|
|
9
|
+
// File operations
|
|
10
|
+
read_file: "read",
|
|
11
|
+
write_file: "write",
|
|
12
|
+
edit_file: "edit",
|
|
13
|
+
copy_file: "write", // maps to write since it creates/copies files
|
|
14
|
+
move_file: "write", // maps to write since it modifies filesystem
|
|
15
|
+
// Directory operations
|
|
16
|
+
list_dir: "glob",
|
|
17
|
+
make_dir: "shell", // directory creation is a shell-like operation
|
|
18
|
+
remove: "shell", // file/dir removal is a shell-like operation
|
|
19
|
+
// Search operations
|
|
20
|
+
glob_files: "glob",
|
|
21
|
+
grep_text: "grep",
|
|
22
|
+
// Shell/command execution
|
|
23
|
+
bash: "shell",
|
|
24
|
+
// Browser automation (no direct canonical mapping, keep as-is)
|
|
25
|
+
agent_browser: "agent_browser",
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/agents/picocode/tools.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAA2B;IAC5D,kBAAkB;IAClB,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,OAAO;IACnB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,OAAO,EAAE,8CAA8C;IAClE,SAAS,EAAE,OAAO,EAAE,6CAA6C;IAEjE,uBAAuB;IACvB,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,OAAO,EAAE,+CAA+C;IAClE,MAAM,EAAE,OAAO,EAAE,6CAA6C;IAE9D,oBAAoB;IACpB,UAAU,EAAE,MAAM;IAClB,SAAS,EAAE,MAAM;IAEjB,0BAA0B;IAC1B,IAAI,EAAE,OAAO;IAEb,+DAA+D;IAC/D,aAAa,EAAE,eAAe;CAC/B,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Background module exports
|
|
3
|
+
*/
|
|
4
|
+
export type { BackgroundRunPhase, PollResult, SessionMeta, StartOptions, TurnHandle, } from "./types";
|
|
5
|
+
export { createBackgroundSession, writeInitialSessionMeta, readProviderFromMeta, type BackgroundSession, } from "./session";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/background/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EACV,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,YAAY,EACZ,UAAU,GACX,MAAM,SAAS,CAAA;AAEhB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,KAAK,iBAAiB,GACvB,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/background/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,GAErB,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Background Session Manager
|
|
3
|
+
*
|
|
4
|
+
* Extracted from the monolithic Provider base class.
|
|
5
|
+
* Handles all background execution logic independently.
|
|
6
|
+
*/
|
|
7
|
+
import type { AgentDefinition } from "../core/agent";
|
|
8
|
+
import type { CodeAgentSandbox } from "../types/provider";
|
|
9
|
+
import type { PollResult, StartOptions, TurnHandle } from "./types";
|
|
10
|
+
export type { BackgroundRunPhase } from "./types";
|
|
11
|
+
/**
|
|
12
|
+
* Background session interface
|
|
13
|
+
*/
|
|
14
|
+
export interface BackgroundSession {
|
|
15
|
+
/** Unique session ID */
|
|
16
|
+
readonly id: string;
|
|
17
|
+
/** Session directory in sandbox */
|
|
18
|
+
readonly sessionDir: string;
|
|
19
|
+
/** Agent definition */
|
|
20
|
+
readonly agent: AgentDefinition;
|
|
21
|
+
/** Start a new turn with the given prompt */
|
|
22
|
+
start(prompt: string, options?: Omit<StartOptions, "prompt">): Promise<TurnHandle>;
|
|
23
|
+
/** Poll for new events */
|
|
24
|
+
getEvents(): Promise<PollResult>;
|
|
25
|
+
/** Check if a turn is currently running */
|
|
26
|
+
isRunning(): Promise<boolean>;
|
|
27
|
+
/** Get current turn's PID */
|
|
28
|
+
getPid(): Promise<number | null>;
|
|
29
|
+
/** Cancel the current turn */
|
|
30
|
+
cancel(): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Create a background session.
|
|
34
|
+
*/
|
|
35
|
+
export declare function createBackgroundSession(agent: AgentDefinition, sandbox: CodeAgentSandbox, sessionDir: string, defaults?: Omit<StartOptions, "prompt">): BackgroundSession;
|
|
36
|
+
/**
|
|
37
|
+
* Write initial session metadata for reattachment.
|
|
38
|
+
*/
|
|
39
|
+
export declare function writeInitialSessionMeta(sandbox: CodeAgentSandbox, sessionDir: string, agentName: string, sessionId: string | null): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Read provider name from session metadata.
|
|
42
|
+
*/
|
|
43
|
+
export declare function readProviderFromMeta(sandbox: CodeAgentSandbox, sessionDir: string): Promise<{
|
|
44
|
+
provider: string | null;
|
|
45
|
+
sessionId: string | null;
|
|
46
|
+
} | null>;
|
|
47
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/background/session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,eAAe,CAAA;AAE9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,KAAK,EACV,UAAU,EAEV,YAAY,EACZ,UAAU,EACX,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAmCjD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wBAAwB;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,mCAAmC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,uBAAuB;IACvB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAE/B,6CAA6C;IAC7C,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAElF,0BAA0B;IAC1B,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,CAAA;IAEhC,2CAA2C;IAC3C,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IAE7B,6BAA6B;IAC7B,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAEhC,8BAA8B;IAC9B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACxB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAM,GAC1C,iBAAiB,CAEnB;AAwhBD;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAAC,CAiBvE"}
|
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Background Session Manager
|
|
3
|
+
*
|
|
4
|
+
* Extracted from the monolithic Provider base class.
|
|
5
|
+
* Handles all background execution logic independently.
|
|
6
|
+
*/
|
|
7
|
+
import { randomUUID } from "node:crypto";
|
|
8
|
+
import { debugLog } from "../debug";
|
|
9
|
+
/** After startedAt, ignore "done but no output" briefly (race with wrapper). */
|
|
10
|
+
const BACKGROUND_STARTUP_GRACE_MS = 4000;
|
|
11
|
+
function withinStartupGrace(meta) {
|
|
12
|
+
if (!meta.startedAt)
|
|
13
|
+
return false;
|
|
14
|
+
const t = Date.parse(meta.startedAt);
|
|
15
|
+
if (Number.isNaN(t))
|
|
16
|
+
return false;
|
|
17
|
+
return Date.now() - t < BACKGROUND_STARTUP_GRACE_MS;
|
|
18
|
+
}
|
|
19
|
+
function hasObservableBackgroundProgress(result) {
|
|
20
|
+
for (const e of result.events) {
|
|
21
|
+
if (e.type === "token" ||
|
|
22
|
+
e.type === "tool_start" ||
|
|
23
|
+
e.type === "tool_end" ||
|
|
24
|
+
e.type === "end") {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const raw = (result.rawOutput ?? "").trim();
|
|
29
|
+
const nonJsonLines = raw.split("\n").filter((l) => {
|
|
30
|
+
const t = l.trim();
|
|
31
|
+
return t && !(t.startsWith("{") && t.endsWith("}"));
|
|
32
|
+
});
|
|
33
|
+
return nonJsonLines.some((l) => l.trim().length > 0);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Create a background session.
|
|
37
|
+
*/
|
|
38
|
+
export function createBackgroundSession(agent, sandbox, sessionDir, defaults = {}) {
|
|
39
|
+
return new BackgroundSessionImpl(agent, sandbox, sessionDir, defaults);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Background session implementation
|
|
43
|
+
*/
|
|
44
|
+
class BackgroundSessionImpl {
|
|
45
|
+
agent;
|
|
46
|
+
sandbox;
|
|
47
|
+
sessionDir;
|
|
48
|
+
defaults;
|
|
49
|
+
id;
|
|
50
|
+
parseContext = { state: {}, sessionId: null };
|
|
51
|
+
constructor(agent, sandbox, sessionDir, defaults) {
|
|
52
|
+
this.agent = agent;
|
|
53
|
+
this.sandbox = sandbox;
|
|
54
|
+
this.sessionDir = sessionDir;
|
|
55
|
+
this.defaults = defaults;
|
|
56
|
+
// Extract ID from session dir
|
|
57
|
+
this.id = sessionDir.replace(/.*codeagent-/, "");
|
|
58
|
+
}
|
|
59
|
+
async start(prompt, options = {}) {
|
|
60
|
+
const opts = {
|
|
61
|
+
...this.defaults,
|
|
62
|
+
...options,
|
|
63
|
+
prompt,
|
|
64
|
+
};
|
|
65
|
+
// Handle system prompt for agents without native support
|
|
66
|
+
if (opts.systemPrompt && !this.agent.capabilities?.supportsSystemPrompt) {
|
|
67
|
+
opts.prompt = opts.systemPrompt + "\n\n" + (opts.prompt ?? "");
|
|
68
|
+
}
|
|
69
|
+
if (!this.sandbox.executeCommand) {
|
|
70
|
+
throw new Error("Sandbox background mode requires a sandbox with executeCommand support");
|
|
71
|
+
}
|
|
72
|
+
// Ensure session directory exists
|
|
73
|
+
await this.sandbox.executeCommand(`mkdir -p "${this.sessionDir}"`, 10);
|
|
74
|
+
// Read current meta
|
|
75
|
+
const meta = await this.readMeta();
|
|
76
|
+
const currentTurn = meta?.currentTurn ?? 0;
|
|
77
|
+
const outputFile = `${this.sessionDir}/${currentTurn}.jsonl`;
|
|
78
|
+
const runId = randomUUID().slice(0, 8);
|
|
79
|
+
debugLog(`background turn start agent=${this.agent.name} sessionDir=${this.sessionDir} turn=${currentTurn}`, this.parseContext.sessionId);
|
|
80
|
+
// Write initial meta before starting
|
|
81
|
+
await this.writeMeta({
|
|
82
|
+
currentTurn,
|
|
83
|
+
cursor: 0,
|
|
84
|
+
runId,
|
|
85
|
+
outputFile,
|
|
86
|
+
startedAt: new Date().toISOString(),
|
|
87
|
+
provider: this.agent.name,
|
|
88
|
+
sessionId: this.parseContext.sessionId ?? opts.sessionId ?? meta?.sessionId ?? null,
|
|
89
|
+
});
|
|
90
|
+
// Build and execute command
|
|
91
|
+
const commandSpec = this.agent.buildCommand(opts);
|
|
92
|
+
// Set cwd from options if not already set by agent
|
|
93
|
+
if (opts.cwd && !commandSpec.cwd) {
|
|
94
|
+
commandSpec.cwd = opts.cwd;
|
|
95
|
+
}
|
|
96
|
+
// Set env vars
|
|
97
|
+
if (commandSpec.env) {
|
|
98
|
+
this.sandbox.setEnvVars(commandSpec.env);
|
|
99
|
+
}
|
|
100
|
+
// Build full command string
|
|
101
|
+
const fullCommand = this.buildFullCommand(commandSpec);
|
|
102
|
+
if (typeof this.sandbox.executeBackground !== "function") {
|
|
103
|
+
throw new Error("Background sessions require a sandbox with executeBackground support");
|
|
104
|
+
}
|
|
105
|
+
debugLog("startSandboxBackground cli", this.parseContext.sessionId, fullCommand);
|
|
106
|
+
const result = await this.sandbox.executeBackground({
|
|
107
|
+
command: fullCommand,
|
|
108
|
+
outputFile,
|
|
109
|
+
runId,
|
|
110
|
+
timeout: opts.timeout ?? 30,
|
|
111
|
+
});
|
|
112
|
+
// Update meta with PID
|
|
113
|
+
await this.writeMeta({
|
|
114
|
+
currentTurn,
|
|
115
|
+
cursor: 0,
|
|
116
|
+
pid: result.pid,
|
|
117
|
+
runId,
|
|
118
|
+
outputFile,
|
|
119
|
+
startedAt: new Date().toISOString(),
|
|
120
|
+
provider: this.agent.name,
|
|
121
|
+
sessionId: this.parseContext.sessionId ?? opts.sessionId ?? meta?.sessionId ?? null,
|
|
122
|
+
});
|
|
123
|
+
debugLog(`background turn started agent=${this.agent.name} pid=${result.pid}`, this.parseContext.sessionId);
|
|
124
|
+
return {
|
|
125
|
+
executionId: randomUUID(),
|
|
126
|
+
pid: result.pid,
|
|
127
|
+
outputFile,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
async getEvents() {
|
|
131
|
+
// Use optimized polling if available
|
|
132
|
+
let meta = null;
|
|
133
|
+
let outputContent = null;
|
|
134
|
+
let stillRunning;
|
|
135
|
+
if (this.sandbox.pollBackgroundState) {
|
|
136
|
+
const state = await this.sandbox.pollBackgroundState(this.sessionDir);
|
|
137
|
+
if (state?.meta) {
|
|
138
|
+
try {
|
|
139
|
+
const parsed = JSON.parse(state.meta);
|
|
140
|
+
if (typeof parsed.currentTurn === "number" &&
|
|
141
|
+
typeof parsed.cursor === "number") {
|
|
142
|
+
meta = parsed;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
/* invalid JSON */
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
outputContent = state?.output ?? null;
|
|
150
|
+
stillRunning = !state?.done;
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
// Legacy path
|
|
154
|
+
meta = await this.readMeta();
|
|
155
|
+
stillRunning = meta?.outputFile
|
|
156
|
+
? await this.isOutputRunning(meta.outputFile)
|
|
157
|
+
: false;
|
|
158
|
+
}
|
|
159
|
+
if (!meta?.runId || !meta.outputFile) {
|
|
160
|
+
debugLog(`getEvents (no turn in progress) sessionDir=${this.sessionDir}`, this.parseContext.sessionId);
|
|
161
|
+
return {
|
|
162
|
+
sessionId: meta?.sessionId ?? this.parseContext.sessionId ?? null,
|
|
163
|
+
events: [],
|
|
164
|
+
cursor: String(meta?.cursor ?? 0),
|
|
165
|
+
running: false,
|
|
166
|
+
runPhase: "idle",
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
const cursor = String(meta.cursor);
|
|
170
|
+
debugLog(`getEvents agent=${this.agent.name} turn=${meta.currentTurn} cursor=${cursor}`, this.parseContext.sessionId);
|
|
171
|
+
// Poll output
|
|
172
|
+
const result = await this.pollOutput(meta.outputFile, cursor, meta.rawCursor != null ? String(meta.rawCursor) : null, outputContent);
|
|
173
|
+
const sawEnd = meta.sawEnd || result.events.some((e) => e.type === "end");
|
|
174
|
+
// Handle completion states
|
|
175
|
+
return this.handlePollResult(meta, result, stillRunning, sawEnd);
|
|
176
|
+
}
|
|
177
|
+
async isRunning() {
|
|
178
|
+
const meta = await this.readMeta();
|
|
179
|
+
if (!meta?.runId || !meta.outputFile || !this.sandbox.executeCommand) {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
return this.isOutputRunning(meta.outputFile, meta.pid);
|
|
183
|
+
}
|
|
184
|
+
async getPid() {
|
|
185
|
+
const meta = await this.readMeta();
|
|
186
|
+
if (meta?.pid == null || meta.pid < 1)
|
|
187
|
+
return null;
|
|
188
|
+
return meta.pid;
|
|
189
|
+
}
|
|
190
|
+
async cancel() {
|
|
191
|
+
const meta = await this.readMeta();
|
|
192
|
+
if (meta?.pid == null)
|
|
193
|
+
return;
|
|
194
|
+
if (this.sandbox.killBackgroundProcess) {
|
|
195
|
+
await this.sandbox.killBackgroundProcess(meta.pid, this.agent.name);
|
|
196
|
+
}
|
|
197
|
+
else if (this.sandbox.executeCommand) {
|
|
198
|
+
await this.sandbox.executeCommand(`kill -TERM ${meta.pid} 2>/dev/null || true`, 10);
|
|
199
|
+
await new Promise((r) => setTimeout(r, 500));
|
|
200
|
+
await this.sandbox.executeCommand(`kill -9 ${meta.pid} 2>/dev/null || true`, 10);
|
|
201
|
+
await this.sandbox.executeCommand(`pkill -9 -f "${this.agent.name}" 2>/dev/null || true`, 10);
|
|
202
|
+
}
|
|
203
|
+
// Write done file
|
|
204
|
+
if (meta.outputFile && this.sandbox.executeCommand) {
|
|
205
|
+
const donePath = meta.outputFile + ".done";
|
|
206
|
+
const escaped = donePath.replace(/'/g, "'\\''");
|
|
207
|
+
await this.sandbox.executeCommand(`echo 1 > '${escaped}' 2>/dev/null || true`, 10);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
211
|
+
// Private helpers
|
|
212
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
213
|
+
async readMeta() {
|
|
214
|
+
if (!this.sandbox.executeCommand)
|
|
215
|
+
return null;
|
|
216
|
+
const result = await this.sandbox.executeCommand(`cat "${this.sessionDir}/meta.json" 2>/dev/null || true`, 10);
|
|
217
|
+
const raw = (result.output ?? "").trim();
|
|
218
|
+
if (!raw)
|
|
219
|
+
return null;
|
|
220
|
+
try {
|
|
221
|
+
const o = JSON.parse(raw);
|
|
222
|
+
if (typeof o.currentTurn !== "number" || typeof o.cursor !== "number")
|
|
223
|
+
return null;
|
|
224
|
+
return o;
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
return null;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
async writeMeta(meta) {
|
|
231
|
+
if (!this.sandbox.executeCommand) {
|
|
232
|
+
throw new Error("Sandbox background mode requires a sandbox with executeCommand support");
|
|
233
|
+
}
|
|
234
|
+
const json = JSON.stringify(meta);
|
|
235
|
+
const b64 = Buffer.from(json, "utf8").toString("base64");
|
|
236
|
+
await this.sandbox.executeCommand(`mkdir -p "${this.sessionDir}" && echo '${b64}' | base64 -d > "${this.sessionDir}/meta.json"`, 10);
|
|
237
|
+
}
|
|
238
|
+
async writeMetaIfChanged(next, prev) {
|
|
239
|
+
if (prev) {
|
|
240
|
+
const unchanged = prev.currentTurn === next.currentTurn &&
|
|
241
|
+
prev.cursor === next.cursor &&
|
|
242
|
+
(prev.rawCursor ?? 0) === (next.rawCursor ?? 0) &&
|
|
243
|
+
prev.pid === next.pid &&
|
|
244
|
+
prev.runId === next.runId &&
|
|
245
|
+
prev.outputFile === next.outputFile &&
|
|
246
|
+
(prev.sawEnd ?? false) === (next.sawEnd ?? false) &&
|
|
247
|
+
prev.startedAt === next.startedAt &&
|
|
248
|
+
prev.provider === next.provider &&
|
|
249
|
+
(prev.sessionId ?? null) === (next.sessionId ?? null);
|
|
250
|
+
if (unchanged)
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
await this.writeMeta(next);
|
|
254
|
+
}
|
|
255
|
+
async isOutputRunning(outputFile, pid) {
|
|
256
|
+
if (!this.sandbox.executeCommand)
|
|
257
|
+
return false;
|
|
258
|
+
const donePath = outputFile + ".done";
|
|
259
|
+
const escaped = donePath.replace(/'/g, "'\\''");
|
|
260
|
+
// Check both the .done file AND whether the process is still alive.
|
|
261
|
+
// The .done file indicates normal completion, but if the process was killed
|
|
262
|
+
// externally (e.g., kill -9), we need to check if the PID is still running.
|
|
263
|
+
// Note: We check process state instead of using kill -0 because kill -0 succeeds
|
|
264
|
+
// on zombie processes (state Z). A running process has state R, S, or D.
|
|
265
|
+
const checkDone = `test -f '${escaped}' 2>/dev/null; echo "DONE:$?"`;
|
|
266
|
+
// Check if process is alive and not a zombie - get process state
|
|
267
|
+
// State: R=running, S=sleeping, D=disk sleep, Z=zombie, T=stopped
|
|
268
|
+
const checkPid = pid
|
|
269
|
+
? `STATE=$(ps -p ${pid} -o state= 2>/dev/null); if [ -n "$STATE" ] && [ "$STATE" != "Z" ]; then echo "PID:0"; else echo "PID:1"; fi`
|
|
270
|
+
: 'echo "PID:1"';
|
|
271
|
+
const r = await this.sandbox.executeCommand(`${checkDone}; ${checkPid}`, 10);
|
|
272
|
+
const output = (r.output ?? "").trim();
|
|
273
|
+
// Parse results: DONE:0 means .done file exists, PID:0 means process is alive (not zombie)
|
|
274
|
+
const doneMatch = output.match(/DONE:(\d+)/);
|
|
275
|
+
const pidMatch = output.match(/PID:(\d+)/);
|
|
276
|
+
const doneExists = doneMatch ? doneMatch[1] === "0" : false;
|
|
277
|
+
const processAlive = pidMatch ? pidMatch[1] === "0" : false;
|
|
278
|
+
// Running if: .done doesn't exist AND process is still alive (if we have a PID to check)
|
|
279
|
+
// If we have a PID and the process is dead/zombie, consider it not running even without .done
|
|
280
|
+
if (pid && !processAlive) {
|
|
281
|
+
return false;
|
|
282
|
+
}
|
|
283
|
+
return !doneExists;
|
|
284
|
+
}
|
|
285
|
+
async pollOutput(outputFile, cursor, rawCursor, prefetchedContent) {
|
|
286
|
+
let rawOutput;
|
|
287
|
+
if (prefetchedContent != null) {
|
|
288
|
+
rawOutput = prefetchedContent;
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
if (!this.sandbox.executeCommand) {
|
|
292
|
+
throw new Error("Sandbox background mode requires a sandbox with executeCommand support");
|
|
293
|
+
}
|
|
294
|
+
const result = await this.sandbox.executeCommand(`cat ${outputFile}`, 30);
|
|
295
|
+
rawOutput = result.output ?? "";
|
|
296
|
+
}
|
|
297
|
+
const startIndex = cursor ? Number(cursor) || 0 : 0;
|
|
298
|
+
void rawCursor;
|
|
299
|
+
const rawLines = rawOutput.split("\n");
|
|
300
|
+
const lines = [];
|
|
301
|
+
const isJson = (s) => s.startsWith("{") && s.endsWith("}");
|
|
302
|
+
for (let i = 0; i < rawLines.length; i++) {
|
|
303
|
+
const trimmed = rawLines[i].trim();
|
|
304
|
+
if (!trimmed)
|
|
305
|
+
continue;
|
|
306
|
+
if (!isJson(trimmed) && i === rawLines.length - 1)
|
|
307
|
+
continue;
|
|
308
|
+
if (isJson(trimmed))
|
|
309
|
+
lines.push(trimmed);
|
|
310
|
+
}
|
|
311
|
+
if (startIndex >= lines.length) {
|
|
312
|
+
return {
|
|
313
|
+
status: "running",
|
|
314
|
+
sessionId: this.parseContext.sessionId,
|
|
315
|
+
events: [],
|
|
316
|
+
cursor: String(lines.length),
|
|
317
|
+
rawCursor: String(rawLines.length),
|
|
318
|
+
rawOutput,
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
const eventsOut = [];
|
|
322
|
+
let status = "running";
|
|
323
|
+
for (const line of lines.slice(startIndex)) {
|
|
324
|
+
const raw = this.agent.parse(line, this.parseContext);
|
|
325
|
+
const events = raw === null ? [] : Array.isArray(raw) ? raw : [raw];
|
|
326
|
+
for (const event of events) {
|
|
327
|
+
if (event.type === "session") {
|
|
328
|
+
this.parseContext.sessionId = event.id;
|
|
329
|
+
}
|
|
330
|
+
if (event.type === "end")
|
|
331
|
+
status = "completed";
|
|
332
|
+
eventsOut.push(event);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
return {
|
|
336
|
+
status,
|
|
337
|
+
sessionId: this.parseContext.sessionId,
|
|
338
|
+
events: eventsOut,
|
|
339
|
+
cursor: String(lines.length),
|
|
340
|
+
rawCursor: String(rawLines.length),
|
|
341
|
+
rawOutput,
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
async handlePollResult(meta, result, stillRunning, sawEnd) {
|
|
345
|
+
const baseMeta = {
|
|
346
|
+
currentTurn: meta.currentTurn,
|
|
347
|
+
cursor: Number(result.cursor) || 0,
|
|
348
|
+
rawCursor: Number(result.rawCursor) || meta.rawCursor || 0,
|
|
349
|
+
provider: this.agent.name,
|
|
350
|
+
sessionId: this.parseContext.sessionId ?? meta.sessionId ?? null,
|
|
351
|
+
};
|
|
352
|
+
// Early poll / wrapper race
|
|
353
|
+
if (!stillRunning &&
|
|
354
|
+
!sawEnd &&
|
|
355
|
+
withinStartupGrace(meta) &&
|
|
356
|
+
!hasObservableBackgroundProgress(result)) {
|
|
357
|
+
await this.writeMetaIfChanged({
|
|
358
|
+
...baseMeta,
|
|
359
|
+
sawEnd: false,
|
|
360
|
+
pid: meta.pid,
|
|
361
|
+
runId: meta.runId,
|
|
362
|
+
outputFile: meta.outputFile,
|
|
363
|
+
startedAt: meta.startedAt,
|
|
364
|
+
}, meta);
|
|
365
|
+
return {
|
|
366
|
+
sessionId: result.sessionId,
|
|
367
|
+
events: result.events,
|
|
368
|
+
cursor: result.cursor,
|
|
369
|
+
running: true,
|
|
370
|
+
runPhase: "starting",
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
if (!stillRunning || sawEnd) {
|
|
374
|
+
const nextTurn = (meta.currentTurn ?? 0) + 1;
|
|
375
|
+
await this.writeMetaIfChanged({
|
|
376
|
+
...baseMeta,
|
|
377
|
+
currentTurn: nextTurn,
|
|
378
|
+
sawEnd,
|
|
379
|
+
...(sawEnd
|
|
380
|
+
? {}
|
|
381
|
+
: { outputFile: meta.outputFile, runId: meta.runId }),
|
|
382
|
+
}, meta);
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
await this.writeMetaIfChanged({
|
|
386
|
+
...baseMeta,
|
|
387
|
+
sawEnd,
|
|
388
|
+
pid: meta.pid,
|
|
389
|
+
runId: meta.runId,
|
|
390
|
+
outputFile: meta.outputFile,
|
|
391
|
+
startedAt: meta.startedAt,
|
|
392
|
+
}, meta);
|
|
393
|
+
}
|
|
394
|
+
// Crashed: process exited without end event
|
|
395
|
+
if (!stillRunning && !sawEnd) {
|
|
396
|
+
const raw = (result.rawOutput ?? "").trim();
|
|
397
|
+
const nonJsonLines = raw.split("\n").filter((l) => {
|
|
398
|
+
const t = l.trim();
|
|
399
|
+
return t && !(t.startsWith("{") && t.endsWith("}"));
|
|
400
|
+
});
|
|
401
|
+
const output = nonJsonLines.join("\n").trim().slice(-4096) || undefined;
|
|
402
|
+
const crashEvent = {
|
|
403
|
+
type: "agent_crashed",
|
|
404
|
+
message: "Agent process exited without completing (crashed or killed)",
|
|
405
|
+
output,
|
|
406
|
+
};
|
|
407
|
+
debugLog("session end", this.parseContext.sessionId ?? meta.sessionId, "reason=crashed", crashEvent.message);
|
|
408
|
+
await this.writeMetaIfChanged({
|
|
409
|
+
...baseMeta,
|
|
410
|
+
currentTurn: (meta.currentTurn ?? 0) + 1,
|
|
411
|
+
sawEnd: true,
|
|
412
|
+
}, meta);
|
|
413
|
+
return {
|
|
414
|
+
sessionId: result.sessionId,
|
|
415
|
+
events: [...result.events, crashEvent],
|
|
416
|
+
cursor: result.cursor,
|
|
417
|
+
running: false,
|
|
418
|
+
runPhase: "stopped",
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
const active = stillRunning && !sawEnd;
|
|
422
|
+
return {
|
|
423
|
+
sessionId: result.sessionId,
|
|
424
|
+
events: result.events,
|
|
425
|
+
cursor: result.cursor,
|
|
426
|
+
running: active,
|
|
427
|
+
runPhase: active ? "running" : "stopped",
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
buildFullCommand(spec) {
|
|
431
|
+
const quotedArgs = spec.args.map((arg) => this.quoteArg(arg));
|
|
432
|
+
const command = [spec.cmd, ...quotedArgs].join(" ");
|
|
433
|
+
// If cwd is specified, prepend a cd command
|
|
434
|
+
if (spec.cwd) {
|
|
435
|
+
const safeCwd = spec.cwd.replace(/'/g, "'\\''");
|
|
436
|
+
return `cd '${safeCwd}' && ${command}`;
|
|
437
|
+
}
|
|
438
|
+
return command;
|
|
439
|
+
}
|
|
440
|
+
quoteArg(arg) {
|
|
441
|
+
return `'${arg.replace(/'/g, "'\\''")}'`;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Write initial session metadata for reattachment.
|
|
446
|
+
*/
|
|
447
|
+
export async function writeInitialSessionMeta(sandbox, sessionDir, agentName, sessionId) {
|
|
448
|
+
if (!sandbox.executeCommand)
|
|
449
|
+
return;
|
|
450
|
+
const meta = {
|
|
451
|
+
currentTurn: 0,
|
|
452
|
+
cursor: 0,
|
|
453
|
+
provider: agentName,
|
|
454
|
+
sessionId,
|
|
455
|
+
};
|
|
456
|
+
const json = JSON.stringify(meta);
|
|
457
|
+
const b64 = Buffer.from(json, "utf8").toString("base64");
|
|
458
|
+
await sandbox.executeCommand(`mkdir -p "${sessionDir}" && echo '${b64}' | base64 -d > "${sessionDir}/meta.json"`, 10);
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Read provider name from session metadata.
|
|
462
|
+
*/
|
|
463
|
+
export async function readProviderFromMeta(sandbox, sessionDir) {
|
|
464
|
+
if (!sandbox.executeCommand)
|
|
465
|
+
return null;
|
|
466
|
+
const result = await sandbox.executeCommand(`cat "${sessionDir}/meta.json" 2>/dev/null || true`, 10);
|
|
467
|
+
const raw = (result.output ?? "").trim();
|
|
468
|
+
if (!raw)
|
|
469
|
+
return null;
|
|
470
|
+
try {
|
|
471
|
+
const o = JSON.parse(raw);
|
|
472
|
+
return {
|
|
473
|
+
provider: o.provider ?? null,
|
|
474
|
+
sessionId: o.sessionId ?? null,
|
|
475
|
+
};
|
|
476
|
+
}
|
|
477
|
+
catch {
|
|
478
|
+
return { provider: null, sessionId: null };
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/background/session.ts"],"names":[],"mappings":"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"}
|