@aeolus-fleet/trierarch 0.33.1 → 0.35.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/README.md +7 -4
- package/dist/adapters/claude-code-setup.d.ts +11 -0
- package/dist/adapters/claude-code-setup.js +60 -0
- package/dist/adapters/claude-code-setup.js.map +1 -1
- package/dist/adapters/claude-code-usage.d.ts +2 -0
- package/dist/adapters/claude-code-usage.js +16 -12
- package/dist/adapters/claude-code-usage.js.map +1 -1
- package/dist/adapters/claude-code.d.ts +21 -18
- package/dist/adapters/claude-code.js +46 -36
- package/dist/adapters/claude-code.js.map +1 -1
- package/dist/adapters/clone-workspace.js +4 -0
- package/dist/adapters/clone-workspace.js.map +1 -1
- package/dist/adapters/codex-setup.d.ts +2 -0
- package/dist/adapters/codex-setup.js +6 -0
- package/dist/adapters/codex-setup.js.map +1 -1
- package/dist/adapters/codex-usage.d.ts +2 -0
- package/dist/adapters/codex-usage.js +16 -11
- package/dist/adapters/codex-usage.js.map +1 -1
- package/dist/adapters/codex.d.ts +2 -0
- package/dist/adapters/codex.js +31 -3
- package/dist/adapters/codex.js.map +1 -1
- package/dist/adapters/container.d.ts +36 -15
- package/dist/adapters/container.js +72 -93
- package/dist/adapters/container.js.map +1 -1
- package/dist/adapters/copilot-detector.d.ts +13 -0
- package/dist/adapters/copilot-detector.js +62 -0
- package/dist/adapters/copilot-detector.js.map +1 -0
- package/dist/adapters/copilot.d.ts +79 -0
- package/dist/adapters/copilot.js +187 -0
- package/dist/adapters/copilot.js.map +1 -0
- package/dist/adapters/core-version.d.ts +1 -1
- package/dist/adapters/core-version.js +1 -1
- package/dist/adapters/detectors.js +6 -0
- package/dist/adapters/detectors.js.map +1 -1
- package/dist/adapters/files.d.ts +16 -0
- package/dist/adapters/files.js +5 -0
- package/dist/adapters/files.js.map +1 -1
- package/dist/adapters/harnesses.d.ts +3 -2
- package/dist/adapters/harnesses.js +21 -9
- package/dist/adapters/harnesses.js.map +1 -1
- package/dist/adapters/hold-runtime.d.ts +19 -5
- package/dist/adapters/hold-runtime.js +23 -10
- package/dist/adapters/hold-runtime.js.map +1 -1
- package/dist/adapters/hold.d.ts +12 -0
- package/dist/adapters/hold.js +66 -31
- package/dist/adapters/hold.js.map +1 -1
- package/dist/adapters/json-state.js +5 -0
- package/dist/adapters/json-state.js.map +1 -1
- package/dist/adapters/key-files.d.ts +16 -0
- package/dist/adapters/key-files.js +28 -0
- package/dist/adapters/key-files.js.map +1 -0
- package/dist/adapters/key-states.d.ts +21 -0
- package/dist/adapters/key-states.js +43 -0
- package/dist/adapters/key-states.js.map +1 -0
- package/dist/adapters/model-logins.d.ts +21 -0
- package/dist/adapters/model-logins.js +48 -0
- package/dist/adapters/model-logins.js.map +1 -0
- package/dist/adapters/model-proxy.d.ts +32 -0
- package/dist/adapters/model-proxy.js +171 -0
- package/dist/adapters/model-proxy.js.map +1 -0
- package/dist/adapters/paths.d.ts +4 -0
- package/dist/adapters/paths.js +2 -0
- package/dist/adapters/paths.js.map +1 -1
- package/dist/adapters/plugin.d.ts +11 -8
- package/dist/adapters/plugin.js +47 -13
- package/dist/adapters/plugin.js.map +1 -1
- package/dist/adapters/proxy-runtime.d.ts +31 -0
- package/dist/adapters/proxy-runtime.js +100 -0
- package/dist/adapters/proxy-runtime.js.map +1 -0
- package/dist/adapters/proxy-tokens.d.ts +25 -0
- package/dist/adapters/proxy-tokens.js +67 -0
- package/dist/adapters/proxy-tokens.js.map +1 -0
- package/dist/adapters/rest-fleet.js +3 -5
- package/dist/adapters/rest-fleet.js.map +1 -1
- package/dist/adapters/runtime-adapters.d.ts +11 -6
- package/dist/adapters/runtime-adapters.js +25 -11
- package/dist/adapters/runtime-adapters.js.map +1 -1
- package/dist/adapters/service.d.ts +3 -1
- package/dist/adapters/service.js +6 -2
- package/dist/adapters/service.js.map +1 -1
- package/dist/adapters/ship-sockets.d.ts +1 -1
- package/dist/adapters/ship-sockets.js +2 -2
- package/dist/adapters/ship-sockets.js.map +1 -1
- package/dist/adapters/tokens-per-login.d.ts +8 -0
- package/dist/adapters/tokens-per-login.js +15 -0
- package/dist/adapters/tokens-per-login.js.map +1 -0
- package/dist/adapters/trust.d.ts +2 -1
- package/dist/adapters/trust.js +4 -1
- package/dist/adapters/trust.js.map +1 -1
- package/dist/adapters/usage.d.ts +2 -0
- package/dist/adapters/usage.js +1 -1
- package/dist/adapters/usage.js.map +1 -1
- package/dist/adapters/vendor-answers.d.ts +6 -0
- package/dist/adapters/vendor-answers.js +38 -0
- package/dist/adapters/vendor-answers.js.map +1 -0
- package/dist/adapters/vendor-key-check.d.ts +23 -0
- package/dist/adapters/vendor-key-check.js +36 -0
- package/dist/adapters/vendor-key-check.js.map +1 -0
- package/dist/bin/aeolus-trierarch.js +7 -2
- package/dist/bin/aeolus-trierarch.js.map +1 -1
- package/dist/cli/add.d.ts +2 -2
- package/dist/cli/add.js +1 -1
- package/dist/cli/add.js.map +1 -1
- package/dist/cli/config-check.js +1 -1
- package/dist/cli/config-check.js.map +1 -1
- package/dist/cli/hold.js +13 -4
- package/dist/cli/hold.js.map +1 -1
- package/dist/cli/init.js +19 -2
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/login.d.ts +72 -0
- package/dist/cli/login.js +114 -0
- package/dist/cli/login.js.map +1 -0
- package/dist/cli/main.js +89 -8
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/proxy.d.ts +2 -0
- package/dist/cli/proxy.js +58 -0
- package/dist/cli/proxy.js.map +1 -0
- package/dist/cli/run.js +31 -5
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/upgrade.d.ts +5 -3
- package/dist/cli/upgrade.js +9 -3
- package/dist/cli/upgrade.js.map +1 -1
- package/dist/core/argo-reports.d.ts +10 -0
- package/dist/core/argo-reports.js +17 -0
- package/dist/core/argo-reports.js.map +1 -1
- package/dist/core/check-session-runtime.js +3 -1
- package/dist/core/check-session-runtime.js.map +1 -1
- package/dist/core/check-settings.d.ts +2 -0
- package/dist/core/check-settings.js +6 -1
- package/dist/core/check-settings.js.map +1 -1
- package/dist/core/entry.d.ts +14 -0
- package/dist/core/entry.js.map +1 -1
- package/dist/core/login.d.ts +49 -0
- package/dist/core/login.js +24 -0
- package/dist/core/login.js.map +1 -0
- package/dist/core/ports.d.ts +39 -4
- package/dist/core/read-usage.d.ts +2 -1
- package/dist/core/read-usage.js +6 -3
- package/dist/core/read-usage.js.map +1 -1
- package/dist/core/reconciler.d.ts +5 -0
- package/dist/core/reconciler.js +12 -7
- package/dist/core/reconciler.js.map +1 -1
- package/dist/core/report-self.d.ts +6 -2
- package/dist/core/report-self.js +34 -8
- package/dist/core/report-self.js.map +1 -1
- package/dist/core/run-pass.d.ts +6 -1
- package/dist/core/run-pass.js +84 -14
- package/dist/core/run-pass.js.map +1 -1
- package/package.json +3 -4
- package/dist/adapters/claude-code-screen.d.ts +0 -1
- package/dist/adapters/claude-code-screen.js +0 -22
- package/dist/adapters/claude-code-screen.js.map +0 -1
- package/dist/adapters/held-command.d.ts +0 -13
- package/dist/adapters/held-command.js +0 -16
- package/dist/adapters/held-command.js.map +0 -1
- package/dist/adapters/launch-screen.d.ts +0 -14
- package/dist/adapters/launch-screen.js +0 -5
- package/dist/adapters/launch-screen.js.map +0 -1
- package/dist/adapters/stop-turn.d.ts +0 -13
- package/dist/adapters/stop-turn.js +0 -26
- package/dist/adapters/stop-turn.js.map +0 -1
- package/dist/adapters/tmux.d.ts +0 -13
- package/dist/adapters/tmux.js +0 -33
- package/dist/adapters/tmux.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"argo-reports.js","sourceRoot":"","sources":["../../src/core/argo-reports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAqB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"argo-reports.js","sourceRoot":"","sources":["../../src/core/argo-reports.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { isRemoteControl, REMOTE_CONTROL } from './remote-control.js';
|
|
2
2
|
/** Container mode offers these harnesses only, until another is proven in a container (decision 0039). */
|
|
3
3
|
const CONTAINER_HARNESSES = ['claude-code'];
|
|
4
|
+
/** Harnesses the configuration may hold in container mode, which the trierarch then names as not offered rather than refusing it (CC10). */
|
|
5
|
+
const NOT_OFFERED_IN_CONTAINERS = ['copilot'];
|
|
4
6
|
/** The group whose members drive a rootful docker daemon: root on the machine. */
|
|
5
7
|
const DOCKER_GROUP = 'docker';
|
|
6
8
|
/**
|
|
@@ -34,7 +36,7 @@ export function createCheckSessionRuntime(deps) {
|
|
|
34
36
|
refusals.push('the user that runs the trierarch is in the docker group, which is root on the machine: take the user out of it');
|
|
35
37
|
}
|
|
36
38
|
for (const harness of Object.keys(configuration.harnesses)) {
|
|
37
|
-
if (!CONTAINER_HARNESSES.includes(harness)) {
|
|
39
|
+
if (!CONTAINER_HARNESSES.includes(harness) && !NOT_OFFERED_IN_CONTAINERS.includes(harness)) {
|
|
38
40
|
refusals.push(`${harness} does not run in a container yet: the container runtime offers ${CONTAINER_HARNESSES.join(', ')} only, so remove ${harness}`);
|
|
39
41
|
}
|
|
40
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-session-runtime.js","sourceRoot":"","sources":["../../src/core/check-session-runtime.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKtE,0GAA0G;AAC1G,MAAM,mBAAmB,GAAsB,CAAC,aAAa,CAAC,CAAC;AAC/D,kFAAkF;AAClF,MAAM,YAAY,GAAG,QAAQ,CAAC;AAE9B;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAyD;IACjG,OAAO,KAAK,EAAE,aAAa,EAAE,EAAE;QAC7B,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC;QAClC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE;YAC5F,MAAM,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAClI,OAAO,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,kBAAkB,cAAc,oFAAoF,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChL,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,8FAA8F,CAAC,CAAC;QACjI,CAAC;aAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,2FAA2F,CAAC,CAAC;QAC9H,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1D,QAAQ,CAAC,IAAI,CAAC,gHAAgH,CAAC,CAAC;QAClI,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"check-session-runtime.js","sourceRoot":"","sources":["../../src/core/check-session-runtime.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKtE,0GAA0G;AAC1G,MAAM,mBAAmB,GAAsB,CAAC,aAAa,CAAC,CAAC;AAC/D,4IAA4I;AAC5I,MAAM,yBAAyB,GAAsB,CAAC,SAAS,CAAC,CAAC;AACjE,kFAAkF;AAClF,MAAM,YAAY,GAAG,QAAQ,CAAC;AAE9B;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAyD;IACjG,OAAO,KAAK,EAAE,aAAa,EAAE,EAAE;QAC7B,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC;QAClC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE;YAC5F,MAAM,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAClI,OAAO,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,kBAAkB,cAAc,oFAAoF,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChL,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,8FAA8F,CAAC,CAAC;QACjI,CAAC;aAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,2FAA2F,CAAC,CAAC;QAC9H,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1D,QAAQ,CAAC,IAAI,CAAC,gHAAgH,CAAC,CAAC;QAClI,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3F,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,kEAAkE,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YACzJ,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;QAChC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC;YAC7C,QAAQ,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,cAAc,oGAAoG,CAAC,CAAC;QACjK,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -44,6 +44,7 @@ export declare function launchMarkerRefusal(at: {
|
|
|
44
44
|
harness: string;
|
|
45
45
|
marksLaunches: Readonly<Record<string, boolean>>;
|
|
46
46
|
missingPlugins: ReadonlySet<string>;
|
|
47
|
+
notOffered: Readonly<Record<string, string>>;
|
|
47
48
|
}): Refusal | undefined;
|
|
48
49
|
/**
|
|
49
50
|
* Checks a crew request's settings again before crewing (decision 0027):
|
|
@@ -60,4 +61,5 @@ export declare function checkSettings(raw: unknown, context: {
|
|
|
60
61
|
trusted: TrustedPlaces;
|
|
61
62
|
marksLaunches: Readonly<Record<string, boolean>>;
|
|
62
63
|
missingPlugins: ReadonlySet<string>;
|
|
64
|
+
notOffered: Readonly<Record<string, string>>;
|
|
63
65
|
}): Result<CheckedSettings, Refusal>;
|
|
@@ -31,6 +31,11 @@ export function unacceptedRefusal(at) {
|
|
|
31
31
|
* session. Upgrade updates the plugin, so the reason says to run it.
|
|
32
32
|
*/
|
|
33
33
|
export function launchMarkerRefusal(at) {
|
|
34
|
+
const notOffered = at.notOffered[at.harness];
|
|
35
|
+
if (notOffered !== undefined) {
|
|
36
|
+
// Its adapter says the machine does not offer it (CC3, CC10), as for a build its plugin is not proven on.
|
|
37
|
+
return { field: 'harness', reason: `${at.harness} is not offered: ${notOffered}` };
|
|
38
|
+
}
|
|
34
39
|
if (at.missingPlugins.has(at.harness)) {
|
|
35
40
|
// Its plugin could not be found at all (#1212), so it is not known what it marks: only that it must be installed.
|
|
36
41
|
return { field: 'harness', reason: `${at.harness}'s aeolus-fleet plugin is not installed: run aeolus-trierarch upgrade` };
|
|
@@ -91,7 +96,7 @@ export function checkSettings(raw, context) {
|
|
|
91
96
|
}
|
|
92
97
|
options[name] = value;
|
|
93
98
|
}
|
|
94
|
-
const unaccepted = unacceptedRefusal({ harness: harnessName, configuration, options, trusted }) ?? launchMarkerRefusal({ harness: harnessName, marksLaunches: context.marksLaunches, missingPlugins: context.missingPlugins });
|
|
99
|
+
const unaccepted = unacceptedRefusal({ harness: harnessName, configuration, options, trusted }) ?? launchMarkerRefusal({ harness: harnessName, marksLaunches: context.marksLaunches, missingPlugins: context.missingPlugins, notOffered: context.notOffered });
|
|
95
100
|
if (unaccepted !== undefined) {
|
|
96
101
|
return err(unaccepted);
|
|
97
102
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-settings.js","sourceRoot":"","sources":["../../src/core/check-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA+D,MAAM,sBAAsB,CAAC;AAEvH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,oBAAoB,CAAC;AAgB1D;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,EAAqF;IAChH,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC3C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAC/B,SAAS,CAAC,IAAI,KAAK,UAAU;QAC3B,CAAC,CAAE,CAAC,sBAAsB,EAAE,YAAY,EAAE,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,IAAI,EAAE,CAAW;QAC/G,CAAC,CAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI,EAAE,CAAW,CAAC;IAC/F,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,uBAAuB,IAAI,IAAI,IAAI,sDAAsD,EAAE,CAAC;AACpK,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAiI;IACjK,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IACxD,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,eAAe,IAAI,EAAE,CAAC;IAC3D,MAAM,IAAI,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9H,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,yBAAyB,IAAI,wCAAwC,EAAE,CAAC;AACxJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"check-settings.js","sourceRoot":"","sources":["../../src/core/check-settings.ts"],"names":[],"mappings":"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"}
|
package/dist/core/entry.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ShipId, TrierarchWorkspace } from '@aeolus-fleet/common';
|
|
2
2
|
import type { FailedStarts } from './failed-starts.js';
|
|
3
|
+
import type { EarlierLogin, KeyState, Login } from './login.js';
|
|
3
4
|
import type { LowResource } from './machine-load.js';
|
|
4
5
|
/**
|
|
5
6
|
* The trierarch's saved state (docs/trierarch.md): an entry per ship it
|
|
@@ -21,8 +22,17 @@ export interface TrierarchState {
|
|
|
21
22
|
readonly passFailure?: PassFailure;
|
|
22
23
|
/** The harnesses whose aeolus-fleet plugin the last pass could not find (#1212): not offered in its report until it is back; none while every plugin is found. */
|
|
23
24
|
readonly missingPlugins?: readonly string[];
|
|
25
|
+
/** The harnesses the last pass found their adapters do not offer, with why (CC3, CC10): not offered in its report until they are; none while every one is. */
|
|
26
|
+
readonly notOffered?: readonly NotOfferedHarness[];
|
|
24
27
|
/** The machine's failed session starts since one last succeeded (#853), and whether they stopped it offering itself; none while starts succeed. */
|
|
25
28
|
readonly failedStarts?: FailedStarts;
|
|
29
|
+
/** By harness, the state of its API key argo was told holds ships back (api keys K9), so it is told once per state; none while ready. */
|
|
30
|
+
readonly keysTold?: Readonly<Record<string, KeyState>>;
|
|
31
|
+
}
|
|
32
|
+
/** A harness the machine does not offer, and why. */
|
|
33
|
+
export interface NotOfferedHarness {
|
|
34
|
+
readonly harness: string;
|
|
35
|
+
readonly reason: string;
|
|
26
36
|
}
|
|
27
37
|
/** A failing pass: the reason of the latest failure, and when the passes began to fail. */
|
|
28
38
|
export interface PassFailure {
|
|
@@ -62,6 +72,10 @@ export interface Entry {
|
|
|
62
72
|
readonly launchedAt?: string;
|
|
63
73
|
/** The launch id that session was started with (#490), set with launchedAt. */
|
|
64
74
|
readonly launchId?: string;
|
|
75
|
+
/** The login of its running or last session (api keys K6), set at each start: a change of configuration reaches only the next one (K3). */
|
|
76
|
+
readonly login?: Login;
|
|
77
|
+
/** The logins of its earlier sessions, each until the start that changed it (api keys K8), so what each session used counts to its own login. */
|
|
78
|
+
readonly earlierLogins?: readonly EarlierLogin[];
|
|
65
79
|
/** Set as it goes back to crewing after a release elsewhere (row 11): its worktree goes before it is crewed again (#475). */
|
|
66
80
|
readonly isReleasedElsewhere?: true;
|
|
67
81
|
/** How many crews of its settings version failed in a row (#827); none once one starts. */
|
package/dist/core/entry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/core/entry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/core/entry.ts"],"names":[],"mappings":"AA8CA,kGAAkG;AAClG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,CAAU,CAAC;AA4DlG,MAAM,CAAC,MAAM,WAAW,GAAmB,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAE/F,0CAA0C;AAC1C,MAAM,UAAU,SAAS,CAAC,KAAY,EAAE,MAAwC;IAC9E,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;AAC5E,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,QAAQ,CAAC,KAAqB,EAAE,KAAY;IAC1D,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;AAC5E,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,WAAW,CAAC,KAAqB,EAAE,MAAc;IAC/D,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC;IAClG,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which login a ship's session runs on (api keys K1, K5): an API key or its
|
|
3
|
+
* harness's subscription, never both and never one falling back to the other
|
|
4
|
+
* (K2). The configuration gives each harness a default and names the ships
|
|
5
|
+
* that run on the other one; a harness with no default runs on its
|
|
6
|
+
* subscription.
|
|
7
|
+
*/
|
|
8
|
+
export declare const LOGINS: readonly ["apiKey", "subscription"];
|
|
9
|
+
export type Login = (typeof LOGINS)[number];
|
|
10
|
+
export interface Logins {
|
|
11
|
+
/** A default login per harness, by harness name. */
|
|
12
|
+
readonly default?: Readonly<Record<string, Login | undefined>>;
|
|
13
|
+
/** A ship's own login, by ship name. */
|
|
14
|
+
readonly ships?: Readonly<Record<string, Login>>;
|
|
15
|
+
}
|
|
16
|
+
export declare function loginOf(at: {
|
|
17
|
+
logins?: Logins;
|
|
18
|
+
harness: string;
|
|
19
|
+
shipName: string;
|
|
20
|
+
}): Login;
|
|
21
|
+
/** The login of a ship's earlier session, until the start that changed it (ISO 8601). */
|
|
22
|
+
export interface EarlierLogin {
|
|
23
|
+
readonly login: Login;
|
|
24
|
+
readonly until: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The logins a ship's sessions ran on (api keys K8): its running or last
|
|
28
|
+
* session's, and its earlier sessions' oldest first, each kept only when a
|
|
29
|
+
* start changed it, so the list grows with changes of login, not restarts.
|
|
30
|
+
*/
|
|
31
|
+
export interface SessionLogins {
|
|
32
|
+
readonly login: Login;
|
|
33
|
+
readonly earlierLogins?: readonly EarlierLogin[];
|
|
34
|
+
}
|
|
35
|
+
/** The login of the session that ran at the time (K8): what a transcript message written then counts to. */
|
|
36
|
+
export declare function loginAt(logins: SessionLogins, time: Date): Login;
|
|
37
|
+
/** The logins once a session started on the login at the time: the one before kept while it differs. */
|
|
38
|
+
export declare function startedOn(logins: Partial<SessionLogins>, start: {
|
|
39
|
+
login: Login;
|
|
40
|
+
at: string;
|
|
41
|
+
}): SessionLogins;
|
|
42
|
+
/** Where a harness's API key stands (api keys K8): none, ready, or held back by its vendor's answer. */
|
|
43
|
+
export declare const KEY_STATES: readonly ["none", "ready", "refused", "outOfCredit"];
|
|
44
|
+
export type KeyState = (typeof KEY_STATES)[number];
|
|
45
|
+
/** A key's state, and since when for one its vendor's answer set (ISO 8601). */
|
|
46
|
+
export interface KeyStateAt {
|
|
47
|
+
readonly state: KeyState;
|
|
48
|
+
readonly at?: string;
|
|
49
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which login a ship's session runs on (api keys K1, K5): an API key or its
|
|
3
|
+
* harness's subscription, never both and never one falling back to the other
|
|
4
|
+
* (K2). The configuration gives each harness a default and names the ships
|
|
5
|
+
* that run on the other one; a harness with no default runs on its
|
|
6
|
+
* subscription.
|
|
7
|
+
*/
|
|
8
|
+
export const LOGINS = ['apiKey', 'subscription'];
|
|
9
|
+
export function loginOf(at) {
|
|
10
|
+
return at.logins?.ships?.[at.shipName] ?? at.logins?.default?.[at.harness] ?? 'subscription';
|
|
11
|
+
}
|
|
12
|
+
/** The login of the session that ran at the time (K8): what a transcript message written then counts to. */
|
|
13
|
+
export function loginAt(logins, time) {
|
|
14
|
+
return logins.earlierLogins?.find(({ until }) => time.getTime() < Date.parse(until))?.login ?? logins.login;
|
|
15
|
+
}
|
|
16
|
+
/** The logins once a session started on the login at the time: the one before kept while it differs. */
|
|
17
|
+
export function startedOn(logins, start) {
|
|
18
|
+
const { login, earlierLogins } = logins;
|
|
19
|
+
const kept = login === undefined || login === start.login ? earlierLogins : [...(earlierLogins ?? []), { login, until: start.at }];
|
|
20
|
+
return { login: start.login, ...(kept !== undefined && { earlierLogins: kept }) };
|
|
21
|
+
}
|
|
22
|
+
/** Where a harness's API key stands (api keys K8): none, ready, or held back by its vendor's answer. */
|
|
23
|
+
export const KEY_STATES = ['none', 'ready', 'refused', 'outOfCredit'];
|
|
24
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/core/login.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAU,CAAC;AAW1D,MAAM,UAAU,OAAO,CAAC,EAA0D;IAChF,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC;AAC/F,CAAC;AAkBD,4GAA4G;AAC5G,MAAM,UAAU,OAAO,CAAC,MAAqB,EAAE,IAAU;IACvD,OAAO,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;AAC9G,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,SAAS,CAAC,MAA8B,EAAE,KAAmC;IAC3F,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IACxC,MAAM,IAAI,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACnI,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACpF,CAAC;AAED,wGAAwG;AACxG,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,CAAU,CAAC"}
|
package/dist/core/ports.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ClearOutcome, CrewStatus, ShipId, TrierarchConfiguration, TrierarchReportDetails, TrierarchWorkspace } from '@aeolus-fleet/common';
|
|
2
2
|
import type { TrierarchState } from './entry.js';
|
|
3
|
+
import type { KeyStateAt, Login, SessionLogins } from './login.js';
|
|
3
4
|
import type { Machine } from './machine.js';
|
|
4
5
|
import type { MachineLoad } from './machine-load.js';
|
|
5
6
|
import type { TokenCounts } from './token-cost.js';
|
|
@@ -7,7 +8,7 @@ import type { Action } from './reconciler.js';
|
|
|
7
8
|
import type { TrustedRepository } from './trusted-repositories.js';
|
|
8
9
|
/**
|
|
9
10
|
* The trierarch's ports (docs/architecture.md, "The trierarch"). Adapters
|
|
10
|
-
* implement them in D2b: REST for the fleet,
|
|
11
|
+
* implement them in D2b: REST for the fleet, holds for the sessions, git worktree
|
|
11
12
|
* and folders for workspaces, Claude Code for the harness, a JSON file for
|
|
12
13
|
* state. Each throws only for a system failure.
|
|
13
14
|
*/
|
|
@@ -124,10 +125,11 @@ export interface FleetPort {
|
|
|
124
125
|
getStartingPrompt(shipId: ShipId): Promise<{
|
|
125
126
|
secret: string;
|
|
126
127
|
}>;
|
|
127
|
-
/** Registers the ship with its secret, as the session's crew: its crew token. */
|
|
128
|
+
/** Registers the ship with its secret, as the session's crew in its harness: its crew token. */
|
|
128
129
|
register(crew: {
|
|
129
130
|
shipId: ShipId;
|
|
130
131
|
secret: string;
|
|
132
|
+
harness: string;
|
|
131
133
|
}): Promise<{
|
|
132
134
|
crewToken: string;
|
|
133
135
|
}>;
|
|
@@ -222,6 +224,8 @@ export interface HarnessPort {
|
|
|
222
224
|
isFirstStart: boolean;
|
|
223
225
|
/** Fresh for each start (#490): the session's hooks mark this launch, and nothing of another counts. */
|
|
224
226
|
launchId: string;
|
|
227
|
+
/** The one login the session runs on (api keys K6): the model proxy with a token of its own, or the subscription alone. */
|
|
228
|
+
login: Login;
|
|
225
229
|
firstPrompt?: string;
|
|
226
230
|
}): Promise<void>;
|
|
227
231
|
turnOf(session: {
|
|
@@ -262,6 +266,8 @@ export interface HarnessPort {
|
|
|
262
266
|
}): Promise<LaunchSeen>;
|
|
263
267
|
/** Whether the harness's aeolus-fleet plugin marks launches (#490); one older than the launch marker does not, and its sessions are not crewed. */
|
|
264
268
|
marksLaunches(): Promise<boolean>;
|
|
269
|
+
/** Why the machine does not offer the harness now, as for a build its plugin's hooks are not proven on or a runtime it is not proven in (CC3, CC10); none while it offers it. */
|
|
270
|
+
notOfferedReason(): Promise<string | undefined>;
|
|
265
271
|
/** Why no session of the harness can start now, as when its aeolus-fleet plugin's scripts are gone (#827); none when one can. */
|
|
266
272
|
startProblem(): Promise<string | undefined>;
|
|
267
273
|
}
|
|
@@ -308,6 +314,7 @@ export interface SessionRuntime {
|
|
|
308
314
|
harness: string;
|
|
309
315
|
env?: Readonly<Record<string, string>>;
|
|
310
316
|
readOnly?: readonly string[];
|
|
317
|
+
proxyToken?: ProxyToken;
|
|
311
318
|
}): Promise<void>;
|
|
312
319
|
/** Sends one line to the session's harness as its next input. */
|
|
313
320
|
send(at: {
|
|
@@ -319,6 +326,32 @@ export interface SessionRuntime {
|
|
|
319
326
|
/** What the session's harness wrote last, one line each, oldest first: its events, or its screen in a terminal; none with no session. */
|
|
320
327
|
events(shipId: ShipId): Promise<readonly string[]>;
|
|
321
328
|
}
|
|
329
|
+
/**
|
|
330
|
+
* Whether a session of a harness can start on a login now (api keys K9): an
|
|
331
|
+
* API key that is not ready holds back every session on it, and it never
|
|
332
|
+
* starts on the subscription instead (K2).
|
|
333
|
+
*/
|
|
334
|
+
export interface ModelLoginsPort {
|
|
335
|
+
/** Why no session of the harness can start on the login now, with the options picked and in the folder when it has one, such as a key not ready or, on the subscription, a key in reach (K6); none when one can. */
|
|
336
|
+
startProblem(at: {
|
|
337
|
+
harness: string;
|
|
338
|
+
login: Login;
|
|
339
|
+
options: Readonly<Record<string, string>>;
|
|
340
|
+
folder?: string;
|
|
341
|
+
}): Promise<string | undefined>;
|
|
342
|
+
/** Where the harness's API key stands (K8): a running session on a key that is not ready is handed nothing (K9). */
|
|
343
|
+
keyState(harness: string): Promise<KeyStateAt>;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* A session's own token for the model proxy (headless H16, api keys K7): kept
|
|
347
|
+
* in a file of the session's own and handed to its harness in the variable
|
|
348
|
+
* named, never on a command line or in the environment it is started with.
|
|
349
|
+
*/
|
|
350
|
+
export interface ProxyToken {
|
|
351
|
+
readonly harness: string;
|
|
352
|
+
readonly variable: string;
|
|
353
|
+
readonly token: string;
|
|
354
|
+
}
|
|
322
355
|
/** The processes running in a folder, whatever started them: a dev server a session left behind. */
|
|
323
356
|
export interface FolderProcessesPort {
|
|
324
357
|
/** Stops every process whose working folder is the folder or inside it, and answers how many it stopped. */
|
|
@@ -505,9 +538,10 @@ export interface TrustedRepositoriesPort {
|
|
|
505
538
|
export interface MachinePort {
|
|
506
539
|
load(): Promise<MachineLoad>;
|
|
507
540
|
}
|
|
508
|
-
/** The tokens of one model a ship's sessions used (#353). */
|
|
541
|
+
/** The tokens of one model a ship's sessions used (#353), on one login when the ship's logins were given (api keys K8). */
|
|
509
542
|
export interface ModelTokens {
|
|
510
543
|
readonly model: string;
|
|
544
|
+
readonly login?: Login;
|
|
511
545
|
readonly tokens: TokenCounts;
|
|
512
546
|
}
|
|
513
547
|
/** One window of a harness's subscription (#353): how long it is, how much of it is used, and when it starts again. */
|
|
@@ -518,11 +552,12 @@ export interface SubscriptionWindow {
|
|
|
518
552
|
}
|
|
519
553
|
/** What the harnesses say of their usage (#353), from their own files and CLIs. */
|
|
520
554
|
export interface UsagePort {
|
|
521
|
-
/** The tokens the ship's sessions used since its folder was made, per model, from its harness's transcripts. */
|
|
555
|
+
/** The tokens the ship's sessions used since its folder was made, per model, from its harness's transcripts; given its logins, per model and login, each counted to the login of the session that wrote it (api keys K8). */
|
|
522
556
|
tokensOf(ship: {
|
|
523
557
|
shipId: ShipId;
|
|
524
558
|
harness: string;
|
|
525
559
|
folder: string;
|
|
560
|
+
logins?: SessionLogins;
|
|
526
561
|
}): Promise<readonly ModelTokens[]>;
|
|
527
562
|
/** How much of the harness's subscription is used now, per window; none when the harness cannot say. */
|
|
528
563
|
subscriptionOf(harness: string): Promise<readonly SubscriptionWindow[] | undefined>;
|
|
@@ -12,7 +12,8 @@ export declare const TOKENS_READ_INTERVAL_MS: number;
|
|
|
12
12
|
export declare const SUBSCRIPTION_READ_INTERVAL_MS: number;
|
|
13
13
|
/**
|
|
14
14
|
* Use case: the trierarch reads its harnesses' usage (#353). Every 5 minutes
|
|
15
|
-
* it reads the tokens each ship it crews used per model
|
|
15
|
+
* it reads the tokens each ship it crews used per model and login (api keys
|
|
16
|
+
* K8), since its folder was
|
|
16
17
|
* made, and estimates their cost from the price table. A harness's
|
|
17
18
|
* subscription is read at start, then again only once 30 minutes passed and
|
|
18
19
|
* the harness's ships did work since: Claude Code's read is a turn of its own.
|
package/dist/core/read-usage.js
CHANGED
|
@@ -7,7 +7,8 @@ const messageOf = (error) => (error instanceof Error ? error.message : String(er
|
|
|
7
7
|
const totalOf = (models) => models.reduce((sum, { tokens }) => sum + tokens.input + tokens.output + tokens.cacheRead + tokens.cacheWrite, 0);
|
|
8
8
|
/**
|
|
9
9
|
* Use case: the trierarch reads its harnesses' usage (#353). Every 5 minutes
|
|
10
|
-
* it reads the tokens each ship it crews used per model
|
|
10
|
+
* it reads the tokens each ship it crews used per model and login (api keys
|
|
11
|
+
* K8), since its folder was
|
|
11
12
|
* made, and estimates their cost from the price table. A harness's
|
|
12
13
|
* subscription is read at start, then again only once 30 minutes passed and
|
|
13
14
|
* the harness's ships did work since: Claude Code's read is a turn of its own.
|
|
@@ -27,13 +28,15 @@ export function createReadUsage(deps) {
|
|
|
27
28
|
if (entry.folder === undefined) {
|
|
28
29
|
continue;
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
+
// An entry saved before its login was kept says no login, and its tokens none (K8).
|
|
32
|
+
const logins = entry.login === undefined ? undefined : { login: entry.login, ...(entry.earlierLogins !== undefined && { earlierLogins: entry.earlierLogins }) };
|
|
33
|
+
const models = await deps.usage.tokensOf({ shipId: entry.shipId, harness: entry.harness, folder: entry.folder, ...(logins !== undefined && { logins }) }).catch((error) => {
|
|
31
34
|
deps.logger.warn(`Could not read the usage of ${entry.shipId}: ${messageOf(error)}`);
|
|
32
35
|
return undefined;
|
|
33
36
|
});
|
|
34
37
|
const usage = models === undefined
|
|
35
38
|
? ships.find((ship) => ship.shipId === entry.shipId)
|
|
36
|
-
: { shipId: entry.shipId, models: models.map(({ model, tokens }) => ({ model, tokens, estimatedCostUsd: estimatedCostUsd(tokens, deps.prices[model]) })) };
|
|
39
|
+
: { shipId: entry.shipId, models: models.map(({ model, login, tokens }) => ({ model, ...(login !== undefined && { login }), tokens, estimatedCostUsd: estimatedCostUsd(tokens, deps.prices[model]) })) };
|
|
37
40
|
if (usage !== undefined && usage.models.length > 0) {
|
|
38
41
|
read.push(usage);
|
|
39
42
|
totals.set(entry.harness, (totals.get(entry.harness) ?? 0) + totalOf(usage.models));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-usage.js","sourceRoot":"","sources":["../../src/core/read-usage.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAmB,MAAM,iBAAiB,CAAC;AAQpE,wGAAwG;AACxG,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,MAAM,CAAC;AAElD,uGAAuG;AACvG,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,GAAG,MAAM,CAAC;AAWzD,MAAM,SAAS,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAEvG,MAAM,OAAO,GAAG,CAAC,MAA8B,EAAU,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAE7K
|
|
1
|
+
{"version":3,"file":"read-usage.js","sourceRoot":"","sources":["../../src/core/read-usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,11 +19,14 @@ export interface Observed {
|
|
|
19
19
|
readonly inbox: InboxAnswer;
|
|
20
20
|
readonly turn: Turn;
|
|
21
21
|
readonly isHolding: boolean;
|
|
22
|
+
readonly isKeyNotReady?: boolean;
|
|
22
23
|
}>>;
|
|
23
24
|
/** For each entry crewing whose session started: what its screen shows in its launch window (#382). */
|
|
24
25
|
readonly launches: Readonly<Record<string, LaunchSeen>>;
|
|
25
26
|
/** The entries it would watch or report on whose folder holds no identity, so it cannot see their inbox or report for them (#659, #664). */
|
|
26
27
|
readonly withoutIdentity: readonly ShipId[];
|
|
28
|
+
/** By ship id, why its session cannot start on its login now, as a key not ready (api keys K9): it waits, restarting, with no restart counted. */
|
|
29
|
+
readonly startProblems?: Readonly<Record<string, string>>;
|
|
27
30
|
}
|
|
28
31
|
export type Action =
|
|
29
32
|
/** Crew the ship: starting prompt, register, workspace, identity, launch. Resumed while its own lease may still hold the ship. */
|
|
@@ -153,6 +156,8 @@ export interface ReconcileContext {
|
|
|
153
156
|
readonly marksLaunches: Readonly<Record<string, boolean>>;
|
|
154
157
|
/** The harnesses whose aeolus-fleet plugin could not be found (#1212): none of their requests is crewed or given a session. */
|
|
155
158
|
readonly missingPlugins: ReadonlySet<string>;
|
|
159
|
+
/** Why the machine does not offer a harness, by harness (CC3, CC10): none of its requests is crewed or given a session. */
|
|
160
|
+
readonly notOffered: Readonly<Record<string, string>>;
|
|
156
161
|
}
|
|
157
162
|
/** How long after its start a crewing session has to show activity (#382): its first prompt made a tool call. */
|
|
158
163
|
export declare const LAUNCH_WINDOW_MS = 60000;
|
package/dist/core/reconciler.js
CHANGED
|
@@ -53,7 +53,7 @@ export function reconcile(state, context) {
|
|
|
53
53
|
continue;
|
|
54
54
|
}
|
|
55
55
|
// A harness that lost its aeolus-fleet plugin under a running session cannot crew its ship any more (#1212): the request is given back with why, and the other harnesses go on.
|
|
56
|
-
const refusal = launchMarkerRefusal({ harness: entry.harness, marksLaunches: context.marksLaunches, missingPlugins: context.missingPlugins });
|
|
56
|
+
const refusal = launchMarkerRefusal({ harness: entry.harness, marksLaunches: context.marksLaunches, missingPlugins: context.missingPlugins, notOffered: context.notOffered });
|
|
57
57
|
if (refusal !== undefined) {
|
|
58
58
|
const uncrewed = uncrewable({ request, refusal, state: next, entry });
|
|
59
59
|
actions.push(...uncrewed);
|
|
@@ -91,7 +91,7 @@ export function reconcile(state, context) {
|
|
|
91
91
|
actions.push({ kind: 'confirm', shipId: request.shipId });
|
|
92
92
|
continue;
|
|
93
93
|
}
|
|
94
|
-
const checked = checkSettings(request.settings, { shipId: request.shipId, configuration, state: next, trusted: context.trusted, marksLaunches: context.marksLaunches, missingPlugins: context.missingPlugins });
|
|
94
|
+
const checked = checkSettings(request.settings, { shipId: request.shipId, configuration, state: next, trusted: context.trusted, marksLaunches: context.marksLaunches, missingPlugins: context.missingPlugins, notOffered: context.notOffered });
|
|
95
95
|
if (!checked.isOk) {
|
|
96
96
|
actions.push(...uncrewable({ request, refusal: checked.error, state: next }));
|
|
97
97
|
continue;
|
|
@@ -167,7 +167,7 @@ function entryOf(checked, at) {
|
|
|
167
167
|
*/
|
|
168
168
|
function newVersionStep(entry, at) {
|
|
169
169
|
const { request, state, context } = at;
|
|
170
|
-
const checked = checkSettings(request.settings, { shipId: entry.shipId, configuration: context.configuration, state, trusted: context.trusted, marksLaunches: context.marksLaunches, missingPlugins: context.missingPlugins });
|
|
170
|
+
const checked = checkSettings(request.settings, { shipId: entry.shipId, configuration: context.configuration, state, trusted: context.trusted, marksLaunches: context.marksLaunches, missingPlugins: context.missingPlugins, notOffered: context.notOffered });
|
|
171
171
|
if (!checked.isOk) {
|
|
172
172
|
const uncrewed = uncrewable({ request, refusal: checked.error, state, entry });
|
|
173
173
|
if (uncrewed.some((action) => action.kind === 'giveBack')) {
|
|
@@ -197,9 +197,9 @@ function trustedStep(entry, at) {
|
|
|
197
197
|
const { step, request, state, context } = at;
|
|
198
198
|
const isLaunching = step.actions.some((action) => action.kind === 'crew' || action.kind === 'launch');
|
|
199
199
|
const { harness, workspace, options } = entry;
|
|
200
|
-
const { trusted, configuration, marksLaunches, missingPlugins } = context;
|
|
200
|
+
const { trusted, configuration, marksLaunches, missingPlugins, notOffered } = context;
|
|
201
201
|
const refusal = isLaunching
|
|
202
|
-
? (trustRefusal({ harness, workspace, trusted }) ?? unacceptedRefusal({ harness, configuration, options, trusted }) ?? launchMarkerRefusal({ harness, marksLaunches, missingPlugins }))
|
|
202
|
+
? (trustRefusal({ harness, workspace, trusted }) ?? unacceptedRefusal({ harness, configuration, options, trusted }) ?? launchMarkerRefusal({ harness, marksLaunches, missingPlugins, notOffered }))
|
|
203
203
|
: undefined;
|
|
204
204
|
if (refusal === undefined) {
|
|
205
205
|
return step;
|
|
@@ -226,7 +226,7 @@ function stepOf(entry, context) {
|
|
|
226
226
|
case 'running':
|
|
227
227
|
return runningStep(entry, context);
|
|
228
228
|
case 'restarting':
|
|
229
|
-
return entry.restartAt !== undefined && now >= new Date(entry.restartAt) && canStart
|
|
229
|
+
return entry.restartAt !== undefined && now >= new Date(entry.restartAt) && canStart && observed.startProblems?.[entry.shipId] === undefined
|
|
230
230
|
? { entry: withState(withoutLaunch(entry), { state: 'running', now }), actions: [{ kind: 'launch', shipId: entry.shipId }], starts: 1 }
|
|
231
231
|
: NOTHING;
|
|
232
232
|
case 'crashed':
|
|
@@ -321,6 +321,10 @@ function modelRefusal(entry, at) {
|
|
|
321
321
|
function runningStep(entry, context) {
|
|
322
322
|
const { observed, now, canStart } = context;
|
|
323
323
|
const session = observed.sessions.find((each) => each.shipId === entry.shipId);
|
|
324
|
+
if (session === undefined && observed.startProblems?.[entry.shipId] !== undefined) {
|
|
325
|
+
// Its login cannot start it now (api keys K9): it waits, restarting, until it can, with no restart counted.
|
|
326
|
+
return { entry: withState(withoutLaunch(entry), { state: 'restarting', now }), actions: [], starts: 0 };
|
|
327
|
+
}
|
|
324
328
|
if (session === undefined) {
|
|
325
329
|
// No session at all, as after the machine restarts: start it again, with no restart counted.
|
|
326
330
|
return canStart ? { entry: withoutLaunch(entry), actions: [{ kind: 'launch', shipId: entry.shipId }], starts: 1 } : NOTHING;
|
|
@@ -444,7 +448,8 @@ function identityStep(entry, observed) {
|
|
|
444
448
|
* stopped once per forced message.
|
|
445
449
|
*/
|
|
446
450
|
function wakeStep(entry, seen) {
|
|
447
|
-
|
|
451
|
+
// A session on a key that is not ready is handed nothing, forced or not: its deliveries wait in the inbox (api keys K9).
|
|
452
|
+
if (seen?.inbox.kind !== 'waiting' || seen.turn === 'unknown' || seen.isKeyNotReady === true) {
|
|
448
453
|
return NOTHING;
|
|
449
454
|
}
|
|
450
455
|
if (seen.inbox.forced > 0) {
|