nolo-cli 0.1.43 → 0.1.45
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/LICENSE +21 -0
- package/README.md +118 -263
- package/agentAliases.ts +4 -74
- package/agentMachineCommands.ts +33 -10
- package/agentNameResolver.ts +164 -0
- package/agentRecordCommands.ts +1 -3
- package/agentRecordHelpers.ts +23 -2
- package/agentRunCommand.ts +26 -14
- package/app/utils/myContentItems.ts +28 -0
- package/cli/agentAliases.ts +4 -74
- package/cli/agentMachineCommands.ts +33 -10
- package/cli/agentNameResolver.ts +164 -0
- package/cli/agentRecordCommands.ts +1 -3
- package/cli/agentRecordHelpers.ts +23 -2
- package/cli/agentRunCommand.ts +26 -14
- package/cli/client/agentRun.ts +1 -61
- package/cli/client/localRuntimeAdapter.ts +2 -8
- package/cli/commandRegistry.ts +3 -3
- package/cli/machineCommands.ts +6 -1
- package/cli/offlineMarxistsAgentCommand.ts +4 -5
- package/client/agentRun.test.ts +13 -11
- package/client/agentRun.ts +1 -61
- package/client/localRuntimeAdapter.test.ts +23 -18
- package/client/localRuntimeAdapter.ts +2 -8
- package/client/localRuntimeDryRun.test.ts +2 -0
- package/commandRegistry.ts +3 -3
- package/machineCommands.ts +6 -1
- package/offlineMarxistsAgentCommand.ts +4 -5
- package/package.json +28 -22
package/client/agentRun.ts
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { runLocalAgentTurn } from "../agentRuntimeLocal";
|
|
2
2
|
import { LOCAL_AGENT_CONFIG_MISSING_CODE } from "../agent-runtime/localLoop";
|
|
3
|
-
import {
|
|
4
|
-
MIMO_MONTH_AGENT_KEY,
|
|
5
|
-
NOLO_PROJECT_MANAGER_AGENT_KEY,
|
|
6
|
-
WIN_CODEX_AGENT_KEY,
|
|
7
|
-
} from "../agentAliases";
|
|
8
3
|
import type { LocalAgentToolEvent } from "../agent-runtime/localLoop";
|
|
9
4
|
import type { AgentRuntimeHostAdapter, AgentRuntimeRequestedMode } from "../agentRuntimeLocal";
|
|
10
5
|
import { createCliLocalRuntimeAdapter, isBuiltinNoloAgentRef } from "./localRuntimeAdapter";
|
|
@@ -115,36 +110,6 @@ const SERVER_PLATFORM_TOOL_NAMES = new Set([
|
|
|
115
110
|
"updateTableRows",
|
|
116
111
|
]);
|
|
117
112
|
|
|
118
|
-
const KNOWN_SERVER_PLATFORM_AGENT_KEYS = new Set([
|
|
119
|
-
MIMO_MONTH_AGENT_KEY,
|
|
120
|
-
NOLO_PROJECT_MANAGER_AGENT_KEY,
|
|
121
|
-
WIN_CODEX_AGENT_KEY,
|
|
122
|
-
]);
|
|
123
|
-
|
|
124
|
-
const KNOWN_SERVER_PLATFORM_AGENT_ALIASES = new Set([
|
|
125
|
-
"code-review",
|
|
126
|
-
"frontend",
|
|
127
|
-
"frontend-agent",
|
|
128
|
-
"frontend-implementer",
|
|
129
|
-
"full-stack",
|
|
130
|
-
"fullstack",
|
|
131
|
-
"nolo code review",
|
|
132
|
-
"nolo frontend",
|
|
133
|
-
"nolo fullstack",
|
|
134
|
-
"nolo project manager",
|
|
135
|
-
"nolo reviewer",
|
|
136
|
-
"nolo-code-review",
|
|
137
|
-
"nolo-frontend",
|
|
138
|
-
"nolo-fullstack",
|
|
139
|
-
"nolo-pm",
|
|
140
|
-
"nolo-project-manager",
|
|
141
|
-
"nolo-reviewer",
|
|
142
|
-
"pm",
|
|
143
|
-
"project-manager",
|
|
144
|
-
"review",
|
|
145
|
-
"reviewer",
|
|
146
|
-
]);
|
|
147
|
-
|
|
148
113
|
export function findServerPlatformTools(toolNames?: string[]) {
|
|
149
114
|
if (!Array.isArray(toolNames)) return [];
|
|
150
115
|
return toolNames.filter((toolName) => SERVER_PLATFORM_TOOL_NAMES.has(toolName));
|
|
@@ -159,16 +124,6 @@ function resolveServerPlatformToolNames(agentConfig: any) {
|
|
|
159
124
|
]);
|
|
160
125
|
}
|
|
161
126
|
|
|
162
|
-
function normalizeAgentRef(ref?: string) {
|
|
163
|
-
return ref?.trim().toLowerCase().replace(/\s+/g, " ");
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
function isKnownServerPlatformAgent(options: RunAgentTurnOptions) {
|
|
167
|
-
if (KNOWN_SERVER_PLATFORM_AGENT_KEYS.has(options.agentKey)) return true;
|
|
168
|
-
const normalizedKey = normalizeAgentRef(options.agentKey);
|
|
169
|
-
return Boolean(normalizedKey && KNOWN_SERVER_PLATFORM_AGENT_ALIASES.has(normalizedKey));
|
|
170
|
-
}
|
|
171
|
-
|
|
172
127
|
function isMachineBoundLocalhostCustomProvider(agentConfig: any) {
|
|
173
128
|
const machineId =
|
|
174
129
|
agentConfig?.runtimeBinding && typeof agentConfig.runtimeBinding === "object"
|
|
@@ -233,30 +188,15 @@ async function shouldSkipAutoLocalForServerPlatformTools(options: RunAgentTurnOp
|
|
|
233
188
|
if (options.localRuntimeCwd) {
|
|
234
189
|
return false;
|
|
235
190
|
}
|
|
236
|
-
const knownServerPlatformAgent = isKnownServerPlatformAgent(options);
|
|
237
191
|
const adapter = resolveLocalRuntimeAdapter(options);
|
|
238
|
-
if (!adapter) return
|
|
192
|
+
if (!adapter) return false;
|
|
239
193
|
let agentConfig;
|
|
240
194
|
try {
|
|
241
195
|
agentConfig = await adapter.loadAgentConfig(options.agentKey);
|
|
242
196
|
} catch {
|
|
243
|
-
if (knownServerPlatformAgent) {
|
|
244
|
-
options.output.write(
|
|
245
|
-
`[nolo] auto runtime: skipping local runtime because ${options.agentKey} is a known platform agent. ` +
|
|
246
|
-
"Use --local explicitly to force local workspace tools.\n"
|
|
247
|
-
);
|
|
248
|
-
return true;
|
|
249
|
-
}
|
|
250
197
|
return false;
|
|
251
198
|
}
|
|
252
199
|
if (isCliProviderAgentConfig(agentConfig)) return false;
|
|
253
|
-
if (knownServerPlatformAgent) {
|
|
254
|
-
options.output.write(
|
|
255
|
-
`[nolo] auto runtime: skipping local runtime because ${options.agentKey} is a known platform agent. ` +
|
|
256
|
-
"Use --local explicitly to force local workspace tools.\n"
|
|
257
|
-
);
|
|
258
|
-
return true;
|
|
259
|
-
}
|
|
260
200
|
if (isMachineBoundLocalhostCustomProvider(agentConfig)) {
|
|
261
201
|
options.output.write(
|
|
262
202
|
`[nolo] auto runtime: skipping local runtime because ${options.agentKey} is a machine-bound localhost custom provider. ` +
|
|
@@ -4,9 +4,11 @@ import { join } from "node:path";
|
|
|
4
4
|
import { tmpdir } from "node:os";
|
|
5
5
|
|
|
6
6
|
import { runLocalAgentTurn } from "../agent-runtime/localLoop";
|
|
7
|
-
import { LOCAL_CODEX_AGENT_KEY, LOCAL_QODER_AGENT_KEY
|
|
7
|
+
import { LOCAL_CODEX_AGENT_KEY, LOCAL_QODER_AGENT_KEY } from "../agentAliases";
|
|
8
8
|
import { createCliLocalRuntimeAdapter } from "./localRuntimeAdapter";
|
|
9
9
|
|
|
10
|
+
const TEST_CUSTOM_AGENT_KEY = "agent-user-1-custom-runtime";
|
|
11
|
+
|
|
10
12
|
describe("CLI local runtime adapter", () => {
|
|
11
13
|
const DEFAULT_LOCAL_CODING_TOOL_NAMES = [
|
|
12
14
|
"listFiles",
|
|
@@ -1380,7 +1382,7 @@ describe("CLI local runtime adapter", () => {
|
|
|
1380
1382
|
]);
|
|
1381
1383
|
});
|
|
1382
1384
|
|
|
1383
|
-
test("keeps
|
|
1385
|
+
test("keeps generic custom agent tools to the supported local and server surfaces", async () => {
|
|
1384
1386
|
const requests: Array<{ body: any }> = [];
|
|
1385
1387
|
const adapter = createCliLocalRuntimeAdapter({
|
|
1386
1388
|
env: {
|
|
@@ -1389,7 +1391,7 @@ describe("CLI local runtime adapter", () => {
|
|
|
1389
1391
|
},
|
|
1390
1392
|
db: {
|
|
1391
1393
|
get: async () => ({
|
|
1392
|
-
dbKey:
|
|
1394
|
+
dbKey: TEST_CUSTOM_AGENT_KEY,
|
|
1393
1395
|
prompt: "Use local coding tools.",
|
|
1394
1396
|
model: "mimo-v2.5-pro",
|
|
1395
1397
|
provider: "custom",
|
|
@@ -1424,11 +1426,14 @@ describe("CLI local runtime adapter", () => {
|
|
|
1424
1426
|
|
|
1425
1427
|
await runLocalAgentTurn({
|
|
1426
1428
|
adapter,
|
|
1427
|
-
agentRef:
|
|
1429
|
+
agentRef: TEST_CUSTOM_AGENT_KEY,
|
|
1428
1430
|
input: "inspect cwd",
|
|
1429
1431
|
});
|
|
1430
1432
|
|
|
1431
|
-
expect(toolNamesFromRequest(requests[0])).toEqual(
|
|
1433
|
+
expect(toolNamesFromRequest(requests[0])).toEqual([
|
|
1434
|
+
...SHELL_LOCAL_CODING_TOOL_NAMES,
|
|
1435
|
+
"queryTableRows",
|
|
1436
|
+
]);
|
|
1432
1437
|
});
|
|
1433
1438
|
|
|
1434
1439
|
test("can expose only declared local workspace tools for tool ablations", async () => {
|
|
@@ -1441,7 +1446,7 @@ describe("CLI local runtime adapter", () => {
|
|
|
1441
1446
|
},
|
|
1442
1447
|
db: {
|
|
1443
1448
|
get: async () => ({
|
|
1444
|
-
dbKey:
|
|
1449
|
+
dbKey: TEST_CUSTOM_AGENT_KEY,
|
|
1445
1450
|
prompt: "Use exactly the declared local tools.",
|
|
1446
1451
|
model: "mimo-v2.5-pro",
|
|
1447
1452
|
provider: "custom",
|
|
@@ -1461,7 +1466,7 @@ describe("CLI local runtime adapter", () => {
|
|
|
1461
1466
|
|
|
1462
1467
|
await runLocalAgentTurn({
|
|
1463
1468
|
adapter,
|
|
1464
|
-
agentRef:
|
|
1469
|
+
agentRef: TEST_CUSTOM_AGENT_KEY,
|
|
1465
1470
|
input: "inspect cwd",
|
|
1466
1471
|
});
|
|
1467
1472
|
|
|
@@ -1478,7 +1483,7 @@ describe("CLI local runtime adapter", () => {
|
|
|
1478
1483
|
},
|
|
1479
1484
|
db: {
|
|
1480
1485
|
get: async () => ({
|
|
1481
|
-
dbKey:
|
|
1486
|
+
dbKey: TEST_CUSTOM_AGENT_KEY,
|
|
1482
1487
|
prompt: "Use local coding tools.",
|
|
1483
1488
|
model: "mimo-v2.5-pro",
|
|
1484
1489
|
provider: "custom",
|
|
@@ -1498,7 +1503,7 @@ describe("CLI local runtime adapter", () => {
|
|
|
1498
1503
|
|
|
1499
1504
|
await runLocalAgentTurn({
|
|
1500
1505
|
adapter,
|
|
1501
|
-
agentRef:
|
|
1506
|
+
agentRef: TEST_CUSTOM_AGENT_KEY,
|
|
1502
1507
|
input: "inspect cwd",
|
|
1503
1508
|
});
|
|
1504
1509
|
|
|
@@ -1557,7 +1562,7 @@ describe("CLI local runtime adapter", () => {
|
|
|
1557
1562
|
},
|
|
1558
1563
|
db: {
|
|
1559
1564
|
get: async () => ({
|
|
1560
|
-
dbKey:
|
|
1565
|
+
dbKey: TEST_CUSTOM_AGENT_KEY,
|
|
1561
1566
|
prompt: "Use local coding tools.",
|
|
1562
1567
|
model: "mimo-v2.5-pro",
|
|
1563
1568
|
provider: "custom",
|
|
@@ -1577,7 +1582,7 @@ describe("CLI local runtime adapter", () => {
|
|
|
1577
1582
|
|
|
1578
1583
|
await runLocalAgentTurn({
|
|
1579
1584
|
adapter,
|
|
1580
|
-
agentRef:
|
|
1585
|
+
agentRef: TEST_CUSTOM_AGENT_KEY,
|
|
1581
1586
|
input: "find tests",
|
|
1582
1587
|
});
|
|
1583
1588
|
|
|
@@ -1603,7 +1608,7 @@ describe("CLI local runtime adapter", () => {
|
|
|
1603
1608
|
},
|
|
1604
1609
|
db: {
|
|
1605
1610
|
get: async () => ({
|
|
1606
|
-
dbKey:
|
|
1611
|
+
dbKey: TEST_CUSTOM_AGENT_KEY,
|
|
1607
1612
|
prompt: "Use local coding tools.",
|
|
1608
1613
|
model: "mimo-v2.5-pro",
|
|
1609
1614
|
provider: "custom",
|
|
@@ -1623,7 +1628,7 @@ describe("CLI local runtime adapter", () => {
|
|
|
1623
1628
|
|
|
1624
1629
|
await runLocalAgentTurn({
|
|
1625
1630
|
adapter,
|
|
1626
|
-
agentRef:
|
|
1631
|
+
agentRef: TEST_CUSTOM_AGENT_KEY,
|
|
1627
1632
|
input: "list directories",
|
|
1628
1633
|
});
|
|
1629
1634
|
|
|
@@ -1648,7 +1653,7 @@ describe("CLI local runtime adapter", () => {
|
|
|
1648
1653
|
},
|
|
1649
1654
|
db: {
|
|
1650
1655
|
get: async () => ({
|
|
1651
|
-
dbKey:
|
|
1656
|
+
dbKey: TEST_CUSTOM_AGENT_KEY,
|
|
1652
1657
|
prompt: "Use local coding tools.",
|
|
1653
1658
|
model: "mimo-v2.5-pro",
|
|
1654
1659
|
provider: "custom",
|
|
@@ -1668,7 +1673,7 @@ describe("CLI local runtime adapter", () => {
|
|
|
1668
1673
|
|
|
1669
1674
|
await runLocalAgentTurn({
|
|
1670
1675
|
adapter,
|
|
1671
|
-
agentRef:
|
|
1676
|
+
agentRef: TEST_CUSTOM_AGENT_KEY,
|
|
1672
1677
|
input: "read a file range",
|
|
1673
1678
|
});
|
|
1674
1679
|
|
|
@@ -1695,7 +1700,7 @@ describe("CLI local runtime adapter", () => {
|
|
|
1695
1700
|
},
|
|
1696
1701
|
db: {
|
|
1697
1702
|
get: async () => ({
|
|
1698
|
-
dbKey:
|
|
1703
|
+
dbKey: TEST_CUSTOM_AGENT_KEY,
|
|
1699
1704
|
prompt: "Use local coding tools.",
|
|
1700
1705
|
model: "mimo-v2.5-pro",
|
|
1701
1706
|
provider: "custom",
|
|
@@ -1715,7 +1720,7 @@ describe("CLI local runtime adapter", () => {
|
|
|
1715
1720
|
|
|
1716
1721
|
await runLocalAgentTurn({
|
|
1717
1722
|
adapter,
|
|
1718
|
-
agentRef:
|
|
1723
|
+
agentRef: TEST_CUSTOM_AGENT_KEY,
|
|
1719
1724
|
input: "find TODO",
|
|
1720
1725
|
});
|
|
1721
1726
|
|
|
@@ -1996,7 +2001,7 @@ describe("CLI local runtime adapter", () => {
|
|
|
1996
2001
|
cliWorkspaceTool: true,
|
|
1997
2002
|
exitCode: 0,
|
|
1998
2003
|
});
|
|
1999
|
-
expect(spawnCalls[0]?.cmd.at(-5)?.endsWith("
|
|
2004
|
+
expect(spawnCalls[0]?.cmd.at(-5)?.endsWith("index.ts")).toBe(true);
|
|
2000
2005
|
expect(spawnCalls[0]?.cmd.slice(-4)).toEqual([
|
|
2001
2006
|
"dialog",
|
|
2002
2007
|
"list",
|
|
@@ -50,7 +50,6 @@ import {
|
|
|
50
50
|
LOCAL_CODEX_AGENT_KEY,
|
|
51
51
|
LOCAL_QODER_AGENT_ID,
|
|
52
52
|
LOCAL_QODER_AGENT_KEY,
|
|
53
|
-
MIMO_MONTH_AGENT_KEY,
|
|
54
53
|
NOLO_DEFAULT_AGENT_ID,
|
|
55
54
|
NOLO_DEFAULT_AGENT_KEY,
|
|
56
55
|
} from "../agentAliases";
|
|
@@ -424,10 +423,6 @@ function summarizeOpenAiToolNames(tools: Array<Record<string, unknown>>) {
|
|
|
424
423
|
.filter((name): name is string => Boolean(name));
|
|
425
424
|
}
|
|
426
425
|
|
|
427
|
-
function shouldExposeLocalPlatformTools(agentKey?: string) {
|
|
428
|
-
return agentKey !== MIMO_MONTH_AGENT_KEY;
|
|
429
|
-
}
|
|
430
|
-
|
|
431
426
|
function addDefaultLightWebToolsForConfiguredAgents(
|
|
432
427
|
toolNames: string[],
|
|
433
428
|
agentConfig?: AgentRuntimeAgentConfig | null,
|
|
@@ -449,7 +444,6 @@ function addDefaultLightWebToolsForConfiguredAgents(
|
|
|
449
444
|
|
|
450
445
|
function buildOpenAiTools(args: { agentKey?: string; toolNames?: string[]; env: EnvLike }) {
|
|
451
446
|
const toolset = buildLocalWorkspaceToolsetForEnv(args);
|
|
452
|
-
const exposePlatformTools = shouldExposeLocalPlatformTools(args.agentKey);
|
|
453
447
|
return [
|
|
454
448
|
...buildLocalWorkspaceOpenAiTools({
|
|
455
449
|
toolNames: toolset.toolNames,
|
|
@@ -463,8 +457,8 @@ function buildOpenAiTools(args: { agentKey?: string; toolNames?: string[]; env:
|
|
|
463
457
|
searchFilesDescriptionVariant: resolveSearchFilesDescriptionVariant(args.env),
|
|
464
458
|
searchFilesParameterVariant: resolveSearchFilesParameterVariant(args.env),
|
|
465
459
|
}),
|
|
466
|
-
...
|
|
467
|
-
...
|
|
460
|
+
...buildServerPlatformOpenAiTools({ toolNames: args.toolNames }),
|
|
461
|
+
...buildNoloWorkspaceOpenAiTools({ toolNames: args.toolNames }),
|
|
468
462
|
];
|
|
469
463
|
}
|
|
470
464
|
|
|
@@ -12,6 +12,7 @@ describe("CLI local runtime dry run", () => {
|
|
|
12
12
|
"readFile",
|
|
13
13
|
"writeFile",
|
|
14
14
|
"editFile",
|
|
15
|
+
"globFiles",
|
|
15
16
|
"searchFiles",
|
|
16
17
|
"execShell",
|
|
17
18
|
"listDialogs",
|
|
@@ -22,6 +23,7 @@ describe("CLI local runtime dry run", () => {
|
|
|
22
23
|
"readSpace",
|
|
23
24
|
"readDoc",
|
|
24
25
|
"readSkillDoc",
|
|
26
|
+
"listTables",
|
|
25
27
|
"queryTableRows",
|
|
26
28
|
"cliWhoami",
|
|
27
29
|
"cliDoctor",
|
package/commandRegistry.ts
CHANGED
|
@@ -64,7 +64,7 @@ export function renderHelpText() {
|
|
|
64
64
|
" nolo agent pull agent-pub-01APPBUILDER00000001YAII3I",
|
|
65
65
|
" nolo agent read agent-pub-01APPBUILDER00000001YAII3I",
|
|
66
66
|
" nolo agent usage qoder",
|
|
67
|
-
' nolo agent run frontend
|
|
67
|
+
' nolo agent run frontend --msg "polish notifications"',
|
|
68
68
|
" nolo agent bind-current agent-user-1-agent-1",
|
|
69
69
|
" nolo agent runtime-doctor agent-user-1-agent-1",
|
|
70
70
|
' nolo agent smoke-current agent-user-1-agent-1 --msg "ping"',
|
|
@@ -73,8 +73,8 @@ export function renderHelpText() {
|
|
|
73
73
|
" nolo space read 01KKY77TT0DA9NY7TNW3R7255N --content-key page-user-id --brief",
|
|
74
74
|
" nolo space delete --name-prefix rn_owner_verify_0504 --yes",
|
|
75
75
|
" nolo table query --table 01ABCXYZ",
|
|
76
|
-
' nolo table query --table meta-
|
|
77
|
-
' nolo table update-row --table meta-
|
|
76
|
+
' nolo table query --table meta-your-user-TASKBOARD --columns \'["title","status","owner","priority","codeStatus"]\' --no-base-fields --output items',
|
|
77
|
+
' nolo table update-row --table meta-your-user-TASKBOARD --row 01ROWID --changes \'{"status":"done"}\'',
|
|
78
78
|
" nolo llama status",
|
|
79
79
|
];
|
|
80
80
|
|
package/machineCommands.ts
CHANGED
|
@@ -150,6 +150,9 @@ function buildTaskEvidencePrompt(args: {
|
|
|
150
150
|
}) {
|
|
151
151
|
const rowDbKey = findTaskRowSubjectRef(args.runtimeContext);
|
|
152
152
|
if (!rowDbKey) return "";
|
|
153
|
+
const taskBoardTableKey = typeof args.runtimeContext?.taskBoardTableKey === "string"
|
|
154
|
+
? args.runtimeContext.taskBoardTableKey.trim()
|
|
155
|
+
: "";
|
|
153
156
|
return [
|
|
154
157
|
"--- Nolo task evidence context ---",
|
|
155
158
|
"This CLI runtime does not receive server-side function tools directly.",
|
|
@@ -157,7 +160,9 @@ function buildTaskEvidencePrompt(args: {
|
|
|
157
160
|
"Run commands from the repository root. The runner already provides server URL and auth in the environment.",
|
|
158
161
|
"Release boundary: after review passes, AI/reviewer/Codex may advance alpha for verification. Do not merge, push, or release main/release unless the human owner explicitly authorizes it in the current task context.",
|
|
159
162
|
"Handoff context: inspect activityRefs/latestActivityRef, dialog checkpoints, artifacts, commits, and test evidence. Use dialog read/search for exact evidence; do not infer completion from handoff text alone.",
|
|
160
|
-
|
|
163
|
+
taskBoardTableKey
|
|
164
|
+
? `Read task row: bun packages/cli/index.ts table query --table ${JSON.stringify(taskBoardTableKey)} --row ${JSON.stringify(rowDbKey)} --include-activity --output json`
|
|
165
|
+
: `Task row subjectRef: ${JSON.stringify(rowDbKey)}. If a task board table key is provided in context, read it with: bun packages/cli/index.ts table query --table <tableKey> --row ${JSON.stringify(rowDbKey)} --include-activity --output json`,
|
|
161
166
|
"Then read linked activity dialog ids with: bun packages/cli/index.ts dialog read <dialogId>",
|
|
162
167
|
"Report progress, blockers, worktree, branch, commit/diff, tests, and unverified items in the dialog.",
|
|
163
168
|
].join("\n");
|
|
@@ -28,7 +28,6 @@ type ParsedArgs = {
|
|
|
28
28
|
|
|
29
29
|
const DEFAULT_USER_ID = "b2e06f801f";
|
|
30
30
|
const DEFAULT_SPACE_ID = "01KKY77TT0DA9NY7TNW3R7255N";
|
|
31
|
-
const DEFAULT_SOURCE_AGENT_ID = "01MIMO25MONTH0000000NEW001";
|
|
32
31
|
const DEFAULT_TARGET_AGENT_ID = "01OFFMARXBOOK000000010AHL1";
|
|
33
32
|
const DEFAULT_AGENT_NAME = "离线马克思主义文库书籍转换助手";
|
|
34
33
|
const TOOL_NAME = "convertMarxistsBookToOfflineHtml";
|
|
@@ -75,8 +74,8 @@ function parseArgs(args: string[], env: EnvLike): ParsedArgs | null {
|
|
|
75
74
|
DEFAULT_USER_ID;
|
|
76
75
|
const sourceAgentKey =
|
|
77
76
|
readFlagValue(args, "--source-agent") ??
|
|
78
|
-
env.
|
|
79
|
-
|
|
77
|
+
env.NOLO_OFFLINE_MARXISTS_SOURCE_AGENT_KEY ??
|
|
78
|
+
"";
|
|
80
79
|
const targetAgentId =
|
|
81
80
|
readFlagValue(args, "--target-agent-id") ??
|
|
82
81
|
env.NOLO_OFFLINE_MARXISTS_AGENT_ID ??
|
|
@@ -90,7 +89,7 @@ function parseArgs(args: string[], env: EnvLike): ParsedArgs | null {
|
|
|
90
89
|
env.NOLO_OFFLINE_MARXISTS_SPACE_ID ??
|
|
91
90
|
DEFAULT_SPACE_ID;
|
|
92
91
|
|
|
93
|
-
if (!authToken.trim()) return null;
|
|
92
|
+
if (!authToken.trim() || !sourceAgentKey.trim()) return null;
|
|
94
93
|
return {
|
|
95
94
|
serverUrl,
|
|
96
95
|
authToken,
|
|
@@ -227,7 +226,7 @@ async function attachAgentToSpace(args: {
|
|
|
227
226
|
function writeUsage(output: OutputLike) {
|
|
228
227
|
output.write(
|
|
229
228
|
"Usage: nolo agent setup-offline-marxists [--server https://nolo.chat] [--source-agent <key>] [--space <spaceId>] [--target-agent-id <id>] [--json]\n" +
|
|
230
|
-
"Requires AUTH_TOKEN from `nolo login` or --token.\n"
|
|
229
|
+
"Requires AUTH_TOKEN from `nolo login` or --token, plus --source-agent or NOLO_OFFLINE_MARXISTS_SOURCE_AGENT_KEY.\n"
|
|
231
230
|
);
|
|
232
231
|
}
|
|
233
232
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nolo-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.45",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Agent-first terminal workspace for Nolo",
|
|
6
6
|
"repository": {
|
|
@@ -15,6 +15,10 @@
|
|
|
15
15
|
"nolo": "index.ts"
|
|
16
16
|
},
|
|
17
17
|
"module": "index.ts",
|
|
18
|
+
"scripts": {
|
|
19
|
+
"test": "bun test",
|
|
20
|
+
"pack:dry-run": "npm pack --dry-run"
|
|
21
|
+
},
|
|
18
22
|
"files": [
|
|
19
23
|
"index.ts",
|
|
20
24
|
"agentRuntimeLocal.ts",
|
|
@@ -60,38 +64,38 @@
|
|
|
60
64
|
"runtimeModeArgs.ts",
|
|
61
65
|
"tableCommands.ts",
|
|
62
66
|
"updateCommands.ts",
|
|
63
|
-
"client/
|
|
64
|
-
"client/streamingOutput.ts",
|
|
65
|
-
"client/localRuntimeAdapter.ts",
|
|
66
|
-
"client/compactDialog.test.ts",
|
|
67
|
-
"client/localProviderResolver.ts",
|
|
67
|
+
"client/localAgentRecords.ts",
|
|
68
68
|
"client/localDialogRecords.ts",
|
|
69
|
+
"client/localToolPolicy.test.ts",
|
|
70
|
+
"client/localRuntimeAdapter.ts",
|
|
71
|
+
"client/localDialogRecords.test.ts",
|
|
72
|
+
"client/agentConfigResolver.ts",
|
|
69
73
|
"client/localAgentRecords.test.ts",
|
|
70
|
-
"client/compactDialog.ts",
|
|
71
|
-
"client/hybridRecordStore.ts",
|
|
72
74
|
"client/agentConfigResolver.test.ts",
|
|
73
|
-
"client/localAgentRecords.ts",
|
|
74
75
|
"client/localProviderResolver.test.ts",
|
|
75
|
-
"client/
|
|
76
|
-
"client/
|
|
77
|
-
"client/agentConfigResolver.ts",
|
|
76
|
+
"client/hybridRecordStore.test.ts",
|
|
77
|
+
"client/localRuntimeAdapter.test.ts",
|
|
78
78
|
"client/localToolPolicy.ts",
|
|
79
|
-
"client/
|
|
80
|
-
"client/agentRun.test.ts",
|
|
79
|
+
"client/compactDialog.ts",
|
|
81
80
|
"client/streamingOutput.test.ts",
|
|
82
|
-
"client/hybridRecordStore.test.ts",
|
|
83
81
|
"client/profileConfig.ts",
|
|
84
82
|
"client/profileConfig.test.ts",
|
|
85
|
-
"client/
|
|
86
|
-
"
|
|
83
|
+
"client/streamingOutput.ts",
|
|
84
|
+
"client/hybridRecordStore.ts",
|
|
85
|
+
"client/compactDialog.test.ts",
|
|
86
|
+
"client/agentRun.test.ts",
|
|
87
|
+
"client/localRuntimeDryRun.test.ts",
|
|
88
|
+
"client/agentRun.ts",
|
|
89
|
+
"client/localProviderResolver.ts",
|
|
87
90
|
"tui/readlineWorkspace.ts",
|
|
91
|
+
"tui/session.ts",
|
|
88
92
|
"README.md",
|
|
89
|
-
"ai/index.ts",
|
|
90
93
|
"ai/agent.ts",
|
|
91
94
|
"ai/agent/agentSlice.ts",
|
|
92
95
|
"ai/agent/machineRunPermissions.ts",
|
|
93
|
-
"
|
|
96
|
+
"ai/index.ts",
|
|
94
97
|
"connector-experimental/machineInfo.ts",
|
|
98
|
+
"connector-experimental/protocol.ts",
|
|
95
99
|
"machineDaemonCommands.ts",
|
|
96
100
|
"machineHeartbeatCommands.ts",
|
|
97
101
|
"machineWatchCommands.ts",
|
|
@@ -103,6 +107,7 @@
|
|
|
103
107
|
"memoryCommands.ts",
|
|
104
108
|
"dialogAttachmentCleanup.ts",
|
|
105
109
|
"qoderUsageProbe.ts",
|
|
110
|
+
"agentNameResolver.ts",
|
|
106
111
|
"localRuntimeAuthority.ts",
|
|
107
112
|
"cli/commandRegistry.ts",
|
|
108
113
|
"cli/client/profileConfig.ts",
|
|
@@ -123,8 +128,9 @@
|
|
|
123
128
|
"cli/agentMachineCommands.ts",
|
|
124
129
|
"cli/runtimeDoctorCommands.ts",
|
|
125
130
|
"cli/connectorWebSocketTarget.ts",
|
|
126
|
-
"cli/
|
|
131
|
+
"cli/agentNameResolver.ts",
|
|
127
132
|
"cli/machineCommands.ts",
|
|
133
|
+
"cli/agentAliases.ts",
|
|
128
134
|
"cli/client/localAgentRecords.ts",
|
|
129
135
|
"cli/defaultServer.ts",
|
|
130
136
|
"cli/client/agentRun.ts",
|
|
@@ -161,11 +167,11 @@
|
|
|
161
167
|
"cli/machineStatusCommands.ts",
|
|
162
168
|
"cli/authCommands.ts",
|
|
163
169
|
"cli/tableCommands.ts",
|
|
164
|
-
"cli/client/
|
|
170
|
+
"cli/client/localToolPolicy.ts",
|
|
165
171
|
"cli/client/agentConfigResolver.ts",
|
|
166
172
|
"cli/client/localProviderResolver.ts",
|
|
167
173
|
"cli/client/localDialogRecords.ts",
|
|
168
|
-
"cli/client/
|
|
174
|
+
"cli/client/streamingOutput.ts",
|
|
169
175
|
"cli/client/compactDialog.ts",
|
|
170
176
|
"cli/tui/session.ts",
|
|
171
177
|
"cli/connectorRunArtifact.ts",
|