@namzu/cli 22.0.1 → 24.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 +97 -0
- package/README.md +12 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +17 -10
- package/dist/cli.js.map +1 -1
- package/dist/commands/resident-flags.d.ts +19 -0
- package/dist/commands/resident-flags.d.ts.map +1 -0
- package/dist/commands/resident-flags.js +153 -0
- package/dist/commands/resident-flags.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 +380 -0
- package/dist/commands/resident.js.map +1 -0
- package/dist/commands/upgrade-progress.d.ts +10 -0
- package/dist/commands/upgrade-progress.d.ts.map +1 -0
- package/dist/commands/upgrade-progress.js +54 -0
- package/dist/commands/upgrade-progress.js.map +1 -0
- package/dist/commands/upgrade.d.ts +2 -0
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +79 -40
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/doctor/checks/chain.d.ts +2 -0
- package/dist/doctor/checks/chain.d.ts.map +1 -1
- package/dist/doctor/checks/chain.js +1 -0
- package/dist/doctor/checks/chain.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/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/model-reasoning.d.ts.map +1 -1
- package/dist/integrations/providers/model-reasoning.js +5 -0
- package/dist/integrations/providers/model-reasoning.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/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 +47 -0
- package/dist/integrations/resident/runner-launch.d.ts.map +1 -0
- package/dist/integrations/resident/runner-launch.js +140 -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 +283 -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 +143 -0
- package/dist/integrations/resident/runner-worker.js.map +1 -0
- package/dist/integrations/resident/session-step.d.ts +24 -0
- package/dist/integrations/resident/session-step.d.ts.map +1 -0
- package/dist/integrations/resident/session-step.js +366 -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 +139 -0
- package/dist/integrations/resident/storage.js.map +1 -0
- 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/subagents/runtime.d.ts +3 -1
- package/dist/integrations/subagents/runtime.d.ts.map +1 -1
- package/dist/integrations/subagents/runtime.js +56 -12
- package/dist/integrations/subagents/runtime.js.map +1 -1
- package/dist/integrations/web/exa-search.d.ts +4 -0
- package/dist/integrations/web/exa-search.d.ts.map +1 -0
- package/dist/integrations/web/exa-search.js +154 -0
- package/dist/integrations/web/exa-search.js.map +1 -0
- package/dist/integrations/web/search.d.ts +1 -1
- package/dist/integrations/web/search.d.ts.map +1 -1
- package/dist/integrations/web/search.js +27 -34
- package/dist/integrations/web/search.js.map +1 -1
- package/dist/tui/AgentExplorer.d.ts.map +1 -1
- package/dist/tui/AgentExplorer.js +10 -4
- package/dist/tui/AgentExplorer.js.map +1 -1
- package/dist/tui/App.js +1 -1
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/ComposerFrame.d.ts +2 -2
- package/dist/tui/ComposerFrame.d.ts.map +1 -1
- package/dist/tui/ComposerFrame.js +3 -83
- package/dist/tui/ComposerFrame.js.map +1 -1
- package/dist/tui/LiveActivity.d.ts +1 -1
- package/dist/tui/LiveActivity.d.ts.map +1 -1
- package/dist/tui/LiveActivity.js +23 -8
- package/dist/tui/LiveActivity.js.map +1 -1
- package/dist/tui/agent.d.ts +10 -1
- package/dist/tui/agent.d.ts.map +1 -1
- package/dist/tui/agent.js +109 -24
- package/dist/tui/agent.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/package.json +6 -6
|
@@ -0,0 +1,380 @@
|
|
|
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 { runOwnedResident } from '../integrations/resident/owned-runner.js';
|
|
7
|
+
import { queryRunner } from '../integrations/resident/runner-control.js';
|
|
8
|
+
import { residentRunnerStatus, startResidentRunner, stopResidentRunner, } from '../integrations/resident/runner-launch.js';
|
|
9
|
+
import { readRunner, releaseRunner, reserveRunner } from '../integrations/resident/runner-store.js';
|
|
10
|
+
import { createResident, lookupResident, } from '../integrations/resident/storage.js';
|
|
11
|
+
import { openSessions } from '../integrations/sessions/store.js';
|
|
12
|
+
import { decideHeadlessTrust } from '../permissions/headless-trust.js';
|
|
13
|
+
import { parseResidentFlags } from './resident-flags.js';
|
|
14
|
+
import { resolveWorkingDirectory } from './run-flags.js';
|
|
15
|
+
const line = (value) => stripVTControlCharacters(value).replace(/[\p{Cc}\p{Cf}]/gu, ' ');
|
|
16
|
+
export function residentStatus(resident, state, message, runner) {
|
|
17
|
+
const unresolved = state.pursuits.filter((p) => p.state.phase === 'running');
|
|
18
|
+
const live = runner?.live?.kind === 'responsive' ? runner.live : null;
|
|
19
|
+
const responsive = live !== null;
|
|
20
|
+
const text = [
|
|
21
|
+
`Resident · ${resident.agentKey}`,
|
|
22
|
+
`Directory: ${line(resident.cwd)}`,
|
|
23
|
+
`Admission: ${state.paused ? 'paused' : 'open'}${unresolved.length ? (responsive ? ' · a pursuit is admitted' : ' · retained work needs inspection') : ''}`,
|
|
24
|
+
...(runner?.owner
|
|
25
|
+
? [
|
|
26
|
+
`Runner: ${live ? live.phase : runner.owner.phase === 'running' ? 'unresponsive; state retained' : runner.owner.phase} · ${runner.owner.mode}`,
|
|
27
|
+
` ${runner.owner.instanceId} · ${runner.owner.maxSteps} step(s) authorized${runner.owner.pid ? ` · PID ${runner.owner.pid}` : ''}`,
|
|
28
|
+
...(live ? [` ${live.stepsStarted} step(s) started in this invocation`] : []),
|
|
29
|
+
...(runner.owner.outcome ? [` Last outcome: ${line(runner.owner.outcome)}`] : []),
|
|
30
|
+
]
|
|
31
|
+
: []),
|
|
32
|
+
...(message ? ['', message] : []),
|
|
33
|
+
'',
|
|
34
|
+
...state.pursuits.flatMap((p) => [
|
|
35
|
+
`${p.state.phase} · ${line(p.state.objective)}`,
|
|
36
|
+
` ${p.id} · ${p.state.stepsAdmitted} step(s) admitted`,
|
|
37
|
+
...(p.state.summary ? [` ${line(p.state.summary)}`] : []),
|
|
38
|
+
...(p.state.phase === 'waiting'
|
|
39
|
+
? [
|
|
40
|
+
` ${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()}`}`,
|
|
41
|
+
]
|
|
42
|
+
: []),
|
|
43
|
+
...(p.state.claimId
|
|
44
|
+
? [
|
|
45
|
+
` Claim: ${p.state.claimId} · revision ${p.state.revision}`,
|
|
46
|
+
` Inspect attempt records: ${line(resident.artifactsRoot)}/${p.state.claimId}`,
|
|
47
|
+
]
|
|
48
|
+
: []),
|
|
49
|
+
]),
|
|
50
|
+
...(state.pursuits.length ? [] : ['No active pursuits.']),
|
|
51
|
+
...(unresolved.length && !responsive
|
|
52
|
+
? [
|
|
53
|
+
'',
|
|
54
|
+
'A retained claim does not establish whether its executor is still alive.',
|
|
55
|
+
'Stop prior executors and inspect effects before resident reconcile.',
|
|
56
|
+
]
|
|
57
|
+
: []),
|
|
58
|
+
].join('\n');
|
|
59
|
+
return {
|
|
60
|
+
text,
|
|
61
|
+
agent: resident.agentKey,
|
|
62
|
+
cwd: resident.cwd,
|
|
63
|
+
agenda: state,
|
|
64
|
+
...(runner ? { runner } : {}),
|
|
65
|
+
...(message ? { message } : {}),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function pursuit(state, id) {
|
|
69
|
+
const found = state.pursuits.find((p) => p.id === id);
|
|
70
|
+
if (!found)
|
|
71
|
+
throw new Error(`Unknown active pursuit: ${id}`);
|
|
72
|
+
return found;
|
|
73
|
+
}
|
|
74
|
+
async function readAgenda(resident) {
|
|
75
|
+
const state = await resident.agenda.read();
|
|
76
|
+
if (!state)
|
|
77
|
+
throw new Error('Resident agenda is missing; no saved result can be reported.');
|
|
78
|
+
return state;
|
|
79
|
+
}
|
|
80
|
+
async function closeAdmission(resident, initial) {
|
|
81
|
+
let state = initial;
|
|
82
|
+
for (let attempt = 0;; attempt++) {
|
|
83
|
+
try {
|
|
84
|
+
await resident.agenda.setPaused(state, true);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
if (!(error instanceof ResidentConflictError) || attempt >= 7)
|
|
89
|
+
throw error;
|
|
90
|
+
state = await readAgenda(resident);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export const residentCommand = {
|
|
95
|
+
name: 'resident',
|
|
96
|
+
description: 'Manage persistent work and explicitly authorized resident runners (experimental)',
|
|
97
|
+
passThrough: true,
|
|
98
|
+
help: [
|
|
99
|
+
'Usage: namzu resident <action> [options]',
|
|
100
|
+
'',
|
|
101
|
+
' add <objective> Save work without starting a model',
|
|
102
|
+
' status Show saved work and unresolved claims (default action)',
|
|
103
|
+
' run --max-steps <n> Continue due work in this foreground process',
|
|
104
|
+
' start --max-steps <n> Start a managed background runner; retain its limit while idle',
|
|
105
|
+
' stop Close admission and wait briefly for runner drainage',
|
|
106
|
+
' release <runner-id> Release inspected stale ownership; requires --executor-stopped',
|
|
107
|
+
' pause Close admission and request interruption of active runners',
|
|
108
|
+
' resume Reopen admission; does not start work or clear claims',
|
|
109
|
+
' wake <id> <evidence> Make a waiting pursuit due using new evidence',
|
|
110
|
+
' archive <id> Retire a terminal pursuit, preserving its history',
|
|
111
|
+
' reconcile <id> <summary> Record inspected effects for an exact interrupted claim',
|
|
112
|
+
'',
|
|
113
|
+
'Common: --cwd <path>, --agent <name> (default: default).',
|
|
114
|
+
'The first add binds the execution directory; later launches keep that directory.',
|
|
115
|
+
'Add, run and start require folder trust, or --trust for this invocation.',
|
|
116
|
+
'',
|
|
117
|
+
'Run options: --provider <id>, --model <id>, --effort <level>,',
|
|
118
|
+
' --permission-mode <mode> (default: plan, read-only), --skills <a,b>,',
|
|
119
|
+
' --max-iterations <n>, --token-budget <n> (limits apply per SDK step),',
|
|
120
|
+
' --tool-loading eager|deferred (default: eager; defer optional schemas per step),',
|
|
121
|
+
' --context-profile resident|interactive (default: resident; bounded-step guidance),',
|
|
122
|
+
' --gate <command>, --gate-retries <n>, --max-idle-ms <n> (default: 60000).',
|
|
123
|
+
'Run and start require a finite --max-steps. No OS service is installed.',
|
|
124
|
+
'Start survives the launching terminal; it stops at that limit, pause, failure or stop.',
|
|
125
|
+
'For start, --max-idle-ms is a positive local idle check interval; idle does not exit.',
|
|
126
|
+
'Status contacts the exact runner locally; no recorded PID is blindly signalled.',
|
|
127
|
+
'Idle waits use local storage checks and spend no model calls.',
|
|
128
|
+
'',
|
|
129
|
+
'Reconcile also requires --claim <uuid> --revision <n> --outcome wait|complete|blocked',
|
|
130
|
+
' --executor-stopped. This confirms all old executors stopped and effects were',
|
|
131
|
+
' inspected; put the evidence in <summary>. Pause the resident first.',
|
|
132
|
+
' A wait outcome rests indefinitely; use wake to supply new evidence.',
|
|
133
|
+
'Release requires prior pause and confirmation all previous executors stopped.',
|
|
134
|
+
'An unreachable runner is not proof it stopped. Release never reconciles a pursuit.',
|
|
135
|
+
'',
|
|
136
|
+
'Pause acknowledges durable admission closure, not completed tool cancellation.',
|
|
137
|
+
'Interrupted, failed or unfinished steps keep their claim and are never replayed automatically.',
|
|
138
|
+
'Continuation uses the saved summary and approved learning, not a restored chat transcript.',
|
|
139
|
+
'Exit: 0 for an operation/clean bounded run, 1 for unresolved or failed work,',
|
|
140
|
+
' 64 for invalid arguments, 77 for untrusted execution, 78 for invalid run config,',
|
|
141
|
+
' 130 for cancellation. A clean run does not mean every pursuit is complete.',
|
|
142
|
+
].join('\n'),
|
|
143
|
+
handler: async ({ ctx: bootstrap, rawArgs }) => {
|
|
144
|
+
let flags;
|
|
145
|
+
try {
|
|
146
|
+
flags = parseResidentFlags(rawArgs);
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
bootstrap.formatter.error({ message: String(error instanceof Error ? error.message : error) });
|
|
150
|
+
return EXIT_USAGE;
|
|
151
|
+
}
|
|
152
|
+
const resolved = resolveWorkingDirectory(flags.run.cwd);
|
|
153
|
+
if ('error' in resolved) {
|
|
154
|
+
bootstrap.formatter.error({ message: resolved.error });
|
|
155
|
+
return EXIT_USAGE;
|
|
156
|
+
}
|
|
157
|
+
let resident = null;
|
|
158
|
+
try {
|
|
159
|
+
resident = await lookupResident(resolved.cwd, flags.agent);
|
|
160
|
+
if (flags.action === 'status' && !resident) {
|
|
161
|
+
bootstrap.formatter.print({
|
|
162
|
+
text: `No resident named ${flags.agent} in this project. Use namzu resident add <objective>.`,
|
|
163
|
+
agent: flags.agent,
|
|
164
|
+
agenda: null,
|
|
165
|
+
});
|
|
166
|
+
return 0;
|
|
167
|
+
}
|
|
168
|
+
if (flags.action === 'add' || flags.action === 'run' || flags.action === 'start') {
|
|
169
|
+
const target = resolveWorkingDirectory(resident?.cwd ?? resolved.cwd);
|
|
170
|
+
if ('error' in target)
|
|
171
|
+
throw new Error(target.error);
|
|
172
|
+
const trust = decideHeadlessTrust({ cwd: target.cwd, trustFlag: flags.run.trust });
|
|
173
|
+
if (!trust.allowed) {
|
|
174
|
+
bootstrap.formatter.error({
|
|
175
|
+
message: trust.message ?? 'Resident directory is not trusted.',
|
|
176
|
+
});
|
|
177
|
+
return EXIT_UNTRUSTED;
|
|
178
|
+
}
|
|
179
|
+
if (resident && trust.cwd !== resident.cwd)
|
|
180
|
+
throw new Error('Resident execution directory no longer resolves to its saved canonical path. Restore the original directory before running this resident.');
|
|
181
|
+
if (flags.action === 'add')
|
|
182
|
+
resident = await createResident(trust.cwd, flags.agent);
|
|
183
|
+
}
|
|
184
|
+
if (!resident)
|
|
185
|
+
throw new Error(`No resident named ${flags.agent}. Add a pursuit first.`);
|
|
186
|
+
let state = await resident.agenda.read();
|
|
187
|
+
if (!state)
|
|
188
|
+
throw new Error('Resident binding exists but its agenda is missing; repeat add to initialize it.');
|
|
189
|
+
let message;
|
|
190
|
+
switch (flags.action) {
|
|
191
|
+
case 'add': {
|
|
192
|
+
const added = await resident.agenda.add(state, flags.run.rest.join(' '));
|
|
193
|
+
message = `Saved ${added.id}.`;
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
case 'status':
|
|
197
|
+
break;
|
|
198
|
+
case 'stop': {
|
|
199
|
+
// Bind this stop to the invocation observed before closing admission.
|
|
200
|
+
// A later resume/start must not become the target of an older stop.
|
|
201
|
+
const owner = readRunner(resident);
|
|
202
|
+
await closeAdmission(resident, state);
|
|
203
|
+
const stopped = await stopResidentRunner(resident, { owner });
|
|
204
|
+
state = await readAgenda(resident);
|
|
205
|
+
const text = stopped.status === 'drained'
|
|
206
|
+
? 'The observed runner drained. Inspect current admission and any retained pursuit claim below.'
|
|
207
|
+
: stopped.status === 'absent'
|
|
208
|
+
? 'Admission closed. No managed runner is recorded; other executors are not certified stopped.'
|
|
209
|
+
: 'Interruption requested; runner drainage is not confirmed. Inspect status before recovery.';
|
|
210
|
+
bootstrap.formatter.print({
|
|
211
|
+
...residentStatus(resident, state, text, await residentRunnerStatus(resident)),
|
|
212
|
+
stop: stopped,
|
|
213
|
+
});
|
|
214
|
+
return stopped.status === 'unconfirmed' ? 1 : 0;
|
|
215
|
+
}
|
|
216
|
+
case 'release': {
|
|
217
|
+
if (!state.paused)
|
|
218
|
+
throw new Error('Pause the resident before releasing inspected runner ownership.');
|
|
219
|
+
const owner = readRunner(resident);
|
|
220
|
+
if (!owner || owner.instanceId !== flags.run.rest[0])
|
|
221
|
+
throw new Error('Runner ID does not match current ownership. Inspect status again.');
|
|
222
|
+
if (owner.phase === 'running' &&
|
|
223
|
+
(await queryRunner(owner, 'status')).kind === 'responsive')
|
|
224
|
+
throw new Error('This runner still responds. Use resident stop and wait for drainage before recovery.');
|
|
225
|
+
releaseRunner(resident, owner);
|
|
226
|
+
message =
|
|
227
|
+
'Inspected runner ownership released. Pursuit claims and admission are unchanged; reconcile interrupted work separately.';
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
case 'pause':
|
|
231
|
+
await closeAdmission(resident, state);
|
|
232
|
+
message = 'Admission closed; interruption requested. Active tools may still be stopping.';
|
|
233
|
+
break;
|
|
234
|
+
case 'resume':
|
|
235
|
+
if (state.pursuits.some((p) => p.state.phase === 'running'))
|
|
236
|
+
throw new Error('Inspect and reconcile unresolved claims before reopening admission.');
|
|
237
|
+
await resident.agenda.setPaused(state, false);
|
|
238
|
+
message = 'Admission reopened. No work started; invoke resident run or start explicitly.';
|
|
239
|
+
break;
|
|
240
|
+
case 'wake': {
|
|
241
|
+
const selected = pursuit(state, flags.run.rest[0]);
|
|
242
|
+
await resident.agenda.wake(selected.id, selected.state, flags.run.rest.slice(1).join(' '), Date.now());
|
|
243
|
+
message = 'New evidence saved; pursuit is due on the next authorized run.';
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
246
|
+
case 'archive':
|
|
247
|
+
await resident.agenda.archive(state, {
|
|
248
|
+
pursuitIds: [pursuit(state, flags.run.rest[0]).id],
|
|
249
|
+
});
|
|
250
|
+
message = 'Terminal pursuit archived; immutable history retained.';
|
|
251
|
+
break;
|
|
252
|
+
case 'reconcile': {
|
|
253
|
+
if (!state.paused)
|
|
254
|
+
throw new Error('Pause the resident before reconciling inspected effects.');
|
|
255
|
+
const selected = pursuit(state, flags.run.rest[0]);
|
|
256
|
+
if (selected.state.phase !== 'running' ||
|
|
257
|
+
selected.state.claimId !== flags.claim ||
|
|
258
|
+
selected.state.revision !== flags.revision)
|
|
259
|
+
throw new Error('Claim or revision does not match the current unresolved pursuit; inspect status again.');
|
|
260
|
+
const summary = flags.run.rest.slice(1).join(' ');
|
|
261
|
+
const decision = flags.outcome === 'wait'
|
|
262
|
+
? { kind: 'wait', summary, wakeAt: null }
|
|
263
|
+
: { kind: flags.outcome, summary };
|
|
264
|
+
await resident.agenda.execution(selected.id).settle(selected.state, decision, Date.now());
|
|
265
|
+
message = 'Inspection recorded against the exact claim. Resident remains paused.';
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
268
|
+
case 'run':
|
|
269
|
+
case 'start': {
|
|
270
|
+
if (flags.maxSteps === null)
|
|
271
|
+
throw new Error('Resident execution requires --max-steps.');
|
|
272
|
+
const ctx = resolveTrustedProjectContext(bootstrap, resident.cwd);
|
|
273
|
+
const sessions = await openSessions(resident.cwd);
|
|
274
|
+
if (sessions.projectId !== resident.projectId || sessions.tenantId !== resident.tenantId)
|
|
275
|
+
throw new Error('Resident execution directory no longer belongs to its bound project and tenant.');
|
|
276
|
+
const { createResidentSessionStep } = await import('../integrations/resident/session-step.js');
|
|
277
|
+
const step = createResidentSessionStep({
|
|
278
|
+
ctx,
|
|
279
|
+
cwd: resident.cwd,
|
|
280
|
+
sessions,
|
|
281
|
+
flags: flags.run,
|
|
282
|
+
toolLoading: flags.toolLoading,
|
|
283
|
+
contextProfile: flags.contextProfile,
|
|
284
|
+
artifactsRoot: resident.artifactsRoot,
|
|
285
|
+
});
|
|
286
|
+
if (flags.action === 'start') {
|
|
287
|
+
const owner = await startResidentRunner({
|
|
288
|
+
resident,
|
|
289
|
+
ctx,
|
|
290
|
+
flags: flags.run,
|
|
291
|
+
toolLoading: flags.toolLoading,
|
|
292
|
+
contextProfile: flags.contextProfile,
|
|
293
|
+
maxSteps: flags.maxSteps,
|
|
294
|
+
maxIdleMs: flags.maxIdleMs,
|
|
295
|
+
});
|
|
296
|
+
state = await readAgenda(resident);
|
|
297
|
+
ctx.formatter.print({
|
|
298
|
+
...residentStatus(resident, state, 'Background runner started. Use resident status to inspect it and resident stop to drain it.', await residentRunnerStatus(resident)),
|
|
299
|
+
started: owner,
|
|
300
|
+
});
|
|
301
|
+
return 0;
|
|
302
|
+
}
|
|
303
|
+
const existing = readRunner(resident);
|
|
304
|
+
if (existing && ['reserved', 'running'].includes(existing.phase))
|
|
305
|
+
throw new Error('A resident runner already owns this agenda. Inspect status and stop it before another run.');
|
|
306
|
+
const controller = new AbortController();
|
|
307
|
+
const interrupt = () => controller.abort(new Error('Resident foreground invocation interrupted.'));
|
|
308
|
+
process.once('SIGINT', interrupt);
|
|
309
|
+
process.once('SIGTERM', interrupt);
|
|
310
|
+
try {
|
|
311
|
+
const result = state.paused || state.pursuits.some((p) => p.state.phase === 'running')
|
|
312
|
+
? {
|
|
313
|
+
status: state.paused ? 'paused' : 'unresolved',
|
|
314
|
+
stepsSettled: 0,
|
|
315
|
+
nextWakeAt: null,
|
|
316
|
+
}
|
|
317
|
+
: await runOwnedResident({
|
|
318
|
+
resident,
|
|
319
|
+
owner: reserveRunner(resident, {
|
|
320
|
+
mode: 'foreground',
|
|
321
|
+
maxSteps: flags.maxSteps,
|
|
322
|
+
pauseGeneration: state.pauseGeneration ?? 0,
|
|
323
|
+
}),
|
|
324
|
+
step,
|
|
325
|
+
signal: controller.signal,
|
|
326
|
+
keepAlive: false,
|
|
327
|
+
maxIdleMs: flags.maxIdleMs,
|
|
328
|
+
});
|
|
329
|
+
state = await readAgenda(resident);
|
|
330
|
+
const status = residentStatus(resident, state, undefined, await residentRunnerStatus(resident));
|
|
331
|
+
ctx.formatter.print({
|
|
332
|
+
...status,
|
|
333
|
+
execution: result,
|
|
334
|
+
text: `${status.text}\n\nRun: ${result.status} · ${result.stepsSettled} step(s) settled`,
|
|
335
|
+
});
|
|
336
|
+
return result.status === 'cancelled'
|
|
337
|
+
? 130
|
|
338
|
+
: ['unresolved', 'contended'].includes(result.status) ||
|
|
339
|
+
state.pursuits.some((p) => p.state.phase === 'running')
|
|
340
|
+
? 1
|
|
341
|
+
: 0;
|
|
342
|
+
}
|
|
343
|
+
finally {
|
|
344
|
+
process.removeListener('SIGINT', interrupt);
|
|
345
|
+
process.removeListener('SIGTERM', interrupt);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
state = await readAgenda(resident);
|
|
350
|
+
const runner = await residentRunnerStatus(resident);
|
|
351
|
+
if (flags.action === 'add') {
|
|
352
|
+
message +=
|
|
353
|
+
runner.live?.kind === 'responsive'
|
|
354
|
+
? ' Due work is available to the current runner within its remaining authorization.'
|
|
355
|
+
: runner.owner && ['running', 'reserved'].includes(runner.owner.phase)
|
|
356
|
+
? ' Runner ownership is retained; inspect resident status before execution.'
|
|
357
|
+
: ' Continue with namzu resident run --max-steps <n> or resident start --max-steps <n>.';
|
|
358
|
+
}
|
|
359
|
+
bootstrap.formatter.print(residentStatus(resident, state, message, runner));
|
|
360
|
+
return 0;
|
|
361
|
+
}
|
|
362
|
+
catch (error) {
|
|
363
|
+
bootstrap.formatter.error({ message: error instanceof Error ? error.message : String(error) });
|
|
364
|
+
if (resident) {
|
|
365
|
+
try {
|
|
366
|
+
const state = await resident.agenda.read();
|
|
367
|
+
if (state)
|
|
368
|
+
bootstrap.formatter.print(residentStatus(resident, state, undefined, await residentRunnerStatus(resident)));
|
|
369
|
+
}
|
|
370
|
+
catch {
|
|
371
|
+
/* Preserve the original error when state is also unavailable. */
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
return error instanceof ConfigLoadError || error instanceof ConfigValueError
|
|
375
|
+
? EXIT_BAD_CONFIG
|
|
376
|
+
: 1;
|
|
377
|
+
}
|
|
378
|
+
},
|
|
379
|
+
};
|
|
380
|
+
//# 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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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function upgradeFrame(tick: number, columns: number, complete?: boolean): string;
|
|
2
|
+
/** A bounded two-line activity indicator; npm has no trustworthy percent API. */
|
|
3
|
+
export declare function startUpgradeProgress(stream?: {
|
|
4
|
+
readonly isTTY?: boolean;
|
|
5
|
+
readonly columns?: number;
|
|
6
|
+
write: (text: string) => unknown;
|
|
7
|
+
}): {
|
|
8
|
+
stop: (complete?: boolean) => void;
|
|
9
|
+
} | undefined;
|
|
10
|
+
//# sourceMappingURL=upgrade-progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-progress.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade-progress.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,MAAM,CAYpF;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,CACnC,MAAM,GAAE;IACP,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CACf,GAEhB;IACA,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CACjC,GACD,SAAS,CAoCX"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { NAMZU_COMPACT_WORDMARK, NAMZU_WORDMARK } from '../tui/logo.js';
|
|
2
|
+
export function upgradeFrame(tick, columns, complete = false) {
|
|
3
|
+
const logo = columns >= 28 ? NAMZU_WORDMARK : NAMZU_COMPACT_WORDMARK;
|
|
4
|
+
const width = Math.max(...logo.split('\n').map((line) => line.length));
|
|
5
|
+
const edge = tick % width;
|
|
6
|
+
const lines = logo.split('\n').map((line) => Array.from(line, (char, x) => {
|
|
7
|
+
if (char === ' ')
|
|
8
|
+
return char;
|
|
9
|
+
const color = complete || x < edge ? 92 : x === edge ? 97 : 90;
|
|
10
|
+
return `\x1b[${color}m${char}\x1b[0m`;
|
|
11
|
+
}).join(''));
|
|
12
|
+
return lines.join('\n');
|
|
13
|
+
}
|
|
14
|
+
/** A bounded two-line activity indicator; npm has no trustworthy percent API. */
|
|
15
|
+
export function startUpgradeProgress(stream = process.stderr) {
|
|
16
|
+
if (!stream.isTTY ||
|
|
17
|
+
(stream.columns ?? 0) < 12 ||
|
|
18
|
+
process.env.TERM === 'dumb' ||
|
|
19
|
+
process.env.NO_COLOR !== undefined)
|
|
20
|
+
return;
|
|
21
|
+
let tick = 0;
|
|
22
|
+
let rows = 0;
|
|
23
|
+
let stopped = false;
|
|
24
|
+
const clear = () => {
|
|
25
|
+
if (rows)
|
|
26
|
+
stream.write(`\x1b[${rows}A\r\x1b[J`);
|
|
27
|
+
rows = 0;
|
|
28
|
+
};
|
|
29
|
+
const draw = (complete = false) => {
|
|
30
|
+
clear();
|
|
31
|
+
const frame = upgradeFrame(tick++, stream.columns ?? 80, complete);
|
|
32
|
+
stream.write(`${frame}\n`);
|
|
33
|
+
rows = frame.split('\n').length;
|
|
34
|
+
};
|
|
35
|
+
const onExit = () => clear();
|
|
36
|
+
process.once('exit', onExit);
|
|
37
|
+
draw();
|
|
38
|
+
const timer = setInterval(draw, 90);
|
|
39
|
+
timer.unref();
|
|
40
|
+
return {
|
|
41
|
+
stop(complete = false) {
|
|
42
|
+
if (stopped)
|
|
43
|
+
return;
|
|
44
|
+
stopped = true;
|
|
45
|
+
clearInterval(timer);
|
|
46
|
+
process.removeListener('exit', onExit);
|
|
47
|
+
if (complete)
|
|
48
|
+
draw(true);
|
|
49
|
+
else
|
|
50
|
+
clear();
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=upgrade-progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-progress.js","sourceRoot":"","sources":["../../src/commands/upgrade-progress.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ export interface NpmUpgradeRequest {
|
|
|
3
3
|
readonly executable: string;
|
|
4
4
|
readonly args: readonly string[];
|
|
5
5
|
readonly prefix: string;
|
|
6
|
+
readonly onOutput?: (text: string) => void;
|
|
6
7
|
}
|
|
7
8
|
export interface UpgradeCommandDeps {
|
|
8
9
|
readonly currentVersion: string;
|
|
@@ -20,6 +21,7 @@ export interface UpgradeCommandDeps {
|
|
|
20
21
|
* is deliberately not consulted.
|
|
21
22
|
*/
|
|
22
23
|
export declare function npmGlobalPrefixFor(packageRoot: string, platform: NodeJS.Platform): string | null;
|
|
24
|
+
export declare function runNpmUpgrade(request: NpmUpgradeRequest): Promise<number>;
|
|
23
25
|
export declare function createUpgradeCommand(deps: UpgradeCommandDeps): CommandDef;
|
|
24
26
|
export declare const upgradeCommand: CommandDef;
|
|
25
27
|
//# sourceMappingURL=upgrade.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAa5C,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC1C;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAA;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7C,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAChE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAA;CAC1D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,GAAG,IAAI,CAahG;AAgBD,wBAAgB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBzE;AAmBD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,kBAAkB,GAAG,UAAU,CAsJzE;AAED,eAAO,MAAM,cAAc,EAAE,UAAiD,CAAA"}
|