@bluecopa/harness 0.1.0-snapshot.95 → 0.1.0-snapshot.97

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.
@@ -32,6 +32,16 @@ type ArcAppState = {
32
32
  backgroundTurns: Record<string, ArcAppBackgroundTurn>;
33
33
  runStats: ArcAppRunStats;
34
34
  };
35
+ type ArcAppObservedActivity = {
36
+ phase: 'start' | 'end';
37
+ processId?: string;
38
+ toolName: string;
39
+ args?: Record<string, unknown>;
40
+ ok?: boolean;
41
+ preview?: string;
42
+ command?: string;
43
+ path?: string;
44
+ };
35
45
  type ArcAdapterInputEvent = {
36
46
  type: string;
37
47
  id?: string;
@@ -58,9 +68,8 @@ type ArcAppEvent = {
58
68
  type: 'stats_changed';
59
69
  stats: ArcAppRunStats;
60
70
  } | {
61
- type: 'activity_summary';
62
- trace: string;
63
- transcript?: string;
71
+ type: 'activity_observed';
72
+ activity: ArcAppObservedActivity;
64
73
  } | {
65
74
  type: 'process_progress';
66
75
  id: string;
@@ -81,7 +90,6 @@ type ArcAppEvent = {
81
90
  };
82
91
  type Listener = (event: ArcAppEvent) => void;
83
92
  declare function formatArcAppProcessSummary(summary: string): string;
84
- declare function normalizeArcAppFinalOutput(output?: string | null): string;
85
93
  declare function createEmptyArcAppRunStats(): ArcAppRunStats;
86
94
  declare function formatArcAppRunStats(stats: ArcAppRunStats): string;
87
95
  declare function buildArcAppRunSummary(stats: ArcAppRunStats, modelId: string): string | null;
@@ -106,4 +114,4 @@ declare class ArcAppAdapter {
106
114
  private handleProcessActivity;
107
115
  }
108
116
 
109
- export { type ArcAdapterInputEvent, ArcAppAdapter, type ArcAppBackgroundTurn, type ArcAppEvent, type ArcAppProcessMeta, type ArcAppRunStats, type ArcAppState, buildArcAppRunSummary, createEmptyArcAppRunStats, createInitialArcAppState, formatArcAppProcessSummary, formatArcAppRunStats, normalizeArcAppFinalOutput };
117
+ export { type ArcAdapterInputEvent, ArcAppAdapter, type ArcAppBackgroundTurn, type ArcAppEvent, type ArcAppObservedActivity, type ArcAppProcessMeta, type ArcAppRunStats, type ArcAppState, buildArcAppRunSummary, createEmptyArcAppRunStats, createInitialArcAppState, formatArcAppProcessSummary, formatArcAppRunStats };
@@ -27,10 +27,6 @@ function cleanProcessSummary(summary) {
27
27
  function formatArcAppProcessSummary(summary) {
28
28
  return cleanProcessSummary(summary);
29
29
  }
30
- function normalizeArcAppFinalOutput(output) {
31
- const normalized = (output ?? "").trim();
32
- return normalized || "No final synthesis was produced.";
33
- }
34
30
  function createEmptyArcAppRunStats() {
35
31
  return {
36
32
  tools: 0,
@@ -215,7 +211,7 @@ var ArcAppAdapter = class {
215
211
  case "done":
216
212
  this.emit({
217
213
  type: "assistant_output",
218
- text: normalizeArcAppFinalOutput(event.summary ?? event.output)
214
+ text: event.summary ?? event.output ?? ""
219
215
  });
220
216
  return;
221
217
  case "process_failed":
@@ -265,15 +261,17 @@ var ArcAppAdapter = class {
265
261
  } else if (activity.name === "Edit" || activity.name === "Write") {
266
262
  this.state.runStats.fileChanges += 1;
267
263
  }
268
- const trace = traceLabelForTool(activity.name, activity.args ?? {});
269
- const transcript = transcriptLabelForTool(activity.name, activity.args ?? {});
270
- if (trace) {
271
- this.emit(withDefined({
272
- type: "activity_summary",
273
- trace,
274
- transcript
275
- }));
276
- }
264
+ this.emit({
265
+ type: "activity_observed",
266
+ activity: withDefined({
267
+ phase: "start",
268
+ processId: event.id,
269
+ toolName: activity.name,
270
+ args: activity.args,
271
+ command: activity.name === "Bash" ? getArgString(activity.args, "command") : void 0,
272
+ path: activity.name === "Read" || activity.name === "Write" || activity.name === "Edit" ? getArgString(activity.args, "path") : void 0
273
+ })
274
+ });
277
275
  this.emit({ type: "stats_changed", stats: { ...this.state.runStats } });
278
276
  return;
279
277
  }
@@ -286,14 +284,17 @@ var ArcAppAdapter = class {
286
284
  if (event.id) {
287
285
  delete this.bashCommands[event.id];
288
286
  }
289
- const output = summarizeBashPreview(command, activity.preview ?? "", Boolean(activity.ok));
290
- if (output) {
291
- this.emit({
292
- type: "activity_summary",
293
- trace: output,
294
- transcript: output
295
- });
296
- }
287
+ this.emit({
288
+ type: "activity_observed",
289
+ activity: withDefined({
290
+ phase: "end",
291
+ processId: event.id,
292
+ toolName: activity.name,
293
+ ok: activity.ok,
294
+ preview: activity.preview ?? "",
295
+ command
296
+ })
297
+ });
297
298
  }
298
299
  this.emit({ type: "stats_changed", stats: { ...this.state.runStats } });
299
300
  }
@@ -308,140 +309,7 @@ function getArgString(args, ...keys) {
308
309
  }
309
310
  return "";
310
311
  }
311
- function compactText(value, max = 96) {
312
- const normalized = value.replace(/\s+/g, " ").trim();
313
- return normalized.length <= max ? normalized : `${normalized.slice(0, max - 1)}\u2026`;
314
- }
315
- function basenameSafe(filePath) {
316
- const normalized = filePath.replace(/\\/g, "/");
317
- const parts = normalized.split("/");
318
- return parts[parts.length - 1] || filePath || "file";
319
- }
320
- function describeSearchScope(raw) {
321
- const value = String(raw ?? "").trim();
322
- if (!value) return "codebase";
323
- if (value.includes("src/")) return "src/";
324
- if (value.includes("cli/src/")) return "cli/src/";
325
- if (value.includes("tests/")) return "tests/";
326
- if (value.includes("README")) return "README/docs";
327
- return "codebase";
328
- }
329
- function traceLabelForTool(name, args) {
330
- switch (name) {
331
- case "Bash":
332
- return `$ ${compactText(getArgString(args, "command") || "command")}`;
333
- case "Read":
334
- return `Read ${getArgString(args, "path", "file") || "file"}`;
335
- case "Grep":
336
- return `Search ${String(args["pattern"] ?? "").trim() || "codebase"}`;
337
- case "Glob":
338
- return `Glob ${String(args["pattern"] ?? "").trim() || "files"}`;
339
- case "Edit":
340
- return `Change ${getArgString(args, "path", "file") || "file"}`;
341
- case "Write":
342
- return `Write ${getArgString(args, "path", "file") || "file"}`;
343
- default:
344
- return name;
345
- }
346
- }
347
- function transcriptLabelForTool(name, args) {
348
- switch (name) {
349
- case "Bash": {
350
- const command = getArgString(args, "command");
351
- const normalized = command.trim().toLowerCase();
352
- if (/^find\b|^fd\b|^rg --files\b|^ls\b|^tree\b/.test(normalized)) return "Listing files";
353
- if (/\brg\b|\bgrep\b/.test(normalized)) return "Searching code";
354
- if (/\bpnpm\b|\bnpm\b|\bvitest\b|\bjest\b|\btsc\b/.test(normalized)) return "Running verification";
355
- return `$ ${compactText(command || "command", 72)}`;
356
- }
357
- case "Read":
358
- return `Read ${basenameSafe(getArgString(args, "path", "file"))}`;
359
- case "Grep":
360
- return `Search ${describeSearchScope(args["glob"] ?? args["path"] ?? args["pattern"])}`;
361
- case "Glob":
362
- return `List files in ${describeSearchScope(args["pattern"] ?? args["glob"] ?? args["path"])}`;
363
- case "Edit":
364
- return `Change ${basenameSafe(getArgString(args, "path", "file"))}`;
365
- case "Write":
366
- return `Write ${basenameSafe(getArgString(args, "path", "file"))}`;
367
- default:
368
- return name;
369
- }
370
- }
371
- function countPreviewLines(value) {
372
- if (!value.trim()) return 0;
373
- return value.split("\n").length;
374
- }
375
- function isDirectoryListingPreview(value) {
376
- const lines = value.split("\n").filter((line) => line.trim().length > 0);
377
- if (lines.length < 3) return false;
378
- const unixListingLines = lines.filter((line) => /^[dl-][rwx-]{9}\s/.test(line.trim())).length;
379
- if (unixListingLines >= Math.max(3, Math.floor(lines.length * 0.6))) {
380
- return true;
381
- }
382
- const filenameLikeLines = lines.filter((line) => !line.includes(" ") && /[/._-]/.test(line)).length;
383
- return filenameLikeLines >= Math.max(4, Math.floor(lines.length * 0.7));
384
- }
385
- function hasHighSignalPreview(value) {
386
- const normalized = value.toLowerCase();
387
- return [
388
- "error",
389
- "failed",
390
- "exception",
391
- "not found",
392
- "warning",
393
- "traceback",
394
- "diff --git",
395
- "@@",
396
- "pass",
397
- "fail",
398
- "test"
399
- ].some((token) => normalized.includes(token));
400
- }
401
- function isExpectedProbeFailure(command, preview, ok) {
402
- if (ok) return false;
403
- const normalizedCommand = command.trim().toLowerCase();
404
- const normalizedPreview = preview.trim().toLowerCase();
405
- if (/(\brg\b|\bgrep\b)/.test(normalizedCommand)) {
406
- if (!normalizedPreview) return true;
407
- if (!hasHighSignalPreview(preview)) return true;
408
- }
409
- if (/(\btest\b|\[\s|-e\b|-f\b|-d\b)/.test(normalizedCommand)) {
410
- if (!normalizedPreview || !hasHighSignalPreview(preview)) return true;
411
- }
412
- return false;
413
- }
414
- function summarizeBashPreview(command, preview, ok) {
415
- if (!preview.trim()) {
416
- return null;
417
- }
418
- if (isExpectedProbeFailure(command, preview, ok)) {
419
- const lines2 = countPreviewLines(preview);
420
- if (/(\brg\b|\bgrep\b)/.test(command.trim().toLowerCase())) {
421
- return `search results hidden \xB7 ${lines2} line${lines2 === 1 ? "" : "s"} \xB7 no match`;
422
- }
423
- return `stdout hidden \xB7 ${lines2} line${lines2 === 1 ? "" : "s"}`;
424
- }
425
- const normalizedCommand = command.trim().toLowerCase();
426
- const lines = countPreviewLines(preview);
427
- if (/^(pwd|realpath)\b/.test(normalizedCommand)) {
428
- return "working directory hidden";
429
- }
430
- if (/(\bcat\b|\bsed\b|\bhead\b|\btail\b)/.test(normalizedCommand)) {
431
- return `file content hidden \xB7 ${lines} line${lines === 1 ? "" : "s"}`;
432
- }
433
- if (/(\brg\b|\bgrep\b)/.test(normalizedCommand)) {
434
- return `search results hidden \xB7 ${lines} line${lines === 1 ? "" : "s"}`;
435
- }
436
- if (/^(ls|exa|eza|tree|find|fd)\b/.test(normalizedCommand) || isDirectoryListingPreview(preview)) {
437
- return `directory listing hidden \xB7 ${lines} line${lines === 1 ? "" : "s"}`;
438
- }
439
- if (/^git\s+status\b/.test(normalizedCommand)) {
440
- return `git status hidden \xB7 ${lines} line${lines === 1 ? "" : "s"}`;
441
- }
442
- return `stdout hidden \xB7 ${lines} line${lines === 1 ? "" : "s"}`;
443
- }
444
312
 
445
- export { ArcAppAdapter, buildArcAppRunSummary, createEmptyArcAppRunStats, createInitialArcAppState, formatArcAppProcessSummary, formatArcAppRunStats, normalizeArcAppFinalOutput };
313
+ export { ArcAppAdapter, buildArcAppRunSummary, createEmptyArcAppRunStats, createInitialArcAppState, formatArcAppProcessSummary, formatArcAppRunStats };
446
314
  //# sourceMappingURL=app-adapter.js.map
447
315
  //# sourceMappingURL=app-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/arc/app-adapter.ts"],"names":["lines"],"mappings":"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","file":"app-adapter.js","sourcesContent":["import type { StepUsage } from '../agent/types';\n\nexport type ArcAppRunStats = {\n tools: number;\n commands: number;\n reads: number;\n searches: number;\n fileChanges: number;\n failures: number;\n inputTokens: number;\n outputTokens: number;\n};\n\nexport type ArcAppProcessMeta = {\n label?: string;\n profile?: string;\n model?: string;\n dispatchedAt: number;\n status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';\n step?: number;\n usage?: StepUsage;\n};\n\nexport type ArcAppBackgroundTurn = {\n id: string;\n label?: string;\n profile?: string;\n model?: string;\n dispatchedAt: number;\n};\n\nexport type ArcAppState = {\n activeTurnId: string | null;\n processes: Record<string, ArcAppProcessMeta>;\n backgroundTurns: Record<string, ArcAppBackgroundTurn>;\n runStats: ArcAppRunStats;\n};\n\nexport type ArcAdapterInputEvent = {\n type: string;\n id?: string;\n label?: string;\n profile?: string;\n model?: string;\n step?: number;\n usage?: StepUsage;\n output?: string;\n summary?: string;\n error?: string;\n activity?: {\n type?: string;\n name?: string;\n args?: Record<string, unknown>;\n ok?: boolean;\n preview?: string;\n };\n};\n\nexport type ArcAppEvent =\n | { type: 'state_changed'; state: ArcAppState }\n | { type: 'stats_changed'; stats: ArcAppRunStats }\n | { type: 'activity_summary'; trace: string; transcript?: string }\n | { type: 'process_progress'; id: string; meta: ArcAppProcessMeta }\n | { type: 'process_summary'; id: string; meta?: ArcAppProcessMeta; summary: string; display: string }\n | { type: 'process_failed'; id?: string; error: string }\n | { type: 'assistant_output'; text: string };\n\ntype Listener = (event: ArcAppEvent) => void;\n\nfunction cloneState(state: ArcAppState): ArcAppState {\n return {\n activeTurnId: state.activeTurnId,\n processes: { ...state.processes },\n backgroundTurns: { ...state.backgroundTurns },\n runStats: { ...state.runStats },\n };\n}\n\nfunction withDefined<T extends Record<string, unknown>>(value: T): T {\n return Object.fromEntries(\n Object.entries(value).filter(([, entry]) => entry !== undefined),\n ) as T;\n}\n\nfunction cleanProcessSummary(summary: string): string {\n const lines = summary\n .split('\\n')\n .map((line) => line.trim())\n .filter(Boolean);\n\n const resultLine = lines.find((line) => /^result\\s*:/i.test(line));\n if (resultLine) {\n return resultLine.replace(/^result\\s*:\\s*/i, '').trim();\n }\n\n const firstUsefulLine = lines.find((line) => !/^(action|status|steps|tools used|files read|files modified)\\s*:/i.test(line));\n if (firstUsefulLine) {\n return firstUsefulLine;\n }\n\n return summary\n .replace(/^(action|summary|result)\\s*:\\s*/i, '')\n .trim();\n}\n\nexport function formatArcAppProcessSummary(summary: string): string {\n return cleanProcessSummary(summary);\n}\n\nexport function normalizeArcAppFinalOutput(output?: string | null): string {\n const normalized = (output ?? '').trim();\n return normalized || 'No final synthesis was produced.';\n}\n\nexport function createEmptyArcAppRunStats(): ArcAppRunStats {\n return {\n tools: 0,\n commands: 0,\n reads: 0,\n searches: 0,\n fileChanges: 0,\n failures: 0,\n inputTokens: 0,\n outputTokens: 0,\n };\n}\n\nexport function formatArcAppRunStats(stats: ArcAppRunStats): string {\n const parts = [\n `${stats.tools} tool${stats.tools === 1 ? '' : 's'}`,\n stats.commands ? `${stats.commands} command${stats.commands === 1 ? '' : 's'}` : '',\n stats.reads ? `${stats.reads} read${stats.reads === 1 ? '' : 's'}` : '',\n stats.searches ? `${stats.searches} search${stats.searches === 1 ? '' : 'es'}` : '',\n stats.fileChanges ? `${stats.fileChanges} file change${stats.fileChanges === 1 ? '' : 's'}` : '',\n stats.failures ? `${stats.failures} failure${stats.failures === 1 ? '' : 's'}` : '',\n stats.inputTokens ? `${stats.inputTokens} in` : '',\n stats.outputTokens ? `${stats.outputTokens} out` : '',\n ].filter(Boolean);\n return parts.join(' · ');\n}\n\nexport function buildArcAppRunSummary(stats: ArcAppRunStats, modelId: string): string | null {\n if (stats.tools === 0 && stats.failures === 0) {\n return null;\n }\n const parts = [\n `model ${modelId}`,\n `${stats.tools} tool${stats.tools === 1 ? '' : 's'}`,\n stats.commands ? `${stats.commands} command${stats.commands === 1 ? '' : 's'}` : '',\n stats.reads ? `${stats.reads} read${stats.reads === 1 ? '' : 's'}` : '',\n stats.searches ? `${stats.searches} search${stats.searches === 1 ? '' : 'es'}` : '',\n stats.fileChanges ? `${stats.fileChanges} file change${stats.fileChanges === 1 ? '' : 's'}` : '',\n stats.failures ? `${stats.failures} failure${stats.failures === 1 ? '' : 's'}` : '',\n stats.inputTokens ? `${stats.inputTokens} input tokens` : '',\n stats.outputTokens ? `${stats.outputTokens} output tokens` : '',\n ].filter(Boolean);\n return `Run summary\\n\\n${parts.map((part) => `- ${part}`).join('\\n')}`;\n}\n\nexport function createInitialArcAppState(): ArcAppState {\n return {\n activeTurnId: null,\n processes: {},\n backgroundTurns: {},\n runStats: createEmptyArcAppRunStats(),\n };\n}\n\nexport class ArcAppAdapter {\n private state: ArcAppState;\n\n private listeners = new Set<Listener>();\n\n private bashCommands: Record<string, string> = {};\n\n constructor(initialState: ArcAppState = createInitialArcAppState()) {\n this.state = cloneState(initialState);\n }\n\n subscribe(listener: Listener): () => void {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n getState(): ArcAppState {\n return cloneState(this.state);\n }\n\n reset(): void {\n this.state = createInitialArcAppState();\n this.bashCommands = {};\n this.emit({ type: 'state_changed', state: this.getState() });\n }\n\n beginTurn(turnId: string): void {\n if (this.state.activeTurnId === turnId) return;\n this.state.activeTurnId = turnId;\n this.emit({ type: 'state_changed', state: this.getState() });\n }\n\n finishTurn(turnId: string): void {\n let changed = false;\n if (this.state.activeTurnId === turnId) {\n this.state.activeTurnId = null;\n changed = true;\n }\n if (this.state.backgroundTurns[turnId]) {\n delete this.state.backgroundTurns[turnId];\n changed = true;\n }\n if (changed) {\n this.emit({ type: 'state_changed', state: this.getState() });\n }\n }\n\n backgroundTurn(turnId: string, meta: { label?: string; profile?: string; model?: string }): boolean {\n if (this.state.activeTurnId !== turnId) {\n return false;\n }\n\n this.state.activeTurnId = null;\n this.state.backgroundTurns[turnId] = withDefined({\n id: turnId,\n label: meta.label,\n profile: meta.profile,\n model: meta.model,\n dispatchedAt: Date.now(),\n }) as ArcAppBackgroundTurn;\n this.emit({ type: 'state_changed', state: this.getState() });\n return true;\n }\n\n handleArcEvent(event: ArcAdapterInputEvent): void {\n switch (event.type) {\n case 'process_dispatched':\n if (!event.id) return;\n this.state.processes[event.id] = withDefined({\n label: event.label,\n profile: event.profile,\n model: event.model,\n dispatchedAt: this.state.processes[event.id]?.dispatchedAt ?? Date.now(),\n status: 'pending',\n }) as ArcAppProcessMeta;\n this.emit({ type: 'state_changed', state: this.getState() });\n return;\n case 'process_step_start':\n if (!event.id || !this.state.processes[event.id]) return;\n this.state.processes[event.id] = withDefined({\n ...this.state.processes[event.id],\n status: 'running',\n step: event.step,\n }) as ArcAppProcessMeta;\n const startedMeta = this.state.processes[event.id]!;\n this.emit({\n type: 'process_progress',\n id: event.id,\n meta: startedMeta,\n });\n this.emit({ type: 'state_changed', state: this.getState() });\n return;\n case 'process_step_end':\n if (!event.id || !this.state.processes[event.id]) return;\n this.state.processes[event.id] = withDefined({\n ...this.state.processes[event.id],\n status: 'running',\n step: event.step,\n usage: event.usage,\n }) as ArcAppProcessMeta;\n if (event.usage?.inputTokens != null) {\n this.state.runStats.inputTokens = event.usage.inputTokens;\n }\n if (event.usage?.outputTokens != null) {\n this.state.runStats.outputTokens = event.usage.outputTokens;\n }\n const steppedMeta = this.state.processes[event.id]!;\n this.emit({\n type: 'process_progress',\n id: event.id,\n meta: steppedMeta,\n });\n this.emit({ type: 'stats_changed', stats: { ...this.state.runStats } });\n this.emit({ type: 'state_changed', state: this.getState() });\n return;\n case 'process_activity':\n this.handleProcessActivity(event);\n return;\n case 'process_completed':\n if (!event.id) return;\n if (this.state.processes[event.id]) {\n this.state.processes[event.id] = withDefined({\n ...this.state.processes[event.id],\n status: 'completed',\n }) as ArcAppProcessMeta;\n }\n const display = formatArcAppProcessSummary(event.summary ?? '');\n this.emit(withDefined({\n type: 'process_summary',\n id: event.id,\n meta: this.state.processes[event.id],\n summary: event.summary ?? '',\n display,\n }) as ArcAppEvent);\n delete this.state.processes[event.id];\n delete this.state.backgroundTurns[event.id];\n this.emit({ type: 'state_changed', state: this.getState() });\n return;\n case 'done':\n this.emit({\n type: 'assistant_output',\n text: normalizeArcAppFinalOutput(event.summary ?? event.output),\n });\n return;\n case 'process_failed':\n this.emit(withDefined({\n type: 'process_failed',\n id: event.id,\n error: event.error ?? 'unknown error',\n }) as ArcAppEvent);\n this.state.runStats.failures += 1;\n this.emit({ type: 'stats_changed', stats: { ...this.state.runStats } });\n if (event.id) {\n if (this.state.processes[event.id]) {\n this.state.processes[event.id] = withDefined({\n ...this.state.processes[event.id],\n status: event.error === 'cancelled' ? 'cancelled' : 'failed',\n }) as ArcAppProcessMeta;\n }\n delete this.state.processes[event.id];\n delete this.state.backgroundTurns[event.id];\n this.emit({ type: 'state_changed', state: this.getState() });\n }\n return;\n default:\n return;\n }\n }\n\n private emit(event: ArcAppEvent): void {\n for (const listener of this.listeners) {\n listener(event);\n }\n }\n\n private handleProcessActivity(event: ArcAdapterInputEvent): void {\n const activity = event.activity;\n if (!activity?.type || !activity?.name) return;\n\n if (activity.type === 'tool_start') {\n this.state.runStats.tools += 1;\n if (activity.name === 'Bash') {\n this.state.runStats.commands += 1;\n const command = getArgString(activity.args, 'command');\n if (event.id) {\n this.bashCommands[event.id] = command;\n }\n } else if (activity.name === 'Read') {\n this.state.runStats.reads += 1;\n } else if (activity.name === 'Grep' || activity.name === 'Glob') {\n this.state.runStats.searches += 1;\n } else if (activity.name === 'Edit' || activity.name === 'Write') {\n this.state.runStats.fileChanges += 1;\n }\n\n const trace = traceLabelForTool(activity.name, activity.args ?? {});\n const transcript = transcriptLabelForTool(activity.name, activity.args ?? {});\n if (trace) {\n this.emit(withDefined({\n type: 'activity_summary',\n trace,\n transcript,\n }) as ArcAppEvent);\n }\n this.emit({ type: 'stats_changed', stats: { ...this.state.runStats } });\n return;\n }\n\n if (activity.type === 'tool_end') {\n if (!activity.ok) {\n this.state.runStats.failures += 1;\n }\n\n if (activity.name === 'Bash') {\n const command = event.id ? (this.bashCommands[event.id] ?? '') : '';\n if (event.id) {\n delete this.bashCommands[event.id];\n }\n const output = summarizeBashPreview(command, activity.preview ?? '', Boolean(activity.ok));\n if (output) {\n this.emit({\n type: 'activity_summary',\n trace: output,\n transcript: output,\n });\n }\n }\n\n this.emit({ type: 'stats_changed', stats: { ...this.state.runStats } });\n }\n }\n}\n\nfunction getArgString(args: Record<string, unknown> | undefined, ...keys: string[]): string {\n for (const key of keys) {\n const value = args?.[key];\n if (typeof value === 'string') {\n return value;\n }\n }\n return '';\n}\n\nfunction compactText(value: string, max = 96): string {\n const normalized = value.replace(/\\s+/g, ' ').trim();\n return normalized.length <= max ? normalized : `${normalized.slice(0, max - 1)}…`;\n}\n\nfunction basenameSafe(filePath: string): string {\n const normalized = filePath.replace(/\\\\/g, '/');\n const parts = normalized.split('/');\n return parts[parts.length - 1] || filePath || 'file';\n}\n\nfunction describeSearchScope(raw: unknown): string {\n const value = String(raw ?? '').trim();\n if (!value) return 'codebase';\n if (value.includes('src/')) return 'src/';\n if (value.includes('cli/src/')) return 'cli/src/';\n if (value.includes('tests/')) return 'tests/';\n if (value.includes('README')) return 'README/docs';\n return 'codebase';\n}\n\nfunction traceLabelForTool(name: string, args: Record<string, unknown>): string | null {\n switch (name) {\n case 'Bash':\n return `$ ${compactText(getArgString(args, 'command') || 'command')}`;\n case 'Read':\n return `Read ${getArgString(args, 'path', 'file') || 'file'}`;\n case 'Grep':\n return `Search ${String(args['pattern'] ?? '').trim() || 'codebase'}`;\n case 'Glob':\n return `Glob ${String(args['pattern'] ?? '').trim() || 'files'}`;\n case 'Edit':\n return `Change ${getArgString(args, 'path', 'file') || 'file'}`;\n case 'Write':\n return `Write ${getArgString(args, 'path', 'file') || 'file'}`;\n default:\n return name;\n }\n}\n\nfunction transcriptLabelForTool(name: string, args: Record<string, unknown>): string | null {\n switch (name) {\n case 'Bash': {\n const command = getArgString(args, 'command');\n const normalized = command.trim().toLowerCase();\n if (/^find\\b|^fd\\b|^rg --files\\b|^ls\\b|^tree\\b/.test(normalized)) return 'Listing files';\n if (/\\brg\\b|\\bgrep\\b/.test(normalized)) return 'Searching code';\n if (/\\bpnpm\\b|\\bnpm\\b|\\bvitest\\b|\\bjest\\b|\\btsc\\b/.test(normalized)) return 'Running verification';\n return `$ ${compactText(command || 'command', 72)}`;\n }\n case 'Read':\n return `Read ${basenameSafe(getArgString(args, 'path', 'file'))}`;\n case 'Grep':\n return `Search ${describeSearchScope(args['glob'] ?? args['path'] ?? args['pattern'])}`;\n case 'Glob':\n return `List files in ${describeSearchScope(args['pattern'] ?? args['glob'] ?? args['path'])}`;\n case 'Edit':\n return `Change ${basenameSafe(getArgString(args, 'path', 'file'))}`;\n case 'Write':\n return `Write ${basenameSafe(getArgString(args, 'path', 'file'))}`;\n default:\n return name;\n }\n}\n\nfunction countPreviewLines(value: string): number {\n if (!value.trim()) return 0;\n return value.split('\\n').length;\n}\n\nfunction isDirectoryListingPreview(value: string): boolean {\n const lines = value.split('\\n').filter((line) => line.trim().length > 0);\n if (lines.length < 3) return false;\n\n const unixListingLines = lines.filter((line) => /^[dl-][rwx-]{9}\\s/.test(line.trim())).length;\n if (unixListingLines >= Math.max(3, Math.floor(lines.length * 0.6))) {\n return true;\n }\n\n const filenameLikeLines = lines.filter((line) => !line.includes(' ') && /[/._-]/.test(line)).length;\n return filenameLikeLines >= Math.max(4, Math.floor(lines.length * 0.7));\n}\n\nfunction hasHighSignalPreview(value: string): boolean {\n const normalized = value.toLowerCase();\n return [\n 'error',\n 'failed',\n 'exception',\n 'not found',\n 'warning',\n 'traceback',\n 'diff --git',\n '@@',\n 'pass',\n 'fail',\n 'test',\n ].some((token) => normalized.includes(token));\n}\n\nfunction isExpectedProbeFailure(command: string, preview: string, ok: boolean): boolean {\n if (ok) return false;\n\n const normalizedCommand = command.trim().toLowerCase();\n const normalizedPreview = preview.trim().toLowerCase();\n\n if (/(\\brg\\b|\\bgrep\\b)/.test(normalizedCommand)) {\n if (!normalizedPreview) return true;\n if (!hasHighSignalPreview(preview)) return true;\n }\n\n if (/(\\btest\\b|\\[\\s|-e\\b|-f\\b|-d\\b)/.test(normalizedCommand)) {\n if (!normalizedPreview || !hasHighSignalPreview(preview)) return true;\n }\n\n return false;\n}\n\nfunction summarizeBashPreview(command: string, preview: string, ok: boolean): string | null {\n if (!preview.trim()) {\n return null;\n }\n\n if (isExpectedProbeFailure(command, preview, ok)) {\n const lines = countPreviewLines(preview);\n if (/(\\brg\\b|\\bgrep\\b)/.test(command.trim().toLowerCase())) {\n return `search results hidden · ${lines} line${lines === 1 ? '' : 's'} · no match`;\n }\n return `stdout hidden · ${lines} line${lines === 1 ? '' : 's'}`;\n }\n\n const normalizedCommand = command.trim().toLowerCase();\n const lines = countPreviewLines(preview);\n\n if (/^(pwd|realpath)\\b/.test(normalizedCommand)) {\n return 'working directory hidden';\n }\n\n if (/(\\bcat\\b|\\bsed\\b|\\bhead\\b|\\btail\\b)/.test(normalizedCommand)) {\n return `file content hidden · ${lines} line${lines === 1 ? '' : 's'}`;\n }\n\n if (/(\\brg\\b|\\bgrep\\b)/.test(normalizedCommand)) {\n return `search results hidden · ${lines} line${lines === 1 ? '' : 's'}`;\n }\n\n if (/^(ls|exa|eza|tree|find|fd)\\b/.test(normalizedCommand) || isDirectoryListingPreview(preview)) {\n return `directory listing hidden · ${lines} line${lines === 1 ? '' : 's'}`;\n }\n\n if (/^git\\s+status\\b/.test(normalizedCommand)) {\n return `git status hidden · ${lines} line${lines === 1 ? '' : 's'}`;\n }\n\n return `stdout hidden · ${lines} line${lines === 1 ? '' : 's'}`;\n}\n"]}
1
+ {"version":3,"sources":["../../src/arc/app-adapter.ts"],"names":[],"mappings":"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","file":"app-adapter.js","sourcesContent":["import type { StepUsage } from '../agent/types';\n\nexport type ArcAppRunStats = {\n tools: number;\n commands: number;\n reads: number;\n searches: number;\n fileChanges: number;\n failures: number;\n inputTokens: number;\n outputTokens: number;\n};\n\nexport type ArcAppProcessMeta = {\n label?: string;\n profile?: string;\n model?: string;\n dispatchedAt: number;\n status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';\n step?: number;\n usage?: StepUsage;\n};\n\nexport type ArcAppBackgroundTurn = {\n id: string;\n label?: string;\n profile?: string;\n model?: string;\n dispatchedAt: number;\n};\n\nexport type ArcAppState = {\n activeTurnId: string | null;\n processes: Record<string, ArcAppProcessMeta>;\n backgroundTurns: Record<string, ArcAppBackgroundTurn>;\n runStats: ArcAppRunStats;\n};\n\nexport type ArcAppObservedActivity = {\n phase: 'start' | 'end';\n processId?: string;\n toolName: string;\n args?: Record<string, unknown>;\n ok?: boolean;\n preview?: string;\n command?: string;\n path?: string;\n};\n\nexport type ArcAdapterInputEvent = {\n type: string;\n id?: string;\n label?: string;\n profile?: string;\n model?: string;\n step?: number;\n usage?: StepUsage;\n output?: string;\n summary?: string;\n error?: string;\n activity?: {\n type?: string;\n name?: string;\n args?: Record<string, unknown>;\n ok?: boolean;\n preview?: string;\n };\n};\n\nexport type ArcAppEvent =\n | { type: 'state_changed'; state: ArcAppState }\n | { type: 'stats_changed'; stats: ArcAppRunStats }\n | { type: 'activity_observed'; activity: ArcAppObservedActivity }\n | { type: 'process_progress'; id: string; meta: ArcAppProcessMeta }\n | { type: 'process_summary'; id: string; meta?: ArcAppProcessMeta; summary: string; display: string }\n | { type: 'process_failed'; id?: string; error: string }\n | { type: 'assistant_output'; text: string };\n\ntype Listener = (event: ArcAppEvent) => void;\n\nfunction cloneState(state: ArcAppState): ArcAppState {\n return {\n activeTurnId: state.activeTurnId,\n processes: { ...state.processes },\n backgroundTurns: { ...state.backgroundTurns },\n runStats: { ...state.runStats },\n };\n}\n\nfunction withDefined<T extends Record<string, unknown>>(value: T): T {\n return Object.fromEntries(\n Object.entries(value).filter(([, entry]) => entry !== undefined),\n ) as T;\n}\n\nfunction cleanProcessSummary(summary: string): string {\n const lines = summary\n .split('\\n')\n .map((line) => line.trim())\n .filter(Boolean);\n\n const resultLine = lines.find((line) => /^result\\s*:/i.test(line));\n if (resultLine) {\n return resultLine.replace(/^result\\s*:\\s*/i, '').trim();\n }\n\n const firstUsefulLine = lines.find((line) => !/^(action|status|steps|tools used|files read|files modified)\\s*:/i.test(line));\n if (firstUsefulLine) {\n return firstUsefulLine;\n }\n\n return summary\n .replace(/^(action|summary|result)\\s*:\\s*/i, '')\n .trim();\n}\n\nexport function formatArcAppProcessSummary(summary: string): string {\n return cleanProcessSummary(summary);\n}\n\nexport function createEmptyArcAppRunStats(): ArcAppRunStats {\n return {\n tools: 0,\n commands: 0,\n reads: 0,\n searches: 0,\n fileChanges: 0,\n failures: 0,\n inputTokens: 0,\n outputTokens: 0,\n };\n}\n\nexport function formatArcAppRunStats(stats: ArcAppRunStats): string {\n const parts = [\n `${stats.tools} tool${stats.tools === 1 ? '' : 's'}`,\n stats.commands ? `${stats.commands} command${stats.commands === 1 ? '' : 's'}` : '',\n stats.reads ? `${stats.reads} read${stats.reads === 1 ? '' : 's'}` : '',\n stats.searches ? `${stats.searches} search${stats.searches === 1 ? '' : 'es'}` : '',\n stats.fileChanges ? `${stats.fileChanges} file change${stats.fileChanges === 1 ? '' : 's'}` : '',\n stats.failures ? `${stats.failures} failure${stats.failures === 1 ? '' : 's'}` : '',\n stats.inputTokens ? `${stats.inputTokens} in` : '',\n stats.outputTokens ? `${stats.outputTokens} out` : '',\n ].filter(Boolean);\n return parts.join(' · ');\n}\n\nexport function buildArcAppRunSummary(stats: ArcAppRunStats, modelId: string): string | null {\n if (stats.tools === 0 && stats.failures === 0) {\n return null;\n }\n const parts = [\n `model ${modelId}`,\n `${stats.tools} tool${stats.tools === 1 ? '' : 's'}`,\n stats.commands ? `${stats.commands} command${stats.commands === 1 ? '' : 's'}` : '',\n stats.reads ? `${stats.reads} read${stats.reads === 1 ? '' : 's'}` : '',\n stats.searches ? `${stats.searches} search${stats.searches === 1 ? '' : 'es'}` : '',\n stats.fileChanges ? `${stats.fileChanges} file change${stats.fileChanges === 1 ? '' : 's'}` : '',\n stats.failures ? `${stats.failures} failure${stats.failures === 1 ? '' : 's'}` : '',\n stats.inputTokens ? `${stats.inputTokens} input tokens` : '',\n stats.outputTokens ? `${stats.outputTokens} output tokens` : '',\n ].filter(Boolean);\n return `Run summary\\n\\n${parts.map((part) => `- ${part}`).join('\\n')}`;\n}\n\nexport function createInitialArcAppState(): ArcAppState {\n return {\n activeTurnId: null,\n processes: {},\n backgroundTurns: {},\n runStats: createEmptyArcAppRunStats(),\n };\n}\n\nexport class ArcAppAdapter {\n private state: ArcAppState;\n\n private listeners = new Set<Listener>();\n\n private bashCommands: Record<string, string> = {};\n\n constructor(initialState: ArcAppState = createInitialArcAppState()) {\n this.state = cloneState(initialState);\n }\n\n subscribe(listener: Listener): () => void {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n getState(): ArcAppState {\n return cloneState(this.state);\n }\n\n reset(): void {\n this.state = createInitialArcAppState();\n this.bashCommands = {};\n this.emit({ type: 'state_changed', state: this.getState() });\n }\n\n beginTurn(turnId: string): void {\n if (this.state.activeTurnId === turnId) return;\n this.state.activeTurnId = turnId;\n this.emit({ type: 'state_changed', state: this.getState() });\n }\n\n finishTurn(turnId: string): void {\n let changed = false;\n if (this.state.activeTurnId === turnId) {\n this.state.activeTurnId = null;\n changed = true;\n }\n if (this.state.backgroundTurns[turnId]) {\n delete this.state.backgroundTurns[turnId];\n changed = true;\n }\n if (changed) {\n this.emit({ type: 'state_changed', state: this.getState() });\n }\n }\n\n backgroundTurn(turnId: string, meta: { label?: string; profile?: string; model?: string }): boolean {\n if (this.state.activeTurnId !== turnId) {\n return false;\n }\n\n this.state.activeTurnId = null;\n this.state.backgroundTurns[turnId] = withDefined({\n id: turnId,\n label: meta.label,\n profile: meta.profile,\n model: meta.model,\n dispatchedAt: Date.now(),\n }) as ArcAppBackgroundTurn;\n this.emit({ type: 'state_changed', state: this.getState() });\n return true;\n }\n\n handleArcEvent(event: ArcAdapterInputEvent): void {\n switch (event.type) {\n case 'process_dispatched':\n if (!event.id) return;\n this.state.processes[event.id] = withDefined({\n label: event.label,\n profile: event.profile,\n model: event.model,\n dispatchedAt: this.state.processes[event.id]?.dispatchedAt ?? Date.now(),\n status: 'pending',\n }) as ArcAppProcessMeta;\n this.emit({ type: 'state_changed', state: this.getState() });\n return;\n case 'process_step_start':\n if (!event.id || !this.state.processes[event.id]) return;\n this.state.processes[event.id] = withDefined({\n ...this.state.processes[event.id],\n status: 'running',\n step: event.step,\n }) as ArcAppProcessMeta;\n const startedMeta = this.state.processes[event.id]!;\n this.emit({\n type: 'process_progress',\n id: event.id,\n meta: startedMeta,\n });\n this.emit({ type: 'state_changed', state: this.getState() });\n return;\n case 'process_step_end':\n if (!event.id || !this.state.processes[event.id]) return;\n this.state.processes[event.id] = withDefined({\n ...this.state.processes[event.id],\n status: 'running',\n step: event.step,\n usage: event.usage,\n }) as ArcAppProcessMeta;\n if (event.usage?.inputTokens != null) {\n this.state.runStats.inputTokens = event.usage.inputTokens;\n }\n if (event.usage?.outputTokens != null) {\n this.state.runStats.outputTokens = event.usage.outputTokens;\n }\n const steppedMeta = this.state.processes[event.id]!;\n this.emit({\n type: 'process_progress',\n id: event.id,\n meta: steppedMeta,\n });\n this.emit({ type: 'stats_changed', stats: { ...this.state.runStats } });\n this.emit({ type: 'state_changed', state: this.getState() });\n return;\n case 'process_activity':\n this.handleProcessActivity(event);\n return;\n case 'process_completed':\n if (!event.id) return;\n if (this.state.processes[event.id]) {\n this.state.processes[event.id] = withDefined({\n ...this.state.processes[event.id],\n status: 'completed',\n }) as ArcAppProcessMeta;\n }\n const display = formatArcAppProcessSummary(event.summary ?? '');\n this.emit(withDefined({\n type: 'process_summary',\n id: event.id,\n meta: this.state.processes[event.id],\n summary: event.summary ?? '',\n display,\n }) as ArcAppEvent);\n delete this.state.processes[event.id];\n delete this.state.backgroundTurns[event.id];\n this.emit({ type: 'state_changed', state: this.getState() });\n return;\n case 'done':\n this.emit({\n type: 'assistant_output',\n text: event.summary ?? event.output ?? '',\n });\n return;\n case 'process_failed':\n this.emit(withDefined({\n type: 'process_failed',\n id: event.id,\n error: event.error ?? 'unknown error',\n }) as ArcAppEvent);\n this.state.runStats.failures += 1;\n this.emit({ type: 'stats_changed', stats: { ...this.state.runStats } });\n if (event.id) {\n if (this.state.processes[event.id]) {\n this.state.processes[event.id] = withDefined({\n ...this.state.processes[event.id],\n status: event.error === 'cancelled' ? 'cancelled' : 'failed',\n }) as ArcAppProcessMeta;\n }\n delete this.state.processes[event.id];\n delete this.state.backgroundTurns[event.id];\n this.emit({ type: 'state_changed', state: this.getState() });\n }\n return;\n default:\n return;\n }\n }\n\n private emit(event: ArcAppEvent): void {\n for (const listener of this.listeners) {\n listener(event);\n }\n }\n\n private handleProcessActivity(event: ArcAdapterInputEvent): void {\n const activity = event.activity;\n if (!activity?.type || !activity?.name) return;\n\n if (activity.type === 'tool_start') {\n this.state.runStats.tools += 1;\n if (activity.name === 'Bash') {\n this.state.runStats.commands += 1;\n const command = getArgString(activity.args, 'command');\n if (event.id) {\n this.bashCommands[event.id] = command;\n }\n } else if (activity.name === 'Read') {\n this.state.runStats.reads += 1;\n } else if (activity.name === 'Grep' || activity.name === 'Glob') {\n this.state.runStats.searches += 1;\n } else if (activity.name === 'Edit' || activity.name === 'Write') {\n this.state.runStats.fileChanges += 1;\n }\n\n this.emit({\n type: 'activity_observed',\n activity: withDefined({\n phase: 'start',\n processId: event.id,\n toolName: activity.name,\n args: activity.args,\n command: activity.name === 'Bash' ? getArgString(activity.args, 'command') : undefined,\n path: activity.name === 'Read' || activity.name === 'Write' || activity.name === 'Edit'\n ? getArgString(activity.args, 'path')\n : undefined,\n }) as ArcAppObservedActivity,\n });\n this.emit({ type: 'stats_changed', stats: { ...this.state.runStats } });\n return;\n }\n\n if (activity.type === 'tool_end') {\n if (!activity.ok) {\n this.state.runStats.failures += 1;\n }\n\n if (activity.name === 'Bash') {\n const command = event.id ? (this.bashCommands[event.id] ?? '') : '';\n if (event.id) {\n delete this.bashCommands[event.id];\n }\n this.emit({\n type: 'activity_observed',\n activity: withDefined({\n phase: 'end',\n processId: event.id,\n toolName: activity.name,\n ok: activity.ok,\n preview: activity.preview ?? '',\n command,\n }) as ArcAppObservedActivity,\n });\n }\n\n this.emit({ type: 'stats_changed', stats: { ...this.state.runStats } });\n }\n }\n}\n\nfunction getArgString(args: Record<string, unknown> | undefined, ...keys: string[]): string {\n for (const key of keys) {\n const value = args?.[key];\n if (typeof value === 'string') {\n return value;\n }\n }\n return '';\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { A as AgentMessage } from '../types-C3Cb6Ixg.js';
2
- import { A as ArcLoopConfig, a as ArcEvent, b as ArcRunResult, T as TraceEvent } from '../types-B8J4gkWv.js';
2
+ import { A as ArcLoopConfig, a as ArcEvent, b as ArcRunResult, T as TraceEvent } from '../types-BkGKpTBL.js';
3
3
  import 'zod';
4
4
  import 'ai';
5
5
 
@@ -1,4 +1,4 @@
1
- import { P as ProfileConfig, e as ProfileDeclaration, f as AnyTool, g as ProcessProfile } from '../types-B8J4gkWv.js';
1
+ import { P as ProfileConfig, c as ProfileDeclaration, d as AnyTool, e as ProcessProfile } from '../types-BkGKpTBL.js';
2
2
  import 'zod';
3
3
  import '../types-C3Cb6Ixg.js';
4
4
  import 'ai';
@@ -1,5 +1,5 @@
1
1
  import { Tool } from 'ai';
2
- import { h as ModelFactory, i as ToolChoiceConfig } from '../types-B8J4gkWv.js';
2
+ import { M as ModelFactory, f as ToolChoiceConfig } from '../types-BkGKpTBL.js';
3
3
  import { a as AgentLoop, S as StepUsage, P as PrepareStepContext, b as PrepareStepResult, A as AgentMessage, c as AgentAction, d as AgentStreamEvent } from '../types-C3Cb6Ixg.js';
4
4
  import 'zod';
5
5
 
@@ -647,4 +647,4 @@ type TraceEventKind = {
647
647
  type: 'done';
648
648
  };
649
649
 
650
- export type { ArcLoopConfig as A, Episode as E, ModelTier as M, ProfileConfig as P, RunStats as R, TraceEvent as T, ArcEvent as a, ArcRunResult as b, Activity as c, EpisodeTrace as d, ProfileDeclaration as e, AnyTool as f, ProcessProfile as g, ModelFactory as h, ToolChoiceConfig as i };
650
+ export type { ArcLoopConfig as A, ModelFactory as M, ProfileConfig as P, TraceEvent as T, ArcEvent as a, ArcRunResult as b, ProfileDeclaration as c, AnyTool as d, ProcessProfile as e, ToolChoiceConfig as f };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bluecopa/harness",
3
- "version": "0.1.0-snapshot.95",
3
+ "version": "0.1.0-snapshot.97",
4
4
  "description": "Provider-agnostic TypeScript agent framework",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
@@ -17,10 +17,6 @@
17
17
  "types": "./dist/arc/create-arc-agent.d.ts",
18
18
  "import": "./dist/arc/create-arc-agent.js"
19
19
  },
20
- "./arc/create-org-arc-agent": {
21
- "types": "./dist/arc/create-org-arc-agent.d.ts",
22
- "import": "./dist/arc/create-org-arc-agent.js"
23
- },
24
20
  "./arc/profile-builder": {
25
21
  "types": "./dist/arc/profile-builder.d.ts",
26
22
  "import": "./dist/arc/profile-builder.js"
@@ -1,143 +0,0 @@
1
- import { A as AgentMessage } from '../types-C3Cb6Ixg.js';
2
- import { A as ArcLoopConfig, M as ModelTier, c as Activity, R as RunStats, E as Episode, d as EpisodeTrace } from '../types-B8J4gkWv.js';
3
- import 'zod';
4
- import 'ai';
5
-
6
- interface OrgWorkerOutput {
7
- roleLabel: string;
8
- focus: string;
9
- contributionSummary: string;
10
- abstained: boolean;
11
- noveltyReason: string;
12
- openQuestions: string[];
13
- nextSuggestions: string[];
14
- confidence: number;
15
- }
16
- interface OrgAcceptedEpisode {
17
- workerId: string;
18
- round: number;
19
- episode: Episode;
20
- trace: EpisodeTrace;
21
- orgOutput: OrgWorkerOutput;
22
- }
23
- interface OrgRejectedEpisode {
24
- workerId: string;
25
- round: number;
26
- episode: Episode;
27
- trace: EpisodeTrace;
28
- orgOutput: OrgWorkerOutput;
29
- reason: string;
30
- }
31
- interface OrgArcLoopConfig extends ArcLoopConfig {
32
- maxWorkers?: number;
33
- maxAbstentions?: number;
34
- workerModel?: ModelTier;
35
- synthesisModel?: ModelTier;
36
- workerMaxSteps?: number;
37
- workerSystemPrompt?: string;
38
- synthesisSystemPrompt?: string;
39
- workerAllowedTools?: string[];
40
- workerDisallowedTools?: string[];
41
- rejectOnForbiddenToolUse?: boolean;
42
- askUser?: (question: string, options?: string[]) => Promise<string>;
43
- tellUser?: (message: string) => Promise<void>;
44
- downloadRawFile?: (path: string) => Promise<string>;
45
- }
46
- type OrgArcEvent = {
47
- type: 'text_delta';
48
- text: string;
49
- } | {
50
- type: 'process_dispatched';
51
- id: string;
52
- action: string;
53
- model: string;
54
- label?: string;
55
- profile?: string;
56
- } | {
57
- type: 'process_activity';
58
- id: string;
59
- activity: Activity;
60
- } | {
61
- type: 'process_completed';
62
- id: string;
63
- episodeId: string;
64
- summary: string;
65
- durationMs: number;
66
- } | {
67
- type: 'process_failed';
68
- id: string;
69
- error: string;
70
- } | {
71
- type: 'org_round_start';
72
- round: number;
73
- acceptedCount: number;
74
- rejectedCount: number;
75
- } | {
76
- type: 'org_worker_accepted';
77
- id: string;
78
- round: number;
79
- episodeId: string;
80
- focus: string;
81
- roleLabel: string;
82
- } | {
83
- type: 'org_worker_rejected';
84
- id: string;
85
- round: number;
86
- episodeId: string;
87
- reason: string;
88
- focus: string;
89
- } | {
90
- type: 'org_worker_abstained';
91
- id: string;
92
- round: number;
93
- episodeId: string;
94
- reason: string;
95
- } | {
96
- type: 'org_stop_condition_met';
97
- reason: string;
98
- round: number;
99
- acceptedCount: number;
100
- } | {
101
- type: 'org_synthesis_started';
102
- acceptedCount: number;
103
- } | {
104
- type: 'done';
105
- output: string;
106
- stats: RunStats;
107
- };
108
- interface OrgArcRunResult {
109
- output: string;
110
- events: OrgArcEvent[];
111
- acceptedEpisodes: OrgAcceptedEpisode[];
112
- rejectedEpisodes: OrgRejectedEpisode[];
113
- }
114
-
115
- declare class OrgArcLoop {
116
- private readonly runner;
117
- private readonly acceptedEpisodes;
118
- private readonly rejectedEpisodes;
119
- private readonly config;
120
- private readonly createModel;
121
- private readonly modelMap;
122
- private readonly coordinatorModel;
123
- constructor(config: OrgArcLoopConfig);
124
- run(messages: AgentMessage[], signal: AbortSignal): Promise<OrgArcRunResult>;
125
- stream(messages: AgentMessage[], signal: AbortSignal): AsyncGenerator<OrgArcEvent>;
126
- private evaluateWorker;
127
- private loadSessionFacts;
128
- private runCandidateWorker;
129
- private buildCoordinatorPrompt;
130
- private maybeReplyDirectly;
131
- }
132
-
133
- interface OrgArcAgentConfig extends OrgArcLoopConfig {
134
- consolidate?: boolean;
135
- autoMemory?: boolean;
136
- }
137
- declare function createOrgArcAgent(config: OrgArcAgentConfig): {
138
- loop: OrgArcLoop;
139
- run(messages: AgentMessage[], signal?: AbortSignal): Promise<OrgArcRunResult>;
140
- stream(messages: AgentMessage[], signal?: AbortSignal): AsyncGenerator<OrgArcEvent>;
141
- };
142
-
143
- export { type OrgArcAgentConfig, createOrgArcAgent };