@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.
Files changed (177) hide show
  1. package/CHANGELOG.md +338 -0
  2. package/LICENSE +21 -0
  3. package/README.md +110 -0
  4. package/dist/derived.d.ts +5 -3
  5. package/dist/derived.d.ts.map +1 -1
  6. package/dist/derived.js +11 -7
  7. package/dist/derived.js.map +1 -1
  8. package/dist/index.d.ts +7 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +4 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/providers/acp/index.d.ts +1 -1
  13. package/dist/providers/acp/index.d.ts.map +1 -1
  14. package/dist/providers/acp/index.js +5 -97
  15. package/dist/providers/acp/index.js.map +1 -1
  16. package/dist/providers/acp/session.d.ts +8 -1
  17. package/dist/providers/acp/session.d.ts.map +1 -1
  18. package/dist/providers/acp/session.js +94 -0
  19. package/dist/providers/acp/session.js.map +1 -1
  20. package/dist/providers/claude/attach.d.ts +8 -0
  21. package/dist/providers/claude/attach.d.ts.map +1 -0
  22. package/dist/providers/claude/attach.js +113 -0
  23. package/dist/providers/claude/attach.js.map +1 -0
  24. package/dist/providers/claude/execute.d.ts.map +1 -1
  25. package/dist/providers/claude/execute.js +17 -2
  26. package/dist/providers/claude/execute.js.map +1 -1
  27. package/dist/providers/claude/goal-capability.d.ts +15 -0
  28. package/dist/providers/claude/goal-capability.d.ts.map +1 -0
  29. package/dist/providers/claude/goal-capability.js +20 -0
  30. package/dist/providers/claude/goal-capability.js.map +1 -0
  31. package/dist/providers/claude/index.d.ts.map +1 -1
  32. package/dist/providers/claude/index.js +8 -4
  33. package/dist/providers/claude/index.js.map +1 -1
  34. package/dist/providers/claude/session.d.ts +11 -9
  35. package/dist/providers/claude/session.d.ts.map +1 -1
  36. package/dist/providers/claude/session.js +36 -14
  37. package/dist/providers/claude/session.js.map +1 -1
  38. package/dist/providers/codex/attach.d.ts +9 -0
  39. package/dist/providers/codex/attach.d.ts.map +1 -0
  40. package/dist/providers/codex/attach.js +93 -0
  41. package/dist/providers/codex/attach.js.map +1 -0
  42. package/dist/providers/codex/execute.d.ts.map +1 -1
  43. package/dist/providers/codex/execute.js +17 -3
  44. package/dist/providers/codex/execute.js.map +1 -1
  45. package/dist/providers/codex/goal-capability.d.ts +13 -0
  46. package/dist/providers/codex/goal-capability.d.ts.map +1 -0
  47. package/dist/providers/codex/goal-capability.js +18 -0
  48. package/dist/providers/codex/goal-capability.js.map +1 -0
  49. package/dist/providers/codex/index.d.ts +1 -0
  50. package/dist/providers/codex/index.d.ts.map +1 -1
  51. package/dist/providers/codex/index.js +9 -6
  52. package/dist/providers/codex/index.js.map +1 -1
  53. package/dist/providers/codex/session.d.ts +11 -7
  54. package/dist/providers/codex/session.d.ts.map +1 -1
  55. package/dist/providers/codex/session.js +37 -12
  56. package/dist/providers/codex/session.js.map +1 -1
  57. package/dist/providers/codex/transcript-normalize.d.ts +28 -0
  58. package/dist/providers/codex/transcript-normalize.d.ts.map +1 -0
  59. package/dist/providers/codex/transcript-normalize.js +191 -0
  60. package/dist/providers/codex/transcript-normalize.js.map +1 -0
  61. package/dist/providers/cursor/index.d.ts.map +1 -1
  62. package/dist/providers/cursor/index.js +2 -2
  63. package/dist/providers/cursor/index.js.map +1 -1
  64. package/dist/providers/openclaw/index.d.ts.map +1 -1
  65. package/dist/providers/openclaw/index.js +2 -2
  66. package/dist/providers/openclaw/index.js.map +1 -1
  67. package/dist/providers/opencode/index.d.ts.map +1 -1
  68. package/dist/providers/opencode/index.js +3 -5
  69. package/dist/providers/opencode/index.js.map +1 -1
  70. package/dist/providers/pi/index.d.ts.map +1 -1
  71. package/dist/providers/pi/index.js +3 -5
  72. package/dist/providers/pi/index.js.map +1 -1
  73. package/dist/providers/process/index.d.ts.map +1 -1
  74. package/dist/providers/process/index.js +2 -2
  75. package/dist/providers/process/index.js.map +1 -1
  76. package/dist/registry.d.ts +0 -1
  77. package/dist/registry.d.ts.map +1 -1
  78. package/dist/registry.js +0 -4
  79. package/dist/registry.js.map +1 -1
  80. package/dist/sessions/index.d.ts +3 -0
  81. package/dist/sessions/index.d.ts.map +1 -0
  82. package/dist/sessions/index.js +2 -0
  83. package/dist/sessions/index.js.map +1 -0
  84. package/dist/sessions/record.d.ts +43 -0
  85. package/dist/sessions/record.d.ts.map +1 -0
  86. package/dist/sessions/record.js +85 -0
  87. package/dist/sessions/record.js.map +1 -0
  88. package/dist/types.d.ts +176 -0
  89. package/dist/types.d.ts.map +1 -1
  90. package/dist/types.js.map +1 -1
  91. package/dist/utils/endpoint.d.ts +38 -0
  92. package/dist/utils/endpoint.d.ts.map +1 -0
  93. package/dist/utils/endpoint.js +151 -0
  94. package/dist/utils/endpoint.js.map +1 -0
  95. package/dist/utils/env.d.ts.map +1 -1
  96. package/dist/utils/env.js +5 -1
  97. package/dist/utils/env.js.map +1 -1
  98. package/dist/utils/uuid.d.ts +7 -1
  99. package/dist/utils/uuid.d.ts.map +1 -1
  100. package/dist/utils/uuid.js +21 -1
  101. package/dist/utils/uuid.js.map +1 -1
  102. package/package.json +64 -7
  103. package/src/derived.ts +311 -0
  104. package/src/goals/controller.ts +442 -0
  105. package/src/goals/index.ts +21 -0
  106. package/src/goals/normalize.ts +173 -0
  107. package/src/goals/sentinel.ts +90 -0
  108. package/src/index.ts +270 -0
  109. package/src/providers/_shared/http-agent.ts +304 -0
  110. package/src/providers/acp/index.ts +103 -0
  111. package/src/providers/acp/parse.ts +131 -0
  112. package/src/providers/acp/session.ts +744 -0
  113. package/src/providers/claude/attach.ts +147 -0
  114. package/src/providers/claude/codec.ts +43 -0
  115. package/src/providers/claude/execute.ts +300 -0
  116. package/src/providers/claude/goal-capability.ts +21 -0
  117. package/src/providers/claude/index.ts +72 -0
  118. package/src/providers/claude/mcp.ts +82 -0
  119. package/src/providers/claude/parse.ts +824 -0
  120. package/src/providers/claude/session.ts +1192 -0
  121. package/src/providers/claude/transcript.ts +555 -0
  122. package/src/providers/codex/attach.ts +123 -0
  123. package/src/providers/codex/codec.ts +50 -0
  124. package/src/providers/codex/execute.ts +337 -0
  125. package/src/providers/codex/goal-capability.ts +19 -0
  126. package/src/providers/codex/index.ts +57 -0
  127. package/src/providers/codex/modes.ts +159 -0
  128. package/src/providers/codex/parse.ts +691 -0
  129. package/src/providers/codex/plan-mode.ts +49 -0
  130. package/src/providers/codex/session.ts +1287 -0
  131. package/src/providers/codex/transcript-normalize.ts +197 -0
  132. package/src/providers/codex/transcript.ts +487 -0
  133. package/src/providers/codex/usage-scanner.ts +178 -0
  134. package/src/providers/copilot/index.ts +19 -0
  135. package/src/providers/cursor/codec.ts +44 -0
  136. package/src/providers/cursor/execute.ts +271 -0
  137. package/src/providers/cursor/index.ts +25 -0
  138. package/src/providers/cursor/parse.ts +288 -0
  139. package/src/providers/gemini/index.ts +21 -0
  140. package/src/providers/openclaw/codec.ts +40 -0
  141. package/src/providers/openclaw/execute.ts +19 -0
  142. package/src/providers/openclaw/index.ts +29 -0
  143. package/src/providers/opencode/codec.ts +50 -0
  144. package/src/providers/opencode/event-parse.ts +141 -0
  145. package/src/providers/opencode/execute.ts +251 -0
  146. package/src/providers/opencode/http-session.ts +427 -0
  147. package/src/providers/opencode/index.ts +30 -0
  148. package/src/providers/opencode/parse.ts +203 -0
  149. package/src/providers/opencode/server.ts +0 -0
  150. package/src/providers/pi/codec.ts +44 -0
  151. package/src/providers/pi/execute.ts +297 -0
  152. package/src/providers/pi/index.ts +30 -0
  153. package/src/providers/pi/parse.ts +231 -0
  154. package/src/providers/pi/session.ts +381 -0
  155. package/src/providers/process/execute.ts +148 -0
  156. package/src/providers/process/index.ts +52 -0
  157. package/src/registry.ts +40 -0
  158. package/src/sessions/index.ts +8 -0
  159. package/src/sessions/record.ts +108 -0
  160. package/src/types.ts +1638 -0
  161. package/src/utils/ask-user-question.ts +57 -0
  162. package/src/utils/auth.ts +661 -0
  163. package/src/utils/binary.ts +179 -0
  164. package/src/utils/endpoint.ts +172 -0
  165. package/src/utils/env.ts +63 -0
  166. package/src/utils/execute-all.ts +68 -0
  167. package/src/utils/exit-plan-mode.ts +40 -0
  168. package/src/utils/instructions.ts +427 -0
  169. package/src/utils/process.ts +223 -0
  170. package/src/utils/runtime-config.ts +100 -0
  171. package/src/utils/runtime-homes.ts +49 -0
  172. package/src/utils/skill-commands.ts +493 -0
  173. package/src/utils/skills.ts +500 -0
  174. package/src/utils/template.ts +16 -0
  175. package/src/utils/tool-names.ts +51 -0
  176. package/src/utils/uuid.ts +21 -0
  177. 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;AAKrD,eAAO,MAAM,cAAc,EAAE,cAmB5B,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: executeCursorProvider,
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,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,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,OAAO,EAAE,qBAAqB;IAC9B,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,sBAAsB,CAAC,QAAQ,EAAE,GAAG,CAAC;IAC3D,YAAY,EAAE,kBAAkB;CACjC,CAAC"}
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;AAIrD,eAAO,MAAM,gBAAgB,EAAE,cAwB9B,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: executeOpenclawProvider,
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,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,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,OAAO,EAAE,uBAAuB;IAChC,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
+ {"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;AAOnF,eAAO,MAAM,gBAAgB,EAAE,cAuB9B,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,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,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,+CAA+C;IAC/C,OAAO,EAAE,uBAAuB;IAChC,aAAa,EAAE,CAAC,GAAmB,EAAyB,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC;IACzF,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,sBAAsB,CAAC,UAAU,EAAE,GAAG,CAAC;IAC7D,YAAY,EAAE,oBAAoB;CACnC,CAAC"}
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;AAOnF,eAAO,MAAM,UAAU,EAAE,cAuBxB,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,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,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,oCAAoC;IACpC,OAAO,EAAE,iBAAiB;IAC1B,aAAa,EAAE,CAAC,GAAmB,EAAyB,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC;IACnF,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC;IACvD,YAAY,EAAE,cAAc;CAC7B,CAAC"}
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;AAiCrF,eAAO,MAAM,eAAe,EAAE,cAkB7B,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: executeProcessProvider,
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,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,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,OAAO,EAAE,sBAAsB;IAC/B,WAAW,EAAE,kBAAkB;CAChC,CAAC"}
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"}
@@ -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;
@@ -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;AAajD,OAAO,0BAA0B,CAAC;AAelC,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"}
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);
@@ -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;AAC/D,6EAA6E;AAC7E,gFAAgF;AAChF,gCAAgC;AAChC,OAAO,0BAA0B,CAAC;AAElC,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"}
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,3 @@
1
+ export { SESSION_RECORD_VERSION, MalformedSessionRecordError, createSessionRecord, isSessionRecord, assertSessionRecord, } from "./record.js";
2
+ export type { CreateSessionRecordInput } from "./record.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export { SESSION_RECORD_VERSION, MalformedSessionRecordError, createSessionRecord, isSessionRecord, assertSessionRecord, } from "./record.js";
2
+ //# sourceMappingURL=index.js.map
@@ -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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"}