@aeolus-fleet/trierarch 0.28.0 → 0.31.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 +5 -3
- package/dist/adapters/appended-lines.d.ts +14 -0
- package/dist/adapters/appended-lines.js +30 -0
- package/dist/adapters/appended-lines.js.map +1 -0
- package/dist/adapters/claude-code-usage.d.ts +23 -0
- package/dist/adapters/claude-code-usage.js +123 -0
- package/dist/adapters/claude-code-usage.js.map +1 -0
- package/dist/adapters/claude-code.d.ts +2 -0
- package/dist/adapters/claude-code.js +6 -2
- package/dist/adapters/claude-code.js.map +1 -1
- package/dist/adapters/clone-workspace.d.ts +2 -0
- package/dist/adapters/clone-workspace.js +10 -4
- package/dist/adapters/clone-workspace.js.map +1 -1
- package/dist/adapters/codex-usage.d.ts +14 -0
- package/dist/adapters/codex-usage.js +119 -0
- package/dist/adapters/codex-usage.js.map +1 -0
- package/dist/adapters/codex.js +3 -2
- package/dist/adapters/codex.js.map +1 -1
- package/dist/adapters/container.js +3 -1
- package/dist/adapters/container.js.map +1 -1
- package/dist/adapters/core-version.d.ts +1 -1
- package/dist/adapters/core-version.js +1 -1
- package/dist/adapters/files.d.ts +41 -6
- package/dist/adapters/files.js +37 -3
- package/dist/adapters/files.js.map +1 -1
- package/dist/adapters/folder-processes.d.ts +22 -0
- package/dist/adapters/folder-processes.js +90 -0
- package/dist/adapters/folder-processes.js.map +1 -0
- package/dist/adapters/git-checkouts.d.ts +6 -0
- package/dist/adapters/git-checkouts.js +100 -0
- package/dist/adapters/git-checkouts.js.map +1 -0
- package/dist/adapters/git-workspace.d.ts +2 -0
- package/dist/adapters/git-workspace.js +12 -4
- package/dist/adapters/git-workspace.js.map +1 -1
- package/dist/adapters/json-state.js +4 -0
- package/dist/adapters/json-state.js.map +1 -1
- package/dist/adapters/machine.d.ts +27 -0
- package/dist/adapters/machine.js +74 -0
- package/dist/adapters/machine.js.map +1 -0
- package/dist/adapters/paths.d.ts +6 -0
- package/dist/adapters/paths.js +3 -0
- package/dist/adapters/paths.js.map +1 -1
- package/dist/adapters/plugin-identity.js +13 -1
- package/dist/adapters/plugin-identity.js.map +1 -1
- package/dist/adapters/plugin-update.js +4 -0
- package/dist/adapters/plugin-update.js.map +1 -1
- package/dist/adapters/rest-fleet.js +9 -0
- package/dist/adapters/rest-fleet.js.map +1 -1
- package/dist/adapters/runtime-adapters.d.ts +3 -0
- package/dist/adapters/runtime-adapters.js +3 -3
- package/dist/adapters/runtime-adapters.js.map +1 -1
- package/dist/adapters/ship-sockets.d.ts +6 -1
- package/dist/adapters/ship-sockets.js +21 -2
- package/dist/adapters/ship-sockets.js.map +1 -1
- package/dist/adapters/trusted-clones.d.ts +14 -0
- package/dist/adapters/trusted-clones.js +45 -0
- package/dist/adapters/trusted-clones.js.map +1 -0
- package/dist/adapters/trusted-repositories-file.d.ts +36 -0
- package/dist/adapters/trusted-repositories-file.js +52 -0
- package/dist/adapters/trusted-repositories-file.js.map +1 -0
- package/dist/adapters/usage.d.ts +14 -0
- package/dist/adapters/usage.js +14 -0
- package/dist/adapters/usage.js.map +1 -0
- package/dist/cli/init.d.ts +2 -0
- package/dist/cli/init.js +26 -2
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/main.js +4 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/run.d.ts +1 -1
- package/dist/cli/run.js +65 -6
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/status.d.ts +3 -1
- package/dist/cli/status.js +2 -0
- package/dist/cli/status.js.map +1 -1
- package/dist/core/argo-reports.d.ts +6 -0
- package/dist/core/argo-reports.js +20 -0
- package/dist/core/argo-reports.js.map +1 -1
- package/dist/core/ask-for-trusted-repositories.d.ts +17 -0
- package/dist/core/ask-for-trusted-repositories.js +24 -0
- package/dist/core/ask-for-trusted-repositories.js.map +1 -0
- package/dist/core/check-settings.d.ts +2 -0
- package/dist/core/check-settings.js +5 -1
- package/dist/core/check-settings.js.map +1 -1
- package/dist/core/entry.d.ts +12 -0
- package/dist/core/entry.js.map +1 -1
- package/dist/core/handle-delivery.d.ts +8 -2
- package/dist/core/handle-delivery.js +23 -0
- package/dist/core/handle-delivery.js.map +1 -1
- package/dist/core/machine-load.d.ts +25 -0
- package/dist/core/machine-load.js +36 -0
- package/dist/core/machine-load.js.map +1 -0
- package/dist/core/ports.d.ts +82 -0
- package/dist/core/read-load.d.ts +21 -0
- package/dist/core/read-load.js +45 -0
- package/dist/core/read-load.js.map +1 -0
- package/dist/core/read-usage.d.ts +28 -0
- package/dist/core/read-usage.js +77 -0
- package/dist/core/read-usage.js.map +1 -0
- package/dist/core/reconciler.d.ts +9 -1
- package/dist/core/reconciler.js +18 -4
- package/dist/core/reconciler.js.map +1 -1
- package/dist/core/report-self.d.ts +8 -2
- package/dist/core/report-self.js +21 -7
- package/dist/core/report-self.js.map +1 -1
- package/dist/core/run-pass.d.ts +5 -1
- package/dist/core/run-pass.js +72 -9
- package/dist/core/run-pass.js.map +1 -1
- package/dist/core/token-cost.d.ts +15 -0
- package/dist/core/token-cost.js +38 -0
- package/dist/core/token-cost.js.map +1 -0
- package/dist/core/trusted-repositories.d.ts +28 -0
- package/dist/core/trusted-repositories.js +97 -0
- package/dist/core/trusted-repositories.js.map +1 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ npm install --global @aeolus-fleet/trierarch
|
|
|
12
12
|
|
|
13
13
|
That gives the command `aeolus-trierarch`.
|
|
14
14
|
|
|
15
|
-
1. Join the machine through the trierarch plugin (`machines.join`): it commissions the trierarch's own ship, type `trierarch` with `crew:run`, and answers its starting prompt and a setup line, `npx @aeolus-fleet/trierarch init --fleet-url <url> --ship-id <id> --secret <secret>`, shown once.
|
|
15
|
+
1. Join the machine through the trierarch plugin (`machines.join`): it commissions the trierarch's own ship, type `trierarch` with `crew:run`, and answers its starting prompt and a setup line, `npx @aeolus-fleet/trierarch init --fleet-url <url> --ship-id <id> --plugin-ship-id <its own ship> --secret <secret>`, shown once. The machine then takes the trusted repositories from that ship alone (docs/trierarch.md, "Trusted repositories"); on a machine set up before, run `aeolus-trierarch init --plugin-ship-id <id>` once to take them.
|
|
16
16
|
2. Set up the machine with that line, or with `init` alone, which asks for what is missing:
|
|
17
17
|
|
|
18
18
|
```sh
|
|
@@ -37,7 +37,7 @@ That gives the command `aeolus-trierarch`.
|
|
|
37
37
|
|
|
38
38
|
| Command | What it does |
|
|
39
39
|
| --- | --- |
|
|
40
|
-
| `aeolus-trierarch status` | The installed version, and the one the service runs when it differs (then it says to restart), the aeolus plugin version each configured harness uses (or that it has none), the configured repositories by name, the service (running, pid, since), the fleet and the trierarch's own lease, the caps in use, the entries by state, kept worktrees and orphans |
|
|
40
|
+
| `aeolus-trierarch status` | The installed version, and the one the service runs when it differs (then it says to restart), the aeolus plugin version each configured harness uses (or that it has none), the configured repositories by name, the service (running, pid, since), the fleet and the trierarch's own lease, the caps in use, the last pass (succeeded, or failing since when and why), the entries by state, kept worktrees and orphans |
|
|
41
41
|
| `aeolus-trierarch list` | The ships it crews: ship, state, harness, workspace, since, restarts |
|
|
42
42
|
| `aeolus-trierarch logs [--lines <n>] [--follow]` | The last lines of the log, and with `--follow` each new one: on macOS `~/.aeolus/trierarch/logs/trierarch.log`, where the launchd agent writes, with the log before it in `trierarch.log.1` (docs/trierarch.md says when it moves aside); on Linux the journal the systemd user unit writes to, read through `journalctl --user --unit aeolus-trierarch.service`. The log holds one JSON record per line: each action the loop takes for a ship (crew, launch, wake, report, release, confirm, forget, leave, stop) as `{ time, shipId, shipName, action, outcome, next }`, where `next` says what happens after a failure, or a message as `{ time, level, message }`. `logs` renders them as text, and `--json` gives the records as they are (a line that is no record as `{ line }`). `run` in a terminal writes the text |
|
|
43
43
|
| `aeolus-trierarch add repository <name> <path>`, `aeolus-trierarch add folder <name> <path>` | Adds a repository to make worktrees of, or a folder to crew a ship in as it is, checked as init checks it, and trusts it for every configured harness in one step: adding a place is what trusts it. Then it restarts the service so the trierarch offers it, and waits until the new process says its version (at most 30 seconds); sessions keep running. A place written into `config.json` by hand is never offered and never crewed until it is added |
|
|
@@ -82,10 +82,12 @@ To stop the trierarch: `aeolus-trierarch stop`, or `aeolus-trierarch uninstall`
|
|
|
82
82
|
|
|
83
83
|
- **runtime** (optional): where the sessions run, on the host when left out, or each in a container of its own: `{ "kind": "container", "binary": "podman", "memory": "4g", "cpus": 2 }`, with the model token in `~/.aeolus/trierarch/model-token`. What a container holds and what `config check` refuses with it: [docs/trierarch.md](../../docs/trierarch.md#session-runtime).
|
|
84
84
|
- **caps**: how many ships it takes (the trierarch plugin assigns it no more), and how many sessions run at once.
|
|
85
|
-
- **repositories**: by name. A crew request for a worktree of one gets a git worktree under `~/.aeolus/trierarch/worktrees/<repository>/<ship>`, detached at the settings' ref or the repository's HEAD. It fetches the repository first, and a ref `origin` has a branch for checks out that remote branch (`origin/<ref>`), so a ship starts from current code; when the fetch fails it uses what the repository has. `worktreeRoot` moves that root.
|
|
85
|
+
- **repositories**: by name. A crew request for a worktree of one gets a git worktree under `~/.aeolus/trierarch/worktrees/<repository>/<ship>`, detached at the settings' ref or the repository's HEAD. It fetches the repository first, and a ref `origin` has a branch for checks out that remote branch (`origin/<ref>`), so a ship starts from current code; when the fetch fails it uses what the repository has. `worktreeRoot` moves that root. A repository may name other configured repositories as its `checkouts`: a session in it gets each read-only, at the latest main, beside its folder, and can refresh them ([docs/trierarch.md](../../docs/trierarch.md#read-only-checkouts)).
|
|
86
86
|
- **folders**: by name, used as they are, one ship per folder, never removed.
|
|
87
87
|
- **harnesses**: `claude-code`, `codex` or both: the flags every launch gets, and named options. A crew request's settings pick option values by name; they never add a flag or carry a path. There is no policy on which flags: put `--dangerously-skip-permissions` in `flags` if you want it. The trierarch never adds a flag by itself. With `--remote-control` and no name after it, each session is named `[<repository or folder>] <ship>`, such as `[aeolus-fleet] trial-1`, so it is easy to find among your remote-control sessions. Claude Code's `--permission-mode plan`, in `flags` or an option, is ignored: a crewed session runs without plan mode's tools, so it could never leave plan mode (#465); `config check` shows the command without it. For the same reason, when Claude Code's settings make `plan` the default mode and the flags name no permission mode, a launch adds `--permission-mode manual`, or `default` where the detected Claude Code's `--help` lists no `manual` mode (#505, #507, #517). It reads `permissions.defaultMode` where Claude Code does, the first that names one winning: the managed settings files (`managed-settings.json`, then `managed-settings.d/*.json`, in `/Library/Application Support/ClaudeCode` or `/etc/claude-code`), `--settings` in the flags (JSON, or a file, relative to the folder), then of the sources `--setting-sources` loads (none with `--restricted`) the folder's `.claude/settings.local.json`, its `.claude/settings.json` and the user's `settings.json` (in `CLAUDE_CONFIG_DIR` when set, else `~/.claude`). A plan default mode from server-managed settings or a macOS configuration profile is not overridden: those are an admin's deliberate policy, and are not read. `config check` shows the override as the launch adds it, and where the folder's settings decide, with when it applies.
|
|
88
88
|
|
|
89
|
+
- **prices** (optional): the price per model, in US dollars per million tokens of each kind, that the cost of a ship's tokens is estimated by in its report: `{ "claude-opus-5-5": { "input": 4, "output": 20, "cacheRead": 0.2, "cacheWrite": 8 } }`. It replaces a model's list price, which the trierarch carries for the current Claude and OpenAI models, or prices one it does not carry ([docs/trierarch.md](../../docs/trierarch.md#what-a-trierarch-reports)).
|
|
90
|
+
|
|
89
91
|
`aeolus-trierarch init` writes caps, repositories, folders, and Claude Code's and Codex's flags, and detects each harness's models and effort levels into `detected.json` ([docs/trierarch.md](../../docs/trierarch.md#detected-options)). Options you write here replace the detected option of the same name whole, except `model`: model ids come from detection only, and a `model` here is ignored (#382). The example above narrows Claude Code's effort to two levels with a default, and takes the detected models as they are. Edit the file for options and `worktreeRoot`, then `aeolus-trierarch config check` and `aeolus-trierarch restart`.
|
|
90
92
|
|
|
91
93
|
The trierarch finds the aeolus plugin in each offered harness's plugin cache (the newest version, looked up again at each use, so a plugin upgrade needs no service restart): Claude Code's under `~/.claude/plugins` (or `$CLAUDE_CONFIG_DIR/plugins`), Codex's under `~/.codex/plugins` (or `$CODEX_HOME/plugins`). Claude Code's settings and `.claude.json` follow `CLAUDE_CONFIG_DIR` the same way, as Claude Code's own do, and Codex's `config.toml` follows `CODEX_HOME`; init's summary names the files it wrote. Set `AEOLUS_PLUGIN_ROOT` and `AEOLUS_PLUGIN_DATA` (Claude Code), or `AEOLUS_CODEX_PLUGIN_ROOT` and `AEOLUS_CODEX_PLUGIN_DATA` (Codex), to point it elsewhere. `aeolus-trierarch install` carries these, `CLAUDE_CONFIG_DIR`, `CODEX_HOME`, `AEOLUS_TRIERARCH_CONFIG` and `PATH` into the service as they are set where it runs.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** The lines a file gained since the last read, each written whole; `isFromStart` when the file was read from its start, as on the first read or after it shrank. */
|
|
2
|
+
export interface AppendedLines {
|
|
3
|
+
readonly lines: readonly string[];
|
|
4
|
+
readonly isFromStart: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Reads the lines a growing file appended since its last read (#353), so a
|
|
8
|
+
* transcript of many megabytes is not read whole every few minutes. A line
|
|
9
|
+
* not ended yet waits for the next read. A file that shrank is read again
|
|
10
|
+
* from its start.
|
|
11
|
+
*/
|
|
12
|
+
export declare function createAppendedLines(): {
|
|
13
|
+
read(path: string): Promise<AppendedLines>;
|
|
14
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { open } from 'node:fs/promises';
|
|
2
|
+
/**
|
|
3
|
+
* Reads the lines a growing file appended since its last read (#353), so a
|
|
4
|
+
* transcript of many megabytes is not read whole every few minutes. A line
|
|
5
|
+
* not ended yet waits for the next read. A file that shrank is read again
|
|
6
|
+
* from its start.
|
|
7
|
+
*/
|
|
8
|
+
export function createAppendedLines() {
|
|
9
|
+
const offsets = new Map();
|
|
10
|
+
return {
|
|
11
|
+
read: async (path) => {
|
|
12
|
+
const file = await open(path, 'r');
|
|
13
|
+
try {
|
|
14
|
+
const { size } = await file.stat();
|
|
15
|
+
const known = offsets.get(path) ?? 0;
|
|
16
|
+
const start = known > size ? 0 : known;
|
|
17
|
+
const buffer = Buffer.alloc(size - start);
|
|
18
|
+
await file.read(buffer, 0, buffer.length, start);
|
|
19
|
+
const end = buffer.lastIndexOf('\n');
|
|
20
|
+
offsets.set(path, start + end + 1);
|
|
21
|
+
const text = end < 0 ? '' : buffer.subarray(0, end).toString('utf8');
|
|
22
|
+
return { lines: text === '' ? [] : text.split('\n'), isFromStart: start === 0 };
|
|
23
|
+
}
|
|
24
|
+
finally {
|
|
25
|
+
await file.close();
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=appended-lines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appended-lines.js","sourceRoot":"","sources":["../../src/adapters/appended-lines.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAQxC;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,OAAO;QACL,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrC,MAAM,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACvC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;gBAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACjD,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;gBACnC,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACrE,OAAO,EAAE,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;YAClF,CAAC;oBAAS,CAAC;gBACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ShipId } from '@aeolus-fleet/common';
|
|
2
|
+
import type { ModelTokens, SubscriptionWindow } from '../core/ports.js';
|
|
3
|
+
import type { CommandResult } from './run-command.js';
|
|
4
|
+
export declare function createClaudeCodeUsage(deps: {
|
|
5
|
+
/** Claude Code's projects folder of the ship: the user's on the host, the ship's own home's in a container. */
|
|
6
|
+
projectsOf: (shipId: ShipId) => string;
|
|
7
|
+
/** When the ship's folder was made: what came before was another crew's. */
|
|
8
|
+
madeAt: (folder: string) => Promise<Date>;
|
|
9
|
+
run: (command: string, options: {
|
|
10
|
+
args: readonly string[];
|
|
11
|
+
cwd?: string;
|
|
12
|
+
timeoutMs?: number;
|
|
13
|
+
}) => Promise<CommandResult>;
|
|
14
|
+
/** A new empty folder to run the turn from, so no project's hooks or settings apply and it is never a ship; removed after. */
|
|
15
|
+
neutralFolder: () => Promise<string>;
|
|
16
|
+
program?: string;
|
|
17
|
+
}): {
|
|
18
|
+
tokensOf: (ship: {
|
|
19
|
+
shipId: ShipId;
|
|
20
|
+
folder: string;
|
|
21
|
+
}) => Promise<ModelTokens[]>;
|
|
22
|
+
subscription: () => Promise<SubscriptionWindow[] | undefined>;
|
|
23
|
+
};
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { readdir, rm } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { createAppendedLines } from './appended-lines.js';
|
|
5
|
+
import { CLAUDE_CODE_PROBE_TIMEOUT_MS } from './claude-code-detector.js';
|
|
6
|
+
/**
|
|
7
|
+
* What Claude Code says of its usage (#353). A ship's tokens come from the
|
|
8
|
+
* transcripts in its projects folder: its folder's conversations and their
|
|
9
|
+
* sub-agents', one line per content block, each line of a message carrying
|
|
10
|
+
* the message's whole usage, so each message counts once by its id. Its
|
|
11
|
+
* subscription comes from the rate limit event a print-mode turn streams,
|
|
12
|
+
* a short turn on the cheapest model, from an empty folder. Claude Code
|
|
13
|
+
* documents neither: the readers are tested on captured ones (test/logs).
|
|
14
|
+
*/
|
|
15
|
+
const assistantLineSchema = z.object({
|
|
16
|
+
type: z.literal('assistant'),
|
|
17
|
+
timestamp: z.iso.datetime(),
|
|
18
|
+
message: z.object({
|
|
19
|
+
id: z.string(),
|
|
20
|
+
model: z.string(),
|
|
21
|
+
usage: z.object({ input_tokens: z.number(), output_tokens: z.number(), cache_read_input_tokens: z.number().optional(), cache_creation_input_tokens: z.number().optional() }),
|
|
22
|
+
}),
|
|
23
|
+
});
|
|
24
|
+
/** The model Claude Code names a message it made itself, such as an error, that no model answered. */
|
|
25
|
+
const SYNTHETIC_MODEL = '<synthetic>';
|
|
26
|
+
const rateLimitEventSchema = z.object({
|
|
27
|
+
type: z.literal('rate_limit_event'),
|
|
28
|
+
rate_limit_info: z.object({ unifiedWindows: z.record(z.string(), z.object({ utilization: z.number(), resetsAt: z.number() })) }),
|
|
29
|
+
});
|
|
30
|
+
/** Claude Code's windows by the name it gives them, in minutes. */
|
|
31
|
+
const WINDOW_MINUTES = { five_hour: 300, seven_day: 10_080 };
|
|
32
|
+
const PROBE_MODEL = 'haiku';
|
|
33
|
+
const PROBE_PROMPT = 'Reply OK';
|
|
34
|
+
const PERCENT = 100;
|
|
35
|
+
const MS_PER_SECOND = 1000;
|
|
36
|
+
/** A line's JSON; none for one that is not. */
|
|
37
|
+
function jsonOf(line) {
|
|
38
|
+
try {
|
|
39
|
+
return JSON.parse(line);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function plus(a, b) {
|
|
46
|
+
return a === undefined ? b : { input: a.input + b.input, output: a.output + b.output, cacheRead: a.cacheRead + b.cacheRead, cacheWrite: a.cacheWrite + b.cacheWrite };
|
|
47
|
+
}
|
|
48
|
+
/** The conversations Claude Code keeps of the folder: each `.jsonl` in its projects folder, and the sub-agents' of each. */
|
|
49
|
+
async function transcriptsIn(project) {
|
|
50
|
+
const entries = await readdir(project, { withFileTypes: true }).catch(() => []);
|
|
51
|
+
const own = entries.filter((entry) => entry.isFile() && entry.name.endsWith('.jsonl')).map((entry) => join(project, entry.name));
|
|
52
|
+
const subagents = await Promise.all(entries
|
|
53
|
+
.filter((entry) => entry.isDirectory())
|
|
54
|
+
.map(async (entry) => {
|
|
55
|
+
const folder = join(project, entry.name, 'subagents');
|
|
56
|
+
return (await readdir(folder).catch(() => [])).filter((name) => name.endsWith('.jsonl')).map((name) => join(folder, name));
|
|
57
|
+
}));
|
|
58
|
+
return [...own, ...subagents.flat()];
|
|
59
|
+
}
|
|
60
|
+
/** The windows a print-mode turn's stream says, from its last rate limit event; none when it says none. */
|
|
61
|
+
function windowsIn(stream) {
|
|
62
|
+
const events = stream
|
|
63
|
+
.split('\n')
|
|
64
|
+
.map((line) => rateLimitEventSchema.safeParse(jsonOf(line)))
|
|
65
|
+
.filter((event) => event.success);
|
|
66
|
+
const last = events.at(-1)?.data;
|
|
67
|
+
if (last === undefined) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
const windows = Object.entries(last.rate_limit_info.unifiedWindows).flatMap(([name, window]) => {
|
|
71
|
+
const minutes = WINDOW_MINUTES[name];
|
|
72
|
+
const usedPercent = Math.min(PERCENT, Math.max(0, Math.round(window.utilization * PERCENT * PERCENT) / PERCENT));
|
|
73
|
+
return minutes === undefined ? [] : [{ windowMinutes: minutes, usedPercent, resetsAt: new Date(window.resetsAt * MS_PER_SECOND) }];
|
|
74
|
+
});
|
|
75
|
+
return windows.length === 0 ? undefined : windows;
|
|
76
|
+
}
|
|
77
|
+
export function createClaudeCodeUsage(deps) {
|
|
78
|
+
const appended = createAppendedLines();
|
|
79
|
+
const transcripts = new Map();
|
|
80
|
+
const readTranscript = async (path, since) => {
|
|
81
|
+
const { lines, isFromStart } = await appended.read(path);
|
|
82
|
+
const totals = isFromStart ? { seen: new Set(), byModel: new Map() } : (transcripts.get(path) ?? { seen: new Set(), byModel: new Map() });
|
|
83
|
+
for (const line of lines) {
|
|
84
|
+
const parsed = assistantLineSchema.safeParse(jsonOf(line));
|
|
85
|
+
if (!parsed.success || parsed.data.message.model === SYNTHETIC_MODEL || totals.seen.has(parsed.data.message.id) || Date.parse(parsed.data.timestamp) < since.getTime()) {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
const { id, model, usage } = parsed.data.message;
|
|
89
|
+
totals.seen.add(id);
|
|
90
|
+
totals.byModel.set(model, plus(totals.byModel.get(model), { input: usage.input_tokens, output: usage.output_tokens, cacheRead: usage.cache_read_input_tokens ?? 0, cacheWrite: usage.cache_creation_input_tokens ?? 0 }));
|
|
91
|
+
}
|
|
92
|
+
transcripts.set(path, totals);
|
|
93
|
+
return totals;
|
|
94
|
+
};
|
|
95
|
+
return {
|
|
96
|
+
tokensOf: async (ship) => {
|
|
97
|
+
const since = await deps.madeAt(ship.folder);
|
|
98
|
+
const project = join(deps.projectsOf(ship.shipId), ship.folder.replace(/[^a-zA-Z0-9]/gu, '-'));
|
|
99
|
+
const byModel = new Map();
|
|
100
|
+
for (const path of await transcriptsIn(project)) {
|
|
101
|
+
for (const [model, tokens] of (await readTranscript(path, since)).byModel) {
|
|
102
|
+
byModel.set(model, plus(byModel.get(model), tokens));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return [...byModel].sort(([a], [b]) => a.localeCompare(b)).map(([model, tokens]) => ({ model, tokens }));
|
|
106
|
+
},
|
|
107
|
+
subscription: async () => {
|
|
108
|
+
const folder = await deps.neutralFolder();
|
|
109
|
+
try {
|
|
110
|
+
const result = await deps.run(deps.program ?? 'claude', {
|
|
111
|
+
args: ['-p', '--model', PROBE_MODEL, '--max-turns', '1', '--output-format', 'stream-json', '--verbose', PROBE_PROMPT],
|
|
112
|
+
cwd: folder,
|
|
113
|
+
timeoutMs: CLAUDE_CODE_PROBE_TIMEOUT_MS,
|
|
114
|
+
});
|
|
115
|
+
return windowsIn(result.stdout);
|
|
116
|
+
}
|
|
117
|
+
finally {
|
|
118
|
+
await rm(folder, { recursive: true, force: true });
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=claude-code-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-usage.js","sourceRoot":"","sources":["../../src/adapters/claude-code-usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,6 +48,8 @@ export declare function claudeCodeCommandLine(at: {
|
|
|
48
48
|
defaultPermissionMode?: SettingsDefaultMode;
|
|
49
49
|
permissionModes?: readonly string[] | undefined;
|
|
50
50
|
program?: string;
|
|
51
|
+
/** The session's read-only checkouts (#1182), which it reads beside its folder without asking. */
|
|
52
|
+
readOnly?: readonly string[];
|
|
51
53
|
}): CommandPart[];
|
|
52
54
|
export declare function createClaudeCodeHarness(options: {
|
|
53
55
|
configuration: TrierarchConfiguration;
|
|
@@ -37,6 +37,8 @@ export const WAKE_PROMPT = '/aeolus:wake';
|
|
|
37
37
|
export const LAUNCH_VARIABLE = 'AEOLUS_LAUNCH';
|
|
38
38
|
const REMOTE_CONTROL = '--remote-control';
|
|
39
39
|
const CONTINUE = '--continue';
|
|
40
|
+
/** Lets the session read a folder beside its own without asking: each of its read-only checkouts (#1182). */
|
|
41
|
+
const ADD_DIR = '--add-dir';
|
|
40
42
|
const END_OF_FLAGS = '--';
|
|
41
43
|
const NO_PANE_PROMPTS = '--disallowedTools=AskUserQuestion,EnterPlanMode,ExitPlanMode';
|
|
42
44
|
const PERMISSION_MODE = '--permission-mode';
|
|
@@ -120,6 +122,7 @@ export function claudeCodeCommandLine(at) {
|
|
|
120
122
|
planOverride(flags, { defaultMode: at.defaultPermissionMode, permissionModes: at.permissionModes }),
|
|
121
123
|
{ words: [NO_PANE_PROMPTS], source: 'adapter' },
|
|
122
124
|
{ words: at.isFirstStart ? [] : [CONTINUE], source: 'adapter' },
|
|
125
|
+
{ words: (at.readOnly ?? []).flatMap((path) => [ADD_DIR, path]), source: 'adapter' },
|
|
123
126
|
{ words: [END_OF_FLAGS, at.prompt] },
|
|
124
127
|
]);
|
|
125
128
|
}
|
|
@@ -153,7 +156,7 @@ export function createClaudeCodeHarness(options) {
|
|
|
153
156
|
},
|
|
154
157
|
turnOf: (session) => identityOf(session.shipId).turnOf(session),
|
|
155
158
|
startProblem: () => createPluginIdentity(plugin).startProblem(),
|
|
156
|
-
launch: async ({ shipId, shipName, folder, workspace, harness, options: picked, isFirstStart, launchId, firstPrompt }) => {
|
|
159
|
+
launch: async ({ shipId, shipName, folder, workspace, checkouts, harness, options: picked, isFirstStart, launchId, firstPrompt }) => {
|
|
157
160
|
const settings = configuration.harnesses[harness];
|
|
158
161
|
if (settings === undefined) {
|
|
159
162
|
throw new Error(`The configuration has no harness ${harness}`);
|
|
@@ -170,10 +173,11 @@ export function createClaudeCodeHarness(options) {
|
|
|
170
173
|
defaultPermissionMode: await claudeCodeSettingsDefaultMode(home.setup, { flags, folder }),
|
|
171
174
|
permissionModes: options.permissionModes(),
|
|
172
175
|
...(options.command !== undefined && { program: options.command }),
|
|
176
|
+
readOnly: checkouts.map((checkout) => checkout.path),
|
|
173
177
|
});
|
|
174
178
|
const marks = marksOf(shipId);
|
|
175
179
|
await marks.clear(folder);
|
|
176
|
-
await sessions.start({ shipId, folder, command: wordsOf(command), env: { [LAUNCH_VARIABLE]: launchId } });
|
|
180
|
+
await sessions.start({ shipId, folder, command: wordsOf(command), env: { [LAUNCH_VARIABLE]: launchId }, ...(checkouts.length > 0 && { readOnly: checkouts.map((checkout) => checkout.path) }) });
|
|
177
181
|
},
|
|
178
182
|
handOver: async (session) => {
|
|
179
183
|
const line = await identityOf(session.shipId).handOverLine(session);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/adapters/claude-code.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/adapters/claude-code.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { TrierarchConfiguration } from '@aeolus-fleet/common';
|
|
2
2
|
import type { WorkspacePort } from '../core/ports.js';
|
|
3
|
+
import { type TrustedClones } from './trusted-clones.js';
|
|
3
4
|
export declare function createCloneWorkspace(options: {
|
|
4
5
|
configuration: TrierarchConfiguration;
|
|
5
6
|
root: string;
|
|
7
|
+
clones?: TrustedClones;
|
|
6
8
|
}): WorkspacePort;
|
|
@@ -2,6 +2,7 @@ import { mkdir, rm, stat } from 'node:fs/promises';
|
|
|
2
2
|
import { join, relative, sep } from 'node:path';
|
|
3
3
|
import { createGitWorkspace } from './git-workspace.js';
|
|
4
4
|
import { runCommand } from './run-command.js';
|
|
5
|
+
import { clonedPath, cloneWhenMissing } from './trusted-clones.js';
|
|
5
6
|
/**
|
|
6
7
|
* Workspaces for sessions in containers (decision 0039; trierarch.md, "Session
|
|
7
8
|
* runtime"): a per-ship clone of a configured repository in place of a
|
|
@@ -17,7 +18,7 @@ import { runCommand } from './run-command.js';
|
|
|
17
18
|
*/
|
|
18
19
|
const REMOTE = 'origin';
|
|
19
20
|
export function createCloneWorkspace(options) {
|
|
20
|
-
const { configuration, root } = options;
|
|
21
|
+
const { configuration, root, clones } = options;
|
|
21
22
|
const worktrees = createGitWorkspace(options);
|
|
22
23
|
const git = async (args) => {
|
|
23
24
|
const result = await runCommand('git', { args });
|
|
@@ -35,9 +36,13 @@ export function createCloneWorkspace(options) {
|
|
|
35
36
|
return remote.status === 0 ? remote.stdout.trim() : (await git(['-C', repository, 'rev-parse', '--verify', `${ref}^{commit}`])).trim();
|
|
36
37
|
};
|
|
37
38
|
const exists = async (path) => (await stat(path).catch(() => undefined)) !== undefined;
|
|
38
|
-
const isUnderRoot = (folder) => {
|
|
39
|
+
const isUnderRoot = async (folder) => {
|
|
39
40
|
const [repository, ship, ...rest] = relative(root, folder).split(sep);
|
|
40
|
-
|
|
41
|
+
if (repository === undefined || ship === undefined || rest.length > 0 || ship === '' || ship === '..') {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
// A clone whose repository left the trusted repositories is still one the trierarch made.
|
|
45
|
+
return configuration.repositories[repository] !== undefined || (await clonedPath(clones, repository)) !== undefined;
|
|
41
46
|
};
|
|
42
47
|
return {
|
|
43
48
|
...worktrees,
|
|
@@ -50,6 +55,7 @@ export function createCloneWorkspace(options) {
|
|
|
50
55
|
if (repository === undefined) {
|
|
51
56
|
throw new Error(`The configuration has no repository ${workspace.repository}`);
|
|
52
57
|
}
|
|
58
|
+
await cloneWhenMissing(clones, { repository: workspace.repository, path: repository });
|
|
53
59
|
const folder = join(root, workspace.repository, shipName);
|
|
54
60
|
// A clone a stop mid-crew left is used as it is.
|
|
55
61
|
if (!(await exists(folder))) {
|
|
@@ -69,7 +75,7 @@ export function createCloneWorkspace(options) {
|
|
|
69
75
|
return { folder };
|
|
70
76
|
},
|
|
71
77
|
remove: async (folder) => {
|
|
72
|
-
if (!isUnderRoot(folder)) {
|
|
78
|
+
if (!(await isUnderRoot(folder))) {
|
|
73
79
|
throw new Error(`${folder} is no clone under ${root}: the trierarch removes only what it made`);
|
|
74
80
|
}
|
|
75
81
|
await rm(folder, { recursive: true, force: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone-workspace.js","sourceRoot":"","sources":["../../src/adapters/clone-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAKhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"clone-workspace.js","sourceRoot":"","sources":["../../src/adapters/clone-workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ShipId } from '@aeolus-fleet/common';
|
|
2
|
+
import type { ModelTokens, SubscriptionWindow } from '../core/ports.js';
|
|
3
|
+
export declare function createCodexUsage(deps: {
|
|
4
|
+
/** Codex's sessions folder: `sessions` in CODEX_HOME, or in `~/.codex`. */
|
|
5
|
+
sessions: string;
|
|
6
|
+
/** When the ship's folder was made: what came before was another crew's. */
|
|
7
|
+
madeAt: (folder: string) => Promise<Date>;
|
|
8
|
+
}): {
|
|
9
|
+
tokensOf: (ship: {
|
|
10
|
+
shipId: ShipId;
|
|
11
|
+
folder: string;
|
|
12
|
+
}) => Promise<ModelTokens[]>;
|
|
13
|
+
subscription: () => Promise<SubscriptionWindow[] | undefined>;
|
|
14
|
+
};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { readdir, readFile, stat } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { createAppendedLines } from './appended-lines.js';
|
|
5
|
+
/**
|
|
6
|
+
* What Codex says of its usage (#353), from its session logs (rollout files
|
|
7
|
+
* under `sessions/<year>/<month>/<day>/`). A session log starts with the
|
|
8
|
+
* folder it ran in; each turn names its model, and each token count the
|
|
9
|
+
* session's total so far, so a turn's tokens are what the total grew by since
|
|
10
|
+
* the count before. Codex's input counts what it read from the cache: the
|
|
11
|
+
* input here is without it. Each token count also says how much of the
|
|
12
|
+
* subscription's windows is used: the newest log's last one is read. Codex
|
|
13
|
+
* documents no format for them: the reader is tested on a captured one (test/logs).
|
|
14
|
+
*/
|
|
15
|
+
const metaSchema = z.object({ type: z.literal('session_meta'), payload: z.object({ timestamp: z.iso.datetime(), cwd: z.string() }) });
|
|
16
|
+
const turnSchema = z.object({ type: z.literal('turn_context'), payload: z.object({ model: z.string() }) });
|
|
17
|
+
const totalSchema = z.object({ input_tokens: z.number(), cached_input_tokens: z.number().optional(), cache_write_input_tokens: z.number().optional(), output_tokens: z.number() });
|
|
18
|
+
const tokenCountSchema = z.object({
|
|
19
|
+
type: z.literal('event_msg'),
|
|
20
|
+
payload: z.object({ type: z.literal('token_count'), info: z.object({ total_token_usage: totalSchema }).nullable().optional() }),
|
|
21
|
+
});
|
|
22
|
+
const windowSchema = z.object({ used_percent: z.number(), window_minutes: z.number(), resets_at: z.number() });
|
|
23
|
+
const rateLimitsSchema = z.object({
|
|
24
|
+
type: z.literal('event_msg'),
|
|
25
|
+
payload: z.object({ type: z.literal('token_count'), rate_limits: z.object({ primary: windowSchema.nullable().optional(), secondary: windowSchema.nullable().optional() }) }),
|
|
26
|
+
});
|
|
27
|
+
const PERCENT = 100;
|
|
28
|
+
const MS_PER_SECOND = 1000;
|
|
29
|
+
/** How many of the newest session logs are searched for the subscription's windows. */
|
|
30
|
+
const NEWEST_LOGS_SEARCHED = 10;
|
|
31
|
+
const NONE = { input_tokens: 0, cached_input_tokens: 0, cache_write_input_tokens: 0, output_tokens: 0 };
|
|
32
|
+
function jsonOf(line) {
|
|
33
|
+
try {
|
|
34
|
+
return JSON.parse(line);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function plus(a, b) {
|
|
41
|
+
return a === undefined ? b : { input: a.input + b.input, output: a.output + b.output, cacheRead: a.cacheRead + b.cacheRead, cacheWrite: a.cacheWrite + b.cacheWrite };
|
|
42
|
+
}
|
|
43
|
+
/** What the session's total grew by, input without what was read from or written to the cache. */
|
|
44
|
+
function grownBy(now, before) {
|
|
45
|
+
const cacheRead = (now.cached_input_tokens ?? 0) - (before.cached_input_tokens ?? 0);
|
|
46
|
+
const cacheWrite = (now.cache_write_input_tokens ?? 0) - (before.cache_write_input_tokens ?? 0);
|
|
47
|
+
return { input: Math.max(0, now.input_tokens - before.input_tokens - cacheRead - cacheWrite), output: now.output_tokens - before.output_tokens, cacheRead, cacheWrite };
|
|
48
|
+
}
|
|
49
|
+
function read(log, line) {
|
|
50
|
+
const json = jsonOf(line);
|
|
51
|
+
const meta = metaSchema.safeParse(json);
|
|
52
|
+
if (meta.success) {
|
|
53
|
+
log.folder = meta.data.payload.cwd;
|
|
54
|
+
log.startedAt = Date.parse(meta.data.payload.timestamp);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const turn = turnSchema.safeParse(json);
|
|
58
|
+
if (turn.success) {
|
|
59
|
+
log.model = turn.data.payload.model;
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const total = tokenCountSchema.safeParse(json).data?.payload.info?.total_token_usage;
|
|
63
|
+
if (total !== undefined && log.model !== undefined) {
|
|
64
|
+
log.byModel.set(log.model, plus(log.byModel.get(log.model), grownBy(total, log.total)));
|
|
65
|
+
log.total = total;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export function createCodexUsage(deps) {
|
|
69
|
+
const appended = createAppendedLines();
|
|
70
|
+
const logs = new Map();
|
|
71
|
+
/** Every session log, oldest first, as their names start with when they started. */
|
|
72
|
+
const sessionLogs = async () => {
|
|
73
|
+
const names = await readdir(deps.sessions, { recursive: true }).catch(() => []);
|
|
74
|
+
return names
|
|
75
|
+
.filter((name) => /(^|\/)rollout-[^/]*\.jsonl$/u.test(name))
|
|
76
|
+
.map((name) => join(deps.sessions, name))
|
|
77
|
+
.sort((a, b) => a.localeCompare(b));
|
|
78
|
+
};
|
|
79
|
+
return {
|
|
80
|
+
tokensOf: async (ship) => {
|
|
81
|
+
const since = (await deps.madeAt(ship.folder)).getTime();
|
|
82
|
+
const byModel = new Map();
|
|
83
|
+
for (const path of await sessionLogs()) {
|
|
84
|
+
// A log not written since the folder was made is another crew's: never read.
|
|
85
|
+
if ((await stat(path)).mtimeMs < since) {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
const { lines, isFromStart } = await appended.read(path);
|
|
89
|
+
const log = (isFromStart ? undefined : logs.get(path)) ?? { total: NONE, byModel: new Map() };
|
|
90
|
+
lines.forEach((line) => {
|
|
91
|
+
read(log, line);
|
|
92
|
+
});
|
|
93
|
+
logs.set(path, log);
|
|
94
|
+
if (log.folder === ship.folder && (log.startedAt ?? 0) >= since) {
|
|
95
|
+
for (const [model, tokens] of log.byModel) {
|
|
96
|
+
byModel.set(model, plus(byModel.get(model), tokens));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return [...byModel].sort(([a], [b]) => a.localeCompare(b)).map(([model, tokens]) => ({ model, tokens }));
|
|
101
|
+
},
|
|
102
|
+
subscription: async () => {
|
|
103
|
+
for (const path of (await sessionLogs()).slice(-NEWEST_LOGS_SEARCHED).reverse()) {
|
|
104
|
+
const last = (await readFile(path, 'utf8'))
|
|
105
|
+
.split('\n')
|
|
106
|
+
.map((line) => rateLimitsSchema.safeParse(jsonOf(line)).data?.payload.rate_limits)
|
|
107
|
+
.filter((limits) => limits !== undefined)
|
|
108
|
+
.at(-1);
|
|
109
|
+
if (last !== undefined) {
|
|
110
|
+
return [last.primary, last.secondary]
|
|
111
|
+
.filter((window) => window !== undefined && window !== null)
|
|
112
|
+
.map((window) => ({ windowMinutes: window.window_minutes, usedPercent: Math.min(PERCENT, Math.max(0, window.used_percent)), resetsAt: new Date(window.resets_at * MS_PER_SECOND) }));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return undefined;
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=codex-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-usage.js","sourceRoot":"","sources":["../../src/adapters/codex-usage.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters/codex.js
CHANGED
|
@@ -70,7 +70,7 @@ export function createCodexHarness(options) {
|
|
|
70
70
|
const { handOverLine, forceOverLine, ...identity } = createPluginIdentity(plugin);
|
|
71
71
|
return {
|
|
72
72
|
...identity,
|
|
73
|
-
launch: async ({ shipId, folder, harness, options: picked, isFirstStart, launchId, firstPrompt }) => {
|
|
73
|
+
launch: async ({ shipId, folder, checkouts, harness, options: picked, isFirstStart, launchId, firstPrompt }) => {
|
|
74
74
|
const settings = configuration.harnesses[harness];
|
|
75
75
|
if (settings === undefined) {
|
|
76
76
|
throw new Error(`The configuration has no harness ${harness}`);
|
|
@@ -79,7 +79,8 @@ export function createCodexHarness(options) {
|
|
|
79
79
|
const command = codexCommandLine({ flags: effectiveFlags(settings, picked), prompt, isFirstStart, ...(options.command !== undefined && { program: options.command }) });
|
|
80
80
|
await options.setup.trustAeolusHooks(folder);
|
|
81
81
|
await marks.clear(folder);
|
|
82
|
-
|
|
82
|
+
// Codex reads outside its folder as it is: its read-only checkouts need no flag (#1182).
|
|
83
|
+
await sessions.start({ shipId, folder, command: wordsOf(command), env: { [LAUNCH_VARIABLE]: launchId }, ...(checkouts.length > 0 && { readOnly: checkouts.map((checkout) => checkout.path) }) });
|
|
83
84
|
},
|
|
84
85
|
handOver: async (session) => {
|
|
85
86
|
const line = await handOverLine(session);
|