@aeolus-fleet/trierarch 0.17.3 → 0.19.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/LICENSE +201 -0
- package/README.md +18 -16
- package/dist/adapters/claude-code.d.ts +11 -1
- package/dist/adapters/claude-code.js +32 -10
- package/dist/adapters/claude-code.js.map +1 -1
- package/dist/adapters/codex.d.ts +10 -1
- package/dist/adapters/codex.js +15 -4
- package/dist/adapters/codex.js.map +1 -1
- package/dist/adapters/command-line.d.ts +15 -0
- package/dist/adapters/command-line.js +17 -0
- package/dist/adapters/command-line.js.map +1 -0
- package/dist/adapters/files.d.ts +9 -0
- package/dist/adapters/files.js +16 -0
- package/dist/adapters/files.js.map +1 -1
- package/dist/adapters/flags.d.ts +2 -2
- package/dist/adapters/flags.js +2 -2
- package/dist/adapters/git-workspace.js +1 -1
- package/dist/adapters/harnesses.d.ts +10 -2
- package/dist/adapters/harnesses.js +26 -3
- package/dist/adapters/harnesses.js.map +1 -1
- package/dist/adapters/json-state.d.ts +6 -4
- package/dist/adapters/json-state.js +21 -21
- package/dist/adapters/json-state.js.map +1 -1
- package/dist/adapters/log.d.ts +39 -0
- package/dist/adapters/log.js +65 -0
- package/dist/adapters/log.js.map +1 -0
- package/dist/adapters/paths.d.ts +1 -0
- package/dist/adapters/paths.js +1 -0
- package/dist/adapters/paths.js.map +1 -1
- package/dist/adapters/rest-fleet.d.ts +4 -3
- package/dist/adapters/rest-fleet.js +38 -18
- package/dist/adapters/rest-fleet.js.map +1 -1
- package/dist/adapters/service.js +18 -15
- package/dist/adapters/service.js.map +1 -1
- package/dist/adapters/style.d.ts +18 -0
- package/dist/adapters/style.js +38 -0
- package/dist/adapters/style.js.map +1 -0
- package/dist/cli/config-check.d.ts +11 -2
- package/dist/cli/config-check.js +26 -5
- package/dist/cli/config-check.js.map +1 -1
- package/dist/cli/init.d.ts +2 -2
- package/dist/cli/init.js +41 -15
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/list.d.ts +7 -4
- package/dist/cli/list.js +18 -8
- package/dist/cli/list.js.map +1 -1
- package/dist/cli/main.js +33 -16
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/prompter.d.ts +4 -0
- package/dist/cli/prompter.js +18 -3
- package/dist/cli/prompter.js.map +1 -1
- package/dist/cli/run.d.ts +13 -8
- package/dist/cli/run.js +48 -27
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/status.d.ts +13 -4
- package/dist/cli/status.js +43 -17
- package/dist/cli/status.js.map +1 -1
- package/dist/core/check-settings.d.ts +25 -0
- package/dist/core/check-settings.js +52 -0
- package/dist/core/check-settings.js.map +1 -0
- package/dist/core/entry.d.ts +18 -30
- package/dist/core/entry.js +3 -1
- package/dist/core/entry.js.map +1 -1
- package/dist/core/handle-delivery.d.ts +9 -14
- package/dist/core/handle-delivery.js +4 -133
- package/dist/core/handle-delivery.js.map +1 -1
- package/dist/core/options-schema.d.ts +7 -0
- package/dist/core/options-schema.js +10 -0
- package/dist/core/options-schema.js.map +1 -0
- package/dist/core/ports.d.ts +60 -6
- package/dist/core/reconciler.d.ts +32 -12
- package/dist/core/reconciler.js +107 -23
- package/dist/core/reconciler.js.map +1 -1
- package/dist/core/report-self.d.ts +16 -0
- package/dist/core/report-self.js +41 -0
- package/dist/core/report-self.js.map +1 -0
- package/dist/core/run-pass.d.ts +8 -4
- package/dist/core/run-pass.js +135 -56
- package/dist/core/run-pass.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +7 -5
- package/dist/core/answers.d.ts +0 -4
- package/dist/core/answers.js +0 -27
- package/dist/core/answers.js.map +0 -1
- package/dist/core/check-want.d.ts +0 -32
- package/dist/core/check-want.js +0 -80
- package/dist/core/check-want.js.map +0 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { EntryState } from '../core/entry.js';
|
|
2
|
+
/**
|
|
3
|
+
* How the command colours what it says: Node's own styleText, no colour
|
|
4
|
+
* library. Colour only where a person reads a colour terminal; otherwise the
|
|
5
|
+
* same words, plain. A tone names how a thing stands, not its colour.
|
|
6
|
+
*/
|
|
7
|
+
export type Tone = 'good' | 'busy' | 'bad' | 'quiet' | 'strong';
|
|
8
|
+
export interface Style {
|
|
9
|
+
tone(tone: Tone, text: string): string;
|
|
10
|
+
}
|
|
11
|
+
/** A terminal that shows colour: NO_COLOR (https://no-color.org) and a dumb terminal turn it off, FORCE_COLOR on. */
|
|
12
|
+
export declare function isColourTerminal(env: Readonly<Record<string, string | undefined>>, isTerminal: boolean): boolean;
|
|
13
|
+
export declare const PLAIN: Style;
|
|
14
|
+
export declare function createStyle(at: {
|
|
15
|
+
isColour: boolean;
|
|
16
|
+
}): Style;
|
|
17
|
+
/** How an entry's state stands: running is good, on its way is busy, crashed is bad, releasing is quiet. */
|
|
18
|
+
export declare function stateTone(state: EntryState): Tone;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { styleText } from 'node:util';
|
|
2
|
+
const FORMATS = {
|
|
3
|
+
good: 'green',
|
|
4
|
+
busy: 'yellow',
|
|
5
|
+
bad: 'red',
|
|
6
|
+
quiet: 'dim',
|
|
7
|
+
strong: 'bold',
|
|
8
|
+
};
|
|
9
|
+
/** A terminal that shows colour: NO_COLOR (https://no-color.org) and a dumb terminal turn it off, FORCE_COLOR on. */
|
|
10
|
+
export function isColourTerminal(env, isTerminal) {
|
|
11
|
+
if (env.FORCE_COLOR !== undefined && env.FORCE_COLOR !== '0') {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
if ((env.NO_COLOR !== undefined && env.NO_COLOR !== '') || env.TERM === 'dumb') {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
return isTerminal;
|
|
18
|
+
}
|
|
19
|
+
export const PLAIN = { tone: (_tone, text) => text };
|
|
20
|
+
export function createStyle(at) {
|
|
21
|
+
// The stream is decided above, by isColourTerminal: styleText is not to check it again.
|
|
22
|
+
return at.isColour ? { tone: (tone, text) => styleText(FORMATS[tone], text, { validateStream: false }) } : PLAIN;
|
|
23
|
+
}
|
|
24
|
+
/** How an entry's state stands: running is good, on its way is busy, crashed is bad, releasing is quiet. */
|
|
25
|
+
export function stateTone(state) {
|
|
26
|
+
switch (state) {
|
|
27
|
+
case 'running':
|
|
28
|
+
return 'good';
|
|
29
|
+
case 'crewing':
|
|
30
|
+
case 'restarting':
|
|
31
|
+
return 'busy';
|
|
32
|
+
case 'crashed':
|
|
33
|
+
return 'bad';
|
|
34
|
+
case 'releasing':
|
|
35
|
+
return 'quiet';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.js","sourceRoot":"","sources":["../../src/adapters/style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAetC,MAAM,OAAO,GAA4D;IACvE,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,MAAM;CACf,CAAC;AAEF,qHAAqH;AACrH,MAAM,UAAU,gBAAgB,CAAC,GAAiD,EAAE,UAAmB;IACrG,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,GAAG,CAAC,WAAW,KAAK,GAAG,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC/E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAU,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AAE5D,MAAM,UAAU,WAAW,CAAC,EAAyB;IACnD,wFAAwF;IACxF,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACnH,CAAC;AAED,4GAA4G;AAC5G,MAAM,UAAU,SAAS,CAAC,KAAiB;IACzC,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC;QAChB,KAAK,SAAS,CAAC;QACf,KAAK,YAAY;YACf,OAAO,MAAM,CAAC;QAChB,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC;QACf,KAAK,WAAW;YACd,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
|
+
import { type CommandPart } from '../adapters/command-line.js';
|
|
2
|
+
import type { AdapterFlag } from '../core/ports.js';
|
|
1
3
|
import type { TrierarchPaths } from '../adapters/paths.js';
|
|
2
|
-
/** `aeolus-trierarch config check`: checks the configuration and gives the effective
|
|
4
|
+
/** `aeolus-trierarch config check`: checks the configuration and gives the effective command per harness. */
|
|
3
5
|
export interface ConfigCheckReport {
|
|
4
6
|
readonly path: string;
|
|
5
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Per harness, the flags settings with no options launch with, each option
|
|
9
|
+
* value's flags, the flags the adapter adds itself, and the command lines
|
|
10
|
+
* of a first start and a restart, each part marked by its source.
|
|
11
|
+
*/
|
|
6
12
|
readonly harnesses: Readonly<Record<string, {
|
|
7
13
|
flags: readonly string[];
|
|
8
14
|
options: Readonly<Record<string, Readonly<Record<string, readonly string[]>>>>;
|
|
15
|
+
adapterFlags: readonly AdapterFlag[];
|
|
16
|
+
firstStart?: readonly CommandPart[];
|
|
17
|
+
restart?: readonly CommandPart[];
|
|
9
18
|
}>>;
|
|
10
19
|
readonly text: string;
|
|
11
20
|
}
|
package/dist/cli/config-check.js
CHANGED
|
@@ -1,15 +1,36 @@
|
|
|
1
|
+
import { describeCommandLine } from '../adapters/command-line.js';
|
|
1
2
|
import { loadConfiguration } from '../adapters/files.js';
|
|
2
3
|
import { describeFlags, effectiveFlags } from '../adapters/flags.js';
|
|
4
|
+
import { adapterFlagsOf, commandLinesOf } from '../adapters/harnesses.js';
|
|
3
5
|
export async function configCheck(paths) {
|
|
4
6
|
const configuration = await loadConfiguration(paths.config);
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const adapterFlags = adapterFlagsOf(configuration);
|
|
8
|
+
const harnesses = Object.fromEntries(Object.entries(configuration.harnesses).map(([name, harness]) => {
|
|
9
|
+
const flags = effectiveFlags(harness, {});
|
|
10
|
+
return [
|
|
11
|
+
name,
|
|
12
|
+
{
|
|
13
|
+
flags,
|
|
14
|
+
options: Object.fromEntries(Object.entries(harness.options).map(([option, settings]) => [option, settings.values])),
|
|
15
|
+
adapterFlags: adapterFlags[name] ?? [],
|
|
16
|
+
...commandLinesOf(name, flags),
|
|
17
|
+
},
|
|
18
|
+
];
|
|
19
|
+
}));
|
|
20
|
+
const commands = Object.entries(harnesses).map(([name, harness]) => harness.firstStart === undefined || harness.restart === undefined
|
|
21
|
+
? `${name}: this trierarch has no adapter for it`
|
|
22
|
+
: [`${name}:`, ` first start: ${describeCommandLine(harness.firstStart)}`, ` restart: ${describeCommandLine(harness.restart)}`].join('\n'));
|
|
9
23
|
return {
|
|
10
24
|
path: paths.config,
|
|
11
25
|
harnesses,
|
|
12
|
-
text: [
|
|
26
|
+
text: [
|
|
27
|
+
`The configuration at ${paths.config} fits.`,
|
|
28
|
+
'Flags per harness (settings pick option values by name):',
|
|
29
|
+
describeFlags(configuration),
|
|
30
|
+
'',
|
|
31
|
+
'What each harness launches, with the default options:',
|
|
32
|
+
...commands,
|
|
33
|
+
].join('\n'),
|
|
13
34
|
};
|
|
14
35
|
}
|
|
15
36
|
//# sourceMappingURL=config-check.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-check.js","sourceRoot":"","sources":["../../src/cli/config-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"config-check.js","sourceRoot":"","sources":["../../src/cli/config-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAoB,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AA2B1E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAqB;IACrD,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAClC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE;QAC9D,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1C,OAAO;YACL,IAAI;YACJ;gBACE,KAAK;gBACL,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBACnH,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE;gBACtC,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;aAC/B;SACF,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CACjE,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;QAC/D,CAAC,CAAC,GAAG,IAAI,wCAAwC;QACjD,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,cAAc,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/I,CAAC;IACF,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,MAAM;QAClB,SAAS;QACT,IAAI,EAAE;YACJ,wBAAwB,KAAK,CAAC,MAAM,QAAQ;YAC5C,0DAA0D;YAC1D,aAAa,CAAC,aAAa,CAAC;YAC5B,EAAE;YACF,uDAAuD;YACvD,GAAG,QAAQ;SACZ,CAAC,IAAI,CAAC,IAAI,CAAC;KACb,CAAC;AACJ,CAAC"}
|
package/dist/cli/init.d.ts
CHANGED
|
@@ -7,8 +7,8 @@ import type { Service } from '../adapters/service.js';
|
|
|
7
7
|
import type { Prompter } from './prompter.js';
|
|
8
8
|
/**
|
|
9
9
|
* `aeolus-trierarch init`: the whole setup of a machine, asking for what is
|
|
10
|
-
* missing. It registers the trierarch's own ship (commissioned
|
|
11
|
-
*
|
|
10
|
+
* missing. It registers the trierarch's own ship (commissioned by the
|
|
11
|
+
* trierarch plugin, with crew:run) and keeps its crew token, never the secret; writes the
|
|
12
12
|
* configuration from the operator's answers; answers Claude Code's one-time
|
|
13
13
|
* questions ahead, so a session nobody watches never waits on one; and offers
|
|
14
14
|
* to install and start the service. On a machine set up already it says so,
|
package/dist/cli/init.js
CHANGED
|
@@ -17,6 +17,8 @@ function defaultsOnly(prompter) {
|
|
|
17
17
|
say: (message) => {
|
|
18
18
|
prompter.say(message);
|
|
19
19
|
},
|
|
20
|
+
// --yes asks nothing, so no step has a question to show its title before.
|
|
21
|
+
step: () => undefined,
|
|
20
22
|
};
|
|
21
23
|
}
|
|
22
24
|
/** Asks until the answer is one `accept` takes, saying why each other one is not. */
|
|
@@ -43,6 +45,9 @@ function asCap(answer) {
|
|
|
43
45
|
async function exists(path) {
|
|
44
46
|
return (await stat(path).catch(() => undefined)) !== undefined;
|
|
45
47
|
}
|
|
48
|
+
async function isFolder(path) {
|
|
49
|
+
return (await stat(path).catch(() => undefined))?.isDirectory() === true;
|
|
50
|
+
}
|
|
46
51
|
/** The fleet URL, ship id and secret, from the flags or asked; with --yes all three must be flags. */
|
|
47
52
|
async function askCrew(flags, prompter) {
|
|
48
53
|
if (flags.isYes) {
|
|
@@ -72,36 +77,49 @@ async function askCrew(flags, prompter) {
|
|
|
72
77
|
const secret = flags.secret ?? (await prompter.secret('Its secret (aeolus_sk_v1_..., not shown as you type)?'));
|
|
73
78
|
return { fleetUrl, shipId, secret };
|
|
74
79
|
}
|
|
75
|
-
/**
|
|
76
|
-
async function
|
|
77
|
-
const {
|
|
78
|
-
const
|
|
79
|
-
for (const [name, place] of Object.entries(
|
|
80
|
-
if (await prompter.confirm(`Keep the
|
|
81
|
-
|
|
80
|
+
/** Named places: each one held kept or dropped as answered, then new ones, name and path, until the operator is done. */
|
|
81
|
+
async function askPlaces(at) {
|
|
82
|
+
const { held, prompter, homeDirectory, questions } = at;
|
|
83
|
+
const places = {};
|
|
84
|
+
for (const [name, place] of Object.entries(held)) {
|
|
85
|
+
if (await prompter.confirm(`Keep the ${questions.kind} ${name} (${place.path})?`, { isDefault: true })) {
|
|
86
|
+
places[name] = place;
|
|
82
87
|
}
|
|
83
88
|
}
|
|
84
89
|
for (;;) {
|
|
85
90
|
const name = await askUntil({
|
|
86
91
|
prompter,
|
|
87
|
-
ask: () => prompter.text(
|
|
92
|
+
ask: () => prompter.text(questions.add, { default: '' }),
|
|
88
93
|
accept: (answer) => (answer === '' || trierarchNameSchema.safeParse(answer).success ? { value: answer } : { why: `${answer} is no name: lowercase letters, digits and hyphens.` }),
|
|
89
94
|
});
|
|
90
95
|
if (name === '') {
|
|
91
|
-
return
|
|
96
|
+
return places;
|
|
92
97
|
}
|
|
93
98
|
const path = await askUntil({
|
|
94
99
|
prompter,
|
|
95
|
-
ask: () => prompter.text(
|
|
100
|
+
ask: () => prompter.text(questions.where(name)),
|
|
96
101
|
accept: async (answer) => {
|
|
97
102
|
const expanded = answer.replace(/^~(?=$|\/)/, homeDirectory);
|
|
98
103
|
const absolute = isAbsolute(expanded) ? expanded : resolve(expanded);
|
|
99
|
-
|
|
104
|
+
const why = await questions.refuse(absolute);
|
|
105
|
+
return why === undefined ? { value: absolute } : { why };
|
|
100
106
|
},
|
|
101
107
|
});
|
|
102
|
-
|
|
108
|
+
places[name] = { path };
|
|
103
109
|
}
|
|
104
110
|
}
|
|
111
|
+
const REPOSITORY_QUESTIONS = {
|
|
112
|
+
kind: 'repository',
|
|
113
|
+
add: 'Add a repository it may make worktrees of: its name, or nothing when done?',
|
|
114
|
+
where: (name) => `Where is ${name} checked out?`,
|
|
115
|
+
refuse: async (absolute) => ((await exists(join(absolute, '.git'))) ? undefined : `${absolute} is no git checkout.`),
|
|
116
|
+
};
|
|
117
|
+
const FOLDER_QUESTIONS = {
|
|
118
|
+
kind: 'folder',
|
|
119
|
+
add: 'Add a folder it may crew a ship in as it is: its name, or nothing when done?',
|
|
120
|
+
where: (name) => `Where is ${name}?`,
|
|
121
|
+
refuse: async (absolute) => ((await isFolder(absolute)) ? undefined : `${absolute} is no folder.`),
|
|
122
|
+
};
|
|
105
123
|
/**
|
|
106
124
|
* Codex's harness from the operator's answers, asked only where Codex is
|
|
107
125
|
* installed or offered already: whether to offer it, and its flags. Undefined
|
|
@@ -122,10 +140,11 @@ async function askCodex(at) {
|
|
|
122
140
|
flags: [...flags.filter((flag) => flag !== BYPASS_APPROVALS), ...(isBypassing ? [BYPASS_APPROVALS] : [])],
|
|
123
141
|
};
|
|
124
142
|
}
|
|
125
|
-
/** The configuration from the operator's answers, starting from what it holds: Claude Code's and Codex's flags, the repositories and the caps. Everything else is kept. */
|
|
143
|
+
/** The configuration from the operator's answers, starting from what it holds: Claude Code's and Codex's flags, the repositories, the folders and the caps. Everything else is kept. */
|
|
126
144
|
async function askConfiguration(at) {
|
|
127
145
|
const { base, prompter } = at;
|
|
128
146
|
const harness = base.harnesses[CLAUDE_CODE] ?? { flags: [], options: {} };
|
|
147
|
+
prompter.step('Claude Code');
|
|
129
148
|
const isSkipping = await prompter.confirm(`Launch Claude Code with ${SKIP_PERMISSIONS}? Its sessions then run every tool without asking.`, {
|
|
130
149
|
isDefault: harness.flags.includes(SKIP_PERMISSIONS),
|
|
131
150
|
});
|
|
@@ -137,8 +156,12 @@ async function askConfiguration(at) {
|
|
|
137
156
|
...(isSkipping ? [SKIP_PERMISSIONS] : []),
|
|
138
157
|
...(isRemote ? [REMOTE_CONTROL] : []),
|
|
139
158
|
];
|
|
159
|
+
prompter.step('Codex');
|
|
140
160
|
const codex = await askCodex(at);
|
|
141
|
-
|
|
161
|
+
prompter.step('Workspaces');
|
|
162
|
+
const repositories = await askPlaces({ held: base.repositories, prompter, homeDirectory: at.homeDirectory, questions: REPOSITORY_QUESTIONS });
|
|
163
|
+
const folders = await askPlaces({ held: base.folders, prompter, homeDirectory: at.homeDirectory, questions: FOLDER_QUESTIONS });
|
|
164
|
+
prompter.step('Caps');
|
|
142
165
|
const ships = await askUntil({ prompter, ask: () => prompter.text('How many ships may it keep on its list?', { default: String(base.caps.ships) }), accept: asCap });
|
|
143
166
|
const running = await askUntil({ prompter, ask: () => prompter.text('How many sessions may run at once?', { default: String(base.caps.running) }), accept: asCap });
|
|
144
167
|
const others = Object.fromEntries(Object.entries(base.harnesses).filter(([name]) => name !== CODEX));
|
|
@@ -146,6 +169,7 @@ async function askConfiguration(at) {
|
|
|
146
169
|
...base,
|
|
147
170
|
caps: { ships, running },
|
|
148
171
|
repositories,
|
|
172
|
+
folders,
|
|
149
173
|
harnesses: { ...others, [CLAUDE_CODE]: { ...harness, flags }, ...(codex !== undefined && { [CODEX]: codex }) },
|
|
150
174
|
};
|
|
151
175
|
}
|
|
@@ -158,6 +182,7 @@ export async function initTrierarch(input) {
|
|
|
158
182
|
let fleetUrl;
|
|
159
183
|
let shipId;
|
|
160
184
|
if (crew === undefined) {
|
|
185
|
+
prompter.step('The fleet');
|
|
161
186
|
const asked = await askCrew(flags, prompter);
|
|
162
187
|
const { crewToken } = await input.fleetAt(asked.fleetUrl).registerSelf({ shipId: asked.shipId, secret: asked.secret });
|
|
163
188
|
await writeCrewFile(paths.crewToken, { fleetUrl: asked.fleetUrl, shipId: asked.shipId, crewToken });
|
|
@@ -193,7 +218,7 @@ export async function initTrierarch(input) {
|
|
|
193
218
|
said.push(`Configuration ${configured} at ${paths.config}.`);
|
|
194
219
|
}
|
|
195
220
|
if (Object.keys(configuration.repositories).length === 0 && Object.keys(configuration.folders).length === 0) {
|
|
196
|
-
said.push('It has no repository or folder yet, so it
|
|
221
|
+
said.push('It has no repository or folder yet, so it can crew no request: run aeolus-trierarch init again to add one.');
|
|
197
222
|
}
|
|
198
223
|
// Claude Code's one-time questions, answered ahead.
|
|
199
224
|
const root = configuration.worktreeRoot ?? paths.worktrees;
|
|
@@ -221,6 +246,7 @@ export async function initTrierarch(input) {
|
|
|
221
246
|
const codex = await setUpCodex({ configuration, codex: input.codex, root });
|
|
222
247
|
said.push(...codex.said);
|
|
223
248
|
// The service: offered when it is not installed, restarted when it should read a new configuration.
|
|
249
|
+
prompter.step('The service');
|
|
224
250
|
let serviced = 'unchanged';
|
|
225
251
|
const status = await service.status();
|
|
226
252
|
if (!status.isInstalled) {
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/list.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import type { ShipId
|
|
1
|
+
import type { ShipId } from '@aeolus-fleet/common';
|
|
2
|
+
import type { EntryState } from '../core/entry.js';
|
|
2
3
|
import type { StatePort } from '../core/ports.js';
|
|
3
|
-
|
|
4
|
+
import { type Style } from '../adapters/style.js';
|
|
5
|
+
/** `aeolus-trierarch list`: the ships it crews, from the saved state. */
|
|
4
6
|
export interface ListedEntry {
|
|
5
7
|
readonly shipId: ShipId;
|
|
6
|
-
readonly state:
|
|
8
|
+
readonly state: EntryState;
|
|
7
9
|
readonly harness: string;
|
|
8
10
|
readonly workspace: string;
|
|
9
11
|
readonly folder?: string;
|
|
@@ -13,4 +15,5 @@ export interface ListedEntry {
|
|
|
13
15
|
readonly restarts: number;
|
|
14
16
|
}
|
|
15
17
|
export declare function inspectList(state: StatePort): Promise<ListedEntry[]>;
|
|
16
|
-
|
|
18
|
+
/** A table, its columns aligned on the plain text: the header strong and each state in its tone where the style colours. */
|
|
19
|
+
export declare function describeList(entries: readonly ListedEntry[], style?: Style): string;
|
package/dist/cli/list.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PLAIN, stateTone } from '../adapters/style.js';
|
|
1
2
|
function describeWorkspace(workspace) {
|
|
2
3
|
switch (workspace.kind) {
|
|
3
4
|
case 'worktree':
|
|
@@ -18,15 +19,24 @@ export async function inspectList(state) {
|
|
|
18
19
|
}));
|
|
19
20
|
}
|
|
20
21
|
const COLUMN_GAP = ' ';
|
|
21
|
-
|
|
22
|
+
const HEADER = ['SHIP', 'STATE', 'HARNESS', 'WORKSPACE', 'SINCE', 'RESTARTS'];
|
|
23
|
+
const STATE_COLUMN = 1;
|
|
24
|
+
/** A table, its columns aligned on the plain text: the header strong and each state in its tone where the style colours. */
|
|
25
|
+
export function describeList(entries, style = PLAIN) {
|
|
22
26
|
if (entries.length === 0) {
|
|
23
|
-
return 'No ship is
|
|
27
|
+
return 'No ship is crewed here.';
|
|
24
28
|
}
|
|
25
|
-
const rows = [
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
const rows = [HEADER, ...entries.map((entry) => [entry.shipId, entry.state, entry.harness, entry.workspace, entry.since, String(entry.restarts)])];
|
|
30
|
+
const widths = HEADER.map((_, column) => Math.max(...rows.map((row) => row[column]?.length ?? 0)));
|
|
31
|
+
const toned = (cell, at) => {
|
|
32
|
+
if (at.row === 0) {
|
|
33
|
+
return style.tone('strong', cell);
|
|
34
|
+
}
|
|
35
|
+
const entry = entries[at.row - 1];
|
|
36
|
+
return at.column === STATE_COLUMN && entry !== undefined ? style.tone(stateTone(entry.state), cell) : cell;
|
|
37
|
+
};
|
|
38
|
+
return rows
|
|
39
|
+
.map((row, rowAt) => row.map((cell, column) => toned(column === row.length - 1 ? cell : cell.padEnd(widths[column] ?? 0), { row: rowAt, column })).join(COLUMN_GAP))
|
|
40
|
+
.join('\n');
|
|
31
41
|
}
|
|
32
42
|
//# sourceMappingURL=list.js.map
|
package/dist/cli/list.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/cli/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/cli/list.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/main.js
CHANGED
|
@@ -3,8 +3,10 @@ import { join } from 'node:path';
|
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
import { createClaudeCodeSetup } from '../adapters/claude-code-setup.js';
|
|
5
5
|
import { createCodexSetup } from '../adapters/codex-setup.js';
|
|
6
|
-
import { loadConfiguration, readCrewFile, TrierarchFileError } from '../adapters/files.js';
|
|
6
|
+
import { loadConfiguration, readCrewFile, readRunningFile, TrierarchFileError } from '../adapters/files.js';
|
|
7
7
|
import { createJsonState } from '../adapters/json-state.js';
|
|
8
|
+
import { createLogger, readLogLine, renderLogLine } from '../adapters/log.js';
|
|
9
|
+
import { createStyle, isColourTerminal } from '../adapters/style.js';
|
|
8
10
|
import { trierarchPaths } from '../adapters/paths.js';
|
|
9
11
|
import { createRestFleet } from '../adapters/rest-fleet.js';
|
|
10
12
|
import { runCommand } from '../adapters/run-command.js';
|
|
@@ -23,14 +25,15 @@ import { uninstallTrierarch } from './uninstall.js';
|
|
|
23
25
|
import { PACKAGE, upgradeTrierarch } from './upgrade.js';
|
|
24
26
|
export const USAGE = [
|
|
25
27
|
'Usage: aeolus-trierarch <command> [--config <path>] [--json]',
|
|
28
|
+
' aeolus-trierarch --version the installed version (also -v)',
|
|
26
29
|
'',
|
|
27
30
|
'Set up:',
|
|
28
31
|
" init [--fleet-url <url>] [--ship-id <shp_...>] [--secret <secret>] [--yes] the whole setup: registers the trierarch's own ship, writes the configuration, answers Claude Code's and Codex's one-time questions and offers to install the service. Asks for what is missing; prefer typing the secret when asked, so it stays out of your shell history",
|
|
29
32
|
' config check check the configuration and give the effective flags per harness',
|
|
30
33
|
'',
|
|
31
34
|
'Look:',
|
|
32
|
-
' status the service, the fleet and its own lease, caps in use, entries by state, kept worktrees and orphans',
|
|
33
|
-
' list the
|
|
35
|
+
' status the version, the service, the fleet and its own lease, caps in use, entries by state, kept worktrees and orphans',
|
|
36
|
+
' list the ships it crews: ship, state, harness, workspace, since, restarts',
|
|
34
37
|
' logs [--lines <n>] [--follow] the last lines of the log, and with --follow each new one',
|
|
35
38
|
'',
|
|
36
39
|
'Run:',
|
|
@@ -40,12 +43,12 @@ export const USAGE = [
|
|
|
40
43
|
' upgrade [version] install the given version, or the latest, and restart the service; sessions keep running',
|
|
41
44
|
' install [--no-load] install the service: launchd on macOS, systemd on Linux',
|
|
42
45
|
' uninstall remove the service and stop every session; deletes no worktree and none of its files',
|
|
43
|
-
' run keep the
|
|
46
|
+
' run keep the ships assigned to it crewed until stopped (what the service runs)',
|
|
44
47
|
'',
|
|
45
48
|
'--json answers JSON, for a ship to read.',
|
|
46
49
|
].join('\n');
|
|
47
50
|
const VALUE_FLAGS = new Set(['--config', '--fleet-url', '--ship-id', '--secret', '--lines']);
|
|
48
|
-
const SWITCHES = new Set(['--json', '--yes', '--follow', '--no-load']);
|
|
51
|
+
const SWITCHES = new Set(['--json', '--yes', '--follow', '--no-load', '--version']);
|
|
49
52
|
const DEFAULT_LINES = 50;
|
|
50
53
|
const FOLLOW_INTERVAL_MS = 500;
|
|
51
54
|
/** The command words, flag values and switches of a command line; undefined for a flag it does not know. */
|
|
@@ -79,6 +82,10 @@ function parse(argv) {
|
|
|
79
82
|
function describeService(verb, status) {
|
|
80
83
|
return status.isRunning ? `The trierarch ${verb}: it runs${status.pid === undefined ? '' : ` as pid ${String(status.pid)}`}.` : `The trierarch ${verb}: it does not run.`;
|
|
81
84
|
}
|
|
85
|
+
/** What init did, at the end of its steps: a heading, then each thing it did on its own line. */
|
|
86
|
+
function summaryOf(said, style) {
|
|
87
|
+
return [`\n${style.tone('strong', 'Summary')}`, ...said.map((line) => ` ${line}`)].join('\n');
|
|
88
|
+
}
|
|
82
89
|
/** Runs one command line of `aeolus-trierarch`. */
|
|
83
90
|
export async function main(argv, env = process.env) {
|
|
84
91
|
const parsed = parse(argv);
|
|
@@ -87,6 +94,12 @@ export async function main(argv, env = process.env) {
|
|
|
87
94
|
}
|
|
88
95
|
const { words, values, switches } = parsed;
|
|
89
96
|
const isJson = switches.has('--json');
|
|
97
|
+
// Colour only where a person reads it: --json and a pipe get the plain words.
|
|
98
|
+
const style = createStyle({ isColour: !isJson && isColourTerminal(env, process.stdout.isTTY) });
|
|
99
|
+
if ((switches.has('--version') && words.length === 0) || (words.length === 1 && words[0] === '-v')) {
|
|
100
|
+
const version = runningVersion();
|
|
101
|
+
return { output: isJson ? JSON.stringify({ version }) : version, code: 0 };
|
|
102
|
+
}
|
|
90
103
|
const config = values.get('--config') ?? env.AEOLUS_TRIERARCH_CONFIG;
|
|
91
104
|
const homeDirectory = env.HOME ?? homedir();
|
|
92
105
|
const paths = trierarchPaths({ homeDirectory, ...(config !== undefined && { config }) });
|
|
@@ -116,18 +129,21 @@ export async function main(argv, env = process.env) {
|
|
|
116
129
|
const fleet = createRestFleet(crew);
|
|
117
130
|
const report = await inspectStatus({
|
|
118
131
|
configuration,
|
|
132
|
+
version: runningVersion(),
|
|
133
|
+
running: () => readRunningFile(paths.running),
|
|
119
134
|
crew,
|
|
120
135
|
service: serviceAt(),
|
|
121
136
|
lease: leaseFrom(() => fleet.whoami()),
|
|
122
137
|
processes: createTmux(),
|
|
123
138
|
state: createJsonState(paths.state),
|
|
124
139
|
});
|
|
125
|
-
return { data: report, text: describeStatus(report) };
|
|
140
|
+
return { data: report, text: describeStatus(report, style) };
|
|
126
141
|
};
|
|
127
142
|
const commands = {
|
|
128
143
|
init: async () => {
|
|
129
144
|
// Questions go to stderr under --json, so stdout holds the JSON alone.
|
|
130
|
-
const
|
|
145
|
+
const output = isJson ? process.stderr : process.stdout;
|
|
146
|
+
const prompter = createTerminalPrompter({ input: process.stdin, output, style: createStyle({ isColour: isColourTerminal(env, output.isTTY) }) });
|
|
131
147
|
try {
|
|
132
148
|
const fleetUrl = values.get('--fleet-url');
|
|
133
149
|
const shipId = values.get('--ship-id');
|
|
@@ -143,7 +159,7 @@ export async function main(argv, env = process.env) {
|
|
|
143
159
|
isCodexInstalled: (await runCommand('sh', { args: ['-c', 'command -v codex'] })).status === 0,
|
|
144
160
|
service: serviceAt(),
|
|
145
161
|
});
|
|
146
|
-
return { data: report, text: report.said
|
|
162
|
+
return { data: report, text: summaryOf(report.said, style) };
|
|
147
163
|
}
|
|
148
164
|
finally {
|
|
149
165
|
prompter.close();
|
|
@@ -173,7 +189,7 @@ export async function main(argv, env = process.env) {
|
|
|
173
189
|
},
|
|
174
190
|
list: async () => {
|
|
175
191
|
const entries = await inspectList(createJsonState(paths.state));
|
|
176
|
-
return { data: entries, text: describeList(entries) };
|
|
192
|
+
return { data: entries, text: describeList(entries, style) };
|
|
177
193
|
},
|
|
178
194
|
logs: async () => {
|
|
179
195
|
const file = join(paths.logs, 'trierarch.log');
|
|
@@ -183,10 +199,10 @@ export async function main(argv, env = process.env) {
|
|
|
183
199
|
}
|
|
184
200
|
const tail = await tailLog({ file, lines });
|
|
185
201
|
if (!switches.has('--follow')) {
|
|
186
|
-
return { data: { file, lines: tail }, text: tail.length === 0 ? `No log lines yet in ${file}.` : tail.join('\n') };
|
|
202
|
+
return { data: { file, lines: tail.map(readLogLine) }, text: tail.length === 0 ? `No log lines yet in ${file}.` : tail.map((line) => renderLogLine(line, style)).join('\n') };
|
|
187
203
|
}
|
|
188
204
|
const write = (line) => {
|
|
189
|
-
process.stdout.write(`${isJson ? JSON.stringify(
|
|
205
|
+
process.stdout.write(`${isJson ? JSON.stringify(readLogLine(line)) : renderLogLine(line, style)}\n`);
|
|
190
206
|
};
|
|
191
207
|
tail.forEach(write);
|
|
192
208
|
await followLog({ file, signal: untilStopped(), intervalMs: FOLLOW_INTERVAL_MS, write });
|
|
@@ -221,10 +237,11 @@ export async function main(argv, env = process.env) {
|
|
|
221
237
|
return { data: report, text: report.said.join('\n') };
|
|
222
238
|
},
|
|
223
239
|
run: async () => {
|
|
224
|
-
const logger = {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
240
|
+
const logger = createLogger({
|
|
241
|
+
out: { write: (text) => process.stdout.write(text), isTerminal: process.stdout.isTTY },
|
|
242
|
+
err: { write: (text) => process.stderr.write(text), isTerminal: process.stderr.isTTY },
|
|
243
|
+
now: () => new Date(),
|
|
244
|
+
});
|
|
228
245
|
await runTrierarch({ paths, homeDirectory, env, signal: untilStopped(), logger });
|
|
229
246
|
return { data: { stopped: true }, text: 'aeolus-trierarch stopped.' };
|
|
230
247
|
},
|
|
@@ -241,7 +258,7 @@ export async function main(argv, env = process.env) {
|
|
|
241
258
|
catch (error) {
|
|
242
259
|
// A refusal, a file it cannot use, or a program that failed (launchctl, systemctl): said, not thrown at the operator.
|
|
243
260
|
const message = error instanceof Error ? error.message : String(error);
|
|
244
|
-
return { output: isJson ? JSON.stringify({ error: message }) : message, code: 1 };
|
|
261
|
+
return { output: isJson ? JSON.stringify({ error: message }) : style.tone('bad', message), code: 1 };
|
|
245
262
|
}
|
|
246
263
|
}
|
|
247
264
|
//# sourceMappingURL=main.js.map
|