acpx 0.12.0 → 0.13.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/README.md +11 -3
- package/dist/{cli-CxsS1XQp.js → cli-D52eGvxU.js} +5 -4
- package/dist/cli-D52eGvxU.js.map +1 -0
- package/dist/cli.d.ts +2 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +84 -25
- package/dist/cli.js.map +1 -1
- package/dist/{client-DwNyFauq.d.ts → client-BeKvumq9.d.ts} +4 -3
- package/dist/client-BeKvumq9.d.ts.map +1 -0
- package/dist/{flags-Bjq_XQ4-.js → flags---9OR06b.js} +36 -9
- package/dist/flags---9OR06b.js.map +1 -0
- package/dist/{flows-Db_LZKu9.js → flows-CYfjwbn2.js} +14 -4
- package/dist/flows-CYfjwbn2.js.map +1 -0
- package/dist/flows.d.ts +6 -2
- package/dist/flows.d.ts.map +1 -1
- package/dist/flows.js +1 -1
- package/dist/{live-checkpoint-ClPCSdrW.js → live-checkpoint-CBecfnSH.js} +226 -20
- package/dist/live-checkpoint-CBecfnSH.js.map +1 -0
- package/dist/{output-CjdF5rHk.js → output-CzN8vLdE.js} +150 -18
- package/dist/output-CzN8vLdE.js.map +1 -0
- package/dist/runtime.d.ts +18 -14
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +34 -11
- package/dist/runtime.js.map +1 -1
- package/dist/{session-options-jkYbBxGE.d.ts → session-options-CTdZvr68.d.ts} +4 -2
- package/dist/session-options-CTdZvr68.d.ts.map +1 -0
- package/package.json +27 -27
- package/skills/acpx/SKILL.md +10 -7
- package/dist/cli-CxsS1XQp.js.map +0 -1
- package/dist/client-DwNyFauq.d.ts.map +0 -1
- package/dist/flags-Bjq_XQ4-.js.map +0 -1
- package/dist/flows-Db_LZKu9.js.map +0 -1
- package/dist/live-checkpoint-ClPCSdrW.js.map +0 -1
- package/dist/output-CjdF5rHk.js.map +0 -1
- package/dist/session-options-jkYbBxGE.d.ts.map +0 -1
package/dist/runtime.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { a as AcpPermissionRequest, c as NonInteractivePermissionPolicy, f as SessionRecord, i as AcpPermissionDecision, l as PermissionMode, n as SystemPromptOption, s as McpServer$1, t as SessionAgentOptions } from "./session-options-
|
|
2
|
-
import { a as RequestedModelUnsupportedErrorCode, i as RequestedModelUnsupportedError, n as REQUESTED_MODEL_UNSUPPORTED_ERROR_CODE, o as RequestedModelUnsupportedReason, r as REQUESTED_MODEL_UNSUPPORTED_REASONS, s as isRequestedModelUnsupportedError, t as AcpClient } from "./client-
|
|
1
|
+
import { a as AcpPermissionRequest, c as NonInteractivePermissionPolicy, f as SessionRecord, i as AcpPermissionDecision, l as PermissionMode, n as SystemPromptOption, s as McpServer$1, t as SessionAgentOptions } from "./session-options-CTdZvr68.js";
|
|
2
|
+
import { a as RequestedModelUnsupportedErrorCode, i as RequestedModelUnsupportedError, n as REQUESTED_MODEL_UNSUPPORTED_ERROR_CODE, o as RequestedModelUnsupportedReason, r as REQUESTED_MODEL_UNSUPPORTED_REASONS, s as isRequestedModelUnsupportedError, t as AcpClient } from "./client-BeKvumq9.js";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import { ToolCallContent, ToolCallLocation, ToolKind } from "@agentclientprotocol/sdk";
|
|
5
|
-
|
|
6
5
|
//#region src/agent-registry.d.ts
|
|
7
6
|
declare const DEFAULT_AGENT_NAME = "codex";
|
|
8
7
|
//#endregion
|
|
@@ -91,7 +90,8 @@ type AcpRuntimeUsageBreakdown = {
|
|
|
91
90
|
*/
|
|
92
91
|
type AcpRuntimeAvailableCommand = {
|
|
93
92
|
name: string;
|
|
94
|
-
description?: string;
|
|
93
|
+
description?: string;
|
|
94
|
+
/** True/false when ACP advertised whether this command has an input schema. */
|
|
95
95
|
hasInput?: boolean;
|
|
96
96
|
};
|
|
97
97
|
/**
|
|
@@ -100,8 +100,10 @@ type AcpRuntimeAvailableCommand = {
|
|
|
100
100
|
* exposes them on the runtime contract.
|
|
101
101
|
*/
|
|
102
102
|
type AcpRuntimeSessionUsage = {
|
|
103
|
-
cumulative?: AcpRuntimeUsageBreakdown;
|
|
104
|
-
|
|
103
|
+
cumulative?: AcpRuntimeUsageBreakdown;
|
|
104
|
+
/** Cumulative session cost when the agent reported it. */
|
|
105
|
+
cost?: AcpRuntimeUsageCost;
|
|
106
|
+
/** Keyed by user-message id, matching the persisted reducer state. */
|
|
105
107
|
perRequest?: Record<string, AcpRuntimeUsageBreakdown>;
|
|
106
108
|
};
|
|
107
109
|
type AcpRuntimeStatus = {
|
|
@@ -109,7 +111,8 @@ type AcpRuntimeStatus = {
|
|
|
109
111
|
acpxRecordId?: string;
|
|
110
112
|
backendSessionId?: string;
|
|
111
113
|
agentSessionId?: string;
|
|
112
|
-
models?: AcpRuntimeSessionModels;
|
|
114
|
+
models?: AcpRuntimeSessionModels;
|
|
115
|
+
/** Token usage and cost from the persisted session record. */
|
|
113
116
|
usage?: AcpRuntimeSessionUsage;
|
|
114
117
|
/**
|
|
115
118
|
* Commands the agent advertised via `available_commands_update`.
|
|
@@ -137,7 +140,8 @@ type AcpRuntimeEvent = {
|
|
|
137
140
|
text: string;
|
|
138
141
|
tag?: AcpSessionUpdateTag;
|
|
139
142
|
used?: number;
|
|
140
|
-
size?: number;
|
|
143
|
+
size?: number;
|
|
144
|
+
/** Populated on `usage_update` events when the agent reported a cost. */
|
|
141
145
|
cost?: AcpRuntimeUsageCost;
|
|
142
146
|
/**
|
|
143
147
|
* Populated on `usage_update` events when the agent attached a
|
|
@@ -164,20 +168,20 @@ type AcpRuntimeEvent = {
|
|
|
164
168
|
rawInput?: unknown;
|
|
165
169
|
rawOutput?: unknown;
|
|
166
170
|
content?: ToolCallContent[];
|
|
167
|
-
}
|
|
171
|
+
} |
|
|
168
172
|
/**
|
|
169
173
|
* Compatibility terminal event emitted by runTurn(...). startTurn(...).events
|
|
170
174
|
* does not emit terminal events; use AcpRuntimeTurn.result instead.
|
|
171
175
|
*/
|
|
172
|
-
|
|
176
|
+
{
|
|
173
177
|
type: "done";
|
|
174
178
|
stopReason?: string;
|
|
175
|
-
}
|
|
179
|
+
} |
|
|
176
180
|
/**
|
|
177
181
|
* Compatibility failure event emitted by runTurn(...). startTurn(...).events
|
|
178
182
|
* does not emit terminal events; use AcpRuntimeTurn.result instead.
|
|
179
183
|
*/
|
|
180
|
-
|
|
184
|
+
{
|
|
181
185
|
type: "error";
|
|
182
186
|
message: string;
|
|
183
187
|
code?: string;
|
|
@@ -253,7 +257,7 @@ interface AcpSessionStore {
|
|
|
253
257
|
save(record: AcpSessionRecord): Promise<void>;
|
|
254
258
|
}
|
|
255
259
|
interface AcpAgentRegistry {
|
|
256
|
-
resolve(agentName: string): string;
|
|
260
|
+
resolve(agentName: string): string | string[];
|
|
257
261
|
list(): string[];
|
|
258
262
|
}
|
|
259
263
|
type AcpRuntimeOptions = {
|
|
@@ -392,7 +396,7 @@ type AcpxRuntimeLike = AcpRuntime & {
|
|
|
392
396
|
doctor(): Promise<AcpRuntimeDoctorReport>;
|
|
393
397
|
};
|
|
394
398
|
declare function createAgentRegistry(params?: {
|
|
395
|
-
overrides?: Record<string, string>;
|
|
399
|
+
overrides?: Record<string, string | string[]>;
|
|
396
400
|
}): AcpAgentRegistry;
|
|
397
401
|
declare class AcpxRuntime implements AcpxRuntimeLike {
|
|
398
402
|
private readonly options;
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","names":[],"sources":["../src/agent-registry.ts","../src/runtime/public/contract.ts","../src/runtime/engine/manager.ts","../src/runtime/public/file-session-store.ts","../src/runtime/public/errors.ts","../src/runtime/public/shared.ts","../src/runtime/public/handle-state.ts","../src/runtime.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","names":[],"sources":["../src/agent-registry.ts","../src/runtime/public/contract.ts","../src/runtime/engine/manager.ts","../src/runtime/public/file-session-store.ts","../src/runtime/public/errors.ts","../src/runtime/public/shared.ts","../src/runtime/public/handle-state.ts","../src/runtime.ts"],"mappings":"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"}
|
package/dist/runtime.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { $ as createAtomicWriteTempPath, A as REQUESTED_MODEL_UNSUPPORTED_ERROR_CODE, D as applyLifecycleSnapshotToRecord, Dt as textPrompt, E as applyConversation, F as modelStateFromConfigOptions, Ft as resolveAgentArgv, Ht as extractAcpError, I as normalizeAgentCommandInput, It as resolveAgentCommand, Lt as resolveCanonicalAgentName, M as RequestedModelUnsupportedError, Mt as DEFAULT_AGENT_NAME, Nt as listBuiltInAgents, O as reconcileAgentSessionId, P as isRequestedModelUnsupportedError, Pt as normalizeAgentName, S as advertisedModelState, T as sessionOptionsFromRecord, Ut as isAcpResourceNotFoundError, Vt as normalizeOutputError, _ as createSessionConversation, a as applyRequestedModelIfAdvertised, b as recordSessionUpdate, c as setCurrentModelId, d as setDesiredModelId, et as assertPersistedKeyPolicy, f as syncAdvertisedModelState, g as cloneSessionConversation, h as cloneSessionAcpxState, i as connectAndLoadSession, j as REQUESTED_MODEL_UNSUPPORTED_REASONS, jt as withTimeout, k as AcpClient, l as setDesiredConfigOption, lt as parseSessionRecord, m as applyConfigOptionsToState, n as runPromptTurn, o as currentModelIdFromSetModelResponse, p as applyConfigOptionsToRecord, pt as defaultSessionEventLog, r as withConnectedSession, s as clearDesiredConfigOption, t as LiveSessionCheckpoint, u as setDesiredModeId, ut as serializeSessionRecordForDisk, v as recordClientOperation, w as persistSessionOptions, x as trimConversationForRuntime, y as recordPromptSubmission } from "./live-checkpoint-CBecfnSH.js";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import fs from "node:fs/promises";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
@@ -561,6 +561,7 @@ function createInitialRecord(params) {
|
|
|
561
561
|
acpSessionId: params.sessionId,
|
|
562
562
|
agentSessionId: params.agentSessionId,
|
|
563
563
|
agentCommand: params.agentCommand,
|
|
564
|
+
agentArgv: params.agentArgv,
|
|
564
565
|
cwd: params.cwd,
|
|
565
566
|
name: params.sessionName,
|
|
566
567
|
createdAt: now,
|
|
@@ -822,7 +823,7 @@ var AcpRuntimeManager = class {
|
|
|
822
823
|
}
|
|
823
824
|
async ensureSession(input) {
|
|
824
825
|
const cwd = path.resolve(input.cwd?.trim() || this.options.cwd);
|
|
825
|
-
const agentCommand = this.options.agentRegistry.resolve(input.agent);
|
|
826
|
+
const { agentCommand, agentArgv } = normalizeAgentCommandInput(this.options.agentRegistry.resolve(input.agent));
|
|
826
827
|
const existing = await this.options.sessionStore.load(input.sessionKey);
|
|
827
828
|
if (input.mode === "persistent" && existing && shouldReuseExistingRecord(existing, {
|
|
828
829
|
cwd,
|
|
@@ -837,6 +838,7 @@ var AcpRuntimeManager = class {
|
|
|
837
838
|
}
|
|
838
839
|
const client = this.createClient({
|
|
839
840
|
agentCommand,
|
|
841
|
+
agentArgv,
|
|
840
842
|
cwd,
|
|
841
843
|
mcpServers: [...this.options.mcpServers ?? []],
|
|
842
844
|
permissionMode: this.options.permissionMode,
|
|
@@ -853,6 +855,7 @@ var AcpRuntimeManager = class {
|
|
|
853
855
|
input,
|
|
854
856
|
client,
|
|
855
857
|
agentCommand,
|
|
858
|
+
agentArgv,
|
|
856
859
|
cwd,
|
|
857
860
|
session
|
|
858
861
|
});
|
|
@@ -863,12 +866,13 @@ var AcpRuntimeManager = class {
|
|
|
863
866
|
}
|
|
864
867
|
}
|
|
865
868
|
async createAndSaveRuntimeRecord(params) {
|
|
866
|
-
const { input, client, agentCommand, cwd, session } = params;
|
|
869
|
+
const { input, client, agentCommand, agentArgv, cwd, session } = params;
|
|
867
870
|
const record = createInitialRecord({
|
|
868
871
|
recordId: createRecordId(input.sessionKey, input.mode),
|
|
869
872
|
sessionName: input.sessionKey,
|
|
870
873
|
sessionId: session.sessionId,
|
|
871
874
|
agentCommand,
|
|
875
|
+
agentArgv,
|
|
872
876
|
cwd,
|
|
873
877
|
agentSessionId: session.agentSessionId
|
|
874
878
|
});
|
|
@@ -1029,6 +1033,7 @@ var AcpRuntimeManager = class {
|
|
|
1029
1033
|
createTurnClient(record) {
|
|
1030
1034
|
return this.createClient({
|
|
1031
1035
|
agentCommand: record.agentCommand,
|
|
1036
|
+
agentArgv: record.agentArgv,
|
|
1032
1037
|
cwd: record.cwd,
|
|
1033
1038
|
mcpServers: [...this.options.mcpServers ?? []],
|
|
1034
1039
|
permissionMode: this.options.permissionMode,
|
|
@@ -1316,6 +1321,7 @@ var AcpRuntimeManager = class {
|
|
|
1316
1321
|
const pendingClient = await this.readPendingPersistentClient(record, { consume: true });
|
|
1317
1322
|
const client = pendingClient ?? this.createClient({
|
|
1318
1323
|
agentCommand: record.agentCommand,
|
|
1324
|
+
agentArgv: record.agentArgv,
|
|
1319
1325
|
cwd: record.cwd,
|
|
1320
1326
|
mcpServers: [...this.options.mcpServers ?? []],
|
|
1321
1327
|
permissionMode: this.options.permissionMode,
|
|
@@ -1382,7 +1388,7 @@ var FileSessionStore = class {
|
|
|
1382
1388
|
const persisted = serializeSessionRecordForDisk(record);
|
|
1383
1389
|
assertPersistedKeyPolicy(persisted);
|
|
1384
1390
|
const file = this.filePath(record.acpxRecordId);
|
|
1385
|
-
const tempFile =
|
|
1391
|
+
const tempFile = createAtomicWriteTempPath(file);
|
|
1386
1392
|
const payload = JSON.stringify(persisted, null, 2);
|
|
1387
1393
|
await fs.writeFile(tempFile, `${payload}\n`, "utf8");
|
|
1388
1394
|
await fs.rename(tempFile, file);
|
|
@@ -1395,7 +1401,8 @@ function createFileSessionStore(options) {
|
|
|
1395
1401
|
//#region src/runtime/public/handle-state.ts
|
|
1396
1402
|
const ACPX_RUNTIME_HANDLE_PREFIX = "acpx:v2:";
|
|
1397
1403
|
function encodeAcpxRuntimeHandleState(state) {
|
|
1398
|
-
|
|
1404
|
+
const payload = Buffer.from(JSON.stringify(state), "utf8").toString("base64url");
|
|
1405
|
+
return `${ACPX_RUNTIME_HANDLE_PREFIX}${payload}`;
|
|
1399
1406
|
}
|
|
1400
1407
|
function decodeAcpxRuntimeHandleState(runtimeSessionName) {
|
|
1401
1408
|
const trimmed = runtimeSessionName.trim();
|
|
@@ -1463,7 +1470,7 @@ function normalizeRuntimeDetails(details) {
|
|
|
1463
1470
|
}
|
|
1464
1471
|
async function probeRuntime(options, deps = {}) {
|
|
1465
1472
|
const agentName = options.probeAgent?.trim() || "codex";
|
|
1466
|
-
const agentCommand = options.agentRegistry.resolve(agentName);
|
|
1473
|
+
const agentCommand = normalizeAgentCommandInput(options.agentRegistry.resolve(agentName));
|
|
1467
1474
|
const client = createProbeClient(options, agentCommand, deps);
|
|
1468
1475
|
try {
|
|
1469
1476
|
await client.start();
|
|
@@ -1472,7 +1479,7 @@ async function probeRuntime(options, deps = {}) {
|
|
|
1472
1479
|
message: "embedded ACP runtime ready",
|
|
1473
1480
|
details: [
|
|
1474
1481
|
`agent=${agentName}`,
|
|
1475
|
-
`command=${agentCommand}`,
|
|
1482
|
+
`command=${agentCommand.agentCommand}`,
|
|
1476
1483
|
`cwd=${options.cwd}`,
|
|
1477
1484
|
...client.initializeResult?.protocolVersion ? [`protocolVersion=${client.initializeResult.protocolVersion}`] : []
|
|
1478
1485
|
]
|
|
@@ -1483,7 +1490,7 @@ async function probeRuntime(options, deps = {}) {
|
|
|
1483
1490
|
message: "embedded ACP runtime probe failed",
|
|
1484
1491
|
details: [
|
|
1485
1492
|
`agent=${agentName}`,
|
|
1486
|
-
`command=${agentCommand}`,
|
|
1493
|
+
`command=${agentCommand.agentCommand}`,
|
|
1487
1494
|
`cwd=${options.cwd}`,
|
|
1488
1495
|
formatRuntimeDetail(error)
|
|
1489
1496
|
]
|
|
@@ -1494,7 +1501,7 @@ async function probeRuntime(options, deps = {}) {
|
|
|
1494
1501
|
}
|
|
1495
1502
|
function createProbeClient(options, agentCommand, deps) {
|
|
1496
1503
|
const clientOptions = {
|
|
1497
|
-
agentCommand,
|
|
1504
|
+
...agentCommand,
|
|
1498
1505
|
cwd: options.cwd,
|
|
1499
1506
|
mcpServers: [...options.mcpServers ?? []],
|
|
1500
1507
|
permissionMode: options.permissionMode,
|
|
@@ -1512,15 +1519,31 @@ const ACPX_CAPABILITIES = { controls: [
|
|
|
1512
1519
|
"session/status"
|
|
1513
1520
|
] };
|
|
1514
1521
|
function createAgentRegistry(params) {
|
|
1522
|
+
const overrides = normalizeRegistryOverrides(params?.overrides);
|
|
1515
1523
|
return {
|
|
1516
1524
|
resolve(agentName) {
|
|
1517
|
-
|
|
1525
|
+
const normalizedAgentName = normalizeAgentName(agentName);
|
|
1526
|
+
return overrides[normalizedAgentName] ?? overrides[resolveCanonicalAgentName(agentName)] ?? resolveAgentArgv(agentName) ?? resolveAgentCommand(agentName);
|
|
1518
1527
|
},
|
|
1519
1528
|
list() {
|
|
1520
|
-
return listBuiltInAgents(
|
|
1529
|
+
return listBuiltInAgents(overrides);
|
|
1521
1530
|
}
|
|
1522
1531
|
};
|
|
1523
1532
|
}
|
|
1533
|
+
function normalizeRegistryOverrides(values) {
|
|
1534
|
+
const normalized = {};
|
|
1535
|
+
for (const [name, value] of Object.entries(values ?? {})) {
|
|
1536
|
+
const normalizedName = normalizeAgentName(name);
|
|
1537
|
+
if (!normalizedName) continue;
|
|
1538
|
+
const normalizedValue = normalizeRegistryOverride(value);
|
|
1539
|
+
if (normalizedValue) normalized[normalizedName] = normalizedValue;
|
|
1540
|
+
}
|
|
1541
|
+
return normalized;
|
|
1542
|
+
}
|
|
1543
|
+
function normalizeRegistryOverride(value) {
|
|
1544
|
+
if (typeof value === "string") return value.trim() || void 0;
|
|
1545
|
+
return value.length > 0 && value[0]?.length ? [...value] : void 0;
|
|
1546
|
+
}
|
|
1524
1547
|
var AcpxRuntime = class {
|
|
1525
1548
|
options;
|
|
1526
1549
|
testOptions;
|