@claudexor/harness-raw-api 1.0.1 → 2.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # @claudexor/harness-raw-api
2
2
 
3
- Internal package of [Claudexor](https://github.com/razzant/claudexor) — Raw-API harness: OpenAI-compatible chat completions (planner/reviewer; no native edit tools).
3
+ Internal package of [Claudexor](https://github.com/razzant/claudexor) — Raw-API harness: OpenAI-compatible chat completions with typed, isolated Git-patch implementation.
4
4
 
5
5
  Published as part of the Claudexor toolchain; it follows the monorepo's
6
6
  lockstep version and has no separate semver contract. Use the `claudexor`
package/dist/index.d.ts CHANGED
@@ -9,8 +9,8 @@ export interface RawApiConfig {
9
9
  }
10
10
  /**
11
11
  * A raw-API harness backed by an OpenAI-compatible chat-completions endpoint.
12
- * It has no native edit tools, so it serves as a planner/reviewer (useful as a
13
- * cross-family reviewer via API key when no CLI of that family is installed).
12
+ * Implementing calls receive a bounded context packet and return a typed Git
13
+ * patch envelope; the orchestrator validates/materializes it in isolation.
14
14
  */
15
15
  export declare function createRawApiAdapter(config?: RawApiConfig): HarnessAdapter;
16
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkF,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExI,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,iBAAiB,CAAC;AA+BlE,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,GAAE,YAAiB,GAAG,cAAc,CAmL7E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAMV,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAM3B,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAwGlE,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,GAAE,YAAiB,GAAG,cAAc,CAqY7E"}
package/dist/index.js CHANGED
@@ -1,38 +1,96 @@
1
- import { readFileSync } from "node:fs";
2
- import { ConformanceReport as ConformanceReportSchema, HarnessManifest as HarnessManifestSchema } from "@claudexor/schema";
3
- import { HarnessUnavailableError, abortSignalFromSpec } from "@claudexor/core";
4
- import { resolveSecret } from "@claudexor/secrets";
5
- import { CLAUDEXOR_VERSION, nowIso, redactSecrets } from "@claudexor/util";
1
+ import { ConformanceReport as ConformanceReportSchema, HarnessManifest as HarnessManifestSchema, RawGitPatchEnvelope as RawGitPatchEnvelopeSchema, } from "@claudexor/schema";
2
+ import { HarnessUnavailableError, abortSignalFromSpec, parseUnifiedDiff, readVerifiedAttachmentBytes, } from "@claudexor/core";
3
+ import { namespacedSecretRefBase, resolveSecret } from "@claudexor/secrets";
4
+ import { CLAUDEXOR_VERSION, nowIso, redactSecrets, sensitiveResourcePolicy, sha256, } from "@claudexor/util";
6
5
  import { parseChatCompletion, parseModelsList } from "./parse.js";
7
6
  /** A stalled remote endpoint must not hang a run forever. */
8
7
  const RAW_API_TIMEOUT_MS = 180_000;
9
8
  /** Model enumeration is interactive (a picker waits on it): keep it snappy. */
10
9
  const RAW_API_MODELS_TIMEOUT_MS = 15_000;
11
10
  const RAW_API_TRANSIENT_STATUS = new Set([408, 502, 503, 504]);
11
+ const RAW_API_ENABLED_INTENTS = [
12
+ "implement",
13
+ "plan",
14
+ "spec",
15
+ "review",
16
+ "synthesize",
17
+ "explain",
18
+ "orchestrate",
19
+ ];
20
+ const RAW_API_DISABLED_INTENTS = ["create_from_scratch", "repair", "verify", "audit"];
21
+ const ALL_RAW_API_INTENTS = [...RAW_API_ENABLED_INTENTS, ...RAW_API_DISABLED_INTENTS];
12
22
  /**
13
- * Build the chat-completions user `content`. With image attachments, switch
14
- * from a plain string to the OpenAI-compatible parts array (`text` +
15
- * `image_url` data URLs). Non-image attachments have no inline chat shape.
23
+ * Build the chat-completions content from digest-bound immutable resources.
16
24
  */
17
25
  function rawApiUserContent(spec) {
18
- const images = (spec.attachments ?? []).filter((a) => a.kind === "image");
19
- if (images.length === 0)
20
- return spec.prompt;
21
- const parts = [{ type: "text", text: spec.prompt }];
22
- for (const a of images) {
23
- try {
24
- parts.push({ type: "image_url", image_url: { url: `data:${a.mime};base64,${readFileSync(a.path).toString("base64")}` } });
26
+ let prompt = spec.prompt;
27
+ if ((spec.intent === "implement" || spec.intent === "synthesize") && spec.raw_context_packet) {
28
+ prompt = [
29
+ prompt,
30
+ "",
31
+ 'Produce the requested change only by returning one JSON object: {"patch":"<complete textual git unified diff>"}.',
32
+ "Touch existing files only from editable_paths. New paths are allowed only below creatable_roots.",
33
+ "Do not calculate hashes or preimage evidence; the trusted local adapter derives them. Do not use Markdown fences or add prose. Binary patches are unsupported.",
34
+ "RAW_CONTEXT_PACKET:",
35
+ JSON.stringify(spec.raw_context_packet),
36
+ ].join("\n");
37
+ }
38
+ const attachments = spec.attachments ?? [];
39
+ if (attachments.length === 0)
40
+ return prompt;
41
+ const parts = [{ type: "text", text: prompt }];
42
+ for (const a of attachments) {
43
+ const bytes = readVerifiedAttachmentBytes(a);
44
+ if (a.kind === "image") {
45
+ parts.push({
46
+ type: "image_url",
47
+ image_url: { url: `data:${a.mime};base64,${bytes.toString("base64")}` },
48
+ });
25
49
  }
26
- catch {
27
- // Late-deleted attachment: skip; the text prompt still goes through.
50
+ else {
51
+ parts.push({
52
+ type: "text",
53
+ text: `Attached file ${a.name || a.resource_id} (${a.mime}, ${a.sha256}):\n${bytes.toString("utf8")}`,
54
+ });
28
55
  }
29
56
  }
30
- return parts.length > 1 ? parts : spec.prompt;
57
+ return parts.length > 1 ? parts : prompt;
58
+ }
59
+ function buildPatchEnvelope(text, context) {
60
+ const proposal = JSON.parse(text);
61
+ if (!proposal ||
62
+ typeof proposal !== "object" ||
63
+ typeof proposal["patch"] !== "string") {
64
+ throw new Error("patch proposal must contain one string patch field");
65
+ }
66
+ const patch = proposal.patch;
67
+ const parsed = parseUnifiedDiff(patch);
68
+ if (parsed.files.length === 0)
69
+ throw new Error("patch proposal has no complete file record");
70
+ const baseOids = new Map(context.readable_files.map((file) => [file.path, file.blob_oid]));
71
+ const evidence = new Map();
72
+ for (const file of parsed.files) {
73
+ if (file.oldPath)
74
+ evidence.set(file.oldPath, baseOids.get(file.oldPath) ?? null);
75
+ if (file.newPath && file.newPath !== file.oldPath)
76
+ evidence.set(file.newPath, null);
77
+ }
78
+ return RawGitPatchEnvelopeSchema.parse({
79
+ schema_version: 1,
80
+ context_packet_hash: context.packet_hash,
81
+ base_tree_sha: context.base_tree_sha,
82
+ patch,
83
+ patch_hash: sha256(patch),
84
+ touched_paths: [...evidence].map(([path, expected_blob_oid]) => ({
85
+ path,
86
+ expected_blob_oid,
87
+ })),
88
+ });
31
89
  }
32
90
  /**
33
91
  * A raw-API harness backed by an OpenAI-compatible chat-completions endpoint.
34
- * It has no native edit tools, so it serves as a planner/reviewer (useful as a
35
- * cross-family reviewer via API key when no CLI of that family is installed).
92
+ * Implementing calls receive a bounded context packet and return a typed Git
93
+ * patch envelope; the orchestrator validates/materializes it in isolation.
36
94
  */
37
95
  export function createRawApiAdapter(config = {}) {
38
96
  const id = config.id ?? "raw-api";
@@ -40,16 +98,17 @@ export function createRawApiAdapter(config = {}) {
40
98
  const baseUrl = config.baseUrl ?? process.env.CLAUDEXOR_RAWAPI_BASE_URL ?? "https://api.openai.com/v1";
41
99
  const keyEnv = config.keyEnv ?? (process.env.CLAUDEXOR_RAWAPI_KEY ? "CLAUDEXOR_RAWAPI_KEY" : "OPENAI_API_KEY");
42
100
  const defaultModel = config.defaultModel ?? process.env.CLAUDEXOR_RAWAPI_MODEL ?? "gpt-4o-mini";
43
- function apiKey() {
44
- const env = process.env[keyEnv];
45
- if (env)
46
- return env;
101
+ function apiKey(env = process.env) {
102
+ const value = env[keyEnv];
103
+ if (value)
104
+ return value;
47
105
  // Secret fallback is INSTANCE-SCOPED so a key for one provider is never sent
48
106
  // to another (e.g. an OpenAI "raw" key must not reach openrouter.ai). The
49
107
  // default OpenAI-compatible instance owns the managed "raw" (and "openai")
50
108
  // secret; every named instance (openrouter, …) resolves ONLY its own slot.
51
109
  if (id === "raw-api") {
52
- return resolveSecret("raw") ?? (keyEnv === "OPENAI_API_KEY" ? (resolveSecret("openai") ?? undefined) : undefined);
110
+ return (resolveSecret("raw") ??
111
+ (keyEnv === "OPENAI_API_KEY" ? (resolveSecret("openai") ?? undefined) : undefined));
53
112
  }
54
113
  return resolveSecret(id) ?? undefined;
55
114
  }
@@ -71,7 +130,8 @@ export function createRawApiAdapter(config = {}) {
71
130
  provider_family: providerFamily,
72
131
  capabilities: {
73
132
  plan: true,
74
- implement: false,
133
+ implement: true,
134
+ implementation_transport: "git_patch_envelope",
75
135
  create_from_scratch: false,
76
136
  review: true,
77
137
  verify: false,
@@ -88,24 +148,77 @@ export function createRawApiAdapter(config = {}) {
88
148
  auth: {
89
149
  supported_sources: ["api_key_env"],
90
150
  preferred_source: "api_key_env",
91
- credential_transports: [{ source: "api_key_env", kind: "http_header", relocatable_by: ["ENV"] }],
151
+ credential_transports: [
152
+ { source: "api_key_env", kind: "http_header", relocatable_by: ["ENV"] },
153
+ ],
92
154
  },
93
155
  access_control: { readonly_mechanism: "none" },
94
156
  isolation: { supported_containment: ["env_or_file_injection"] },
95
- // OpenAI-compatible chat-completions accept images as an inline `image_url` data URL part.
96
- image_input: "base64_inline",
157
+ attachment_inputs: [
158
+ {
159
+ kind: "image",
160
+ mime_types: ["image/png", "image/jpeg", "image/gif", "image/webp"],
161
+ max_bytes: 20 * 1024 * 1024,
162
+ max_count: 20,
163
+ transport: "base64_inline",
164
+ },
165
+ {
166
+ kind: "file",
167
+ mime_types: ["text/plain", "text/markdown", "application/json"],
168
+ max_bytes: 1024 * 1024,
169
+ max_count: 10,
170
+ transport: "text_inline",
171
+ },
172
+ ],
97
173
  },
98
174
  auth_modes: ["api_key"],
99
175
  access_profiles_supported: ["readonly"],
100
176
  });
101
177
  },
102
- async doctor(_spec) {
103
- if (!apiKey()) {
178
+ async doctor(spec) {
179
+ const requestedSource = spec.authSource;
180
+ if (requestedSource !== undefined && requestedSource !== "api_key_env") {
181
+ return ConformanceReportSchema.parse({
182
+ harness_id: id,
183
+ status: "unavailable",
184
+ checks: [
185
+ {
186
+ id: "auth_source",
187
+ status: "fail",
188
+ detail: `raw-api does not support ${requestedSource}`,
189
+ },
190
+ ],
191
+ enabled_intents: [],
192
+ disabled_intents: ALL_RAW_API_INTENTS,
193
+ reasons: [`raw-api does not support auth source ${requestedSource}`],
194
+ auth_sources: [
195
+ {
196
+ source: requestedSource,
197
+ availability: "unavailable",
198
+ verification: "not_run",
199
+ detail: `raw-api does not support ${requestedSource}`,
200
+ },
201
+ ],
202
+ });
203
+ }
204
+ const keyAvailable = apiKey({ ...process.env, ...spec.env }) !== undefined;
205
+ const readiness = {
206
+ source: "api_key_env",
207
+ availability: keyAvailable ? "available" : "unavailable",
208
+ verification: "not_run",
209
+ detail: keyAvailable
210
+ ? "credential source is present; verification requires an isolated capability smoke"
211
+ : `${keyEnv} is not configured`,
212
+ };
213
+ if (!keyAvailable) {
104
214
  return ConformanceReportSchema.parse({
105
215
  harness_id: id,
106
216
  status: "unavailable",
107
217
  checks: [{ id: "api_key", status: "fail", detail: `${keyEnv} not set` }],
218
+ enabled_intents: [],
219
+ disabled_intents: ALL_RAW_API_INTENTS,
108
220
  reasons: [`set ${keyEnv} to enable the raw-api harness`],
221
+ auth_sources: [readiness],
109
222
  });
110
223
  }
111
224
  // A key STRING is source availability, not proven readiness: no isolated
@@ -115,13 +228,17 @@ export function createRawApiAdapter(config = {}) {
115
228
  harness_id: id,
116
229
  status: "degraded",
117
230
  checks: [
118
- { id: "api_key", status: "pass", detail: "key available (unproven without isolated smoke)" },
231
+ {
232
+ id: "api_key",
233
+ status: "pass",
234
+ detail: "key available (unproven without isolated smoke)",
235
+ },
119
236
  { id: "isolated_smoke", status: "skip", detail: "doctor does not spend paid API calls" },
120
237
  ],
121
- // No native edit tools: planner/reviewer roles only.
122
- enabled_intents: ["plan", "spec", "review", "synthesize", "explain", "orchestrate"],
123
- disabled_intents: ["implement", "create_from_scratch", "repair", "verify"],
238
+ enabled_intents: RAW_API_ENABLED_INTENTS,
239
+ disabled_intents: RAW_API_DISABLED_INTENTS,
124
240
  reasons: ["key present but route unproven (no isolated smoke)"],
241
+ auth_sources: [readiness],
125
242
  });
126
243
  },
127
244
  // The REAL enumeration producer (ADP4): an OpenAI-compatible endpoint
@@ -140,22 +257,90 @@ export function createRawApiAdapter(config = {}) {
140
257
  if (!res.ok)
141
258
  return [];
142
259
  const json = await res.json();
143
- return parseModelsList(json).map((m) => ({ id: m.id, label: m.label, context_window: m.context_window }));
260
+ return parseModelsList(json).map((m) => ({
261
+ id: m.id,
262
+ label: m.label,
263
+ context_window: m.context_window,
264
+ // A live enumeration reflects the credentials it ran under; route
265
+ // scoping is a manifest-annotation concept (W11), not an API fact.
266
+ routes: null,
267
+ }));
144
268
  }
145
269
  catch {
146
270
  return [];
147
271
  }
148
272
  },
149
273
  async *run(spec) {
150
- const key = apiKey();
274
+ // INV-135 strict profile routing: a raw-api profile is exactly its
275
+ // secret-ref API key; other kinds and missing secrets refuse typed.
276
+ const profile = spec.credential_profile;
277
+ let key;
278
+ if (profile) {
279
+ if (profile.credential_kind !== "api_key") {
280
+ yield {
281
+ type: "error",
282
+ session_id: spec.session_id,
283
+ ts: nowIso(),
284
+ error: `credential profile "${profile.profile_id}": ${id} supports only the api_key transport`,
285
+ };
286
+ yield { type: "completed", session_id: spec.session_id, ts: nowIso() };
287
+ return;
288
+ }
289
+ // The instance secret fence holds for profiles too (release wave
290
+ // round-11 BLOCK): the default instance may reference raw/openai
291
+ // slots; a NAMED instance only its own — a profile must never route
292
+ // one provider's key to another provider's base URL. The ref must be
293
+ // NAMESPACED (round-15 #5): a bare ref would alias the engine-default
294
+ // slot, and profiles are additive identities.
295
+ const ref = profile.secret_ref ?? "";
296
+ const base = namespacedSecretRefBase(ref);
297
+ const allowed = id === "raw-api" ? ["raw", "openai"] : [id];
298
+ if (!base || !allowed.includes(base)) {
299
+ yield {
300
+ type: "error",
301
+ session_id: spec.session_id,
302
+ ts: nowIso(),
303
+ error: `credential profile "${profile.profile_id}": secret "${ref || "(missing ref)"}" is outside ${id}'s instance fence (namespaced base:profile refs only; allowed bases: ${allowed.join(", ")})`,
304
+ };
305
+ yield { type: "completed", session_id: spec.session_id, ts: nowIso() };
306
+ return;
307
+ }
308
+ key = (profile.secret_ref ? resolveSecret(profile.secret_ref) : null) ?? undefined;
309
+ if (!key) {
310
+ yield {
311
+ type: "error",
312
+ session_id: spec.session_id,
313
+ ts: nowIso(),
314
+ error: `credential profile "${profile.profile_id}": secret "${profile.secret_ref ?? "(missing ref)"}" is not stored`,
315
+ };
316
+ yield { type: "completed", session_id: spec.session_id, ts: nowIso() };
317
+ return;
318
+ }
319
+ }
320
+ else {
321
+ key = apiKey({ ...process.env, ...spec.env });
322
+ }
151
323
  if (!key) {
152
- yield { type: "error", session_id: spec.session_id, ts: nowIso(), error: `raw-api: ${keyEnv} not set` };
324
+ yield {
325
+ type: "error",
326
+ session_id: spec.session_id,
327
+ ts: nowIso(),
328
+ error: `raw-api: ${keyEnv} not set`,
329
+ };
153
330
  yield { type: "completed", session_id: spec.session_id, ts: nowIso() };
154
331
  return;
155
332
  }
156
333
  const model = spec.model_hint ?? defaultModel;
157
334
  // The model is only REQUESTED here; the observed model comes from the response.
158
- yield { type: "started", session_id: spec.session_id, ts: nowIso(), payload: { requested_model: model } };
335
+ yield {
336
+ type: "started",
337
+ session_id: spec.session_id,
338
+ ts: nowIso(),
339
+ credential_route: "managed_api_key",
340
+ credential_source: "api_key_env",
341
+ ...(profile ? { credential_profile_id: profile.profile_id } : {}),
342
+ payload: { requested_model: model },
343
+ };
159
344
  try {
160
345
  const specSignal = abortSignalFromSpec(spec);
161
346
  const timeoutSignal = AbortSignal.timeout(RAW_API_TIMEOUT_MS);
@@ -163,7 +348,17 @@ export function createRawApiAdapter(config = {}) {
163
348
  const res = await fetch(`${baseUrl.replace(/\/$/, "")}/chat/completions`, {
164
349
  method: "POST",
165
350
  headers: { "content-type": "application/json", authorization: `Bearer ${key}` },
166
- body: JSON.stringify({ model, messages: [{ role: "user", content: rawApiUserContent(spec) }] }),
351
+ body: JSON.stringify({
352
+ model,
353
+ messages: [
354
+ // Per-run instructions ride the OpenAI-style `system` role (the
355
+ // engine already withheld them from synthesis/reviewers).
356
+ ...(spec.instructions && spec.instructions.trim()
357
+ ? [{ role: "system", content: spec.instructions }]
358
+ : []),
359
+ { role: "user", content: rawApiUserContent(spec) },
360
+ ],
361
+ }),
167
362
  signal,
168
363
  });
169
364
  if (!res.ok) {
@@ -178,27 +373,91 @@ export function createRawApiAdapter(config = {}) {
178
373
  error: `raw-api HTTP ${res.status}`,
179
374
  // A 429 is a TYPED rate-limit signal (cooldown/fallback governance
180
375
  // reads ev.rate_limit, never prose), with the native reset when known.
181
- ...(res.status === 429 ? { rate_limit: { resets_at: resetsAt, retry_delay_ms: retryDelayMs } } : {}),
376
+ ...(res.status === 429
377
+ ? { rate_limit: { resets_at: resetsAt, retry_delay_ms: retryDelayMs } }
378
+ : {}),
182
379
  ...(res.status === 429 || RAW_API_TRANSIENT_STATUS.has(res.status)
183
- ? { transient: { kind: res.status === 408 ? "timeout" : "service_unavailable", retry_delay_ms: retryDelayMs } }
380
+ ? {
381
+ transient: {
382
+ kind: res.status === 408 ? "timeout" : "service_unavailable",
383
+ retry_delay_ms: retryDelayMs,
384
+ },
385
+ }
184
386
  : {}),
185
- payload: res.status === 429 ? { resets_at: resetsAt } : { body: redactSecrets(body.slice(0, 500)) },
387
+ payload: res.status === 429
388
+ ? { resets_at: resetsAt }
389
+ : { body: redactSecrets(body.slice(0, 500)) },
186
390
  };
187
391
  yield { type: "completed", session_id: spec.session_id, ts: nowIso() };
188
392
  return;
189
393
  }
190
394
  const json = await res.json();
191
395
  const parsed = parseChatCompletion(json);
192
- if (parsed.text)
396
+ if (spec.intent === "implement" || spec.intent === "synthesize") {
397
+ if (!spec.raw_context_packet) {
398
+ yield {
399
+ type: "error",
400
+ session_id: spec.session_id,
401
+ ts: nowIso(),
402
+ error: `raw-api ${spec.intent} requires a RawContextPacket`,
403
+ refusal_code: "raw_patch_missing_evidence",
404
+ };
405
+ }
406
+ else {
407
+ let patchEnvelope = null;
408
+ try {
409
+ patchEnvelope = buildPatchEnvelope(parsed.text, spec.raw_context_packet);
410
+ }
411
+ catch {
412
+ yield {
413
+ type: "error",
414
+ session_id: spec.session_id,
415
+ ts: nowIso(),
416
+ error: `raw-api ${spec.intent} response was not a complete Git patch proposal JSON object`,
417
+ refusal_code: "raw_patch_truncated",
418
+ };
419
+ }
420
+ if (patchEnvelope) {
421
+ const content = sensitiveResourcePolicy.inspectContent(patchEnvelope.patch, "reject");
422
+ if (content.containsSensitiveContent) {
423
+ yield {
424
+ type: "error",
425
+ session_id: spec.session_id,
426
+ ts: nowIso(),
427
+ error: `raw-api ${spec.intent} patch refused by sensitive-content policy`,
428
+ refusal_code: "raw_patch_sensitive_content",
429
+ };
430
+ }
431
+ else {
432
+ yield {
433
+ type: "patch_produced",
434
+ session_id: spec.session_id,
435
+ ts: nowIso(),
436
+ patch_envelope: patchEnvelope,
437
+ };
438
+ }
439
+ }
440
+ }
441
+ }
442
+ else if (parsed.text) {
193
443
  yield { type: "message", session_id: spec.session_id, ts: nowIso(), text: parsed.text };
444
+ }
194
445
  yield {
195
446
  type: "usage",
196
447
  session_id: spec.session_id,
197
448
  ts: nowIso(),
198
- usage: { input_tokens: parsed.usage.input_tokens, output_tokens: parsed.usage.output_tokens },
449
+ usage: {
450
+ input_tokens: parsed.usage.input_tokens,
451
+ output_tokens: parsed.usage.output_tokens,
452
+ },
453
+ observed_model: parsed.model ?? undefined,
454
+ };
455
+ yield {
456
+ type: "completed",
457
+ session_id: spec.session_id,
458
+ ts: nowIso(),
199
459
  observed_model: parsed.model ?? undefined,
200
460
  };
201
- yield { type: "completed", session_id: spec.session_id, ts: nowIso(), observed_model: parsed.model ?? undefined };
202
461
  }
203
462
  catch (err) {
204
463
  const message = redactSecrets(err instanceof Error ? err.message : String(err));
@@ -207,7 +466,10 @@ export function createRawApiAdapter(config = {}) {
207
466
  session_id: spec.session_id,
208
467
  ts: nowIso(),
209
468
  error: message,
210
- transient: { kind: err instanceof DOMException && err.name === "TimeoutError" ? "timeout" : "network", retry_delay_ms: null },
469
+ transient: {
470
+ kind: err instanceof DOMException && err.name === "TimeoutError" ? "timeout" : "network",
471
+ retry_delay_ms: null,
472
+ },
211
473
  };
212
474
  yield { type: "completed", session_id: spec.session_id, ts: nowIso() };
213
475
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1D;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,WAAW,EAAE,CAYxD;AAED,6DAA6D;AAC7D,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,GAAG,UAAU,CAYzD"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1D;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,WAAW,EAAE,CAaxD;AAED,6DAA6D;AAC7D,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,GAAG,UAAU,CAazD"}
package/dist/parse.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAaA;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAS;IACvC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,OAAO,KAAK,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3D,IAAI,CAAC,EAAE;YAAE,SAAS;QAClB,MAAM,KAAK,GAAG,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAClE,MAAM,MAAM,GAAG,KAAK,EAAE,cAAc,IAAI,KAAK,EAAE,cAAc,CAAC;QAC9D,MAAM,cAAc,GAAG,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5G,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,mBAAmB,CAAC,IAAS;IAC3C,MAAM,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;IAChC,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QAC1D,KAAK,EAAE;YACL,YAAY,EAAE,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;YACvF,aAAa,EAAE,OAAO,KAAK,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;SACjG;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAS;IACvC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,OAAO,KAAK,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3D,IAAI,CAAC,EAAE;YAAE,SAAS;QAClB,MAAM,KAAK,GAAG,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAClE,MAAM,MAAM,GAAG,KAAK,EAAE,cAAc,IAAI,KAAK,EAAE,cAAc,CAAC;QAC9D,MAAM,cAAc,GAClB,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACvF,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,mBAAmB,CAAC,IAAS;IAC3C,MAAM,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;IAChC,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QAC1D,KAAK,EAAE;YACL,YAAY,EAAE,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;YACvF,aAAa,EACX,OAAO,KAAK,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;SACpF;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@claudexor/harness-raw-api",
3
- "version": "1.0.1",
3
+ "version": "2.1.2",
4
4
  "license": "MIT",
5
- "description": "Raw-API harness: OpenAI-compatible chat completions (planner/reviewer; no native edit tools).",
5
+ "description": "Raw-API harness: OpenAI-compatible chat completions with typed, isolated Git-patch implementation.",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
8
8
  "types": "./dist/index.d.ts",
@@ -16,10 +16,10 @@
16
16
  "dist"
17
17
  ],
18
18
  "dependencies": {
19
- "@claudexor/schema": "1.0.1",
20
- "@claudexor/secrets": "1.0.1",
21
- "@claudexor/core": "1.0.1",
22
- "@claudexor/util": "1.0.1"
19
+ "@claudexor/core": "2.1.2",
20
+ "@claudexor/schema": "2.1.2",
21
+ "@claudexor/secrets": "2.1.2",
22
+ "@claudexor/util": "2.1.2"
23
23
  },
24
24
  "repository": {
25
25
  "type": "git",