agentbox-app 0.1.6
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 +674 -0
- package/README.md +176 -0
- package/bin/agentbox.mjs +103 -0
- package/briefs/adhd-mode.md +5 -0
- package/briefs/message-rules.md +95 -0
- package/briefs/worker.md +230 -0
- package/briefs/writing-rules.md +336 -0
- package/main/account-discovery.mjs +145 -0
- package/main/account-tooling.mjs +261 -0
- package/main/agent-activity.mjs +56 -0
- package/main/agent-files.mjs +422 -0
- package/main/agent-schedule.mjs +254 -0
- package/main/agent-sessions.mjs +435 -0
- package/main/agents.mjs +1095 -0
- package/main/analytics.mjs +206 -0
- package/main/answer-modes.mjs +206 -0
- package/main/approval-prompt-server.mjs +160 -0
- package/main/approvals.mjs +487 -0
- package/main/artifact-path.mjs +144 -0
- package/main/claude-bin.mjs +311 -0
- package/main/claude-input.mjs +117 -0
- package/main/claude-models.mjs +244 -0
- package/main/claude-plan.mjs +148 -0
- package/main/claude-usage.mjs +149 -0
- package/main/code-change.mjs +383 -0
- package/main/code-file.mjs +116 -0
- package/main/codex-account.mjs +146 -0
- package/main/codex-app-server.mjs +796 -0
- package/main/codex-approvals.mjs +712 -0
- package/main/codex-bin.mjs +261 -0
- package/main/codex-compaction.mjs +49 -0
- package/main/codex-models.mjs +194 -0
- package/main/codex-session.mjs +797 -0
- package/main/codex-threads.mjs +268 -0
- package/main/codex-usage-file.mjs +192 -0
- package/main/codex-usage.mjs +149 -0
- package/main/codex-watch.mjs +35 -0
- package/main/codex.mjs +757 -0
- package/main/config.mjs +345 -0
- package/main/copy-selection.mjs +55 -0
- package/main/crash-report.mjs +158 -0
- package/main/demo.mjs +254 -0
- package/main/dev-window.mjs +103 -0
- package/main/doc-file.mjs +99 -0
- package/main/doc-scheme.mjs +126 -0
- package/main/first-run.mjs +190 -0
- package/main/folders.mjs +91 -0
- package/main/fresh-user.mjs +120 -0
- package/main/git-change.mjs +323 -0
- package/main/img-scheme.mjs +90 -0
- package/main/instruction-settings.mjs +205 -0
- package/main/ipc.mjs +1558 -0
- package/main/live-replies.mjs +77 -0
- package/main/machine.mjs +113 -0
- package/main/main.mjs +972 -0
- package/main/menu.mjs +177 -0
- package/main/notify.mjs +155 -0
- package/main/open-source-file.mjs +8 -0
- package/main/project-identity.mjs +149 -0
- package/main/provider-commands.mjs +32 -0
- package/main/rail-note.mjs +74 -0
- package/main/repeats.mjs +261 -0
- package/main/row-label.mjs +185 -0
- package/main/screen-detail.mjs +44 -0
- package/main/serve.mjs +262 -0
- package/main/settings.mjs +912 -0
- package/main/staleness.mjs +76 -0
- package/main/store/chats.mjs +188 -0
- package/main/store/home.mjs +383 -0
- package/main/store/migrate.mjs +40 -0
- package/main/store/paths.mjs +82 -0
- package/main/store/pending-writes.mjs +122 -0
- package/main/store/project-lock.mjs +200 -0
- package/main/store/project.mjs +523 -0
- package/main/store/queues.mjs +31 -0
- package/main/store/work-items.mjs +299 -0
- package/main/store/write-queue.mjs +14 -0
- package/main/store-modules.mjs +23 -0
- package/main/store.mjs +1269 -0
- package/main/supervisor.mjs +6875 -0
- package/main/task-commands.mjs +161 -0
- package/main/task-folders-offthread.mjs +84 -0
- package/main/task-folders-thread.mjs +13 -0
- package/main/task-folders.mjs +409 -0
- package/main/task-remote-control.mjs +65 -0
- package/main/task-terminals.mjs +169 -0
- package/main/terminal-access.mjs +6 -0
- package/main/updater.mjs +240 -0
- package/main/zoom-keys.mjs +54 -0
- package/main/zoom-readout.mjs +20 -0
- package/mcp/agentbox-mcp.sh +34 -0
- package/mcp/core/account.mjs +77 -0
- package/mcp/core/chat.mjs +61 -0
- package/mcp/core/documents.mjs +238 -0
- package/mcp/core/page.mjs +152 -0
- package/mcp/core/products.mjs +110 -0
- package/mcp/core/skills.mjs +126 -0
- package/mcp/core/work.mjs +377 -0
- package/mcp/stdio.mjs +70 -0
- package/mcp/tools.mjs +257 -0
- package/package.json +186 -0
- package/renderer/dist/assets/Geist-Variable-Bj2R_7yk.woff2 +0 -0
- package/renderer/dist/assets/GeistMono-Variable-Dispecij.woff2 +0 -0
- package/renderer/dist/assets/addon-fit-YJmn1quW.js +12 -0
- package/renderer/dist/assets/addon-serialize-CsFQTvP_.js +13 -0
- package/renderer/dist/assets/cel-dusk-CS5I7kJS.webp +0 -0
- package/renderer/dist/assets/cel-dusk-DUslqS6B.webp +0 -0
- package/renderer/dist/assets/cel-dusk-Jt_xVGxp.webp +0 -0
- package/renderer/dist/assets/cel-dusk-sm-BBkV-tWT.webp +0 -0
- package/renderer/dist/assets/frost-haze-CxPSOBEg.webp +0 -0
- package/renderer/dist/assets/frost-haze-sm-C_w21qgd.webp +0 -0
- package/renderer/dist/assets/gouache-valley-ChSu14-t.webp +0 -0
- package/renderer/dist/assets/gouache-valley-d9qasI6k.webp +0 -0
- package/renderer/dist/assets/gouache-valley-sm-CdLjT5Ec.webp +0 -0
- package/renderer/dist/assets/ice-BC8luINc.webp +0 -0
- package/renderer/dist/assets/ice-CP9PrKHo.webp +0 -0
- package/renderer/dist/assets/ice-river-D6ziOhLY.webp +0 -0
- package/renderer/dist/assets/ice-river-UVM2-JY_.webp +0 -0
- package/renderer/dist/assets/ice-river-bErJwYWW.webp +0 -0
- package/renderer/dist/assets/ice-river-sm-Bg1U-SIj.webp +0 -0
- package/renderer/dist/assets/ice-sm-CbVcg3_D.webp +0 -0
- package/renderer/dist/assets/index-CwiDv5bL.css +32 -0
- package/renderer/dist/assets/index-D9hCAVPl.js +684 -0
- package/renderer/dist/assets/lake-C0WaW-6E.webp +0 -0
- package/renderer/dist/assets/lake-CSKjLC5K.webp +0 -0
- package/renderer/dist/assets/lake-ETGcOb25.webp +0 -0
- package/renderer/dist/assets/lake-harbour-BCQRbrHb.webp +0 -0
- package/renderer/dist/assets/lake-harbour-B_wfXTmE.webp +0 -0
- package/renderer/dist/assets/lake-harbour-Te1pEvBh.webp +0 -0
- package/renderer/dist/assets/lake-harbour-sm-Cme_ShEg.webp +0 -0
- package/renderer/dist/assets/lake-sm-CbG72Hbv.webp +0 -0
- package/renderer/dist/assets/lino-coast-CUZHcucI.webp +0 -0
- package/renderer/dist/assets/lino-coast-DP4J7cgd.webp +0 -0
- package/renderer/dist/assets/lino-coast-kOIAffr_.webp +0 -0
- package/renderer/dist/assets/lino-coast-sm-C1Mdbgit.webp +0 -0
- package/renderer/dist/assets/moon-pines-BskgnnXR.webp +0 -0
- package/renderer/dist/assets/moon-pines-CFSIIwt0.webp +0 -0
- package/renderer/dist/assets/moon-pines-PNhdOYww.webp +0 -0
- package/renderer/dist/assets/moon-pines-sm-C6K1NomK.webp +0 -0
- package/renderer/dist/assets/orbit-rings-2XV36Ch3.webp +0 -0
- package/renderer/dist/assets/orbit-rings-C4NrcYGQ.webp +0 -0
- package/renderer/dist/assets/orbit-rings-DGLk07dT.webp +0 -0
- package/renderer/dist/assets/orbit-rings-sm-Dky3YdvL.webp +0 -0
- package/renderer/dist/assets/peach-haze-2-C6f7xnWw.webp +0 -0
- package/renderer/dist/assets/peach-haze-2-sm-Dj_Ez_Sb.webp +0 -0
- package/renderer/dist/assets/pixel-harbour-DQjqMROg.webp +0 -0
- package/renderer/dist/assets/pixel-harbour-Dw71H_bc.webp +0 -0
- package/renderer/dist/assets/pixel-harbour-kOZfm-GM.webp +0 -0
- package/renderer/dist/assets/pixel-harbour-sm-Dturjuky.webp +0 -0
- package/renderer/dist/assets/pixel-orbit-C296JVMO.webp +0 -0
- package/renderer/dist/assets/pixel-orbit-C4oMRDSx.webp +0 -0
- package/renderer/dist/assets/pixel-orbit-CqVmQ4eh.webp +0 -0
- package/renderer/dist/assets/pixel-orbit-sm-CHagC_nO.webp +0 -0
- package/renderer/dist/assets/pixel-ridge-C6LYu6uE.webp +0 -0
- package/renderer/dist/assets/pixel-ridge-CIUCEESs.webp +0 -0
- package/renderer/dist/assets/pixel-ridge-sm-BnE0F_w-.webp +0 -0
- package/renderer/dist/assets/riso-hills-7heKVtry.webp +0 -0
- package/renderer/dist/assets/riso-hills-CIjAL3J6.webp +0 -0
- package/renderer/dist/assets/riso-hills-sm-DHsnbCfP.webp +0 -0
- package/renderer/dist/assets/slate-haze-BPWdkNsw.webp +0 -0
- package/renderer/dist/assets/slate-haze-sm-B0Cb5a2W.webp +0 -0
- package/renderer/dist/assets/source-sans-3-cyrillic-ext-wght-normal-DzyfIafT.woff2 +0 -0
- package/renderer/dist/assets/source-sans-3-cyrillic-wght-normal-BMDVbyM7.woff2 +0 -0
- package/renderer/dist/assets/source-sans-3-greek-ext-wght-normal-BWSLJLk6.woff2 +0 -0
- package/renderer/dist/assets/source-sans-3-greek-wght-normal-C9H9m1vD.woff2 +0 -0
- package/renderer/dist/assets/source-sans-3-latin-ext-wght-normal-C8iNium2.woff2 +0 -0
- package/renderer/dist/assets/source-sans-3-latin-wght-normal-BqRLTx4X.woff2 +0 -0
- package/renderer/dist/assets/source-sans-3-vietnamese-wght-normal-C1uRvKPU.woff2 +0 -0
- package/renderer/dist/assets/valley-haze-BDHPqoJy.webp +0 -0
- package/renderer/dist/assets/valley-haze-sm-CTyjmPAG.webp +0 -0
- package/renderer/dist/assets/vector-dunes-DzzWLdKo.webp +0 -0
- package/renderer/dist/assets/vector-dunes-Yr9NBQUy.webp +0 -0
- package/renderer/dist/assets/vector-dunes-sm-D8MYY6ms.webp +0 -0
- package/renderer/dist/assets/watercolour-mist-BCGKN4u4.webp +0 -0
- package/renderer/dist/assets/watercolour-mist-BF-jk5MC.webp +0 -0
- package/renderer/dist/assets/watercolour-mist-sm-Ds1xzTw9.webp +0 -0
- package/renderer/dist/assets/woodblock-sea-B1um67Z9.webp +0 -0
- package/renderer/dist/assets/woodblock-sea-DKQdYs32.webp +0 -0
- package/renderer/dist/assets/woodblock-sea-sm-BJzNq8xh.webp +0 -0
- package/renderer/dist/assets/xterm-BT7tBf8A.js +27 -0
- package/renderer/dist/emulator/audio-rules.mjs +74 -0
- package/renderer/dist/emulator/data/compression/README.md +11 -0
- package/renderer/dist/emulator/data/compression/extract7z.js +1 -0
- package/renderer/dist/emulator/data/compression/extractzip.js +1 -0
- package/renderer/dist/emulator/data/compression/libunrar.js +519 -0
- package/renderer/dist/emulator/data/compression/libunrar.wasm +0 -0
- package/renderer/dist/emulator/data/cores/README.md +22 -0
- package/renderer/dist/emulator/data/cores/mgba-legacy-wasm.data +0 -0
- package/renderer/dist/emulator/data/cores/mgba-thread-legacy-wasm.data +0 -0
- package/renderer/dist/emulator/data/cores/mgba-thread-wasm.data +0 -0
- package/renderer/dist/emulator/data/cores/mgba-wasm.data +0 -0
- package/renderer/dist/emulator/data/cores/package.json +65 -0
- package/renderer/dist/emulator/data/cores/reports/mgba.json +1 -0
- package/renderer/dist/emulator/data/emulator.css +1614 -0
- package/renderer/dist/emulator/data/loader.js +170 -0
- package/renderer/dist/emulator/data/localization/README.md +63 -0
- package/renderer/dist/emulator/data/localization/af-FR.json +339 -0
- package/renderer/dist/emulator/data/localization/ar-AR.json +301 -0
- package/renderer/dist/emulator/data/localization/ben-BEN.json +301 -0
- package/renderer/dist/emulator/data/localization/de-GER.json +301 -0
- package/renderer/dist/emulator/data/localization/el-GR.json +301 -0
- package/renderer/dist/emulator/data/localization/en-US.json +339 -0
- package/renderer/dist/emulator/data/localization/es-ES.json +310 -0
- package/renderer/dist/emulator/data/localization/fa-AF.json +310 -0
- package/renderer/dist/emulator/data/localization/hi-HI.json +301 -0
- package/renderer/dist/emulator/data/localization/it-IT.json +302 -0
- package/renderer/dist/emulator/data/localization/ja-JA.json +301 -0
- package/renderer/dist/emulator/data/localization/jv-JV.json +301 -0
- package/renderer/dist/emulator/data/localization/ko-KO.json +336 -0
- package/renderer/dist/emulator/data/localization/pt-BR.json +361 -0
- package/renderer/dist/emulator/data/localization/retroarch.json +617 -0
- package/renderer/dist/emulator/data/localization/ro-RO.json +310 -0
- package/renderer/dist/emulator/data/localization/ru-RU.json +301 -0
- package/renderer/dist/emulator/data/localization/tr-TR.json +310 -0
- package/renderer/dist/emulator/data/localization/vi-VN.json +302 -0
- package/renderer/dist/emulator/data/localization/zh-CN.json +351 -0
- package/renderer/dist/emulator/data/src/GameManager.js +464 -0
- package/renderer/dist/emulator/data/src/compression.js +142 -0
- package/renderer/dist/emulator/data/src/emulator.js +6158 -0
- package/renderer/dist/emulator/data/src/gamepad.js +167 -0
- package/renderer/dist/emulator/data/src/nipplejs.js +1 -0
- package/renderer/dist/emulator/data/src/shaders.js +236 -0
- package/renderer/dist/emulator/data/src/socket.io.min.js +7 -0
- package/renderer/dist/emulator/data/src/storage.js +125 -0
- package/renderer/dist/emulator/data/version.json +5 -0
- package/renderer/dist/emulator/host.js +299 -0
- package/renderer/dist/emulator/index.html +28 -0
- package/renderer/dist/emulator/provenance.json +6 -0
- package/renderer/dist/fixtures/onboard/designs/w-n13/the-first-row.html +1 -0
- package/renderer/dist/index.html +13 -0
- package/scripts/after-install.mjs +59 -0
- package/scripts/approval-server.sh +43 -0
- package/scripts/before-publish.mjs +133 -0
- package/shared/agent-import.d.mts +13 -0
- package/shared/agent-import.mjs +252 -0
- package/shared/agents.d.mts +190 -0
- package/shared/agents.mjs +937 -0
- package/shared/analytics-events.mjs +63 -0
- package/shared/answers.d.mts +12 -0
- package/shared/answers.mjs +80 -0
- package/shared/artifact-keys.d.mts +28 -0
- package/shared/artifact-keys.mjs +140 -0
- package/shared/bridge-map.mjs +128 -0
- package/shared/claude-commands.d.mts +20 -0
- package/shared/claude-commands.generated.mjs +149 -0
- package/shared/claude-commands.mjs +131 -0
- package/shared/claude-models.generated.d.mts +15 -0
- package/shared/claude-models.generated.mjs +26 -0
- package/shared/claude-usage.d.mts +16 -0
- package/shared/claude-usage.mjs +172 -0
- package/shared/codex-commands.d.mts +4 -0
- package/shared/codex-commands.mjs +17 -0
- package/shared/codex-import.d.mts +38 -0
- package/shared/codex-import.mjs +232 -0
- package/shared/codex-modes.mjs +159 -0
- package/shared/codex-usage.mjs +180 -0
- package/shared/contracts.mjs +412 -0
- package/shared/crash-scrub.mjs +182 -0
- package/shared/dashboard.mjs +481 -0
- package/shared/dead-run-trace.mjs +127 -0
- package/shared/demo-world.mjs +415 -0
- package/shared/effort-levels.d.mts +15 -0
- package/shared/effort-levels.mjs +76 -0
- package/shared/engines.d.mts +62 -0
- package/shared/engines.mjs +389 -0
- package/shared/first-run-examples.mjs +60 -0
- package/shared/first-run-line.mjs +149 -0
- package/shared/first-run-practice.d.mts +32 -0
- package/shared/first-run-practice.mjs +254 -0
- package/shared/first-run-shape.mjs +100 -0
- package/shared/fresh-user-home.mjs +189 -0
- package/shared/hook-failure.mjs +22 -0
- package/shared/install-id.mjs +39 -0
- package/shared/instruction-defaults.json +5 -0
- package/shared/library-folder.mjs +28 -0
- package/shared/notify-rules.mjs +120 -0
- package/shared/product-name.d.mts +6 -0
- package/shared/product-name.mjs +144 -0
- package/shared/project-folder-check.d.mts +22 -0
- package/shared/project-folder-check.mjs +152 -0
- package/shared/provider-commands.d.mts +8 -0
- package/shared/provider-commands.mjs +58 -0
- package/shared/rank.d.mts +19 -0
- package/shared/rank.mjs +146 -0
- package/shared/recovery.mjs +26 -0
- package/shared/referenced-files.d.mts +11 -0
- package/shared/referenced-files.mjs +122 -0
- package/shared/repeats.d.mts +45 -0
- package/shared/repeats.mjs +193 -0
- package/shared/schemes.mjs +33 -0
- package/shared/settings-terminal.d.mts +1 -0
- package/shared/settings-terminal.mjs +14 -0
- package/shared/side-build.mjs +57 -0
- package/shared/spawn-trouble.d.mts +8 -0
- package/shared/spawn-trouble.mjs +599 -0
- package/shared/terminal-state.d.mts +1 -0
- package/shared/terminal-state.mjs +58 -0
- package/shared/usage.d.mts +53 -0
- package/shared/usage.mjs +319 -0
- package/shared/work-items.mjs +561 -0
- package/shared/work-lines.mjs +360 -0
- package/worker-permissions.json +6 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
// Types for shared/agents.mjs, which is plain ESM so that main (Node), the
|
|
2
|
+
// renderer (Vite) and the tests share one copy of the rules.
|
|
3
|
+
|
|
4
|
+
export interface AgentLike {
|
|
5
|
+
pid?: number;
|
|
6
|
+
ppid?: number;
|
|
7
|
+
sessionId?: string | null;
|
|
8
|
+
name?: string;
|
|
9
|
+
cwd?: string;
|
|
10
|
+
startedAt?: number;
|
|
11
|
+
status?: string | null;
|
|
12
|
+
waitingFor?: string | null;
|
|
13
|
+
lastActiveAt?: number;
|
|
14
|
+
// THE WHOLE OF ITS LAST REPLY, and the moment it began saying it. Not the
|
|
15
|
+
// last block of it: Claude Code writes one answer as a new line every time it
|
|
16
|
+
// stops for a tool, so the last block is routinely a "Done." under the four
|
|
17
|
+
// paragraphs that said what was done.
|
|
18
|
+
lastSaid?: string;
|
|
19
|
+
saidAt?: number;
|
|
20
|
+
// The session's own one-line title of itself, the last thing SHE typed into
|
|
21
|
+
// it, and the files it has had its hands on. Read off the transcript tail
|
|
22
|
+
// that main/agents.mjs was already reading.
|
|
23
|
+
about?: string;
|
|
24
|
+
lastAsked?: string;
|
|
25
|
+
touched?: string[];
|
|
26
|
+
// EVERY MESSAGE SHE TYPED into that session, oldest first. The first one is
|
|
27
|
+
// the ask and is what makes a five-day-old card recallable; the rest say
|
|
28
|
+
// where the thread got to.
|
|
29
|
+
asked?: { at: number; text: string }[];
|
|
30
|
+
product?: string | null;
|
|
31
|
+
productName?: string | null;
|
|
32
|
+
startedByZero?: boolean;
|
|
33
|
+
// The moment SHE said she would come back to it, and when she said so.
|
|
34
|
+
// Set by the founder alone; main/agent-schedule.mjs keeps it.
|
|
35
|
+
runAt?: number;
|
|
36
|
+
runAtSetAt?: number;
|
|
37
|
+
// The agent's own last activity at the moment she closed the row. It comes
|
|
38
|
+
// back when the agent does something newer than this.
|
|
39
|
+
doneThrough?: number;
|
|
40
|
+
repliedAt?: number;
|
|
41
|
+
statusAt?: number;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function sameInstant(a: string, b: string): boolean;
|
|
45
|
+
export function startedByZero(
|
|
46
|
+
agent: AgentLike,
|
|
47
|
+
keys?: { pids?: Set<number>; sessionIds?: Set<string> },
|
|
48
|
+
): boolean;
|
|
49
|
+
export function asksSomething(agent: AgentLike): boolean;
|
|
50
|
+
export function replyReaches(agent: AgentLike): boolean;
|
|
51
|
+
export function replyIsSwallowed(agent: AgentLike): boolean;
|
|
52
|
+
// She spoke to it and it has not come back to a stop since.
|
|
53
|
+
export function tookHerReply(agent: AgentLike): boolean;
|
|
54
|
+
export function stoppedSince(agent: AgentLike, since: number): boolean;
|
|
55
|
+
export function howLong(ms: number): string;
|
|
56
|
+
export function whereItRuns(agent: AgentLike): string;
|
|
57
|
+
export function lastWord(agent: AgentLike, budget?: number): string;
|
|
58
|
+
// The END of its last reply, which is where an agent puts its answer. `lastWord`
|
|
59
|
+
// takes the front, which is right for her words and wrong for its own.
|
|
60
|
+
export function howItEnded(raw: string | null | undefined, budget?: number): string;
|
|
61
|
+
export function lastAsk(agent: AgentLike, budget?: number): string;
|
|
62
|
+
export function whatItIs(agent: AgentLike): string;
|
|
63
|
+
export function agentTitle(agent: AgentLike, now?: number): string;
|
|
64
|
+
export function herWords(agent: AgentLike): { at: number; text: string }[];
|
|
65
|
+
|
|
66
|
+
// One shape, hers, picked 2026-08-17: the message she started it with, up to
|
|
67
|
+
// three later messages of hers, where it stopped, where it is working. There is
|
|
68
|
+
// no setting and no second shape on purpose.
|
|
69
|
+
export function agentRow(
|
|
70
|
+
agent: AgentLike,
|
|
71
|
+
now?: number,
|
|
72
|
+
): { title: string; body: string };
|
|
73
|
+
|
|
74
|
+
// How many of her own sessions the inbox takes. One list, no second
|
|
75
|
+
// tab.
|
|
76
|
+
export type AgentMode = 'all' | 'waiting' | 'off';
|
|
77
|
+
export const AGENT_MODES: AgentMode[];
|
|
78
|
+
export function reachesInbox(agent: AgentLike, now?: number, mode?: AgentMode): boolean;
|
|
79
|
+
export function progressAfterReply(agent: AgentLike, now?: number, mode?: AgentMode): boolean;
|
|
80
|
+
export function listed(agent: AgentLike): boolean;
|
|
81
|
+
export function agentKey(agent: AgentLike): string;
|
|
82
|
+
export function putOff(agent: AgentLike, now?: number): boolean;
|
|
83
|
+
export function putAway(agent: AgentLike): boolean;
|
|
84
|
+
export function byRecency(a: AgentLike, b: AgentLike): number;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Active agents, in the sidebar. The cut is a day: a session leaves the
|
|
88
|
+
* panel once the clock beside it would stop saying hours. */
|
|
89
|
+
export const RAIL_CUT_MS: number;
|
|
90
|
+
export function onTheRail(agent: AgentLike, now?: number): boolean;
|
|
91
|
+
/** The one line a rail row says: the session's own sentence, uncut. */
|
|
92
|
+
export function railLine(agent: AgentLike): string;
|
|
93
|
+
|
|
94
|
+
// THE CONVERSATION, on demand and only because she pressed something. The
|
|
95
|
+
// window keeps the opening and the end and counts the middle out loud, because
|
|
96
|
+
// 3,800 turns is a scroll bar rather than a recall.
|
|
97
|
+
export interface AgentTurnLike {
|
|
98
|
+
at: number;
|
|
99
|
+
who: 'you' | 'it';
|
|
100
|
+
text: string;
|
|
101
|
+
// A continuation of the block above rather than a new message: her shape B
|
|
102
|
+
// puts the work between the messages, so one reply can be several blocks.
|
|
103
|
+
same?: boolean;
|
|
104
|
+
// Set by `threadWindow` on the first block after the cut: counted as a
|
|
105
|
+
// continuation, drawn with its name back.
|
|
106
|
+
resumed?: boolean;
|
|
107
|
+
kind?: undefined;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// ONE THING THE AGENT RAN, between two messages. Shape B, hers.
|
|
111
|
+
export interface AgentWorkLike {
|
|
112
|
+
kind: 'work';
|
|
113
|
+
at: number;
|
|
114
|
+
verb: string;
|
|
115
|
+
subject: string;
|
|
116
|
+
output: string;
|
|
117
|
+
lines: number;
|
|
118
|
+
failed: boolean;
|
|
119
|
+
more?: number;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export type AgentEventLike = AgentTurnLike | AgentWorkLike;
|
|
123
|
+
|
|
124
|
+
// The caps, all three measured over the 40 largest transcripts on her machine
|
|
125
|
+
// on 2026-08-19: 6,070 tool calls in one session, 8MB of output, and a run of
|
|
126
|
+
// 111 tool calls standing between two messages.
|
|
127
|
+
export const WORK_CHARS: number;
|
|
128
|
+
export const WORK_RUN: number;
|
|
129
|
+
export const WORK_TOTAL: number;
|
|
130
|
+
// WHAT A TOOL CALL SAYS — the three rules her 2026-08-20 report split apart:
|
|
131
|
+
// the verb, the subject and the fold. Implemented in shared/work-lines.mjs and
|
|
132
|
+
// re-exported from shared/agents.mjs so nothing needs a second import.
|
|
133
|
+
export function workVerb(name: string): string;
|
|
134
|
+
export function workSubject(
|
|
135
|
+
input: Record<string, unknown> | null | undefined,
|
|
136
|
+
cwd?: string,
|
|
137
|
+
home?: string,
|
|
138
|
+
): string;
|
|
139
|
+
export function fullSubject(input: Record<string, unknown> | null | undefined): string;
|
|
140
|
+
export function shortPath(raw: string, cwd?: string, home?: string): string;
|
|
141
|
+
export function plainCommand(raw: string): string;
|
|
142
|
+
export const RUN_MIN: number;
|
|
143
|
+
export function groupWork<T extends { kind?: string }>(
|
|
144
|
+
events: T[],
|
|
145
|
+
bounds?: { min?: number },
|
|
146
|
+
): (T | { kind: 'run'; at: number; items: T[] })[];
|
|
147
|
+
export function runSummary(items: { verb: string }[]): string;
|
|
148
|
+
export function runFailures(items: { failed?: boolean }[]): string;
|
|
149
|
+
// THE FILE A WORK LINE CHANGED, and which entry of a change it is. The first
|
|
150
|
+
// returns '' on everything that is not an edit; the second returns null when
|
|
151
|
+
// the change does not hold the file, which is what keeps a chip from being
|
|
152
|
+
// drawn over something that would open nothing.
|
|
153
|
+
export const CHANGES_A_FILE: Set<string>;
|
|
154
|
+
export function changedFile(
|
|
155
|
+
name: string,
|
|
156
|
+
input: Record<string, unknown> | null | undefined,
|
|
157
|
+
): string;
|
|
158
|
+
export function fileInChange(
|
|
159
|
+
paths: readonly string[] | null | undefined,
|
|
160
|
+
raw: string | null | undefined,
|
|
161
|
+
): string | null;
|
|
162
|
+
export function runOverflow(more: number): string;
|
|
163
|
+
export function outputCut(shownLines: number, allLines: number): string;
|
|
164
|
+
// The window, message-aware: a run of tool calls must never push her own
|
|
165
|
+
// messages out of it. `whole` is the gap line being pressed: every message
|
|
166
|
+
// stands and only the work stays capped.
|
|
167
|
+
export function threadWindow(
|
|
168
|
+
events: AgentEventLike[],
|
|
169
|
+
bounds?: { opening?: number; keep?: number; whole?: boolean },
|
|
170
|
+
): { events: AgentEventLike[]; omitted: number };
|
|
171
|
+
// Where the gap line stands in a windowed thread: the last event the opening
|
|
172
|
+
// kept, or -1 when nothing is missing. Beside the cut, so the two cannot drift.
|
|
173
|
+
export function gapIndex(
|
|
174
|
+
events: AgentEventLike[],
|
|
175
|
+
omitted: number,
|
|
176
|
+
bounds?: { opening?: number },
|
|
177
|
+
): number;
|
|
178
|
+
export function capRuns(
|
|
179
|
+
events: AgentEventLike[],
|
|
180
|
+
bounds?: { run?: number; total?: number },
|
|
181
|
+
): AgentEventLike[];
|
|
182
|
+
// How many MESSAGES that is, which is not how many blocks are on the screen.
|
|
183
|
+
export function saidCount(events: AgentEventLike[]): number;
|
|
184
|
+
export const TRAIL_OPENING: number;
|
|
185
|
+
export const TRAIL_TURNS: number;
|
|
186
|
+
export function conversationWindow(
|
|
187
|
+
turns: AgentTurnLike[],
|
|
188
|
+
bounds?: { opening?: number; keep?: number },
|
|
189
|
+
): { turns: AgentTurnLike[]; omitted: number };
|
|
190
|
+
export function conversationGap(omitted: number): string;
|