@bluecopa/harness 0.1.0-snapshot.91 → 0.1.0-snapshot.92
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/app-adapter.d.ts +11 -0
- package/dist/arc/app-adapter.js +45 -1
- package/dist/arc/app-adapter.js.map +1 -1
- package/dist/arc/create-arc-agent.d.ts +2 -1
- package/dist/arc/create-org-arc-agent.d.ts +2 -1
- package/dist/arc/profile-builder.d.ts +2 -1
- package/dist/loop/vercel-agent-loop.d.ts +2 -1
- package/dist/{types-aFHO_5sL.d.ts → types-B8J4gkWv.d.ts} +2 -97
- package/dist/types-C3Cb6Ixg.d.ts +97 -0
- package/package.json +1 -1
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import { S as StepUsage } from '../types-C3Cb6Ixg.js';
|
|
2
|
+
|
|
1
3
|
type ArcAppProcessMeta = {
|
|
2
4
|
label?: string;
|
|
3
5
|
profile?: string;
|
|
4
6
|
model?: string;
|
|
5
7
|
dispatchedAt: number;
|
|
8
|
+
status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
|
|
9
|
+
step?: number;
|
|
10
|
+
usage?: StepUsage;
|
|
6
11
|
};
|
|
7
12
|
type ArcAppBackgroundTurn = {
|
|
8
13
|
id: string;
|
|
@@ -22,12 +27,18 @@ type ArcAdapterInputEvent = {
|
|
|
22
27
|
label?: string;
|
|
23
28
|
profile?: string;
|
|
24
29
|
model?: string;
|
|
30
|
+
step?: number;
|
|
31
|
+
usage?: StepUsage;
|
|
25
32
|
summary?: string;
|
|
26
33
|
error?: string;
|
|
27
34
|
};
|
|
28
35
|
type ArcAppEvent = {
|
|
29
36
|
type: 'state_changed';
|
|
30
37
|
state: ArcAppState;
|
|
38
|
+
} | {
|
|
39
|
+
type: 'process_progress';
|
|
40
|
+
id: string;
|
|
41
|
+
meta: ArcAppProcessMeta;
|
|
31
42
|
} | {
|
|
32
43
|
type: 'process_summary';
|
|
33
44
|
id: string;
|
package/dist/arc/app-adapter.js
CHANGED
|
@@ -91,12 +91,50 @@ var ArcAppAdapter = class {
|
|
|
91
91
|
label: event.label,
|
|
92
92
|
profile: event.profile,
|
|
93
93
|
model: event.model,
|
|
94
|
-
dispatchedAt: this.state.processes[event.id]?.dispatchedAt ?? Date.now()
|
|
94
|
+
dispatchedAt: this.state.processes[event.id]?.dispatchedAt ?? Date.now(),
|
|
95
|
+
status: "pending"
|
|
96
|
+
});
|
|
97
|
+
this.emit({ type: "state_changed", state: this.getState() });
|
|
98
|
+
return;
|
|
99
|
+
case "process_step_start":
|
|
100
|
+
if (!event.id || !this.state.processes[event.id]) return;
|
|
101
|
+
this.state.processes[event.id] = withDefined({
|
|
102
|
+
...this.state.processes[event.id],
|
|
103
|
+
status: "running",
|
|
104
|
+
step: event.step
|
|
105
|
+
});
|
|
106
|
+
const startedMeta = this.state.processes[event.id];
|
|
107
|
+
this.emit({
|
|
108
|
+
type: "process_progress",
|
|
109
|
+
id: event.id,
|
|
110
|
+
meta: startedMeta
|
|
111
|
+
});
|
|
112
|
+
this.emit({ type: "state_changed", state: this.getState() });
|
|
113
|
+
return;
|
|
114
|
+
case "process_step_end":
|
|
115
|
+
if (!event.id || !this.state.processes[event.id]) return;
|
|
116
|
+
this.state.processes[event.id] = withDefined({
|
|
117
|
+
...this.state.processes[event.id],
|
|
118
|
+
status: "running",
|
|
119
|
+
step: event.step,
|
|
120
|
+
usage: event.usage
|
|
121
|
+
});
|
|
122
|
+
const steppedMeta = this.state.processes[event.id];
|
|
123
|
+
this.emit({
|
|
124
|
+
type: "process_progress",
|
|
125
|
+
id: event.id,
|
|
126
|
+
meta: steppedMeta
|
|
95
127
|
});
|
|
96
128
|
this.emit({ type: "state_changed", state: this.getState() });
|
|
97
129
|
return;
|
|
98
130
|
case "process_completed":
|
|
99
131
|
if (!event.id) return;
|
|
132
|
+
if (this.state.processes[event.id]) {
|
|
133
|
+
this.state.processes[event.id] = withDefined({
|
|
134
|
+
...this.state.processes[event.id],
|
|
135
|
+
status: "completed"
|
|
136
|
+
});
|
|
137
|
+
}
|
|
100
138
|
this.emit(withDefined({
|
|
101
139
|
type: "process_summary",
|
|
102
140
|
id: event.id,
|
|
@@ -114,6 +152,12 @@ var ArcAppAdapter = class {
|
|
|
114
152
|
error: event.error ?? "unknown error"
|
|
115
153
|
}));
|
|
116
154
|
if (event.id) {
|
|
155
|
+
if (this.state.processes[event.id]) {
|
|
156
|
+
this.state.processes[event.id] = withDefined({
|
|
157
|
+
...this.state.processes[event.id],
|
|
158
|
+
status: event.error === "cancelled" ? "cancelled" : "failed"
|
|
159
|
+
});
|
|
160
|
+
}
|
|
117
161
|
delete this.state.processes[event.id];
|
|
118
162
|
delete this.state.backgroundTurns[event.id];
|
|
119
163
|
this.emit({ type: "state_changed", state: this.getState() });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/arc/app-adapter.ts"],"names":[],"mappings":";AAsCA,SAAS,WAAW,KAAA,EAAiC;AACnD,EAAA,OAAO;AAAA,IACL,cAAc,KAAA,CAAM,YAAA;AAAA,IACpB,SAAA,EAAW,EAAE,GAAG,KAAA,CAAM,SAAA,EAAU;AAAA,IAChC,eAAA,EAAiB,EAAE,GAAG,KAAA,CAAM,eAAA;AAAgB,GAC9C;AACF;AAEA,SAAS,YAA+C,KAAA,EAAa;AACnE,EAAA,OAAO,MAAA,CAAO,WAAA;AAAA,IACZ,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,CAAE,MAAA,CAAO,CAAC,GAAG,KAAK,CAAA,KAAM,KAAA,KAAU,MAAS;AAAA,GACjE;AACF;AAEA,SAAS,oBAAoB,OAAA,EAAyB;AACpD,EAAA,MAAM,KAAA,GAAQ,OAAA,CACX,KAAA,CAAM,IAAI,CAAA,CACV,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,EAAM,CAAA,CACzB,OAAO,OAAO,CAAA;AAEjB,EAAA,MAAM,UAAA,GAAa,MAAM,IAAA,CAAK,CAAC,SAAS,cAAA,CAAe,IAAA,CAAK,IAAI,CAAC,CAAA;AACjE,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,OAAO,UAAA,CAAW,OAAA,CAAQ,iBAAA,EAAmB,EAAE,EAAE,IAAA,EAAK;AAAA,EACxD;AAEA,EAAA,MAAM,eAAA,GAAkB,MAAM,IAAA,CAAK,CAAC,SAAS,CAAC,kEAAA,CAAmE,IAAA,CAAK,IAAI,CAAC,CAAA;AAC3H,EAAA,IAAI,eAAA,EAAiB;AACnB,IAAA,OAAO,eAAA;AAAA,EACT;AAEA,EAAA,OAAO,OAAA,CACJ,OAAA,CAAQ,kCAAA,EAAoC,EAAE,EAC9C,IAAA,EAAK;AACV;AAEO,SAAS,wBAAA,GAAwC;AACtD,EAAA,OAAO;AAAA,IACL,YAAA,EAAc,IAAA;AAAA,IACd,WAAW,EAAC;AAAA,IACZ,iBAAiB;AAAC,GACpB;AACF;AAEO,IAAM,gBAAN,MAAoB;AAAA,EACjB,KAAA;AAAA,EAEA,SAAA,uBAAgB,GAAA,EAAc;AAAA,EAEtC,WAAA,CAAY,YAAA,GAA4B,wBAAA,EAAyB,EAAG;AAClE,IAAA,IAAA,CAAK,KAAA,GAAQ,WAAW,YAAY,CAAA;AAAA,EACtC;AAAA,EAEA,UAAU,QAAA,EAAgC;AACxC,IAAA,IAAA,CAAK,SAAA,CAAU,IAAI,QAAQ,CAAA;AAC3B,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,SAAA,CAAU,OAAO,QAAQ,CAAA;AAAA,IAChC,CAAA;AAAA,EACF;AAAA,EAEA,QAAA,GAAwB;AACtB,IAAA,OAAO,UAAA,CAAW,KAAK,KAAK,CAAA;AAAA,EAC9B;AAAA,EAEA,KAAA,GAAc;AACZ,IAAA,IAAA,CAAK,QAAQ,wBAAA,EAAyB;AACtC,IAAA,IAAA,CAAK,IAAA,CAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAO,IAAA,CAAK,QAAA,IAAY,CAAA;AAAA,EAC7D;AAAA,EAEA,UAAU,MAAA,EAAsB;AAC9B,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,YAAA,KAAiB,MAAA,EAAQ;AACxC,IAAA,IAAA,CAAK,MAAM,YAAA,GAAe,MAAA;AAC1B,IAAA,IAAA,CAAK,IAAA,CAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAO,IAAA,CAAK,QAAA,IAAY,CAAA;AAAA,EAC7D;AAAA,EAEA,WAAW,MAAA,EAAsB;AAC/B,IAAA,IAAI,OAAA,GAAU,KAAA;AACd,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,YAAA,KAAiB,MAAA,EAAQ;AACtC,MAAA,IAAA,CAAK,MAAM,YAAA,GAAe,IAAA;AAC1B,MAAA,OAAA,GAAU,IAAA;AAAA,IACZ;AACA,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,eAAA,CAAgB,MAAM,CAAA,EAAG;AACtC,MAAA,OAAO,IAAA,CAAK,KAAA,CAAM,eAAA,CAAgB,MAAM,CAAA;AACxC,MAAA,OAAA,GAAU,IAAA;AAAA,IACZ;AACA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,IAAA,CAAK,IAAA,CAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAO,IAAA,CAAK,QAAA,IAAY,CAAA;AAAA,IAC7D;AAAA,EACF;AAAA,EAEA,cAAA,CAAe,QAAgB,IAAA,EAAqE;AAClG,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,YAAA,KAAiB,MAAA,EAAQ;AACtC,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,IAAA,CAAK,MAAM,YAAA,GAAe,IAAA;AAC1B,IAAA,IAAA,CAAK,KAAA,CAAM,eAAA,CAAgB,MAAM,CAAA,GAAI,WAAA,CAAY;AAAA,MAC/C,EAAA,EAAI,MAAA;AAAA,MACJ,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,YAAA,EAAc,KAAK,GAAA;AAAI,KACxB,CAAA;AACD,IAAA,IAAA,CAAK,IAAA,CAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAO,IAAA,CAAK,QAAA,IAAY,CAAA;AAC3D,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,eAAe,KAAA,EAAmC;AAChD,IAAA,QAAQ,MAAM,IAAA;AAAM,MAClB,KAAK,oBAAA;AACH,QAAA,IAAI,CAAC,MAAM,EAAA,EAAI;AACf,QAAA,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,KAAA,CAAM,EAAE,IAAI,WAAA,CAAY;AAAA,UAC3C,OAAO,KAAA,CAAM,KAAA;AAAA,UACb,SAAS,KAAA,CAAM,OAAA;AAAA,UACf,OAAO,KAAA,CAAM,KAAA;AAAA,UACb,YAAA,EAAc,KAAK,KAAA,CAAM,SAAA,CAAU,MAAM,EAAE,CAAA,EAAG,YAAA,IAAgB,IAAA,CAAK,GAAA;AAAI,SACxE,CAAA;AACD,QAAA,IAAA,CAAK,IAAA,CAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAO,IAAA,CAAK,QAAA,IAAY,CAAA;AAC3D,QAAA;AAAA,MACF,KAAK,mBAAA;AACH,QAAA,IAAI,CAAC,MAAM,EAAA,EAAI;AACf,QAAA,IAAA,CAAK,KAAK,WAAA,CAAY;AAAA,UACpB,IAAA,EAAM,iBAAA;AAAA,UACN,IAAI,KAAA,CAAM,EAAA;AAAA,UACV,IAAA,EAAM,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,MAAM,EAAE,CAAA;AAAA,UACnC,OAAA,EAAS,mBAAA,CAAoB,KAAA,CAAM,OAAA,IAAW,EAAE;AAAA,SACjD,CAAgB,CAAA;AACjB,QAAA,OAAO,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,KAAA,CAAM,EAAE,CAAA;AACpC,QAAA,OAAO,IAAA,CAAK,KAAA,CAAM,eAAA,CAAgB,KAAA,CAAM,EAAE,CAAA;AAC1C,QAAA,IAAA,CAAK,IAAA,CAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAO,IAAA,CAAK,QAAA,IAAY,CAAA;AAC3D,QAAA;AAAA,MACF,KAAK,gBAAA;AACH,QAAA,IAAA,CAAK,KAAK,WAAA,CAAY;AAAA,UACpB,IAAA,EAAM,gBAAA;AAAA,UACN,IAAI,KAAA,CAAM,EAAA;AAAA,UACV,KAAA,EAAO,MAAM,KAAA,IAAS;AAAA,SACvB,CAAgB,CAAA;AACjB,QAAA,IAAI,MAAM,EAAA,EAAI;AACZ,UAAA,OAAO,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,KAAA,CAAM,EAAE,CAAA;AACpC,UAAA,OAAO,IAAA,CAAK,KAAA,CAAM,eAAA,CAAgB,KAAA,CAAM,EAAE,CAAA;AAC1C,UAAA,IAAA,CAAK,IAAA,CAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAO,IAAA,CAAK,QAAA,IAAY,CAAA;AAAA,QAC7D;AACA,QAAA;AAAA,MACF;AACE,QAAA;AAAA;AACJ,EACF;AAAA,EAEQ,KAAK,KAAA,EAA0B;AACrC,IAAA,KAAA,MAAW,QAAA,IAAY,KAAK,SAAA,EAAW;AACrC,MAAA,QAAA,CAAS,KAAK,CAAA;AAAA,IAChB;AAAA,EACF;AACF","file":"app-adapter.js","sourcesContent":["export type ArcAppProcessMeta = {\n label?: string;\n profile?: string;\n model?: string;\n dispatchedAt: number;\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};\n\nexport type ArcAdapterInputEvent = {\n type: string;\n id?: string;\n label?: string;\n profile?: string;\n model?: string;\n summary?: string;\n error?: string;\n};\n\nexport type ArcAppEvent =\n | { type: 'state_changed'; state: ArcAppState }\n | { type: 'process_summary'; id: string; meta?: ArcAppProcessMeta; summary: string }\n | { type: 'process_failed'; id?: string; error: 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 };\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 createInitialArcAppState(): ArcAppState {\n return {\n activeTurnId: null,\n processes: {},\n backgroundTurns: {},\n };\n}\n\nexport class ArcAppAdapter {\n private state: ArcAppState;\n\n private listeners = new Set<Listener>();\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.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 }) as ArcAppProcessMeta;\n this.emit({ type: 'state_changed', state: this.getState() });\n return;\n case 'process_completed':\n if (!event.id) return;\n this.emit(withDefined({\n type: 'process_summary',\n id: event.id,\n meta: this.state.processes[event.id],\n summary: cleanProcessSummary(event.summary ?? ''),\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 'process_failed':\n this.emit(withDefined({\n type: 'process_failed',\n id: event.id,\n error: event.error ?? 'unknown error',\n }) as ArcAppEvent);\n if (event.id) {\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"]}
|
|
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 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};\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 summary?: string;\n error?: string;\n};\n\nexport type ArcAppEvent =\n | { type: 'state_changed'; state: ArcAppState }\n | { type: 'process_progress'; id: string; meta: ArcAppProcessMeta }\n | { type: 'process_summary'; id: string; meta?: ArcAppProcessMeta; summary: string }\n | { type: 'process_failed'; id?: string; error: 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 };\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 createInitialArcAppState(): ArcAppState {\n return {\n activeTurnId: null,\n processes: {},\n backgroundTurns: {},\n };\n}\n\nexport class ArcAppAdapter {\n private state: ArcAppState;\n\n private listeners = new Set<Listener>();\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.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 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: 'state_changed', state: this.getState() });\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 this.emit(withDefined({\n type: 'process_summary',\n id: event.id,\n meta: this.state.processes[event.id],\n summary: cleanProcessSummary(event.summary ?? ''),\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 'process_failed':\n this.emit(withDefined({\n type: 'process_failed',\n id: event.id,\n error: event.error ?? 'unknown error',\n }) as ArcAppEvent);\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"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { A as
|
|
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
3
|
import 'zod';
|
|
3
4
|
import 'ai';
|
|
4
5
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { A as
|
|
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';
|
|
2
3
|
import 'zod';
|
|
3
4
|
import 'ai';
|
|
4
5
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { P as ProfileConfig,
|
|
1
|
+
import { P as ProfileConfig, e as ProfileDeclaration, f as AnyTool, g as ProcessProfile } from '../types-B8J4gkWv.js';
|
|
2
2
|
import 'zod';
|
|
3
|
+
import '../types-C3Cb6Ixg.js';
|
|
3
4
|
import 'ai';
|
|
4
5
|
|
|
5
6
|
/**
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Tool } from 'ai';
|
|
2
|
-
import {
|
|
2
|
+
import { h as ModelFactory, i as ToolChoiceConfig } from '../types-B8J4gkWv.js';
|
|
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';
|
|
3
4
|
import 'zod';
|
|
4
5
|
|
|
5
6
|
type AnyTool = Tool<any, any>;
|
|
@@ -1,102 +1,7 @@
|
|
|
1
1
|
import * as zod from 'zod';
|
|
2
|
+
import { A as AgentMessage, c as AgentAction, T as ToolCallAction, S as StepUsage } from './types-C3Cb6Ixg.js';
|
|
2
3
|
import { Tool } from 'ai';
|
|
3
4
|
|
|
4
|
-
interface ToolCallInfo {
|
|
5
|
-
toolCallId: string;
|
|
6
|
-
toolName: string;
|
|
7
|
-
args: Record<string, unknown>;
|
|
8
|
-
/** Provider-specific metadata preserved across round-trips (e.g., Gemini thought signatures). */
|
|
9
|
-
providerMetadata?: Record<string, unknown>;
|
|
10
|
-
}
|
|
11
|
-
interface ToolResultInfo {
|
|
12
|
-
toolCallId: string;
|
|
13
|
-
toolName: string;
|
|
14
|
-
result: string;
|
|
15
|
-
isError?: boolean;
|
|
16
|
-
}
|
|
17
|
-
type ContentPart = {
|
|
18
|
-
type: 'text';
|
|
19
|
-
text: string;
|
|
20
|
-
} | {
|
|
21
|
-
type: 'image';
|
|
22
|
-
image: Buffer | Uint8Array;
|
|
23
|
-
mimeType: string;
|
|
24
|
-
};
|
|
25
|
-
interface AgentMessage {
|
|
26
|
-
role: 'system' | 'user' | 'assistant' | 'tool';
|
|
27
|
-
content: string | ContentPart[];
|
|
28
|
-
toolCalls?: ToolCallInfo[];
|
|
29
|
-
toolResults?: ToolResultInfo[];
|
|
30
|
-
/** Provider-specific metadata preserved across round-trips (e.g., Gemini thought signatures). */
|
|
31
|
-
providerMetadata?: Record<string, unknown>;
|
|
32
|
-
}
|
|
33
|
-
interface ToolCallAction {
|
|
34
|
-
type: 'tool';
|
|
35
|
-
name: string;
|
|
36
|
-
args: Record<string, unknown>;
|
|
37
|
-
toolCallId?: string;
|
|
38
|
-
}
|
|
39
|
-
interface FinalAction {
|
|
40
|
-
type: 'final';
|
|
41
|
-
content: string;
|
|
42
|
-
}
|
|
43
|
-
interface ToolBatchAction {
|
|
44
|
-
type: 'tool_batch';
|
|
45
|
-
calls: ToolCallAction[];
|
|
46
|
-
}
|
|
47
|
-
type AgentAction = ToolCallAction | FinalAction | ToolBatchAction;
|
|
48
|
-
/** Token usage breakdown for a single LLM step. */
|
|
49
|
-
interface StepUsage {
|
|
50
|
-
inputTokens?: number;
|
|
51
|
-
outputTokens?: number;
|
|
52
|
-
cacheReadTokens?: number;
|
|
53
|
-
cacheWriteTokens?: number;
|
|
54
|
-
reasoningTokens?: number;
|
|
55
|
-
}
|
|
56
|
-
type AgentStreamEvent = {
|
|
57
|
-
type: 'text_delta';
|
|
58
|
-
text: string;
|
|
59
|
-
} | {
|
|
60
|
-
type: 'tool_start';
|
|
61
|
-
name: string;
|
|
62
|
-
args: Record<string, unknown>;
|
|
63
|
-
toolCallId?: string;
|
|
64
|
-
} | {
|
|
65
|
-
type: 'tool_end';
|
|
66
|
-
name: string;
|
|
67
|
-
result: {
|
|
68
|
-
success: boolean;
|
|
69
|
-
output: string;
|
|
70
|
-
error?: string;
|
|
71
|
-
[key: string]: unknown;
|
|
72
|
-
};
|
|
73
|
-
} | {
|
|
74
|
-
type: 'step_start';
|
|
75
|
-
step: number;
|
|
76
|
-
} | {
|
|
77
|
-
type: 'step_end';
|
|
78
|
-
step: number;
|
|
79
|
-
usage?: StepUsage;
|
|
80
|
-
} | {
|
|
81
|
-
type: 'done';
|
|
82
|
-
output: string;
|
|
83
|
-
steps: number;
|
|
84
|
-
};
|
|
85
|
-
interface AgentLoop {
|
|
86
|
-
nextAction(messages: AgentMessage[]): Promise<AgentAction>;
|
|
87
|
-
streamAction?(messages: AgentMessage[]): AsyncIterable<AgentStreamEvent>;
|
|
88
|
-
}
|
|
89
|
-
/** Context passed to `prepareStep` before each LLM call. */
|
|
90
|
-
interface PrepareStepContext {
|
|
91
|
-
stepNumber: number;
|
|
92
|
-
toolCallHistory: string[];
|
|
93
|
-
}
|
|
94
|
-
/** Overrides returned by `prepareStep`. All fields optional — omit to keep defaults. */
|
|
95
|
-
interface PrepareStepResult {
|
|
96
|
-
model?: string;
|
|
97
|
-
activeTools?: string[];
|
|
98
|
-
}
|
|
99
|
-
|
|
100
5
|
type PermissionMode = 'allow_all' | 'deny_all' | 'ask';
|
|
101
6
|
interface PermissionRequest {
|
|
102
7
|
toolName: string;
|
|
@@ -742,4 +647,4 @@ type TraceEventKind = {
|
|
|
742
647
|
type: 'done';
|
|
743
648
|
};
|
|
744
649
|
|
|
745
|
-
export type { ArcLoopConfig as A, Episode as E, ModelTier as M, ProfileConfig as P, RunStats as R,
|
|
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 };
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
interface ToolCallInfo {
|
|
2
|
+
toolCallId: string;
|
|
3
|
+
toolName: string;
|
|
4
|
+
args: Record<string, unknown>;
|
|
5
|
+
/** Provider-specific metadata preserved across round-trips (e.g., Gemini thought signatures). */
|
|
6
|
+
providerMetadata?: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
interface ToolResultInfo {
|
|
9
|
+
toolCallId: string;
|
|
10
|
+
toolName: string;
|
|
11
|
+
result: string;
|
|
12
|
+
isError?: boolean;
|
|
13
|
+
}
|
|
14
|
+
type ContentPart = {
|
|
15
|
+
type: 'text';
|
|
16
|
+
text: string;
|
|
17
|
+
} | {
|
|
18
|
+
type: 'image';
|
|
19
|
+
image: Buffer | Uint8Array;
|
|
20
|
+
mimeType: string;
|
|
21
|
+
};
|
|
22
|
+
interface AgentMessage {
|
|
23
|
+
role: 'system' | 'user' | 'assistant' | 'tool';
|
|
24
|
+
content: string | ContentPart[];
|
|
25
|
+
toolCalls?: ToolCallInfo[];
|
|
26
|
+
toolResults?: ToolResultInfo[];
|
|
27
|
+
/** Provider-specific metadata preserved across round-trips (e.g., Gemini thought signatures). */
|
|
28
|
+
providerMetadata?: Record<string, unknown>;
|
|
29
|
+
}
|
|
30
|
+
interface ToolCallAction {
|
|
31
|
+
type: 'tool';
|
|
32
|
+
name: string;
|
|
33
|
+
args: Record<string, unknown>;
|
|
34
|
+
toolCallId?: string;
|
|
35
|
+
}
|
|
36
|
+
interface FinalAction {
|
|
37
|
+
type: 'final';
|
|
38
|
+
content: string;
|
|
39
|
+
}
|
|
40
|
+
interface ToolBatchAction {
|
|
41
|
+
type: 'tool_batch';
|
|
42
|
+
calls: ToolCallAction[];
|
|
43
|
+
}
|
|
44
|
+
type AgentAction = ToolCallAction | FinalAction | ToolBatchAction;
|
|
45
|
+
/** Token usage breakdown for a single LLM step. */
|
|
46
|
+
interface StepUsage {
|
|
47
|
+
inputTokens?: number;
|
|
48
|
+
outputTokens?: number;
|
|
49
|
+
cacheReadTokens?: number;
|
|
50
|
+
cacheWriteTokens?: number;
|
|
51
|
+
reasoningTokens?: number;
|
|
52
|
+
}
|
|
53
|
+
type AgentStreamEvent = {
|
|
54
|
+
type: 'text_delta';
|
|
55
|
+
text: string;
|
|
56
|
+
} | {
|
|
57
|
+
type: 'tool_start';
|
|
58
|
+
name: string;
|
|
59
|
+
args: Record<string, unknown>;
|
|
60
|
+
toolCallId?: string;
|
|
61
|
+
} | {
|
|
62
|
+
type: 'tool_end';
|
|
63
|
+
name: string;
|
|
64
|
+
result: {
|
|
65
|
+
success: boolean;
|
|
66
|
+
output: string;
|
|
67
|
+
error?: string;
|
|
68
|
+
[key: string]: unknown;
|
|
69
|
+
};
|
|
70
|
+
} | {
|
|
71
|
+
type: 'step_start';
|
|
72
|
+
step: number;
|
|
73
|
+
} | {
|
|
74
|
+
type: 'step_end';
|
|
75
|
+
step: number;
|
|
76
|
+
usage?: StepUsage;
|
|
77
|
+
} | {
|
|
78
|
+
type: 'done';
|
|
79
|
+
output: string;
|
|
80
|
+
steps: number;
|
|
81
|
+
};
|
|
82
|
+
interface AgentLoop {
|
|
83
|
+
nextAction(messages: AgentMessage[]): Promise<AgentAction>;
|
|
84
|
+
streamAction?(messages: AgentMessage[]): AsyncIterable<AgentStreamEvent>;
|
|
85
|
+
}
|
|
86
|
+
/** Context passed to `prepareStep` before each LLM call. */
|
|
87
|
+
interface PrepareStepContext {
|
|
88
|
+
stepNumber: number;
|
|
89
|
+
toolCallHistory: string[];
|
|
90
|
+
}
|
|
91
|
+
/** Overrides returned by `prepareStep`. All fields optional — omit to keep defaults. */
|
|
92
|
+
interface PrepareStepResult {
|
|
93
|
+
model?: string;
|
|
94
|
+
activeTools?: string[];
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export type { AgentMessage as A, PrepareStepContext as P, StepUsage as S, ToolCallAction as T, AgentLoop as a, PrepareStepResult as b, AgentAction as c, AgentStreamEvent as d };
|