@namzu/cli 23.0.0 → 25.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/CHANGELOG.md +845 -0
- package/README.md +13 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +18 -10
- package/dist/cli.js.map +1 -1
- package/dist/commands/drain.d.ts +0 -23
- package/dist/commands/drain.d.ts.map +1 -1
- package/dist/commands/drain.js +23 -9
- package/dist/commands/drain.js.map +1 -1
- package/dist/commands/resident-flags.d.ts +24 -0
- package/dist/commands/resident-flags.d.ts.map +1 -0
- package/dist/commands/resident-flags.js +191 -0
- package/dist/commands/resident-flags.js.map +1 -0
- package/dist/commands/resident-learning.d.ts +6 -0
- package/dist/commands/resident-learning.d.ts.map +1 -0
- package/dist/commands/resident-learning.js +293 -0
- package/dist/commands/resident-learning.js.map +1 -0
- package/dist/commands/resident.d.ts +20 -0
- package/dist/commands/resident.d.ts.map +1 -0
- package/dist/commands/resident.js +418 -0
- package/dist/commands/resident.js.map +1 -0
- package/dist/commands/run-flags.d.ts +2 -2
- package/dist/commands/run-flags.d.ts.map +1 -1
- package/dist/commands/run-flags.js +6 -6
- package/dist/commands/run-flags.js.map +1 -1
- package/dist/commands/run-stream.d.ts.map +1 -1
- package/dist/commands/run-stream.js +9 -10
- package/dist/commands/run-stream.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +3 -2
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/upgrade.d.ts +1 -0
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +6 -3
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +27 -4
- package/dist/config/load.js.map +1 -1
- package/dist/config/run-limits.d.ts +11 -0
- package/dist/config/run-limits.d.ts.map +1 -0
- package/dist/config/run-limits.js +64 -0
- package/dist/config/run-limits.js.map +1 -0
- package/dist/config/schema.d.ts +12 -4
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/context/runtime-message.d.ts.map +1 -1
- package/dist/context/runtime-message.js +2 -0
- package/dist/context/runtime-message.js.map +1 -1
- package/dist/integrations/npm-invocation.d.ts +10 -0
- package/dist/integrations/npm-invocation.d.ts.map +1 -0
- package/dist/integrations/npm-invocation.js +23 -0
- package/dist/integrations/npm-invocation.js.map +1 -0
- package/dist/integrations/plugins/runtime.d.ts +19 -1
- package/dist/integrations/plugins/runtime.d.ts.map +1 -1
- package/dist/integrations/plugins/runtime.js +89 -1
- package/dist/integrations/plugins/runtime.js.map +1 -1
- package/dist/integrations/plugins/settings.d.ts +15 -0
- package/dist/integrations/plugins/settings.d.ts.map +1 -0
- package/dist/integrations/plugins/settings.js +106 -0
- package/dist/integrations/plugins/settings.js.map +1 -0
- package/dist/integrations/providers/credential-store.d.ts +8 -7
- package/dist/integrations/providers/credential-store.d.ts.map +1 -1
- package/dist/integrations/providers/credential-store.js +44 -17
- package/dist/integrations/providers/credential-store.js.map +1 -1
- package/dist/integrations/providers/discover.d.ts.map +1 -1
- package/dist/integrations/providers/discover.js +7 -2
- package/dist/integrations/providers/discover.js.map +1 -1
- package/dist/integrations/providers/harness-credentials.d.ts +2 -2
- package/dist/integrations/providers/harness-credentials.d.ts.map +1 -1
- package/dist/integrations/providers/harness-credentials.js +13 -8
- package/dist/integrations/providers/harness-credentials.js.map +1 -1
- package/dist/integrations/providers/setup.d.ts.map +1 -1
- package/dist/integrations/providers/setup.js +52 -5
- package/dist/integrations/providers/setup.js.map +1 -1
- package/dist/integrations/resident/foreground.d.ts +19 -0
- package/dist/integrations/resident/foreground.d.ts.map +1 -0
- package/dist/integrations/resident/foreground.js +95 -0
- package/dist/integrations/resident/foreground.js.map +1 -0
- package/dist/integrations/resident/inspection.d.ts +10 -0
- package/dist/integrations/resident/inspection.d.ts.map +1 -0
- package/dist/integrations/resident/inspection.js +263 -0
- package/dist/integrations/resident/inspection.js.map +1 -0
- package/dist/integrations/resident/learning-sources.d.ts +4 -0
- package/dist/integrations/resident/learning-sources.d.ts.map +1 -0
- package/dist/integrations/resident/learning-sources.js +79 -0
- package/dist/integrations/resident/learning-sources.js.map +1 -0
- package/dist/integrations/resident/learning-storage.d.ts +5 -0
- package/dist/integrations/resident/learning-storage.d.ts.map +1 -0
- package/dist/integrations/resident/learning-storage.js +51 -0
- package/dist/integrations/resident/learning-storage.js.map +1 -0
- package/dist/integrations/resident/lifecycle-errors.d.ts +9 -0
- package/dist/integrations/resident/lifecycle-errors.d.ts.map +1 -0
- package/dist/integrations/resident/lifecycle-errors.js +15 -0
- package/dist/integrations/resident/lifecycle-errors.js.map +1 -0
- package/dist/integrations/resident/owned-runner.d.ts +17 -0
- package/dist/integrations/resident/owned-runner.d.ts.map +1 -0
- package/dist/integrations/resident/owned-runner.js +91 -0
- package/dist/integrations/resident/owned-runner.js.map +1 -0
- package/dist/integrations/resident/runner-control.d.ts +47 -0
- package/dist/integrations/resident/runner-control.d.ts.map +1 -0
- package/dist/integrations/resident/runner-control.js +238 -0
- package/dist/integrations/resident/runner-control.js.map +1 -0
- package/dist/integrations/resident/runner-launch.d.ts +52 -0
- package/dist/integrations/resident/runner-launch.d.ts.map +1 -0
- package/dist/integrations/resident/runner-launch.js +142 -0
- package/dist/integrations/resident/runner-launch.js.map +1 -0
- package/dist/integrations/resident/runner-store.d.ts +44 -0
- package/dist/integrations/resident/runner-store.d.ts.map +1 -0
- package/dist/integrations/resident/runner-store.js +281 -0
- package/dist/integrations/resident/runner-store.js.map +1 -0
- package/dist/integrations/resident/runner-worker.d.ts +2 -0
- package/dist/integrations/resident/runner-worker.d.ts.map +1 -0
- package/dist/integrations/resident/runner-worker.js +146 -0
- package/dist/integrations/resident/runner-worker.js.map +1 -0
- package/dist/integrations/resident/session-step.d.ts +29 -0
- package/dist/integrations/resident/session-step.d.ts.map +1 -0
- package/dist/integrations/resident/session-step.js +462 -0
- package/dist/integrations/resident/session-step.js.map +1 -0
- package/dist/integrations/resident/storage.d.ts +17 -0
- package/dist/integrations/resident/storage.d.ts.map +1 -0
- package/dist/integrations/resident/storage.js +140 -0
- package/dist/integrations/resident/storage.js.map +1 -0
- package/dist/integrations/resident/tool-evidence.d.ts +6 -0
- package/dist/integrations/resident/tool-evidence.d.ts.map +1 -0
- package/dist/integrations/resident/tool-evidence.js +117 -0
- package/dist/integrations/resident/tool-evidence.js.map +1 -0
- package/dist/integrations/resident/verification.d.ts +11 -0
- package/dist/integrations/resident/verification.d.ts.map +1 -0
- package/dist/integrations/resident/verification.js +109 -0
- package/dist/integrations/resident/verification.js.map +1 -0
- package/dist/integrations/sessions/compaction-evidence.d.ts +5 -0
- package/dist/integrations/sessions/compaction-evidence.d.ts.map +1 -0
- package/dist/integrations/sessions/compaction-evidence.js +59 -0
- package/dist/integrations/sessions/compaction-evidence.js.map +1 -0
- package/dist/integrations/sessions/context-inventory.js +1 -1
- package/dist/integrations/sessions/context-inventory.js.map +1 -1
- package/dist/integrations/sessions/conversation-search.d.ts +56 -8
- package/dist/integrations/sessions/conversation-search.d.ts.map +1 -1
- package/dist/integrations/sessions/conversation-search.js +600 -63
- package/dist/integrations/sessions/conversation-search.js.map +1 -1
- package/dist/integrations/sessions/database.d.ts +5 -0
- package/dist/integrations/sessions/database.d.ts.map +1 -0
- package/dist/integrations/sessions/database.js +34 -0
- package/dist/integrations/sessions/database.js.map +1 -0
- package/dist/integrations/sessions/evidence-page-validation.d.ts +8 -0
- package/dist/integrations/sessions/evidence-page-validation.d.ts.map +1 -0
- package/dist/integrations/sessions/evidence-page-validation.js +74 -0
- package/dist/integrations/sessions/evidence-page-validation.js.map +1 -0
- package/dist/integrations/sessions/evidence-recall.d.ts +5 -0
- package/dist/integrations/sessions/evidence-recall.d.ts.map +1 -0
- package/dist/integrations/sessions/evidence-recall.js +173 -0
- package/dist/integrations/sessions/evidence-recall.js.map +1 -0
- package/dist/integrations/sessions/paths.d.ts +7 -0
- package/dist/integrations/sessions/paths.d.ts.map +1 -0
- package/dist/integrations/sessions/paths.js +14 -0
- package/dist/integrations/sessions/paths.js.map +1 -0
- package/dist/integrations/sessions/run-discovery.d.ts +24 -0
- package/dist/integrations/sessions/run-discovery.d.ts.map +1 -0
- package/dist/integrations/sessions/run-discovery.js +142 -0
- package/dist/integrations/sessions/run-discovery.js.map +1 -0
- package/dist/integrations/sessions/store.d.ts +8 -18
- package/dist/integrations/sessions/store.d.ts.map +1 -1
- package/dist/integrations/sessions/store.js +14 -39
- package/dist/integrations/sessions/store.js.map +1 -1
- package/dist/integrations/sessions/transcript-export.d.ts +0 -1
- package/dist/integrations/sessions/transcript-export.d.ts.map +1 -1
- package/dist/integrations/sessions/transcript-export.js +3 -2
- package/dist/integrations/sessions/transcript-export.js.map +1 -1
- package/dist/integrations/sessions/turn-evidence.d.ts +0 -9
- package/dist/integrations/sessions/turn-evidence.d.ts.map +1 -1
- package/dist/integrations/sessions/turn-evidence.js +5 -2
- package/dist/integrations/sessions/turn-evidence.js.map +1 -1
- package/dist/integrations/state/private-directory.d.ts +4 -2
- package/dist/integrations/state/private-directory.d.ts.map +1 -1
- package/dist/integrations/state/private-directory.js +6 -4
- package/dist/integrations/state/private-directory.js.map +1 -1
- package/dist/integrations/state/report.d.ts.map +1 -1
- package/dist/integrations/state/report.js +78 -21
- package/dist/integrations/state/report.js.map +1 -1
- package/dist/integrations/subagents/parent.d.ts +3 -2
- package/dist/integrations/subagents/parent.d.ts.map +1 -1
- package/dist/integrations/subagents/parent.js +11 -6
- package/dist/integrations/subagents/parent.js.map +1 -1
- package/dist/integrations/subagents/policy.d.ts +2 -5
- package/dist/integrations/subagents/policy.d.ts.map +1 -1
- package/dist/integrations/subagents/policy.js +2 -5
- package/dist/integrations/subagents/policy.js.map +1 -1
- package/dist/integrations/subagents/runtime.d.ts +7 -0
- package/dist/integrations/subagents/runtime.d.ts.map +1 -1
- package/dist/integrations/subagents/runtime.js +9 -7
- package/dist/integrations/subagents/runtime.js.map +1 -1
- package/dist/permissions/rules.d.ts +2 -8
- package/dist/permissions/rules.d.ts.map +1 -1
- package/dist/permissions/rules.js +19 -10
- package/dist/permissions/rules.js.map +1 -1
- package/dist/tui/App.d.ts +0 -12
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +235 -15
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/ChoicePicker.d.ts +2 -1
- package/dist/tui/ChoicePicker.d.ts.map +1 -1
- package/dist/tui/ChoicePicker.js +10 -8
- package/dist/tui/ChoicePicker.js.map +1 -1
- package/dist/tui/ToolOutputViewer.js +1 -1
- package/dist/tui/ToolOutputViewer.js.map +1 -1
- package/dist/tui/agent.d.ts +29 -3
- package/dist/tui/agent.d.ts.map +1 -1
- package/dist/tui/agent.js +233 -46
- package/dist/tui/agent.js.map +1 -1
- package/dist/tui/conversation-evidence-view.d.ts +6 -0
- package/dist/tui/conversation-evidence-view.d.ts.map +1 -0
- package/dist/tui/conversation-evidence-view.js +96 -0
- package/dist/tui/conversation-evidence-view.js.map +1 -0
- package/dist/tui/conversation-history.d.ts +3 -1
- package/dist/tui/conversation-history.d.ts.map +1 -1
- package/dist/tui/conversation-history.js +16 -1
- package/dist/tui/conversation-history.js.map +1 -1
- package/dist/tui/exit-summary.d.ts +1 -1
- package/dist/tui/exit-summary.d.ts.map +1 -1
- package/dist/tui/exit-summary.js +17 -5
- package/dist/tui/exit-summary.js.map +1 -1
- package/dist/tui/markdownParser.d.ts.map +1 -1
- package/dist/tui/markdownParser.js +2 -1
- package/dist/tui/markdownParser.js.map +1 -1
- package/dist/tui/plugin-view.d.ts +9 -0
- package/dist/tui/plugin-view.d.ts.map +1 -0
- package/dist/tui/plugin-view.js +59 -0
- package/dist/tui/plugin-view.js.map +1 -0
- package/dist/tui/run-interruption.d.ts +2 -2
- package/dist/tui/run-interruption.d.ts.map +1 -1
- package/dist/tui/run-interruption.js +5 -1
- package/dist/tui/run-interruption.js.map +1 -1
- package/dist/tui/run-limits-settings.d.ts +39 -0
- package/dist/tui/run-limits-settings.d.ts.map +1 -0
- package/dist/tui/run-limits-settings.js +88 -0
- package/dist/tui/run-limits-settings.js.map +1 -0
- package/dist/tui/slashCommands.d.ts +6 -1
- package/dist/tui/slashCommands.d.ts.map +1 -1
- package/dist/tui/slashCommands.js +40 -9
- package/dist/tui/slashCommands.js.map +1 -1
- package/dist/tui/types.d.ts +4 -2
- package/dist/tui/types.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
import { stripVTControlCharacters } from 'node:util';
|
|
2
|
+
import { ResidentConflictError } from '@namzu/sdk';
|
|
3
|
+
import { ConfigLoadError, ConfigValueError } from '../config/load.js';
|
|
4
|
+
import { resolveTrustedProjectContext } from '../config/trusted-project-context.js';
|
|
5
|
+
import { EXIT_BAD_CONFIG, EXIT_UNTRUSTED, EXIT_USAGE } from '../exit-codes.js';
|
|
6
|
+
import { inspectCliResident } from '../integrations/resident/inspection.js';
|
|
7
|
+
import { runOwnedResident } from '../integrations/resident/owned-runner.js';
|
|
8
|
+
import { queryRunner } from '../integrations/resident/runner-control.js';
|
|
9
|
+
import { residentRunnerStatus, startResidentRunner, stopResidentRunner, } from '../integrations/resident/runner-launch.js';
|
|
10
|
+
import { readRunner, releaseRunner, reserveRunner } from '../integrations/resident/runner-store.js';
|
|
11
|
+
import { createResident, lookupResident, } from '../integrations/resident/storage.js';
|
|
12
|
+
import { loadResidentVerification } from '../integrations/resident/verification.js';
|
|
13
|
+
import { openSessions } from '../integrations/sessions/store.js';
|
|
14
|
+
import { decideHeadlessTrust } from '../permissions/headless-trust.js';
|
|
15
|
+
import { parseResidentFlags } from './resident-flags.js';
|
|
16
|
+
import { residentLearningCommand } from './resident-learning.js';
|
|
17
|
+
import { resolveWorkingDirectory } from './run-flags.js';
|
|
18
|
+
const line = (value) => stripVTControlCharacters(value).replace(/[\p{Cc}\p{Cf}]/gu, ' ');
|
|
19
|
+
export function residentStatus(resident, state, message, runner) {
|
|
20
|
+
const unresolved = state.pursuits.filter((p) => p.state.phase === 'running');
|
|
21
|
+
const live = runner?.live?.kind === 'responsive' ? runner.live : null;
|
|
22
|
+
const responsive = live !== null;
|
|
23
|
+
const text = [
|
|
24
|
+
`Resident · ${resident.agentKey}`,
|
|
25
|
+
`Directory: ${line(resident.cwd)}`,
|
|
26
|
+
`Admission: ${state.paused ? 'paused' : 'open'}${unresolved.length ? (responsive ? ' · a pursuit is admitted' : ' · retained work needs inspection') : ''}`,
|
|
27
|
+
...(runner?.owner
|
|
28
|
+
? [
|
|
29
|
+
`Runner: ${live ? live.phase : runner.owner.phase === 'running' ? 'unresponsive; state retained' : runner.owner.phase} · ${runner.owner.mode}`,
|
|
30
|
+
` ${runner.owner.instanceId} · ${runner.owner.maxSteps} step(s) authorized${runner.owner.pid ? ` · PID ${runner.owner.pid}` : ''}`,
|
|
31
|
+
...(live ? [` ${live.stepsStarted} step(s) started in this invocation`] : []),
|
|
32
|
+
...(runner.owner.outcome ? [` Last outcome: ${line(runner.owner.outcome)}`] : []),
|
|
33
|
+
]
|
|
34
|
+
: []),
|
|
35
|
+
...(message ? ['', message] : []),
|
|
36
|
+
'',
|
|
37
|
+
...state.pursuits.flatMap((p) => [
|
|
38
|
+
`${p.state.phase} · ${line(p.state.objective)}`,
|
|
39
|
+
` ${p.id} · ${p.state.stepsAdmitted} step(s) admitted`,
|
|
40
|
+
...(p.state.summary ? [` ${line(p.state.summary)}`] : []),
|
|
41
|
+
...(p.state.wakeEvidence
|
|
42
|
+
? [` Pending evidence: ${p.state.wakeEvidence.length} input(s) retained until settlement.`]
|
|
43
|
+
: []),
|
|
44
|
+
...(p.state.phase === 'waiting'
|
|
45
|
+
? [
|
|
46
|
+
` ${p.state.wakeAt === null ? 'Waiting for evidence; use resident wake.' : p.state.wakeAt <= Date.now() ? (responsive ? 'Ready for the active runner.' : 'Ready for the next authorized run.') : `Next step: ${new Date(p.state.wakeAt).toISOString()}`}`,
|
|
47
|
+
]
|
|
48
|
+
: []),
|
|
49
|
+
...(p.state.claimId
|
|
50
|
+
? [
|
|
51
|
+
` Claim: ${p.state.claimId} · revision ${p.state.revision}`,
|
|
52
|
+
` Inspect attempt records: ${line(resident.artifactsRoot)}/${p.state.claimId}`,
|
|
53
|
+
]
|
|
54
|
+
: []),
|
|
55
|
+
]),
|
|
56
|
+
...(state.pursuits.length ? [] : ['No active pursuits.']),
|
|
57
|
+
...(unresolved.length && !responsive
|
|
58
|
+
? [
|
|
59
|
+
'',
|
|
60
|
+
'A retained claim does not establish whether its executor is still alive.',
|
|
61
|
+
'Stop prior executors and inspect effects before resident reconcile.',
|
|
62
|
+
]
|
|
63
|
+
: []),
|
|
64
|
+
].join('\n');
|
|
65
|
+
return {
|
|
66
|
+
text,
|
|
67
|
+
agent: resident.agentKey,
|
|
68
|
+
cwd: resident.cwd,
|
|
69
|
+
agenda: state,
|
|
70
|
+
...(runner ? { runner } : {}),
|
|
71
|
+
...(message ? { message } : {}),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function pursuit(state, id) {
|
|
75
|
+
const found = state.pursuits.find((p) => p.id === id);
|
|
76
|
+
if (!found)
|
|
77
|
+
throw new Error(`Unknown active pursuit: ${id}`);
|
|
78
|
+
return found;
|
|
79
|
+
}
|
|
80
|
+
async function readAgenda(resident) {
|
|
81
|
+
const state = await resident.agenda.read();
|
|
82
|
+
if (!state)
|
|
83
|
+
throw new Error('Resident agenda is missing; no saved result can be reported.');
|
|
84
|
+
return state;
|
|
85
|
+
}
|
|
86
|
+
async function closeAdmission(resident, initial) {
|
|
87
|
+
let state = initial;
|
|
88
|
+
for (let attempt = 0;; attempt++) {
|
|
89
|
+
try {
|
|
90
|
+
await resident.agenda.setPaused(state, true);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
if (!(error instanceof ResidentConflictError) || attempt >= 7)
|
|
95
|
+
throw error;
|
|
96
|
+
state = await readAgenda(resident);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
export const residentCommand = {
|
|
101
|
+
name: 'resident',
|
|
102
|
+
description: 'Manage persistent work and explicitly authorized resident runners (experimental)',
|
|
103
|
+
passThrough: true,
|
|
104
|
+
help: [
|
|
105
|
+
'Usage: namzu resident <action> [options]',
|
|
106
|
+
'',
|
|
107
|
+
' add <objective> Save work without starting a model',
|
|
108
|
+
' inspect Inspect lifetime usage and evidence (--cursor, --through-revision, --max-revisions)',
|
|
109
|
+
' learn <file.learning.js> Run one explicitly selected executable learning experiment (--trust, --cwd, --agent)',
|
|
110
|
+
' learning [cycle-id] Inspect experiments or --observations (--events, --after, --before, --limit)',
|
|
111
|
+
' status Show saved work and unresolved claims (default action)',
|
|
112
|
+
' run --max-steps <n> Continue due work in this foreground process',
|
|
113
|
+
' run/start --verify <file> Require configured JSON claims before completion (host file reads)',
|
|
114
|
+
' start --max-steps <n> Start a managed background runner; retain its limit while idle',
|
|
115
|
+
' stop Close admission and wait briefly for runner drainage',
|
|
116
|
+
' release <runner-id> Release inspected stale ownership; requires --executor-stopped',
|
|
117
|
+
' pause Close admission and request interruption of active runners',
|
|
118
|
+
' resume Reopen admission; does not start work or clear claims',
|
|
119
|
+
' wake <id> <evidence> Make a waiting pursuit due using new evidence',
|
|
120
|
+
' archive <id> Retire a terminal pursuit, preserving its history',
|
|
121
|
+
' reconcile <id> <summary> Record inspected effects for an exact interrupted claim',
|
|
122
|
+
'',
|
|
123
|
+
'Common: --cwd <path>, --agent <name> (default: default).',
|
|
124
|
+
'The first add binds the execution directory; later launches keep that directory.',
|
|
125
|
+
'Add, run and start require folder trust, or --trust for this invocation.',
|
|
126
|
+
'',
|
|
127
|
+
'Run options: --provider <id>, --model <id>, --effort <level>,',
|
|
128
|
+
' --permission-mode <mode> (default: plan, read-only), --skills <a,b>,',
|
|
129
|
+
' --max-iterations <n>, --token-budget <n> (limits apply per SDK step),',
|
|
130
|
+
' --tool-loading eager|deferred (default: eager; defer optional schemas per step),',
|
|
131
|
+
' --learning-disclosure on-demand|eager (default: on-demand; evaluated skills),',
|
|
132
|
+
' --context-profile resident|interactive (default: resident; bounded-step guidance),',
|
|
133
|
+
' --gate <command>, --gate-retries <n>, --max-idle-ms <n> (default: 60000).',
|
|
134
|
+
'Run and start require a finite --max-steps. No OS service is installed.',
|
|
135
|
+
'Start survives the launching terminal; it stops at that limit, pause, failure or stop.',
|
|
136
|
+
'For start, --max-idle-ms is a positive local idle check interval; idle does not exit.',
|
|
137
|
+
'Status contacts the exact runner locally; no recorded PID is blindly signalled.',
|
|
138
|
+
'Idle waits use local storage checks and spend no model calls.',
|
|
139
|
+
'',
|
|
140
|
+
'Reconcile also requires --claim <uuid> --revision <n> --outcome wait|complete|blocked',
|
|
141
|
+
' --executor-stopped. This confirms all old executors stopped and effects were',
|
|
142
|
+
' inspected; put the evidence in <summary>. Pause the resident first.',
|
|
143
|
+
' A wait outcome rests indefinitely; use wake to supply new evidence.',
|
|
144
|
+
'Release requires prior pause and confirmation all previous executors stopped.',
|
|
145
|
+
'An unreachable runner is not proof it stopped. Release never reconciles a pursuit.',
|
|
146
|
+
'',
|
|
147
|
+
'Pause acknowledges durable admission closure, not completed tool cancellation.',
|
|
148
|
+
'Interrupted, failed or unfinished steps keep their claim and are never replayed automatically.',
|
|
149
|
+
'Continuation uses the saved summary and approved learning, not a restored chat transcript.',
|
|
150
|
+
'Exit: 0 for an operation/clean bounded run, 1 for unresolved or failed work,',
|
|
151
|
+
' 64 for invalid arguments, 77 for untrusted execution, 78 for invalid run config,',
|
|
152
|
+
' 130 for cancellation. A clean run does not mean every pursuit is complete.',
|
|
153
|
+
].join('\n'),
|
|
154
|
+
handler: async ({ ctx: bootstrap, rawArgs }) => {
|
|
155
|
+
if (rawArgs[0] === 'learn' || rawArgs[0] === 'learning')
|
|
156
|
+
return residentLearningCommand({ ctx: bootstrap, rawArgs });
|
|
157
|
+
let flags;
|
|
158
|
+
try {
|
|
159
|
+
flags = parseResidentFlags(rawArgs);
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
bootstrap.formatter.error({
|
|
163
|
+
message: String(error instanceof Error ? error.message : error),
|
|
164
|
+
});
|
|
165
|
+
return EXIT_USAGE;
|
|
166
|
+
}
|
|
167
|
+
const resolved = resolveWorkingDirectory(flags.run.cwd);
|
|
168
|
+
if ('error' in resolved) {
|
|
169
|
+
bootstrap.formatter.error({ message: resolved.error });
|
|
170
|
+
return EXIT_USAGE;
|
|
171
|
+
}
|
|
172
|
+
let resident = null;
|
|
173
|
+
try {
|
|
174
|
+
resident = await lookupResident(resolved.cwd, flags.agent);
|
|
175
|
+
if (['status', 'inspect'].includes(flags.action) && !resident) {
|
|
176
|
+
bootstrap.formatter.print({
|
|
177
|
+
text: `No resident named ${flags.agent} in this project. Use namzu resident add <objective>.`,
|
|
178
|
+
agent: flags.agent,
|
|
179
|
+
agenda: null,
|
|
180
|
+
});
|
|
181
|
+
return 0;
|
|
182
|
+
}
|
|
183
|
+
if (flags.action === 'add' || flags.action === 'run' || flags.action === 'start') {
|
|
184
|
+
const target = resolveWorkingDirectory(resident?.cwd ?? resolved.cwd);
|
|
185
|
+
if ('error' in target)
|
|
186
|
+
throw new Error(target.error);
|
|
187
|
+
const trust = decideHeadlessTrust({
|
|
188
|
+
cwd: target.cwd,
|
|
189
|
+
trustFlag: flags.run.trust,
|
|
190
|
+
});
|
|
191
|
+
if (!trust.allowed) {
|
|
192
|
+
bootstrap.formatter.error({
|
|
193
|
+
message: trust.message ?? 'Resident directory is not trusted.',
|
|
194
|
+
});
|
|
195
|
+
return EXIT_UNTRUSTED;
|
|
196
|
+
}
|
|
197
|
+
if (resident && trust.cwd !== resident.cwd)
|
|
198
|
+
throw new Error('Resident execution directory no longer resolves to its saved canonical path. Restore the original directory before running this resident.');
|
|
199
|
+
if (flags.action === 'add')
|
|
200
|
+
resident = await createResident(trust.cwd, flags.agent);
|
|
201
|
+
}
|
|
202
|
+
if (!resident)
|
|
203
|
+
throw new Error(`No resident named ${flags.agent}. Add a pursuit first.`);
|
|
204
|
+
let state = await resident.agenda.read();
|
|
205
|
+
if (!state)
|
|
206
|
+
throw new Error('Resident binding exists but its agenda is missing; repeat add to initialize it.');
|
|
207
|
+
let message;
|
|
208
|
+
switch (flags.action) {
|
|
209
|
+
case 'add': {
|
|
210
|
+
const added = await resident.agenda.add(state, flags.run.rest.join(' '));
|
|
211
|
+
message = `Saved ${added.id}.`;
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
case 'status':
|
|
215
|
+
break;
|
|
216
|
+
case 'inspect': {
|
|
217
|
+
const throughRevision = flags.inspectionThroughRevision ?? state.revision;
|
|
218
|
+
if (throughRevision > state.revision)
|
|
219
|
+
throw new Error('Inspection boundary is ahead of saved history.');
|
|
220
|
+
bootstrap.formatter.print(await inspectCliResident(resident, throughRevision, {
|
|
221
|
+
cursor: flags.inspectionCursor,
|
|
222
|
+
maxRevisions: flags.inspectionMaxRevisions,
|
|
223
|
+
}));
|
|
224
|
+
return 0;
|
|
225
|
+
}
|
|
226
|
+
case 'stop': {
|
|
227
|
+
// Bind this stop to the invocation observed before closing admission.
|
|
228
|
+
// A later resume/start must not become the target of an older stop.
|
|
229
|
+
const owner = readRunner(resident);
|
|
230
|
+
await closeAdmission(resident, state);
|
|
231
|
+
const stopped = await stopResidentRunner(resident, { owner });
|
|
232
|
+
state = await readAgenda(resident);
|
|
233
|
+
const text = stopped.status === 'drained'
|
|
234
|
+
? 'The observed runner drained. Inspect current admission and any retained pursuit claim below.'
|
|
235
|
+
: stopped.status === 'absent'
|
|
236
|
+
? 'Admission closed. No managed runner is recorded; other executors are not certified stopped.'
|
|
237
|
+
: 'Interruption requested; runner drainage is not confirmed. Inspect status before recovery.';
|
|
238
|
+
bootstrap.formatter.print({
|
|
239
|
+
...residentStatus(resident, state, text, await residentRunnerStatus(resident)),
|
|
240
|
+
stop: stopped,
|
|
241
|
+
});
|
|
242
|
+
return stopped.status === 'unconfirmed' ? 1 : 0;
|
|
243
|
+
}
|
|
244
|
+
case 'release': {
|
|
245
|
+
if (!state.paused)
|
|
246
|
+
throw new Error('Pause the resident before releasing inspected runner ownership.');
|
|
247
|
+
const owner = readRunner(resident);
|
|
248
|
+
if (!owner || owner.instanceId !== flags.run.rest[0])
|
|
249
|
+
throw new Error('Runner ID does not match current ownership. Inspect status again.');
|
|
250
|
+
if (owner.phase === 'running' &&
|
|
251
|
+
(await queryRunner(owner, 'status')).kind === 'responsive')
|
|
252
|
+
throw new Error('This runner still responds. Use resident stop and wait for drainage before recovery.');
|
|
253
|
+
releaseRunner(resident, owner);
|
|
254
|
+
message =
|
|
255
|
+
'Inspected runner ownership released. Pursuit claims and admission are unchanged; reconcile interrupted work separately.';
|
|
256
|
+
break;
|
|
257
|
+
}
|
|
258
|
+
case 'pause':
|
|
259
|
+
await closeAdmission(resident, state);
|
|
260
|
+
message = 'Admission closed; interruption requested. Active tools may still be stopping.';
|
|
261
|
+
break;
|
|
262
|
+
case 'resume':
|
|
263
|
+
if (state.pursuits.some((p) => p.state.phase === 'running'))
|
|
264
|
+
throw new Error('Inspect and reconcile unresolved claims before reopening admission.');
|
|
265
|
+
await resident.agenda.setPaused(state, false);
|
|
266
|
+
message = 'Admission reopened. No work started; invoke resident run or start explicitly.';
|
|
267
|
+
break;
|
|
268
|
+
case 'wake': {
|
|
269
|
+
const selected = pursuit(state, flags.run.rest[0]);
|
|
270
|
+
await resident.agenda.wake(selected.id, selected.state, flags.run.rest.slice(1).join(' '), Date.now());
|
|
271
|
+
message = 'New evidence saved; pursuit is due on the next authorized run.';
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
case 'archive':
|
|
275
|
+
await resident.agenda.archive(state, {
|
|
276
|
+
pursuitIds: [pursuit(state, flags.run.rest[0]).id],
|
|
277
|
+
});
|
|
278
|
+
message = 'Terminal pursuit archived; immutable history retained.';
|
|
279
|
+
break;
|
|
280
|
+
case 'reconcile': {
|
|
281
|
+
if (!state.paused)
|
|
282
|
+
throw new Error('Pause the resident before reconciling inspected effects.');
|
|
283
|
+
const selected = pursuit(state, flags.run.rest[0]);
|
|
284
|
+
if (selected.state.phase !== 'running' ||
|
|
285
|
+
selected.state.claimId !== flags.claim ||
|
|
286
|
+
selected.state.revision !== flags.revision)
|
|
287
|
+
throw new Error('Claim or revision does not match the current unresolved pursuit; inspect status again.');
|
|
288
|
+
const summary = flags.run.rest.slice(1).join(' ');
|
|
289
|
+
const decision = flags.outcome === 'wait'
|
|
290
|
+
? { kind: 'wait', summary, wakeAt: null }
|
|
291
|
+
: { kind: flags.outcome, summary };
|
|
292
|
+
await resident.agenda.execution(selected.id).settle(selected.state, decision, Date.now());
|
|
293
|
+
message = 'Inspection recorded against the exact claim. Resident remains paused.';
|
|
294
|
+
break;
|
|
295
|
+
}
|
|
296
|
+
case 'run':
|
|
297
|
+
case 'start': {
|
|
298
|
+
if (flags.maxSteps === null)
|
|
299
|
+
throw new Error('Resident execution requires --max-steps.');
|
|
300
|
+
const ctx = resolveTrustedProjectContext(bootstrap, resident.cwd);
|
|
301
|
+
const sessions = await openSessions(resident.cwd);
|
|
302
|
+
if (sessions.projectId !== resident.projectId || sessions.tenantId !== resident.tenantId)
|
|
303
|
+
throw new Error('Resident execution directory no longer belongs to its bound project and tenant.');
|
|
304
|
+
const { createResidentSessionStep } = await import('../integrations/resident/session-step.js');
|
|
305
|
+
const verification = flags.verification
|
|
306
|
+
? await loadResidentVerification(flags.verification, resident.cwd)
|
|
307
|
+
: undefined;
|
|
308
|
+
const step = createResidentSessionStep({
|
|
309
|
+
agenda: resident.agenda,
|
|
310
|
+
ctx,
|
|
311
|
+
cwd: resident.cwd,
|
|
312
|
+
sessions,
|
|
313
|
+
flags: flags.run,
|
|
314
|
+
toolLoading: flags.toolLoading,
|
|
315
|
+
contextProfile: flags.contextProfile,
|
|
316
|
+
learningDisclosure: flags.learningDisclosure,
|
|
317
|
+
verification,
|
|
318
|
+
artifactsRoot: resident.artifactsRoot,
|
|
319
|
+
});
|
|
320
|
+
if (flags.action === 'start') {
|
|
321
|
+
const owner = await startResidentRunner({
|
|
322
|
+
resident,
|
|
323
|
+
ctx,
|
|
324
|
+
flags: flags.run,
|
|
325
|
+
toolLoading: flags.toolLoading,
|
|
326
|
+
contextProfile: flags.contextProfile,
|
|
327
|
+
learningDisclosure: flags.learningDisclosure,
|
|
328
|
+
verification,
|
|
329
|
+
maxSteps: flags.maxSteps,
|
|
330
|
+
maxIdleMs: flags.maxIdleMs,
|
|
331
|
+
});
|
|
332
|
+
state = await readAgenda(resident);
|
|
333
|
+
ctx.formatter.print({
|
|
334
|
+
...residentStatus(resident, state, 'Background runner started. Use resident status to inspect it and resident stop to drain it.', await residentRunnerStatus(resident)),
|
|
335
|
+
started: owner,
|
|
336
|
+
});
|
|
337
|
+
return 0;
|
|
338
|
+
}
|
|
339
|
+
const existing = readRunner(resident);
|
|
340
|
+
if (existing && ['reserved', 'running'].includes(existing.phase))
|
|
341
|
+
throw new Error('A resident runner already owns this agenda. Inspect status and stop it before another run.');
|
|
342
|
+
const controller = new AbortController();
|
|
343
|
+
const interrupt = () => controller.abort(new Error('Resident foreground invocation interrupted.'));
|
|
344
|
+
process.once('SIGINT', interrupt);
|
|
345
|
+
process.once('SIGTERM', interrupt);
|
|
346
|
+
try {
|
|
347
|
+
const result = state.paused || state.pursuits.some((p) => p.state.phase === 'running')
|
|
348
|
+
? {
|
|
349
|
+
status: state.paused ? 'paused' : 'unresolved',
|
|
350
|
+
stepsSettled: 0,
|
|
351
|
+
nextWakeAt: null,
|
|
352
|
+
}
|
|
353
|
+
: await runOwnedResident({
|
|
354
|
+
resident,
|
|
355
|
+
owner: reserveRunner(resident, {
|
|
356
|
+
mode: 'foreground',
|
|
357
|
+
maxSteps: flags.maxSteps,
|
|
358
|
+
pauseGeneration: state.pauseGeneration ?? 0,
|
|
359
|
+
}),
|
|
360
|
+
step,
|
|
361
|
+
signal: controller.signal,
|
|
362
|
+
keepAlive: false,
|
|
363
|
+
maxIdleMs: flags.maxIdleMs,
|
|
364
|
+
});
|
|
365
|
+
state = await readAgenda(resident);
|
|
366
|
+
const status = residentStatus(resident, state, undefined, await residentRunnerStatus(resident));
|
|
367
|
+
ctx.formatter.print({
|
|
368
|
+
...status,
|
|
369
|
+
execution: result,
|
|
370
|
+
text: `${status.text}\n\nRun: ${result.status} · ${result.stepsSettled} step(s) settled`,
|
|
371
|
+
});
|
|
372
|
+
return result.status === 'cancelled'
|
|
373
|
+
? 130
|
|
374
|
+
: ['unresolved', 'contended'].includes(result.status) ||
|
|
375
|
+
state.pursuits.some((p) => p.state.phase === 'running')
|
|
376
|
+
? 1
|
|
377
|
+
: 0;
|
|
378
|
+
}
|
|
379
|
+
finally {
|
|
380
|
+
process.removeListener('SIGINT', interrupt);
|
|
381
|
+
process.removeListener('SIGTERM', interrupt);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
state = await readAgenda(resident);
|
|
386
|
+
const runner = await residentRunnerStatus(resident);
|
|
387
|
+
if (flags.action === 'add') {
|
|
388
|
+
message +=
|
|
389
|
+
runner.live?.kind === 'responsive'
|
|
390
|
+
? ' Due work is available to the current runner within its remaining authorization.'
|
|
391
|
+
: runner.owner && ['running', 'reserved'].includes(runner.owner.phase)
|
|
392
|
+
? ' Runner ownership is retained; inspect resident status before execution.'
|
|
393
|
+
: ' Continue with namzu resident run --max-steps <n> or resident start --max-steps <n>.';
|
|
394
|
+
}
|
|
395
|
+
bootstrap.formatter.print(residentStatus(resident, state, message, runner));
|
|
396
|
+
return 0;
|
|
397
|
+
}
|
|
398
|
+
catch (error) {
|
|
399
|
+
bootstrap.formatter.error({
|
|
400
|
+
message: error instanceof Error ? error.message : String(error),
|
|
401
|
+
});
|
|
402
|
+
if (resident) {
|
|
403
|
+
try {
|
|
404
|
+
const state = await resident.agenda.read();
|
|
405
|
+
if (state)
|
|
406
|
+
bootstrap.formatter.print(residentStatus(resident, state, undefined, await residentRunnerStatus(resident)));
|
|
407
|
+
}
|
|
408
|
+
catch {
|
|
409
|
+
/* Preserve the original error when state is also unavailable. */
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
return error instanceof ConfigLoadError || error instanceof ConfigValueError
|
|
413
|
+
? EXIT_BAD_CONFIG
|
|
414
|
+
: 1;
|
|
415
|
+
}
|
|
416
|
+
},
|
|
417
|
+
};
|
|
418
|
+
//# sourceMappingURL=resident.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resident.js","sourceRoot":"","sources":["../../src/commands/resident.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,9 +48,9 @@ export interface RunFlags {
|
|
|
48
48
|
/** --resume <id>: pick up this conversation and no other. */
|
|
49
49
|
resume: string | null;
|
|
50
50
|
skills: string[];
|
|
51
|
-
/** `--max-iterations <n>`:
|
|
51
|
+
/** `--max-iterations <n>`: main-loop iterations; 0 is unlimited. */
|
|
52
52
|
maxIterations: number | null;
|
|
53
|
-
/** `--token-budget <n>`:
|
|
53
|
+
/** `--token-budget <n>`: cumulative token limit; 0 is unlimited. */
|
|
54
54
|
tokenBudget: number | null;
|
|
55
55
|
/**
|
|
56
56
|
* `--wait-for-provider <duration>`: how long the run may spend waiting out
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-flags.d.ts","sourceRoot":"","sources":["../../src/commands/run-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE/D,OAAO,KAAK,EAAE,WAAW,EAA8B,MAAM,oCAAoC,CAAA;AAWjG,MAAM,WAAW,QAAQ;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,iEAAiE;IACjE,MAAM,EAAE,eAAe,GAAG,IAAI,CAAA;IAC9B,kFAAkF;IAClF,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,kFAAkF;IAClF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,yDAAyD;IACzD,eAAe,EAAE,OAAO,CAAA;IACxB;;;;;;;;;OASG;IACH,KAAK,EAAE,OAAO,CAAA;IACd,6DAA6D;IAC7D,YAAY,EAAE,OAAO,CAAA;IACrB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,
|
|
1
|
+
{"version":3,"file":"run-flags.d.ts","sourceRoot":"","sources":["../../src/commands/run-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE/D,OAAO,KAAK,EAAE,WAAW,EAA8B,MAAM,oCAAoC,CAAA;AAWjG,MAAM,WAAW,QAAQ;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,iEAAiE;IACjE,MAAM,EAAE,eAAe,GAAG,IAAI,CAAA;IAC9B,kFAAkF;IAClF,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,kFAAkF;IAClF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,yDAAyD;IACzD,eAAe,EAAE,OAAO,CAAA;IACxB;;;;;;;;;OASG;IACH,KAAK,EAAE,OAAO,CAAA;IACd,6DAA6D;IAC7D,YAAY,EAAE,OAAO,CAAA;IACrB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,oEAAoE;IACpE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,oEAAoE;IACpE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC;;;;;;;;OAQG;IACH,KAAK,EAAE,MAAM,EAAE,CAAA;IACf;;;OAGG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B;;;;;;;OAOG;IACH,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,IAAI,EAAE,MAAM,EAAE,CAAA;CACd;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,CAsOlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAS/F;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACtC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,SAAS,MAAM,EAAE,GACtB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAc7B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CACxB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,aAAa,CAAC,EAC9C,GAAG,EAAE,MAAM,GACT;IAAE,YAAY,EAAE,YAAY,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAUtE;AAmBD,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAuBvE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,GACzC,WAAW,CAiBb"}
|
|
@@ -22,11 +22,11 @@ import { statSync } from 'node:fs';
|
|
|
22
22
|
import { resolve } from 'node:path';
|
|
23
23
|
import { DEFAULT_GATE_MAX_RETRIES, createCommandGate } from '@namzu/sdk';
|
|
24
24
|
import { durationMs } from './provider-wait.js';
|
|
25
|
-
/** A
|
|
26
|
-
function
|
|
25
|
+
/** A nonnegative safe integer; zero disables the corresponding run guard. */
|
|
26
|
+
function runLimit(value, flag) {
|
|
27
27
|
const n = Number(value.trim());
|
|
28
|
-
if (!Number.
|
|
29
|
-
throw new Error(`${flag} takes a whole number
|
|
28
|
+
if (!value.trim() || !Number.isSafeInteger(n) || n < 0)
|
|
29
|
+
throw new Error(`${flag} takes a safe whole number at least 0 (unlimited), got ${value}`);
|
|
30
30
|
return n;
|
|
31
31
|
}
|
|
32
32
|
export function parseRunFlags(rawArgs) {
|
|
@@ -97,11 +97,11 @@ export function parseRunFlags(rawArgs) {
|
|
|
97
97
|
}), idx))
|
|
98
98
|
continue;
|
|
99
99
|
if (take(a, 'max-iterations', (v) => {
|
|
100
|
-
out.maxIterations =
|
|
100
|
+
out.maxIterations = runLimit(v, '--max-iterations');
|
|
101
101
|
}, idx))
|
|
102
102
|
continue;
|
|
103
103
|
if (take(a, 'token-budget', (v) => {
|
|
104
|
-
out.tokenBudget =
|
|
104
|
+
out.tokenBudget = runLimit(v, '--token-budget');
|
|
105
105
|
}, idx))
|
|
106
106
|
continue;
|
|
107
107
|
if (take(a, 'wait-for-provider', (v) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-flags.js","sourceRoot":"","sources":["../../src/commands/run-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAIxE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,
|
|
1
|
+
{"version":3,"file":"run-flags.js","sourceRoot":"","sources":["../../src/commands/run-flags.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-stream.d.ts","sourceRoot":"","sources":["../../src/commands/run-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;
|
|
1
|
+
{"version":3,"file":"run-stream.d.ts","sourceRoot":"","sources":["../../src/commands/run-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAyCH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAa5C,eAAO,MAAM,gBAAgB,EAAE,UA+X9B,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,UAiD5B,CAAA;AAMD,eAAO,MAAM,iBAAiB,EAAE,UAqC/B,CAAA;AAOD,eAAO,MAAM,oBAAoB,EAAE,UA8ClC,CAAA"}
|
|
@@ -57,10 +57,10 @@
|
|
|
57
57
|
* Dropping `--session` is NOT "the caller fixing it": it abandons what was
|
|
58
58
|
* asked for rather than achieving it.
|
|
59
59
|
*/
|
|
60
|
-
import { generateSessionId, jsonLinesSink } from '@namzu/sdk';
|
|
60
|
+
import { asSessionId, generateSessionId, isEntityId, jsonLinesSink, } from '@namzu/sdk';
|
|
61
61
|
import { resolveTrustedProjectContext } from '../config/trusted-project-context.js';
|
|
62
62
|
import { EXIT_FAIL, EXIT_OK, EXIT_UNTRUSTED } from '../exit-codes.js';
|
|
63
|
-
import { appendMessages, findMappedConversation, loadConversation, openSessions, replaceConversation, resolveConversation, } from '../integrations/sessions/store.js';
|
|
63
|
+
import { appendMessages, findMappedConversation, listRecent, loadConversation, openSessions, replaceConversation, resolveConversation, } from '../integrations/sessions/store.js';
|
|
64
64
|
import { contextLogging, installCliLogging } from '../logging.js';
|
|
65
65
|
import { decideHeadlessTrust } from '../permissions/headless-trust.js';
|
|
66
66
|
import { resolvePermissionMode } from '../permissions/mode.js';
|
|
@@ -307,6 +307,7 @@ export const runStreamCommand = {
|
|
|
307
307
|
tenantId: cli.tenantId,
|
|
308
308
|
},
|
|
309
309
|
stateRoot: cli.root,
|
|
310
|
+
...(conversationId ? { conversationSessions: cli } : {}),
|
|
310
311
|
rules: permissions.rules,
|
|
311
312
|
// The operator's --gate commands, as a standing condition on the
|
|
312
313
|
// answer. Spread rather than passed as undefined so a run without
|
|
@@ -472,10 +473,6 @@ export const historyCommand = {
|
|
|
472
473
|
handler: async ({ rawArgs }) => {
|
|
473
474
|
const flags = parseRunFlags(rawArgs);
|
|
474
475
|
const key = flags.session;
|
|
475
|
-
if (!key) {
|
|
476
|
-
process.stdout.write('[]\n');
|
|
477
|
-
return 0;
|
|
478
|
-
}
|
|
479
476
|
try {
|
|
480
477
|
// `--cwd` is in this command's help too, and picks the central Project
|
|
481
478
|
// the session is read from. Reading the process's own directory
|
|
@@ -487,9 +484,12 @@ export const historyCommand = {
|
|
|
487
484
|
return 0;
|
|
488
485
|
}
|
|
489
486
|
const cli = await openSessions(resolved.cwd);
|
|
490
|
-
|
|
491
|
-
//
|
|
492
|
-
const existing =
|
|
487
|
+
// Host keys and CLI conversation UUIDs are distinct entry points. Both
|
|
488
|
+
// must pass the same workspace membership check before reading content.
|
|
489
|
+
const existing = key
|
|
490
|
+
? ((await findMappedConversation(cli, key)) ??
|
|
491
|
+
(isEntityId(key, 'session') ? asSessionId(key) : null))
|
|
492
|
+
: (await listRecent(cli, 1))[0]?.id;
|
|
493
493
|
if (!existing) {
|
|
494
494
|
process.stdout.write('[]\n');
|
|
495
495
|
return 0;
|
|
@@ -499,7 +499,6 @@ export const historyCommand = {
|
|
|
499
499
|
.filter((m) => (m.role === 'user' || m.role === 'assistant') && m.content)
|
|
500
500
|
.map((m) => ({ role: m.role, content: m.content }));
|
|
501
501
|
process.stdout.write(`${JSON.stringify(out)}\n`);
|
|
502
|
-
void map;
|
|
503
502
|
return 0;
|
|
504
503
|
}
|
|
505
504
|
catch {
|