@agentex/agent 0.0.23 → 0.0.26
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/CHANGELOG.md +338 -0
- package/LICENSE +21 -0
- package/README.md +110 -0
- package/dist/derived.d.ts +5 -3
- package/dist/derived.d.ts.map +1 -1
- package/dist/derived.js +11 -7
- package/dist/derived.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/acp/index.d.ts +1 -1
- package/dist/providers/acp/index.d.ts.map +1 -1
- package/dist/providers/acp/index.js +5 -97
- package/dist/providers/acp/index.js.map +1 -1
- package/dist/providers/acp/session.d.ts +8 -1
- package/dist/providers/acp/session.d.ts.map +1 -1
- package/dist/providers/acp/session.js +94 -0
- package/dist/providers/acp/session.js.map +1 -1
- package/dist/providers/claude/attach.d.ts +8 -0
- package/dist/providers/claude/attach.d.ts.map +1 -0
- package/dist/providers/claude/attach.js +113 -0
- package/dist/providers/claude/attach.js.map +1 -0
- package/dist/providers/claude/execute.d.ts.map +1 -1
- package/dist/providers/claude/execute.js +17 -2
- package/dist/providers/claude/execute.js.map +1 -1
- package/dist/providers/claude/goal-capability.d.ts +15 -0
- package/dist/providers/claude/goal-capability.d.ts.map +1 -0
- package/dist/providers/claude/goal-capability.js +20 -0
- package/dist/providers/claude/goal-capability.js.map +1 -0
- package/dist/providers/claude/index.d.ts.map +1 -1
- package/dist/providers/claude/index.js +8 -4
- package/dist/providers/claude/index.js.map +1 -1
- package/dist/providers/claude/session.d.ts +11 -9
- package/dist/providers/claude/session.d.ts.map +1 -1
- package/dist/providers/claude/session.js +36 -14
- package/dist/providers/claude/session.js.map +1 -1
- package/dist/providers/codex/attach.d.ts +9 -0
- package/dist/providers/codex/attach.d.ts.map +1 -0
- package/dist/providers/codex/attach.js +93 -0
- package/dist/providers/codex/attach.js.map +1 -0
- package/dist/providers/codex/execute.d.ts.map +1 -1
- package/dist/providers/codex/execute.js +17 -3
- package/dist/providers/codex/execute.js.map +1 -1
- package/dist/providers/codex/goal-capability.d.ts +13 -0
- package/dist/providers/codex/goal-capability.d.ts.map +1 -0
- package/dist/providers/codex/goal-capability.js +18 -0
- package/dist/providers/codex/goal-capability.js.map +1 -0
- package/dist/providers/codex/index.d.ts +1 -0
- package/dist/providers/codex/index.d.ts.map +1 -1
- package/dist/providers/codex/index.js +9 -6
- package/dist/providers/codex/index.js.map +1 -1
- package/dist/providers/codex/session.d.ts +11 -7
- package/dist/providers/codex/session.d.ts.map +1 -1
- package/dist/providers/codex/session.js +37 -12
- package/dist/providers/codex/session.js.map +1 -1
- package/dist/providers/codex/transcript-normalize.d.ts +28 -0
- package/dist/providers/codex/transcript-normalize.d.ts.map +1 -0
- package/dist/providers/codex/transcript-normalize.js +191 -0
- package/dist/providers/codex/transcript-normalize.js.map +1 -0
- package/dist/providers/cursor/index.d.ts.map +1 -1
- package/dist/providers/cursor/index.js +2 -2
- package/dist/providers/cursor/index.js.map +1 -1
- package/dist/providers/openclaw/index.d.ts.map +1 -1
- package/dist/providers/openclaw/index.js +2 -2
- package/dist/providers/openclaw/index.js.map +1 -1
- package/dist/providers/opencode/index.d.ts.map +1 -1
- package/dist/providers/opencode/index.js +3 -5
- package/dist/providers/opencode/index.js.map +1 -1
- package/dist/providers/pi/index.d.ts.map +1 -1
- package/dist/providers/pi/index.js +3 -5
- package/dist/providers/pi/index.js.map +1 -1
- package/dist/providers/process/index.d.ts.map +1 -1
- package/dist/providers/process/index.js +2 -2
- package/dist/providers/process/index.js.map +1 -1
- package/dist/registry.d.ts +0 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +0 -4
- package/dist/registry.js.map +1 -1
- package/dist/sessions/index.d.ts +3 -0
- package/dist/sessions/index.d.ts.map +1 -0
- package/dist/sessions/index.js +2 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/record.d.ts +43 -0
- package/dist/sessions/record.d.ts.map +1 -0
- package/dist/sessions/record.js +85 -0
- package/dist/sessions/record.js.map +1 -0
- package/dist/types.d.ts +176 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/endpoint.d.ts +38 -0
- package/dist/utils/endpoint.d.ts.map +1 -0
- package/dist/utils/endpoint.js +151 -0
- package/dist/utils/endpoint.js.map +1 -0
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/env.js +5 -1
- package/dist/utils/env.js.map +1 -1
- package/dist/utils/uuid.d.ts +7 -1
- package/dist/utils/uuid.d.ts.map +1 -1
- package/dist/utils/uuid.js +21 -1
- package/dist/utils/uuid.js.map +1 -1
- package/package.json +64 -7
- package/src/derived.ts +311 -0
- package/src/goals/controller.ts +442 -0
- package/src/goals/index.ts +21 -0
- package/src/goals/normalize.ts +173 -0
- package/src/goals/sentinel.ts +90 -0
- package/src/index.ts +270 -0
- package/src/providers/_shared/http-agent.ts +304 -0
- package/src/providers/acp/index.ts +103 -0
- package/src/providers/acp/parse.ts +131 -0
- package/src/providers/acp/session.ts +744 -0
- package/src/providers/claude/attach.ts +147 -0
- package/src/providers/claude/codec.ts +43 -0
- package/src/providers/claude/execute.ts +300 -0
- package/src/providers/claude/goal-capability.ts +21 -0
- package/src/providers/claude/index.ts +72 -0
- package/src/providers/claude/mcp.ts +82 -0
- package/src/providers/claude/parse.ts +824 -0
- package/src/providers/claude/session.ts +1192 -0
- package/src/providers/claude/transcript.ts +555 -0
- package/src/providers/codex/attach.ts +123 -0
- package/src/providers/codex/codec.ts +50 -0
- package/src/providers/codex/execute.ts +337 -0
- package/src/providers/codex/goal-capability.ts +19 -0
- package/src/providers/codex/index.ts +57 -0
- package/src/providers/codex/modes.ts +159 -0
- package/src/providers/codex/parse.ts +691 -0
- package/src/providers/codex/plan-mode.ts +49 -0
- package/src/providers/codex/session.ts +1287 -0
- package/src/providers/codex/transcript-normalize.ts +197 -0
- package/src/providers/codex/transcript.ts +487 -0
- package/src/providers/codex/usage-scanner.ts +178 -0
- package/src/providers/copilot/index.ts +19 -0
- package/src/providers/cursor/codec.ts +44 -0
- package/src/providers/cursor/execute.ts +271 -0
- package/src/providers/cursor/index.ts +25 -0
- package/src/providers/cursor/parse.ts +288 -0
- package/src/providers/gemini/index.ts +21 -0
- package/src/providers/openclaw/codec.ts +40 -0
- package/src/providers/openclaw/execute.ts +19 -0
- package/src/providers/openclaw/index.ts +29 -0
- package/src/providers/opencode/codec.ts +50 -0
- package/src/providers/opencode/event-parse.ts +141 -0
- package/src/providers/opencode/execute.ts +251 -0
- package/src/providers/opencode/http-session.ts +427 -0
- package/src/providers/opencode/index.ts +30 -0
- package/src/providers/opencode/parse.ts +203 -0
- package/src/providers/opencode/server.ts +0 -0
- package/src/providers/pi/codec.ts +44 -0
- package/src/providers/pi/execute.ts +297 -0
- package/src/providers/pi/index.ts +30 -0
- package/src/providers/pi/parse.ts +231 -0
- package/src/providers/pi/session.ts +381 -0
- package/src/providers/process/execute.ts +148 -0
- package/src/providers/process/index.ts +52 -0
- package/src/registry.ts +40 -0
- package/src/sessions/index.ts +8 -0
- package/src/sessions/record.ts +108 -0
- package/src/types.ts +1638 -0
- package/src/utils/ask-user-question.ts +57 -0
- package/src/utils/auth.ts +661 -0
- package/src/utils/binary.ts +179 -0
- package/src/utils/endpoint.ts +172 -0
- package/src/utils/env.ts +63 -0
- package/src/utils/execute-all.ts +68 -0
- package/src/utils/exit-plan-mode.ts +40 -0
- package/src/utils/instructions.ts +427 -0
- package/src/utils/process.ts +223 -0
- package/src/utils/runtime-config.ts +100 -0
- package/src/utils/runtime-homes.ts +49 -0
- package/src/utils/skill-commands.ts +493 -0
- package/src/utils/skills.ts +500 -0
- package/src/utils/template.ts +16 -0
- package/src/utils/tool-names.ts +51 -0
- package/src/utils/uuid.ts +21 -0
- package/src/utils/workspace.ts +156 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalize a Codex on-disk transcript line into `StreamEvent`s — the library
|
|
3
|
+
* absorption of Flow's `codex-on-disk.ts` map/drop table, so `catchUp` replay
|
|
4
|
+
* yields the same event vocabulary as a live `onEvent` stream.
|
|
5
|
+
*
|
|
6
|
+
* Coverage (wrapped ≥0.10 rollout format; `line.payload` present):
|
|
7
|
+
*
|
|
8
|
+
* response_item / message (role="assistant") → assistant
|
|
9
|
+
* response_item / reasoning → thinking
|
|
10
|
+
* response_item / function_call → tool_call
|
|
11
|
+
* response_item / function_call_output → tool_result
|
|
12
|
+
* event_msg / task_complete → result (completed)
|
|
13
|
+
*
|
|
14
|
+
* Everything else — `session_meta`, `turn_context`, `task_started`,
|
|
15
|
+
* `token_count`, `agent_message`/`agent_reasoning` duplicates, user/developer
|
|
16
|
+
* messages, unwrapped legacy lines, unknown types — yields `[]`.
|
|
17
|
+
*
|
|
18
|
+
* The on-disk vocabulary is Codex-internal and version-shifting, so every field
|
|
19
|
+
* is read defensively and a weird line NEVER throws — it returns `[]`. Codex
|
|
20
|
+
* emits no per-line wire id, so `eventId`/`turnId` are null (hosts gate replay
|
|
21
|
+
* dedup on their own "not currently running" flag; see spec §9.7).
|
|
22
|
+
*/
|
|
23
|
+
export function codexLineToStreamEvents(line, ctx) {
|
|
24
|
+
try {
|
|
25
|
+
return mapLine(line, ctx.sessionId);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// Guardrail §9.5: never throw on a weird line.
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function mapLine(line, sessionId) {
|
|
33
|
+
const payload = line.payload;
|
|
34
|
+
// Flow's authoritative mapping only handles the wrapped format (payload
|
|
35
|
+
// present). Unwrapped legacy lines carry no reliable surface here → drop.
|
|
36
|
+
if (!payload)
|
|
37
|
+
return [];
|
|
38
|
+
const base = {
|
|
39
|
+
// "timestamp from the line or epoch-null fallback" (spec §5.4).
|
|
40
|
+
timestamp: line.timestamp ?? new Date(0).toISOString(),
|
|
41
|
+
providerType: "codex",
|
|
42
|
+
sessionId,
|
|
43
|
+
messageId: null,
|
|
44
|
+
eventId: null,
|
|
45
|
+
turnId: null,
|
|
46
|
+
parentToolCallId: null,
|
|
47
|
+
raw: line.raw,
|
|
48
|
+
};
|
|
49
|
+
const innerType = typeof payload["type"] === "string" ? payload["type"] : null;
|
|
50
|
+
if (line.type === "response_item") {
|
|
51
|
+
if (innerType === "message") {
|
|
52
|
+
// Only assistant messages surface; developer/user messages are
|
|
53
|
+
// system-prompt material we don't replay.
|
|
54
|
+
if (payload["role"] !== "assistant")
|
|
55
|
+
return [];
|
|
56
|
+
return [{ type: "assistant", text: extractMessageText(payload["content"]) ?? "", ...base }];
|
|
57
|
+
}
|
|
58
|
+
if (innerType === "reasoning") {
|
|
59
|
+
// Reasoning content may be empty / encrypted out-of-band; we still emit a
|
|
60
|
+
// `thinking` event (matching the live parser) — text is "" when the
|
|
61
|
+
// summary carries none.
|
|
62
|
+
return [{ type: "thinking", text: extractReasoningSummary(payload["summary"]) ?? "", ...base }];
|
|
63
|
+
}
|
|
64
|
+
if (innerType === "function_call") {
|
|
65
|
+
return [
|
|
66
|
+
{
|
|
67
|
+
type: "tool_call",
|
|
68
|
+
toolCallId: str(payload["call_id"]) ?? str(payload["id"]),
|
|
69
|
+
name: str(payload["name"]) ?? "function_call",
|
|
70
|
+
input: parseToolArguments(payload["arguments"]) ?? str(payload["arguments"]) ?? null,
|
|
71
|
+
...base,
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
if (innerType === "function_call_output") {
|
|
76
|
+
return [
|
|
77
|
+
{
|
|
78
|
+
type: "tool_result",
|
|
79
|
+
toolCallId: str(payload["call_id"]),
|
|
80
|
+
// On-disk output carries no reliable name/error/exit signal; hosts
|
|
81
|
+
// correlate the name via the paired tool_call's call_id.
|
|
82
|
+
toolName: null,
|
|
83
|
+
content: extractOutputText(payload["output"]),
|
|
84
|
+
isError: false,
|
|
85
|
+
exitCode: null,
|
|
86
|
+
...base,
|
|
87
|
+
},
|
|
88
|
+
];
|
|
89
|
+
}
|
|
90
|
+
return [];
|
|
91
|
+
}
|
|
92
|
+
if (line.type === "event_msg") {
|
|
93
|
+
if (innerType === "task_complete") {
|
|
94
|
+
return [
|
|
95
|
+
{
|
|
96
|
+
type: "result",
|
|
97
|
+
text: str(payload["last_agent_message"]) ?? "",
|
|
98
|
+
costUsd: null,
|
|
99
|
+
isError: false,
|
|
100
|
+
stopReason: null,
|
|
101
|
+
terminalReason: "completed",
|
|
102
|
+
numTurns: null,
|
|
103
|
+
durationMs: null,
|
|
104
|
+
...base,
|
|
105
|
+
},
|
|
106
|
+
];
|
|
107
|
+
}
|
|
108
|
+
return [];
|
|
109
|
+
}
|
|
110
|
+
return [];
|
|
111
|
+
}
|
|
112
|
+
/** Non-empty string or null. */
|
|
113
|
+
function str(v) {
|
|
114
|
+
return typeof v === "string" && v.length > 0 ? v : null;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* `response_item/message.content` is an array of typed parts (`output_text`
|
|
118
|
+
* for assistant replies). Concat the text parts with a blank-line separator.
|
|
119
|
+
*/
|
|
120
|
+
function extractMessageText(content) {
|
|
121
|
+
if (!Array.isArray(content))
|
|
122
|
+
return null;
|
|
123
|
+
const parts = [];
|
|
124
|
+
for (const entry of content) {
|
|
125
|
+
if (typeof entry !== "object" || entry === null)
|
|
126
|
+
continue;
|
|
127
|
+
const block = entry;
|
|
128
|
+
if (typeof block.text === "string" && block.text.length > 0)
|
|
129
|
+
parts.push(block.text);
|
|
130
|
+
}
|
|
131
|
+
return parts.length > 0 ? parts.join("\n\n") : null;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* `response_item/reasoning.summary` is an array of `{type:"summary_text",
|
|
135
|
+
* text}` blocks; `content` is usually null and `encrypted_content` opaque, so
|
|
136
|
+
* the summary is the only readable representation.
|
|
137
|
+
*/
|
|
138
|
+
function extractReasoningSummary(summary) {
|
|
139
|
+
if (!Array.isArray(summary))
|
|
140
|
+
return null;
|
|
141
|
+
const parts = [];
|
|
142
|
+
for (const entry of summary) {
|
|
143
|
+
if (typeof entry !== "object" || entry === null)
|
|
144
|
+
continue;
|
|
145
|
+
const block = entry;
|
|
146
|
+
if (typeof block.text === "string" && block.text.length > 0)
|
|
147
|
+
parts.push(block.text);
|
|
148
|
+
}
|
|
149
|
+
return parts.length > 0 ? parts.join("\n\n") : null;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* `function_call_output.output` is usually a string, but some versions wrap it
|
|
153
|
+
* as `{ output: "...", metadata: {...} }`. Extract the readable text; fall back
|
|
154
|
+
* to a JSON dump so nothing is silently lost. Returns "" when unreadable
|
|
155
|
+
* (`tool_result.content` is a required string).
|
|
156
|
+
*/
|
|
157
|
+
function extractOutputText(output) {
|
|
158
|
+
if (typeof output === "string")
|
|
159
|
+
return output;
|
|
160
|
+
if (output && typeof output === "object" && !Array.isArray(output)) {
|
|
161
|
+
const inner = output["output"];
|
|
162
|
+
if (typeof inner === "string")
|
|
163
|
+
return inner;
|
|
164
|
+
try {
|
|
165
|
+
return JSON.stringify(output);
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
return "";
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return "";
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* `function_call.arguments` is a JSON-encoded string (OpenAI function-call wire
|
|
175
|
+
* format). Parse to an object; tolerate malformed input (return null so the
|
|
176
|
+
* caller falls back to the raw string).
|
|
177
|
+
*/
|
|
178
|
+
function parseToolArguments(args) {
|
|
179
|
+
if (typeof args !== "string" || args.length === 0)
|
|
180
|
+
return null;
|
|
181
|
+
try {
|
|
182
|
+
const parsed = JSON.parse(args);
|
|
183
|
+
return typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)
|
|
184
|
+
? parsed
|
|
185
|
+
: null;
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=transcript-normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript-normalize.js","sourceRoot":"","sources":["../../../src/providers/codex/transcript-normalize.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/cursor/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/cursor/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIrD,eAAO,MAAM,cAAc,EAAE,cAoB5B,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { executeCursorProvider } from "./execute.js";
|
|
2
1
|
import { cursorSessionCodec } from "./codec.js";
|
|
3
2
|
import { resolveAuthForProvider } from "../../utils/auth.js";
|
|
4
3
|
export const cursorProvider = {
|
|
@@ -17,7 +16,8 @@ export const cursorProvider = {
|
|
|
17
16
|
stopTask: false,
|
|
18
17
|
modes: false,
|
|
19
18
|
},
|
|
20
|
-
execute
|
|
19
|
+
// execute.ts loads lazily on first use.
|
|
20
|
+
execute: async (ctx) => (await import("./execute.js")).executeCursorProvider(ctx),
|
|
21
21
|
resolveAuth: (ctx) => resolveAuthForProvider("cursor", ctx),
|
|
22
22
|
sessionCodec: cursorSessionCodec,
|
|
23
23
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/cursor/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/cursor/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,IAAI,EAAE,QAAQ;IACd,YAAY,EAAE;QACZ,QAAQ,EAAE,KAAK;QACf,cAAc,EAAE,KAAK;QACrB,YAAY,EAAE,KAAK;QACnB,GAAG,EAAE,KAAK;QACV,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,KAAK;QACf,cAAc,EAAE,KAAK;QACrB,mBAAmB,EAAE,KAAK;QAC1B,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,KAAK;KACb;IACD,wCAAwC;IACxC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC;IACjF,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,sBAAsB,CAAC,QAAQ,EAAE,GAAG,CAAC;IAC3D,YAAY,EAAE,kBAAkB;CACjC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/openclaw/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/openclaw/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,eAAO,MAAM,gBAAgB,EAAE,cAyB9B,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { executeOpenclawProvider } from "./execute.js";
|
|
2
1
|
import { openclawSessionCodec } from "./codec.js";
|
|
3
2
|
export const openclawProvider = {
|
|
4
3
|
type: "openclaw",
|
|
@@ -16,7 +15,8 @@ export const openclawProvider = {
|
|
|
16
15
|
stopTask: false,
|
|
17
16
|
modes: false,
|
|
18
17
|
},
|
|
19
|
-
execute
|
|
18
|
+
// execute.ts loads lazily on first use.
|
|
19
|
+
execute: async (ctx) => (await import("./execute.js")).executeOpenclawProvider(ctx),
|
|
20
20
|
resolveAuth: async () => ({
|
|
21
21
|
providerType: "openclaw",
|
|
22
22
|
binary: { installed: true }, // openclaw is a gateway URL, not a local binary
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/openclaw/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/openclaw/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAC9C,IAAI,EAAE,UAAU;IAChB,YAAY,EAAE;QACZ,QAAQ,EAAE,KAAK;QACf,cAAc,EAAE,KAAK;QACrB,YAAY,EAAE,KAAK;QACnB,GAAG,EAAE,KAAK;QACV,MAAM,EAAE,KAAK;QACb,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;QAChB,QAAQ,EAAE,KAAK;QACf,cAAc,EAAE,KAAK;QACrB,mBAAmB,EAAE,KAAK;QAC1B,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,KAAK;KACb;IACD,wCAAwC;IACxC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC;IACnF,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACxB,YAAY,EAAE,UAAU;QACxB,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,gDAAgD;QAC7E,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,YAAY;KACrB,CAAC;IACF,YAAY,EAAE,oBAAoB;CACnC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/opencode/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAgC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/opencode/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAgC,MAAM,gBAAgB,CAAC;AAKnF,eAAO,MAAM,gBAAgB,EAAE,cAwB9B,CAAC"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { executeOpenCodeProvider } from "./execute.js";
|
|
2
1
|
import { opencodeSessionCodec } from "./codec.js";
|
|
3
2
|
import { resolveAuthForProvider } from "../../utils/auth.js";
|
|
4
|
-
import { createOpenCodeSession } from "./http-session.js";
|
|
5
3
|
import { EMULATED_GOAL_CAPABILITY } from "../../goals/index.js";
|
|
6
4
|
export const opencodeProvider = {
|
|
7
5
|
type: "opencode",
|
|
@@ -21,9 +19,9 @@ export const opencodeProvider = {
|
|
|
21
19
|
goals: EMULATED_GOAL_CAPABILITY,
|
|
22
20
|
},
|
|
23
21
|
// One-shot `opencode run` for execute(); live HTTP/SSE sessions via the
|
|
24
|
-
// `opencode serve` daemon for createSession().
|
|
25
|
-
execute: executeOpenCodeProvider,
|
|
26
|
-
createSession: (ctx) => createOpenCodeSession(ctx),
|
|
22
|
+
// `opencode serve` daemon for createSession(). Both load lazily on first use.
|
|
23
|
+
execute: async (ctx) => (await import("./execute.js")).executeOpenCodeProvider(ctx),
|
|
24
|
+
createSession: async (ctx) => (await import("./http-session.js")).createOpenCodeSession(ctx),
|
|
27
25
|
resolveAuth: (ctx) => resolveAuthForProvider("opencode", ctx),
|
|
28
26
|
sessionCodec: opencodeSessionCodec,
|
|
29
27
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/opencode/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/opencode/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAC9C,IAAI,EAAE,UAAU;IAChB,YAAY,EAAE;QACZ,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE,KAAK;QACrB,YAAY,EAAE,KAAK;QACnB,GAAG,EAAE,KAAK;QACV,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,KAAK;QACf,cAAc,EAAE,KAAK;QACrB,mBAAmB,EAAE,KAAK;QAC1B,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,wBAAwB;KAChC;IACD,wEAAwE;IACxE,8EAA8E;IAC9E,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,uBAAuB,CAAC,GAAG,CAAC;IACnF,aAAa,EAAE,KAAK,EAAE,GAAmB,EAAyB,EAAE,CAClE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC;IAChE,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,sBAAsB,CAAC,UAAU,EAAE,GAAG,CAAC;IAC7D,YAAY,EAAE,oBAAoB;CACnC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/pi/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAgC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/pi/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAgC,MAAM,gBAAgB,CAAC;AAKnF,eAAO,MAAM,UAAU,EAAE,cAwBxB,CAAC"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { executePiProvider } from "./execute.js";
|
|
2
1
|
import { piSessionCodec } from "./codec.js";
|
|
3
2
|
import { resolveAuthForProvider } from "../../utils/auth.js";
|
|
4
|
-
import { createPiSession } from "./session.js";
|
|
5
3
|
import { EMULATED_GOAL_CAPABILITY } from "../../goals/index.js";
|
|
6
4
|
export const piProvider = {
|
|
7
5
|
type: "pi",
|
|
@@ -21,9 +19,9 @@ export const piProvider = {
|
|
|
21
19
|
goals: EMULATED_GOAL_CAPABILITY,
|
|
22
20
|
},
|
|
23
21
|
// One-shot `pi --mode rpc` for execute(); a persistent `pi --mode rpc` process
|
|
24
|
-
// across turns for createSession().
|
|
25
|
-
execute: executePiProvider,
|
|
26
|
-
createSession: (ctx) => createPiSession(ctx),
|
|
22
|
+
// across turns for createSession(). Both load lazily on first use.
|
|
23
|
+
execute: async (ctx) => (await import("./execute.js")).executePiProvider(ctx),
|
|
24
|
+
createSession: async (ctx) => (await import("./session.js")).createPiSession(ctx),
|
|
27
25
|
resolveAuth: (ctx) => resolveAuthForProvider("pi", ctx),
|
|
28
26
|
sessionCodec: piSessionCodec,
|
|
29
27
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/pi/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/pi/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,CAAC,MAAM,UAAU,GAAmB;IACxC,IAAI,EAAE,IAAI;IACV,YAAY,EAAE;QACZ,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE,KAAK;QACrB,YAAY,EAAE,KAAK;QACnB,GAAG,EAAE,KAAK;QACV,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,KAAK;QACf,cAAc,EAAE,KAAK;QACrB,mBAAmB,EAAE,KAAK;QAC1B,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,wBAAwB;KAChC;IACD,+EAA+E;IAC/E,mEAAmE;IACnE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC;IAC7E,aAAa,EAAE,KAAK,EAAE,GAAmB,EAAyB,EAAE,CAClE,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC;IACrD,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC;IACvD,YAAY,EAAE,cAAc;CAC7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/process/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkC,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/process/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkC,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAgCrF,eAAO,MAAM,eAAe,EAAE,cAmB7B,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { executeProcessProvider } from "./execute.js";
|
|
2
1
|
import { ensureCommandResolvable } from "../../utils/binary.js";
|
|
3
2
|
async function resolveProcessAuth(ctx) {
|
|
4
3
|
// Process is a generic runner — the "binary" is user-supplied via config.command.
|
|
@@ -45,7 +44,8 @@ export const processProvider = {
|
|
|
45
44
|
stopTask: false,
|
|
46
45
|
modes: false,
|
|
47
46
|
},
|
|
48
|
-
execute
|
|
47
|
+
// execute.ts loads lazily on first use.
|
|
48
|
+
execute: async (ctx) => (await import("./execute.js")).executeProcessProvider(ctx),
|
|
49
49
|
resolveAuth: resolveProcessAuth,
|
|
50
50
|
};
|
|
51
51
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/process/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/process/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,KAAK,UAAU,kBAAkB,CAAC,GAAwB;IACxD,kFAAkF;IAClF,gFAAgF;IAChF,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;QAClB,OAAO;YACL,YAAY,EAAE,SAAS;YACvB,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,iEAAiE,EAAE;YACtG,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,YAAY;SACrB,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO;YACL,YAAY,EAAE,SAAS;YACvB,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,GAAG,EAAE;YACvD,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,YAAY;SACrB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,YAAY,EAAE,SAAS;YACvB,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YACrF,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,YAAY;SACrB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAmB;IAC7C,IAAI,EAAE,SAAS;IACf,YAAY,EAAE;QACZ,QAAQ,EAAE,KAAK;QACf,cAAc,EAAE,KAAK;QACrB,YAAY,EAAE,KAAK;QACnB,GAAG,EAAE,KAAK;QACV,MAAM,EAAE,KAAK;QACb,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,KAAK;QACf,cAAc,EAAE,KAAK;QACrB,mBAAmB,EAAE,KAAK;QAC1B,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,KAAK;KACb;IACD,wCAAwC;IACxC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC;IAClF,WAAW,EAAE,kBAAkB;CAChC,CAAC"}
|
package/dist/registry.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { ProviderModule } from "./types.js";
|
|
2
|
-
import "./providers/acp/index.js";
|
|
3
2
|
export declare function getProvider(type: string): ProviderModule;
|
|
4
3
|
export declare function listProviders(): string[];
|
|
5
4
|
export declare function registerProvider(provider: ProviderModule): void;
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAwBjD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAOxD;AAED,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAE/D"}
|
package/dist/registry.js
CHANGED
|
@@ -7,10 +7,6 @@ import { cursorProvider } from "./providers/cursor/index.js";
|
|
|
7
7
|
import { opencodeProvider } from "./providers/opencode/index.js";
|
|
8
8
|
import { piProvider } from "./providers/pi/index.js";
|
|
9
9
|
import { copilotProvider } from "./providers/copilot/index.js";
|
|
10
|
-
// Side-effect import: registers the ACP factory so `loadProvidersFromConfig`
|
|
11
|
-
// can build `extends: "acp"` providers. Cheap — the ACP SDK is only loaded when
|
|
12
|
-
// an ACP session actually runs.
|
|
13
|
-
import "./providers/acp/index.js";
|
|
14
10
|
const providers = new Map();
|
|
15
11
|
// Pre-register built-in providers
|
|
16
12
|
providers.set("claude", claudeProvider);
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;AAEpD,kCAAkC;AAClC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AACxC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACtC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;AAC5C,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAC1C,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AACxC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AACxC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;AAC5C,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAChC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAE1C,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,iBAAiB,SAAS,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAwB;IACvD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sessions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,EACnB,eAAe,EACf,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sessions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,EACnB,eAAe,EACf,mBAAmB,GACpB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { SessionRecord } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Current `SessionRecord.version`. Bumped only on a breaking shape change;
|
|
4
|
+
* `isSessionRecord` / `assertSessionRecord` validate against it so a host can
|
|
5
|
+
* detect a record written by an incompatible library version.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SESSION_RECORD_VERSION: 1;
|
|
8
|
+
/**
|
|
9
|
+
* Thrown when a value that should be a `SessionRecord` is malformed. Branch on
|
|
10
|
+
* it; don't parse. Mirrors `MalformedProviderConfigError` — `path` names the
|
|
11
|
+
* offending field when known.
|
|
12
|
+
*/
|
|
13
|
+
export declare class MalformedSessionRecordError extends Error {
|
|
14
|
+
readonly path?: string;
|
|
15
|
+
constructor(message: string, path?: string);
|
|
16
|
+
}
|
|
17
|
+
/** Inputs for {@link createSessionRecord}. */
|
|
18
|
+
export interface CreateSessionRecordInput {
|
|
19
|
+
/** Provider type (registry key) that owns this session. */
|
|
20
|
+
providerType: string;
|
|
21
|
+
/** Codec-serialized session params (e.g. `{sessionId, cwd?}`). */
|
|
22
|
+
params: Record<string, unknown>;
|
|
23
|
+
/** Working directory the session ran in — transcript-lookup hint. */
|
|
24
|
+
cwd?: string | null;
|
|
25
|
+
/** Human-facing id (`sessionCodec.getDisplayId`), for UIs/logs. */
|
|
26
|
+
displayId?: string | null;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Build a `SessionRecord`, stamping `version` and a fresh `updatedAt`. This is
|
|
30
|
+
* the one blessed way to mint a record outside of `session.describe()`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function createSessionRecord(input: CreateSessionRecordInput): SessionRecord;
|
|
33
|
+
/**
|
|
34
|
+
* Structural guard for a `SessionRecord`. Tolerant of extra keys (a host may
|
|
35
|
+
* persist the record inside a larger row and read it back). Does not mutate.
|
|
36
|
+
*/
|
|
37
|
+
export declare function isSessionRecord(v: unknown): v is SessionRecord;
|
|
38
|
+
/**
|
|
39
|
+
* Assert `v` is a well-formed `SessionRecord`, narrowing the type. Throws
|
|
40
|
+
* `MalformedSessionRecordError` naming the first offending field.
|
|
41
|
+
*/
|
|
42
|
+
export declare function assertSessionRecord(v: unknown): asserts v is SessionRecord;
|
|
43
|
+
//# sourceMappingURL=record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/sessions/record.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAG,CAAU,CAAC;AAEjD;;;;GAIG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBACX,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAK3C;AAED,8CAA8C;AAC9C,MAAM,WAAW,wBAAwB;IACvC,2DAA2D;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,qEAAqE;IACrE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,aAAa,CASlF;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,aAAa,CAS9D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,aAAa,CAkC1E"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Current `SessionRecord.version`. Bumped only on a breaking shape change;
|
|
3
|
+
* `isSessionRecord` / `assertSessionRecord` validate against it so a host can
|
|
4
|
+
* detect a record written by an incompatible library version.
|
|
5
|
+
*/
|
|
6
|
+
export const SESSION_RECORD_VERSION = 1;
|
|
7
|
+
/**
|
|
8
|
+
* Thrown when a value that should be a `SessionRecord` is malformed. Branch on
|
|
9
|
+
* it; don't parse. Mirrors `MalformedProviderConfigError` — `path` names the
|
|
10
|
+
* offending field when known.
|
|
11
|
+
*/
|
|
12
|
+
export class MalformedSessionRecordError extends Error {
|
|
13
|
+
path;
|
|
14
|
+
constructor(message, path) {
|
|
15
|
+
super(message);
|
|
16
|
+
this.name = "MalformedSessionRecordError";
|
|
17
|
+
this.path = path;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Build a `SessionRecord`, stamping `version` and a fresh `updatedAt`. This is
|
|
22
|
+
* the one blessed way to mint a record outside of `session.describe()`.
|
|
23
|
+
*/
|
|
24
|
+
export function createSessionRecord(input) {
|
|
25
|
+
return {
|
|
26
|
+
version: SESSION_RECORD_VERSION,
|
|
27
|
+
providerType: input.providerType,
|
|
28
|
+
params: input.params,
|
|
29
|
+
cwd: input.cwd ?? null,
|
|
30
|
+
displayId: input.displayId ?? null,
|
|
31
|
+
updatedAt: new Date().toISOString(),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function isPlainObject(v) {
|
|
35
|
+
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Structural guard for a `SessionRecord`. Tolerant of extra keys (a host may
|
|
39
|
+
* persist the record inside a larger row and read it back). Does not mutate.
|
|
40
|
+
*/
|
|
41
|
+
export function isSessionRecord(v) {
|
|
42
|
+
if (!isPlainObject(v))
|
|
43
|
+
return false;
|
|
44
|
+
if (v["version"] !== SESSION_RECORD_VERSION)
|
|
45
|
+
return false;
|
|
46
|
+
if (typeof v["providerType"] !== "string" || v["providerType"].length === 0)
|
|
47
|
+
return false;
|
|
48
|
+
if (!isPlainObject(v["params"]))
|
|
49
|
+
return false;
|
|
50
|
+
if (v["cwd"] !== null && typeof v["cwd"] !== "string")
|
|
51
|
+
return false;
|
|
52
|
+
if (v["displayId"] !== null && typeof v["displayId"] !== "string")
|
|
53
|
+
return false;
|
|
54
|
+
if (typeof v["updatedAt"] !== "string")
|
|
55
|
+
return false;
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Assert `v` is a well-formed `SessionRecord`, narrowing the type. Throws
|
|
60
|
+
* `MalformedSessionRecordError` naming the first offending field.
|
|
61
|
+
*/
|
|
62
|
+
export function assertSessionRecord(v) {
|
|
63
|
+
if (!isPlainObject(v)) {
|
|
64
|
+
throw new MalformedSessionRecordError("session record must be an object");
|
|
65
|
+
}
|
|
66
|
+
if (v["version"] !== SESSION_RECORD_VERSION) {
|
|
67
|
+
throw new MalformedSessionRecordError(`session record version must be ${SESSION_RECORD_VERSION}; got ${JSON.stringify(v["version"])}`, "version");
|
|
68
|
+
}
|
|
69
|
+
if (typeof v["providerType"] !== "string" || v["providerType"].length === 0) {
|
|
70
|
+
throw new MalformedSessionRecordError("session record providerType must be a non-empty string", "providerType");
|
|
71
|
+
}
|
|
72
|
+
if (!isPlainObject(v["params"])) {
|
|
73
|
+
throw new MalformedSessionRecordError("session record params must be an object", "params");
|
|
74
|
+
}
|
|
75
|
+
if (v["cwd"] !== null && typeof v["cwd"] !== "string") {
|
|
76
|
+
throw new MalformedSessionRecordError("session record cwd must be a string or null", "cwd");
|
|
77
|
+
}
|
|
78
|
+
if (v["displayId"] !== null && typeof v["displayId"] !== "string") {
|
|
79
|
+
throw new MalformedSessionRecordError("session record displayId must be a string or null", "displayId");
|
|
80
|
+
}
|
|
81
|
+
if (typeof v["updatedAt"] !== "string") {
|
|
82
|
+
throw new MalformedSessionRecordError("session record updatedAt must be an ISO timestamp string", "updatedAt");
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=record.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/sessions/record.ts"],"names":[],"mappings":"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"}
|