@nathapp/nax 0.75.0 → 0.75.1
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/nax.js +88 -25
- package/package.json +1 -1
package/dist/nax.js
CHANGED
|
@@ -20396,6 +20396,60 @@ var init_env = __esm(() => {
|
|
|
20396
20396
|
];
|
|
20397
20397
|
});
|
|
20398
20398
|
|
|
20399
|
+
// src/agents/acp/model-spec.ts
|
|
20400
|
+
function parseModelSpec(raw) {
|
|
20401
|
+
const match = EFFORT_SUFFIX.exec(raw);
|
|
20402
|
+
if (!match)
|
|
20403
|
+
return { model: raw };
|
|
20404
|
+
return { model: match[1], effort: match[2] };
|
|
20405
|
+
}
|
|
20406
|
+
var EFFORT_SUFFIX;
|
|
20407
|
+
var init_model_spec = __esm(() => {
|
|
20408
|
+
EFFORT_SUFFIX = /^([^[\]]+)\[([^[\]]+)\]$/;
|
|
20409
|
+
});
|
|
20410
|
+
|
|
20411
|
+
// src/agents/acp/reasoning-effort.ts
|
|
20412
|
+
async function applyReasoningEffort(params) {
|
|
20413
|
+
const { effort, agentName, sessionName, cwd, storyId, spawn: spawn2 } = params;
|
|
20414
|
+
if (!effort)
|
|
20415
|
+
return;
|
|
20416
|
+
const cmd = ["acpx", "--cwd", cwd, agentName, "set", "reasoning_effort", effort, "-s", sessionName];
|
|
20417
|
+
const { exitCode, stdout, stderr } = await spawn2(cmd);
|
|
20418
|
+
if (exitCode !== 0) {
|
|
20419
|
+
getSafeLogger()?.warn("acp-adapter", "Failed to set reasoning_effort; continuing at adapter default", {
|
|
20420
|
+
storyId,
|
|
20421
|
+
effort,
|
|
20422
|
+
session: sessionName,
|
|
20423
|
+
cause: stdout || stderr
|
|
20424
|
+
});
|
|
20425
|
+
}
|
|
20426
|
+
}
|
|
20427
|
+
var init_reasoning_effort = __esm(() => {
|
|
20428
|
+
init_logger2();
|
|
20429
|
+
});
|
|
20430
|
+
|
|
20431
|
+
// src/agents/acp/session-ids.ts
|
|
20432
|
+
function parseSessionIds(stdout) {
|
|
20433
|
+
for (const line of stdout.split(`
|
|
20434
|
+
`).reverse()) {
|
|
20435
|
+
const trimmed = line.trim();
|
|
20436
|
+
if (!trimmed.startsWith("{"))
|
|
20437
|
+
continue;
|
|
20438
|
+
try {
|
|
20439
|
+
const parsed = JSON.parse(trimmed);
|
|
20440
|
+
const sessionId = parsed.acpxSessionId;
|
|
20441
|
+
const recordId = parsed.acpxRecordId;
|
|
20442
|
+
if (typeof sessionId === "string" && sessionId.length > 0) {
|
|
20443
|
+
return {
|
|
20444
|
+
sessionId,
|
|
20445
|
+
recordId: typeof recordId === "string" && recordId.length > 0 ? recordId : undefined
|
|
20446
|
+
};
|
|
20447
|
+
}
|
|
20448
|
+
} catch {}
|
|
20449
|
+
}
|
|
20450
|
+
return { sessionId: undefined, recordId: undefined };
|
|
20451
|
+
}
|
|
20452
|
+
|
|
20399
20453
|
// src/agents/acp/spawn-client.ts
|
|
20400
20454
|
import { randomUUID } from "crypto";
|
|
20401
20455
|
async function readAndParseLines(stream, state, onActivity) {
|
|
@@ -20438,6 +20492,7 @@ class SpawnAcpSession {
|
|
|
20438
20492
|
sessionName;
|
|
20439
20493
|
cwd;
|
|
20440
20494
|
model;
|
|
20495
|
+
modelLabel;
|
|
20441
20496
|
timeoutSeconds;
|
|
20442
20497
|
promptRetries;
|
|
20443
20498
|
permissionMode;
|
|
@@ -20458,6 +20513,7 @@ class SpawnAcpSession {
|
|
|
20458
20513
|
this.sessionName = opts.sessionName;
|
|
20459
20514
|
this.cwd = opts.cwd;
|
|
20460
20515
|
this.model = opts.model;
|
|
20516
|
+
this.modelLabel = opts.modelLabel ?? opts.model;
|
|
20461
20517
|
this.timeoutSeconds = opts.timeoutSeconds;
|
|
20462
20518
|
this.promptRetries = opts.promptRetries;
|
|
20463
20519
|
this.permissionMode = opts.permissionMode;
|
|
@@ -20530,7 +20586,7 @@ class SpawnAcpSession {
|
|
|
20530
20586
|
emit?.({
|
|
20531
20587
|
...baseEvent,
|
|
20532
20588
|
kind: "agent.call_started",
|
|
20533
|
-
model: this.
|
|
20589
|
+
model: this.modelLabel,
|
|
20534
20590
|
timeoutSeconds: this.timeoutSeconds,
|
|
20535
20591
|
timestamp: now()
|
|
20536
20592
|
});
|
|
@@ -20701,29 +20757,11 @@ class SpawnAcpSession {
|
|
|
20701
20757
|
await this.trackedSpawn(cmd);
|
|
20702
20758
|
}
|
|
20703
20759
|
}
|
|
20704
|
-
function parseSessionIds(stdout) {
|
|
20705
|
-
for (const line of stdout.split(`
|
|
20706
|
-
`).reverse()) {
|
|
20707
|
-
const trimmed = line.trim();
|
|
20708
|
-
if (!trimmed.startsWith("{"))
|
|
20709
|
-
continue;
|
|
20710
|
-
try {
|
|
20711
|
-
const parsed = JSON.parse(trimmed);
|
|
20712
|
-
const sessionId = parsed.acpxSessionId;
|
|
20713
|
-
const recordId = parsed.acpxRecordId;
|
|
20714
|
-
if (typeof sessionId === "string" && sessionId.length > 0) {
|
|
20715
|
-
return {
|
|
20716
|
-
sessionId,
|
|
20717
|
-
recordId: typeof recordId === "string" && recordId.length > 0 ? recordId : undefined
|
|
20718
|
-
};
|
|
20719
|
-
}
|
|
20720
|
-
} catch {}
|
|
20721
|
-
}
|
|
20722
|
-
return { sessionId: undefined, recordId: undefined };
|
|
20723
|
-
}
|
|
20724
20760
|
|
|
20725
20761
|
class SpawnAcpClient {
|
|
20726
20762
|
model;
|
|
20763
|
+
rawModel;
|
|
20764
|
+
reasoningEffort;
|
|
20727
20765
|
cwd;
|
|
20728
20766
|
timeoutSeconds;
|
|
20729
20767
|
promptRetries;
|
|
@@ -20738,7 +20776,11 @@ class SpawnAcpClient {
|
|
|
20738
20776
|
constructor(cmdStr, cwd, timeoutSeconds, onPidSpawned, promptRetries, onPidExited, opts) {
|
|
20739
20777
|
const parts = cmdStr.split(/\s+/);
|
|
20740
20778
|
const modelIdx = parts.indexOf("--model");
|
|
20741
|
-
|
|
20779
|
+
const rawModel = modelIdx >= 0 && parts[modelIdx + 1] ? parts[modelIdx + 1] : "default";
|
|
20780
|
+
const spec = parseModelSpec(rawModel);
|
|
20781
|
+
this.rawModel = rawModel;
|
|
20782
|
+
this.model = spec.model;
|
|
20783
|
+
this.reasoningEffort = spec.effort;
|
|
20742
20784
|
const lastToken = parts[parts.length - 1];
|
|
20743
20785
|
if (!lastToken || lastToken.startsWith("-")) {
|
|
20744
20786
|
throw new Error(`[acp-adapter] Could not parse agentName from cmdStr: "${cmdStr}"`);
|
|
@@ -20794,11 +20836,20 @@ class SpawnAcpClient {
|
|
|
20794
20836
|
throw new Error(`[acp-adapter] Failed to create session: ${stdout || stderr || `exit code ${exitCode}`}`);
|
|
20795
20837
|
}
|
|
20796
20838
|
const { sessionId, recordId } = parseSessionIds(stdout);
|
|
20839
|
+
await applyReasoningEffort({
|
|
20840
|
+
effort: this.reasoningEffort,
|
|
20841
|
+
agentName: opts.agentName,
|
|
20842
|
+
sessionName,
|
|
20843
|
+
cwd: this.cwd,
|
|
20844
|
+
storyId: this.storyId,
|
|
20845
|
+
spawn: (c) => this.trackedSpawn(c)
|
|
20846
|
+
});
|
|
20797
20847
|
return new SpawnAcpSession({
|
|
20798
20848
|
agentName: opts.agentName,
|
|
20799
20849
|
sessionName,
|
|
20800
20850
|
cwd: this.cwd,
|
|
20801
20851
|
model: this.model,
|
|
20852
|
+
modelLabel: this.rawModel,
|
|
20802
20853
|
timeoutSeconds: this.timeoutSeconds,
|
|
20803
20854
|
promptRetries: this.promptRetries,
|
|
20804
20855
|
permissionMode: opts.permissionMode,
|
|
@@ -20821,11 +20872,20 @@ class SpawnAcpClient {
|
|
|
20821
20872
|
return null;
|
|
20822
20873
|
}
|
|
20823
20874
|
const { sessionId, recordId } = parseSessionIds(stdout);
|
|
20875
|
+
await applyReasoningEffort({
|
|
20876
|
+
effort: this.reasoningEffort,
|
|
20877
|
+
agentName,
|
|
20878
|
+
sessionName,
|
|
20879
|
+
cwd: this.cwd,
|
|
20880
|
+
storyId: this.storyId,
|
|
20881
|
+
spawn: (c) => this.trackedSpawn(c)
|
|
20882
|
+
});
|
|
20824
20883
|
return new SpawnAcpSession({
|
|
20825
20884
|
agentName,
|
|
20826
20885
|
sessionName,
|
|
20827
20886
|
cwd: this.cwd,
|
|
20828
20887
|
model: this.model,
|
|
20888
|
+
modelLabel: this.rawModel,
|
|
20829
20889
|
timeoutSeconds: this.timeoutSeconds,
|
|
20830
20890
|
promptRetries: this.promptRetries,
|
|
20831
20891
|
permissionMode,
|
|
@@ -20864,6 +20924,8 @@ var init_spawn_client = __esm(() => {
|
|
|
20864
20924
|
init_logger2();
|
|
20865
20925
|
init_bun_deps();
|
|
20866
20926
|
init_env();
|
|
20927
|
+
init_model_spec();
|
|
20928
|
+
init_reasoning_effort();
|
|
20867
20929
|
_spawnClientDeps = {
|
|
20868
20930
|
spawn: typedSpawn,
|
|
20869
20931
|
streamDrainTimeoutMs: ACPX_STREAM_DRAIN_TIMEOUT_MS
|
|
@@ -21721,6 +21783,7 @@ var init_acp = __esm(() => {
|
|
|
21721
21783
|
init_spawn_client();
|
|
21722
21784
|
init_adapter_lifecycle();
|
|
21723
21785
|
init_token_mapper();
|
|
21786
|
+
init_model_spec();
|
|
21724
21787
|
});
|
|
21725
21788
|
|
|
21726
21789
|
// src/agents/registry.ts
|
|
@@ -42430,7 +42493,7 @@ var package_default;
|
|
|
42430
42493
|
var init_package = __esm(() => {
|
|
42431
42494
|
package_default = {
|
|
42432
42495
|
name: "@nathapp/nax",
|
|
42433
|
-
version: "0.75.
|
|
42496
|
+
version: "0.75.1",
|
|
42434
42497
|
description: "AI Coding Agent Orchestrator \u2014 loops until done",
|
|
42435
42498
|
type: "module",
|
|
42436
42499
|
bin: {
|
|
@@ -42533,8 +42596,8 @@ var init_version = __esm(() => {
|
|
|
42533
42596
|
NAX_VERSION = package_default.version;
|
|
42534
42597
|
NAX_COMMIT = (() => {
|
|
42535
42598
|
try {
|
|
42536
|
-
if (/^[0-9a-f]{6,10}$/.test("
|
|
42537
|
-
return "
|
|
42599
|
+
if (/^[0-9a-f]{6,10}$/.test("928c0354"))
|
|
42600
|
+
return "928c0354";
|
|
42538
42601
|
} catch {}
|
|
42539
42602
|
try {
|
|
42540
42603
|
const result = Bun.spawnSync(["git", "rev-parse", "--short", "HEAD"], {
|