@bluecopa/harness 0.1.0-snapshot.99 → 2.0.0
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/dist/arc/index.d.ts +796 -0
- package/dist/arc/index.js +2863 -0
- package/dist/arc/index.js.map +1 -0
- package/dist/observability/otel.d.ts +36 -0
- package/dist/observability/otel.js +73 -0
- package/dist/observability/otel.js.map +1 -0
- package/dist/shared-types-DRxnerLT.d.ts +138 -0
- package/dist/skills/index.d.ts +67 -0
- package/dist/skills/index.js +282 -0
- package/dist/skills/index.js.map +1 -0
- package/package.json +11 -15
- package/dist/arc/app-adapter.d.ts +0 -101
- package/dist/arc/app-adapter.js +0 -312
- package/dist/arc/app-adapter.js.map +0 -1
- package/dist/arc/create-arc-agent.d.ts +0 -50
- package/dist/arc/create-arc-agent.js +0 -2926
- package/dist/arc/create-arc-agent.js.map +0 -1
- package/dist/arc/profile-builder.d.ts +0 -49
- package/dist/arc/profile-builder.js +0 -163
- package/dist/arc/profile-builder.js.map +0 -1
- package/dist/loop/vercel-agent-loop.d.ts +0 -99
- package/dist/loop/vercel-agent-loop.js +0 -308
- package/dist/loop/vercel-agent-loop.js.map +0 -1
- package/dist/types-g-3DvSSE.d.ts +0 -745
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bluecopa/harness",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Provider-agnostic TypeScript agent framework",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|
|
@@ -9,21 +9,17 @@
|
|
|
9
9
|
"README.md"
|
|
10
10
|
],
|
|
11
11
|
"exports": {
|
|
12
|
-
"./arc
|
|
13
|
-
"types": "./dist/arc/
|
|
14
|
-
"import": "./dist/arc/
|
|
12
|
+
"./arc": {
|
|
13
|
+
"types": "./dist/arc/index.d.ts",
|
|
14
|
+
"import": "./dist/arc/index.js"
|
|
15
15
|
},
|
|
16
|
-
"./
|
|
17
|
-
"types": "./dist/
|
|
18
|
-
"import": "./dist/
|
|
16
|
+
"./skills": {
|
|
17
|
+
"types": "./dist/skills/index.d.ts",
|
|
18
|
+
"import": "./dist/skills/index.js"
|
|
19
19
|
},
|
|
20
|
-
"./
|
|
21
|
-
"types": "./dist/
|
|
22
|
-
"import": "./dist/
|
|
23
|
-
},
|
|
24
|
-
"./loop/vercel-agent-loop": {
|
|
25
|
-
"types": "./dist/loop/vercel-agent-loop.d.ts",
|
|
26
|
-
"import": "./dist/loop/vercel-agent-loop.js"
|
|
20
|
+
"./observability": {
|
|
21
|
+
"types": "./dist/observability/otel.d.ts",
|
|
22
|
+
"import": "./dist/observability/otel.js"
|
|
27
23
|
},
|
|
28
24
|
"./package.json": "./package.json"
|
|
29
25
|
},
|
|
@@ -47,6 +43,6 @@
|
|
|
47
43
|
},
|
|
48
44
|
"publishConfig": {
|
|
49
45
|
"registry": "https://registry.npmjs.org/",
|
|
50
|
-
"access": "
|
|
46
|
+
"access": "public"
|
|
51
47
|
}
|
|
52
48
|
}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { A as ArcEvent, S as StepUsage } from '../types-g-3DvSSE.js';
|
|
2
|
-
import 'zod';
|
|
3
|
-
import 'ai';
|
|
4
|
-
|
|
5
|
-
type ArcAppRunStats = {
|
|
6
|
-
tools: number;
|
|
7
|
-
commands: number;
|
|
8
|
-
reads: number;
|
|
9
|
-
searches: number;
|
|
10
|
-
fileChanges: number;
|
|
11
|
-
failures: number;
|
|
12
|
-
inputTokens: number;
|
|
13
|
-
outputTokens: number;
|
|
14
|
-
};
|
|
15
|
-
type ArcAppProcessMeta = {
|
|
16
|
-
label?: string;
|
|
17
|
-
profile?: string;
|
|
18
|
-
model?: string;
|
|
19
|
-
dispatchedAt: number;
|
|
20
|
-
status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
|
|
21
|
-
step?: number;
|
|
22
|
-
usage?: StepUsage;
|
|
23
|
-
};
|
|
24
|
-
type ArcAppBackgroundTurn = {
|
|
25
|
-
id: string;
|
|
26
|
-
label?: string;
|
|
27
|
-
profile?: string;
|
|
28
|
-
model?: string;
|
|
29
|
-
dispatchedAt: number;
|
|
30
|
-
};
|
|
31
|
-
type ArcAppState = {
|
|
32
|
-
activeTurnId: string | null;
|
|
33
|
-
processes: Record<string, ArcAppProcessMeta>;
|
|
34
|
-
backgroundTurns: Record<string, ArcAppBackgroundTurn>;
|
|
35
|
-
runStats: ArcAppRunStats;
|
|
36
|
-
};
|
|
37
|
-
type ArcAppObservedActivity = {
|
|
38
|
-
phase: 'start' | 'end';
|
|
39
|
-
processId?: string;
|
|
40
|
-
toolName: string;
|
|
41
|
-
args?: Record<string, unknown>;
|
|
42
|
-
ok?: boolean;
|
|
43
|
-
preview?: string;
|
|
44
|
-
command?: string;
|
|
45
|
-
path?: string;
|
|
46
|
-
};
|
|
47
|
-
type ArcAdapterInputEvent = ArcEvent;
|
|
48
|
-
type ArcAppEvent = {
|
|
49
|
-
type: 'state_changed';
|
|
50
|
-
state: ArcAppState;
|
|
51
|
-
} | {
|
|
52
|
-
type: 'stats_changed';
|
|
53
|
-
stats: ArcAppRunStats;
|
|
54
|
-
} | {
|
|
55
|
-
type: 'activity_observed';
|
|
56
|
-
activity: ArcAppObservedActivity;
|
|
57
|
-
} | {
|
|
58
|
-
type: 'process_progress';
|
|
59
|
-
id: string;
|
|
60
|
-
meta: ArcAppProcessMeta;
|
|
61
|
-
} | {
|
|
62
|
-
type: 'process_summary';
|
|
63
|
-
id: string;
|
|
64
|
-
meta?: ArcAppProcessMeta;
|
|
65
|
-
summary: string;
|
|
66
|
-
display: string;
|
|
67
|
-
} | {
|
|
68
|
-
type: 'process_failed';
|
|
69
|
-
id?: string;
|
|
70
|
-
error: string;
|
|
71
|
-
} | {
|
|
72
|
-
type: 'assistant_output';
|
|
73
|
-
text: string;
|
|
74
|
-
};
|
|
75
|
-
type Listener = (event: ArcAppEvent) => void;
|
|
76
|
-
declare function formatArcAppProcessSummary(summary: string): string;
|
|
77
|
-
declare function createEmptyArcAppRunStats(): ArcAppRunStats;
|
|
78
|
-
declare function formatArcAppRunStats(stats: ArcAppRunStats): string;
|
|
79
|
-
declare function buildArcAppRunSummary(stats: ArcAppRunStats, modelId: string): string | null;
|
|
80
|
-
declare function createInitialArcAppState(): ArcAppState;
|
|
81
|
-
declare class ArcAppAdapter {
|
|
82
|
-
private state;
|
|
83
|
-
private listeners;
|
|
84
|
-
private bashCommands;
|
|
85
|
-
constructor(initialState?: ArcAppState);
|
|
86
|
-
subscribe(listener: Listener): () => void;
|
|
87
|
-
getState(): ArcAppState;
|
|
88
|
-
reset(): void;
|
|
89
|
-
beginTurn(turnId: string): void;
|
|
90
|
-
finishTurn(turnId: string): void;
|
|
91
|
-
backgroundTurn(turnId: string, meta: {
|
|
92
|
-
label?: string;
|
|
93
|
-
profile?: string;
|
|
94
|
-
model?: string;
|
|
95
|
-
}): boolean;
|
|
96
|
-
handleArcEvent(event: ArcAdapterInputEvent): void;
|
|
97
|
-
private emit;
|
|
98
|
-
private handleProcessActivity;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
export { type ArcAdapterInputEvent, ArcAppAdapter, type ArcAppBackgroundTurn, type ArcAppEvent, type ArcAppObservedActivity, type ArcAppProcessMeta, type ArcAppRunStats, type ArcAppState, buildArcAppRunSummary, createEmptyArcAppRunStats, createInitialArcAppState, formatArcAppProcessSummary, formatArcAppRunStats };
|
package/dist/arc/app-adapter.js
DELETED
|
@@ -1,312 +0,0 @@
|
|
|
1
|
-
// src/arc/app-adapter.ts
|
|
2
|
-
function cloneState(state) {
|
|
3
|
-
return {
|
|
4
|
-
activeTurnId: state.activeTurnId,
|
|
5
|
-
processes: { ...state.processes },
|
|
6
|
-
backgroundTurns: { ...state.backgroundTurns },
|
|
7
|
-
runStats: { ...state.runStats }
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
function withDefined(value) {
|
|
11
|
-
return Object.fromEntries(
|
|
12
|
-
Object.entries(value).filter(([, entry]) => entry !== void 0)
|
|
13
|
-
);
|
|
14
|
-
}
|
|
15
|
-
function cleanProcessSummary(summary) {
|
|
16
|
-
const lines = summary.split("\n").map((line) => line.trim()).filter(Boolean);
|
|
17
|
-
const resultLine = lines.find((line) => /^result\s*:/i.test(line));
|
|
18
|
-
if (resultLine) {
|
|
19
|
-
return resultLine.replace(/^result\s*:\s*/i, "").trim();
|
|
20
|
-
}
|
|
21
|
-
const firstUsefulLine = lines.find((line) => !/^(action|status|steps|tools used|files read|files modified)\s*:/i.test(line));
|
|
22
|
-
if (firstUsefulLine) {
|
|
23
|
-
return firstUsefulLine;
|
|
24
|
-
}
|
|
25
|
-
return summary.replace(/^(action|summary|result)\s*:\s*/i, "").trim();
|
|
26
|
-
}
|
|
27
|
-
function formatArcAppProcessSummary(summary) {
|
|
28
|
-
return cleanProcessSummary(summary);
|
|
29
|
-
}
|
|
30
|
-
function createEmptyArcAppRunStats() {
|
|
31
|
-
return {
|
|
32
|
-
tools: 0,
|
|
33
|
-
commands: 0,
|
|
34
|
-
reads: 0,
|
|
35
|
-
searches: 0,
|
|
36
|
-
fileChanges: 0,
|
|
37
|
-
failures: 0,
|
|
38
|
-
inputTokens: 0,
|
|
39
|
-
outputTokens: 0
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
function formatArcAppRunStats(stats) {
|
|
43
|
-
const parts = [
|
|
44
|
-
`${stats.tools} tool${stats.tools === 1 ? "" : "s"}`,
|
|
45
|
-
stats.commands ? `${stats.commands} command${stats.commands === 1 ? "" : "s"}` : "",
|
|
46
|
-
stats.reads ? `${stats.reads} read${stats.reads === 1 ? "" : "s"}` : "",
|
|
47
|
-
stats.searches ? `${stats.searches} search${stats.searches === 1 ? "" : "es"}` : "",
|
|
48
|
-
stats.fileChanges ? `${stats.fileChanges} file change${stats.fileChanges === 1 ? "" : "s"}` : "",
|
|
49
|
-
stats.failures ? `${stats.failures} failure${stats.failures === 1 ? "" : "s"}` : "",
|
|
50
|
-
stats.inputTokens ? `${stats.inputTokens} in` : "",
|
|
51
|
-
stats.outputTokens ? `${stats.outputTokens} out` : ""
|
|
52
|
-
].filter(Boolean);
|
|
53
|
-
return parts.join(" \xB7 ");
|
|
54
|
-
}
|
|
55
|
-
function buildArcAppRunSummary(stats, modelId) {
|
|
56
|
-
if (stats.tools === 0 && stats.failures === 0) {
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
59
|
-
const parts = [
|
|
60
|
-
`model ${modelId}`,
|
|
61
|
-
`${stats.tools} tool${stats.tools === 1 ? "" : "s"}`,
|
|
62
|
-
stats.commands ? `${stats.commands} command${stats.commands === 1 ? "" : "s"}` : "",
|
|
63
|
-
stats.reads ? `${stats.reads} read${stats.reads === 1 ? "" : "s"}` : "",
|
|
64
|
-
stats.searches ? `${stats.searches} search${stats.searches === 1 ? "" : "es"}` : "",
|
|
65
|
-
stats.fileChanges ? `${stats.fileChanges} file change${stats.fileChanges === 1 ? "" : "s"}` : "",
|
|
66
|
-
stats.failures ? `${stats.failures} failure${stats.failures === 1 ? "" : "s"}` : "",
|
|
67
|
-
stats.inputTokens ? `${stats.inputTokens} input tokens` : "",
|
|
68
|
-
stats.outputTokens ? `${stats.outputTokens} output tokens` : ""
|
|
69
|
-
].filter(Boolean);
|
|
70
|
-
return `Run summary
|
|
71
|
-
|
|
72
|
-
${parts.map((part) => `- ${part}`).join("\n")}`;
|
|
73
|
-
}
|
|
74
|
-
function createInitialArcAppState() {
|
|
75
|
-
return {
|
|
76
|
-
activeTurnId: null,
|
|
77
|
-
processes: {},
|
|
78
|
-
backgroundTurns: {},
|
|
79
|
-
runStats: createEmptyArcAppRunStats()
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
var ArcAppAdapter = class {
|
|
83
|
-
state;
|
|
84
|
-
listeners = /* @__PURE__ */ new Set();
|
|
85
|
-
bashCommands = {};
|
|
86
|
-
constructor(initialState = createInitialArcAppState()) {
|
|
87
|
-
this.state = cloneState(initialState);
|
|
88
|
-
}
|
|
89
|
-
subscribe(listener) {
|
|
90
|
-
this.listeners.add(listener);
|
|
91
|
-
return () => {
|
|
92
|
-
this.listeners.delete(listener);
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
getState() {
|
|
96
|
-
return cloneState(this.state);
|
|
97
|
-
}
|
|
98
|
-
reset() {
|
|
99
|
-
this.state = createInitialArcAppState();
|
|
100
|
-
this.bashCommands = {};
|
|
101
|
-
this.emit({ type: "state_changed", state: this.getState() });
|
|
102
|
-
}
|
|
103
|
-
beginTurn(turnId) {
|
|
104
|
-
if (this.state.activeTurnId === turnId) return;
|
|
105
|
-
this.state.activeTurnId = turnId;
|
|
106
|
-
this.emit({ type: "state_changed", state: this.getState() });
|
|
107
|
-
}
|
|
108
|
-
finishTurn(turnId) {
|
|
109
|
-
let changed = false;
|
|
110
|
-
if (this.state.activeTurnId === turnId) {
|
|
111
|
-
this.state.activeTurnId = null;
|
|
112
|
-
changed = true;
|
|
113
|
-
}
|
|
114
|
-
if (this.state.backgroundTurns[turnId]) {
|
|
115
|
-
delete this.state.backgroundTurns[turnId];
|
|
116
|
-
changed = true;
|
|
117
|
-
}
|
|
118
|
-
if (changed) {
|
|
119
|
-
this.emit({ type: "state_changed", state: this.getState() });
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
backgroundTurn(turnId, meta) {
|
|
123
|
-
if (this.state.activeTurnId !== turnId) {
|
|
124
|
-
return false;
|
|
125
|
-
}
|
|
126
|
-
this.state.activeTurnId = null;
|
|
127
|
-
this.state.backgroundTurns[turnId] = withDefined({
|
|
128
|
-
id: turnId,
|
|
129
|
-
label: meta.label,
|
|
130
|
-
profile: meta.profile,
|
|
131
|
-
model: meta.model,
|
|
132
|
-
dispatchedAt: Date.now()
|
|
133
|
-
});
|
|
134
|
-
this.emit({ type: "state_changed", state: this.getState() });
|
|
135
|
-
return true;
|
|
136
|
-
}
|
|
137
|
-
handleArcEvent(event) {
|
|
138
|
-
switch (event.type) {
|
|
139
|
-
case "process_dispatched":
|
|
140
|
-
this.state.processes[event.id] = withDefined({
|
|
141
|
-
label: event.label,
|
|
142
|
-
profile: event.profile,
|
|
143
|
-
model: event.model,
|
|
144
|
-
dispatchedAt: this.state.processes[event.id]?.dispatchedAt ?? Date.now(),
|
|
145
|
-
status: "pending"
|
|
146
|
-
});
|
|
147
|
-
this.emit({ type: "state_changed", state: this.getState() });
|
|
148
|
-
return;
|
|
149
|
-
case "process_step_start":
|
|
150
|
-
if (!this.state.processes[event.id]) return;
|
|
151
|
-
this.state.processes[event.id] = withDefined({
|
|
152
|
-
...this.state.processes[event.id],
|
|
153
|
-
status: "running",
|
|
154
|
-
step: event.step
|
|
155
|
-
});
|
|
156
|
-
const startedMeta = this.state.processes[event.id];
|
|
157
|
-
this.emit({
|
|
158
|
-
type: "process_progress",
|
|
159
|
-
id: event.id,
|
|
160
|
-
meta: startedMeta
|
|
161
|
-
});
|
|
162
|
-
this.emit({ type: "state_changed", state: this.getState() });
|
|
163
|
-
return;
|
|
164
|
-
case "process_step_end":
|
|
165
|
-
if (!this.state.processes[event.id]) return;
|
|
166
|
-
this.state.processes[event.id] = withDefined({
|
|
167
|
-
...this.state.processes[event.id],
|
|
168
|
-
status: "running",
|
|
169
|
-
step: event.step,
|
|
170
|
-
usage: event.usage
|
|
171
|
-
});
|
|
172
|
-
if (event.usage?.inputTokens != null) {
|
|
173
|
-
this.state.runStats.inputTokens = event.usage.inputTokens;
|
|
174
|
-
}
|
|
175
|
-
if (event.usage?.outputTokens != null) {
|
|
176
|
-
this.state.runStats.outputTokens = event.usage.outputTokens;
|
|
177
|
-
}
|
|
178
|
-
const steppedMeta = this.state.processes[event.id];
|
|
179
|
-
this.emit({
|
|
180
|
-
type: "process_progress",
|
|
181
|
-
id: event.id,
|
|
182
|
-
meta: steppedMeta
|
|
183
|
-
});
|
|
184
|
-
this.emit({ type: "stats_changed", stats: { ...this.state.runStats } });
|
|
185
|
-
this.emit({ type: "state_changed", state: this.getState() });
|
|
186
|
-
return;
|
|
187
|
-
case "process_activity":
|
|
188
|
-
this.handleProcessActivity(event);
|
|
189
|
-
return;
|
|
190
|
-
case "process_completed":
|
|
191
|
-
if (this.state.processes[event.id]) {
|
|
192
|
-
this.state.processes[event.id] = withDefined({
|
|
193
|
-
...this.state.processes[event.id],
|
|
194
|
-
status: "completed"
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
const display = formatArcAppProcessSummary(event.summary);
|
|
198
|
-
this.emit(withDefined({
|
|
199
|
-
type: "process_summary",
|
|
200
|
-
id: event.id,
|
|
201
|
-
meta: this.state.processes[event.id],
|
|
202
|
-
summary: event.summary,
|
|
203
|
-
display
|
|
204
|
-
}));
|
|
205
|
-
delete this.state.processes[event.id];
|
|
206
|
-
delete this.state.backgroundTurns[event.id];
|
|
207
|
-
this.emit({ type: "state_changed", state: this.getState() });
|
|
208
|
-
return;
|
|
209
|
-
case "done":
|
|
210
|
-
this.emit({
|
|
211
|
-
type: "assistant_output",
|
|
212
|
-
text: event.output
|
|
213
|
-
});
|
|
214
|
-
return;
|
|
215
|
-
case "process_failed":
|
|
216
|
-
this.emit(withDefined({
|
|
217
|
-
type: "process_failed",
|
|
218
|
-
id: event.id,
|
|
219
|
-
error: event.error ?? "unknown error"
|
|
220
|
-
}));
|
|
221
|
-
this.state.runStats.failures += 1;
|
|
222
|
-
this.emit({ type: "stats_changed", stats: { ...this.state.runStats } });
|
|
223
|
-
if (event.id) {
|
|
224
|
-
if (this.state.processes[event.id]) {
|
|
225
|
-
this.state.processes[event.id] = withDefined({
|
|
226
|
-
...this.state.processes[event.id],
|
|
227
|
-
status: event.error === "cancelled" ? "cancelled" : "failed"
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
delete this.state.processes[event.id];
|
|
231
|
-
delete this.state.backgroundTurns[event.id];
|
|
232
|
-
this.emit({ type: "state_changed", state: this.getState() });
|
|
233
|
-
}
|
|
234
|
-
return;
|
|
235
|
-
default:
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
emit(event) {
|
|
240
|
-
for (const listener of this.listeners) {
|
|
241
|
-
listener(event);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
handleProcessActivity(event) {
|
|
245
|
-
const activity = event.activity;
|
|
246
|
-
if (activity.type === "tool_start") {
|
|
247
|
-
this.state.runStats.tools += 1;
|
|
248
|
-
if (activity.name === "Bash") {
|
|
249
|
-
this.state.runStats.commands += 1;
|
|
250
|
-
const command = getArgString(activity.args, "command");
|
|
251
|
-
if (event.id) {
|
|
252
|
-
this.bashCommands[event.id] = command;
|
|
253
|
-
}
|
|
254
|
-
} else if (activity.name === "Read") {
|
|
255
|
-
this.state.runStats.reads += 1;
|
|
256
|
-
} else if (activity.name === "Grep" || activity.name === "Glob") {
|
|
257
|
-
this.state.runStats.searches += 1;
|
|
258
|
-
} else if (activity.name === "Edit" || activity.name === "Write") {
|
|
259
|
-
this.state.runStats.fileChanges += 1;
|
|
260
|
-
}
|
|
261
|
-
this.emit({
|
|
262
|
-
type: "activity_observed",
|
|
263
|
-
activity: withDefined({
|
|
264
|
-
phase: "start",
|
|
265
|
-
processId: event.id,
|
|
266
|
-
toolName: activity.name,
|
|
267
|
-
args: activity.args,
|
|
268
|
-
command: activity.name === "Bash" ? getArgString(activity.args, "command") : void 0,
|
|
269
|
-
path: activity.name === "Read" || activity.name === "Write" || activity.name === "Edit" ? getArgString(activity.args, "path") : void 0
|
|
270
|
-
})
|
|
271
|
-
});
|
|
272
|
-
this.emit({ type: "stats_changed", stats: { ...this.state.runStats } });
|
|
273
|
-
return;
|
|
274
|
-
}
|
|
275
|
-
if (activity.type === "tool_end") {
|
|
276
|
-
if (!activity.ok) {
|
|
277
|
-
this.state.runStats.failures += 1;
|
|
278
|
-
}
|
|
279
|
-
if (activity.name === "Bash") {
|
|
280
|
-
const command = event.id ? this.bashCommands[event.id] ?? "" : "";
|
|
281
|
-
if (event.id) {
|
|
282
|
-
delete this.bashCommands[event.id];
|
|
283
|
-
}
|
|
284
|
-
this.emit({
|
|
285
|
-
type: "activity_observed",
|
|
286
|
-
activity: withDefined({
|
|
287
|
-
phase: "end",
|
|
288
|
-
processId: event.id,
|
|
289
|
-
toolName: activity.name,
|
|
290
|
-
ok: activity.ok,
|
|
291
|
-
preview: activity.preview ?? "",
|
|
292
|
-
command
|
|
293
|
-
})
|
|
294
|
-
});
|
|
295
|
-
}
|
|
296
|
-
this.emit({ type: "stats_changed", stats: { ...this.state.runStats } });
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
};
|
|
300
|
-
function getArgString(args, ...keys) {
|
|
301
|
-
for (const key of keys) {
|
|
302
|
-
const value = args?.[key];
|
|
303
|
-
if (typeof value === "string") {
|
|
304
|
-
return value;
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
return "";
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
export { ArcAppAdapter, buildArcAppRunSummary, createEmptyArcAppRunStats, createInitialArcAppState, formatArcAppProcessSummary, formatArcAppRunStats };
|
|
311
|
-
//# sourceMappingURL=app-adapter.js.map
|
|
312
|
-
//# sourceMappingURL=app-adapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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';\nimport type { ArcEvent } from './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 = ArcEvent;\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 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 (!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 (!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 (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.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: Extract<ArcAdapterInputEvent, { type: 'process_activity' }>): void {\n const activity = event.activity;\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,50 +0,0 @@
|
|
|
1
|
-
import { a as ArcLoopConfig, b as AgentMessage, A as ArcEvent, c as ArcRunResult, T as TraceEvent } from '../types-g-3DvSSE.js';
|
|
2
|
-
import 'zod';
|
|
3
|
-
import 'ai';
|
|
4
|
-
|
|
5
|
-
declare class ArcLoop {
|
|
6
|
-
private readonly config;
|
|
7
|
-
private readonly ctx;
|
|
8
|
-
private readonly memory;
|
|
9
|
-
private readonly modelMap;
|
|
10
|
-
private readonly orchestratorModel;
|
|
11
|
-
private readonly systemPrompt;
|
|
12
|
-
private readonly cachedSystem;
|
|
13
|
-
private readonly tools;
|
|
14
|
-
private readonly resilience;
|
|
15
|
-
private readonly traceWriter;
|
|
16
|
-
private readonly skillResolver;
|
|
17
|
-
private readonly createModel;
|
|
18
|
-
private readonly processManager;
|
|
19
|
-
private readonly turnRunner;
|
|
20
|
-
private readonly completionPolicy;
|
|
21
|
-
/** Cached session memo facts — loaded once at stream start, injected into all threads. */
|
|
22
|
-
private cachedSessionMemoFacts;
|
|
23
|
-
constructor(config: ArcLoopConfig);
|
|
24
|
-
private trace;
|
|
25
|
-
stream(userMessages: AgentMessage[], signal: AbortSignal): AsyncGenerator<ArcEvent>;
|
|
26
|
-
run(messages: AgentMessage[], signal: AbortSignal): Promise<ArcRunResult>;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
interface ArcAgentConfig extends ArcLoopConfig {
|
|
30
|
-
/** Run consolidation after task completion (default: true) */
|
|
31
|
-
consolidate?: boolean;
|
|
32
|
-
/** Automatically detect patterns and promote to long-term memory (default: true) */
|
|
33
|
-
autoMemory?: boolean;
|
|
34
|
-
/** Trace writer for Stateright verification bridge */
|
|
35
|
-
traceWriter?: (event: TraceEvent) => void;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Create an agent powered by the ArcLoop v2 orchestrator.
|
|
39
|
-
*
|
|
40
|
-
* Returns an object with run() and stream() methods that drive
|
|
41
|
-
* the ArcLoop directly. Consolidation runs automatically after
|
|
42
|
-
* each run/stream completes.
|
|
43
|
-
*/
|
|
44
|
-
declare function createArcAgent(config: ArcAgentConfig): {
|
|
45
|
-
loop: ArcLoop;
|
|
46
|
-
run(messages: AgentMessage[], signal?: AbortSignal): Promise<ArcRunResult>;
|
|
47
|
-
stream(messages: AgentMessage[], signal?: AbortSignal): AsyncGenerator<ArcEvent>;
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
export { type ArcAgentConfig, createArcAgent };
|