@lloyal-labs/dev-tools 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +107 -0
- package/README.md +19 -0
- package/dist/index.d.ts +313 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +534 -0
- package/dist/index.js.map +1 -0
- package/dist/ink.d.ts +14 -0
- package/dist/ink.d.ts.map +1 -0
- package/dist/ink.js +35 -0
- package/dist/ink.js.map +1 -0
- package/dist/node.d.ts +6 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +78 -0
- package/dist/node.js.map +1 -0
- package/dist/react.d.ts +14 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +899 -0
- package/dist/react.js.map +1 -0
- package/dist/store.d.ts +29 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +96 -0
- package/dist/store.js.map +1 -0
- package/package.json +67 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Functional Source License, Version 1.1, Apache 2.0 Future License
|
|
2
|
+
|
|
3
|
+
## Abbreviation
|
|
4
|
+
|
|
5
|
+
FSL-1.1-Apache-2.0
|
|
6
|
+
|
|
7
|
+
## Notice
|
|
8
|
+
|
|
9
|
+
Copyright 2026 Lloyal Labs
|
|
10
|
+
|
|
11
|
+
## Terms and Conditions
|
|
12
|
+
|
|
13
|
+
### Licensor ("We")
|
|
14
|
+
|
|
15
|
+
The party offering the Software under these Terms and Conditions.
|
|
16
|
+
|
|
17
|
+
### The Software
|
|
18
|
+
|
|
19
|
+
The "Software" is each version of the software that we make available under
|
|
20
|
+
these Terms and Conditions, as indicated by our inclusion of these Terms and
|
|
21
|
+
Conditions with the Software.
|
|
22
|
+
|
|
23
|
+
### License Grant
|
|
24
|
+
|
|
25
|
+
Subject to your compliance with this License Grant and the Patents,
|
|
26
|
+
Redistribution and Trademark clauses below, we hereby grant you the right to
|
|
27
|
+
use, copy, modify, create derivative works, publish, and distribute the
|
|
28
|
+
Software for any Permitted Purpose identified below.
|
|
29
|
+
|
|
30
|
+
### Permitted Purpose
|
|
31
|
+
|
|
32
|
+
A "Permitted Purpose" is any purpose other than a Competing Use. A
|
|
33
|
+
"Competing Use" means making the Software available to others in a
|
|
34
|
+
commercial product or service that:
|
|
35
|
+
|
|
36
|
+
1. substitutes for the Software;
|
|
37
|
+
|
|
38
|
+
2. substitutes for any other product or service we offer using the Software
|
|
39
|
+
that exists as of the date we make the Software available; or
|
|
40
|
+
|
|
41
|
+
3. offers the same or substantially similar functionality as the Software.
|
|
42
|
+
|
|
43
|
+
Permitted Purposes specifically include using the Software:
|
|
44
|
+
|
|
45
|
+
1. for your internal use and access;
|
|
46
|
+
|
|
47
|
+
2. for non-commercial education;
|
|
48
|
+
|
|
49
|
+
3. for non-commercial research; and
|
|
50
|
+
|
|
51
|
+
4. in connection with professional services that you provide to a Licensee
|
|
52
|
+
using the Software in accordance with these Terms and Conditions.
|
|
53
|
+
|
|
54
|
+
### Patents
|
|
55
|
+
|
|
56
|
+
To the extent your use for a Permitted Purpose would necessarily infringe our
|
|
57
|
+
patents, the license grant above includes a license under our patents. If you
|
|
58
|
+
make a claim against any party that the Software infringes or contributes to
|
|
59
|
+
the infringement of any patent, then your patent license to the Software ends
|
|
60
|
+
immediately.
|
|
61
|
+
|
|
62
|
+
### Redistribution
|
|
63
|
+
|
|
64
|
+
The Terms and Conditions apply to all copies, modifications and derivatives
|
|
65
|
+
of the Software.
|
|
66
|
+
|
|
67
|
+
If you redistribute any copies, modifications or derivatives of the Software,
|
|
68
|
+
you must include a copy of or a link to these Terms and Conditions and not
|
|
69
|
+
remove any copyright notices provided in or with the Software.
|
|
70
|
+
|
|
71
|
+
### Disclaimer
|
|
72
|
+
|
|
73
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND,
|
|
74
|
+
INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE,
|
|
75
|
+
MERCHANTABILITY, TITLE OR NON-INFRINGEMENT.
|
|
76
|
+
|
|
77
|
+
IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO
|
|
78
|
+
THE SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
|
|
79
|
+
DAMAGES, EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
|
|
80
|
+
|
|
81
|
+
### Trademarks
|
|
82
|
+
|
|
83
|
+
Except for displaying the License Details and identifying us as the origin of
|
|
84
|
+
the Software, you have no right under these Terms and Conditions to use our
|
|
85
|
+
trademarks, trade names, service marks or product names.
|
|
86
|
+
|
|
87
|
+
## Grant of Future License
|
|
88
|
+
|
|
89
|
+
We hereby irrevocably grant you an additional license to use the Software
|
|
90
|
+
under the Apache License, Version 2.0 that is effective on the second
|
|
91
|
+
anniversary of the date we make the Software available. On or after that
|
|
92
|
+
date, you may use the Software under the Apache License, Version 2.0, in
|
|
93
|
+
which case the following will apply:
|
|
94
|
+
|
|
95
|
+
Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
96
|
+
use this file except in compliance with the License.
|
|
97
|
+
|
|
98
|
+
You may obtain a copy of the License at
|
|
99
|
+
|
|
100
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
101
|
+
|
|
102
|
+
Unless required by applicable law or agreed to in writing, software
|
|
103
|
+
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
104
|
+
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
105
|
+
|
|
106
|
+
See the License for the specific language governing permissions and
|
|
107
|
+
limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# @lloyal-labs/dev-tools
|
|
2
|
+
|
|
3
|
+
The dev pane for scaffolded harnesses. A cog appears when the harness runs
|
|
4
|
+
under `LLOYAL_DEV=1`; it opens a docked pane — Timeline, Sources, Settings —
|
|
5
|
+
fed entirely by the event bus the harness already emits. Nothing ships to end
|
|
6
|
+
users: without the dev signal the components render nothing.
|
|
7
|
+
|
|
8
|
+
- `@lloyal-labs/dev-tools` — the node-free model: event folding, control
|
|
9
|
+
tables, provenance vocabulary.
|
|
10
|
+
- `@lloyal-labs/dev-tools/react` — `<DevPane>`, mounted once beside the
|
|
11
|
+
shared React view (desktop + web).
|
|
12
|
+
- `@lloyal-labs/dev-tools/ink` — `<DevOverlay>`, a bounded ctrl+g overlay for
|
|
13
|
+
the terminal view.
|
|
14
|
+
- `@lloyal-labs/dev-tools/node` — `startHostResources`, the host sampler a
|
|
15
|
+
dev-gated Node boot starts beside its trace sink.
|
|
16
|
+
|
|
17
|
+
The harness itself never imports this package — the pane is a sink on the
|
|
18
|
+
bus, and the commands it dispatches are the same ones the composer already
|
|
19
|
+
sends.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The dev pane's node-free core: the event fold that turns a harness's bus
|
|
3
|
+
* stream into renderable pane state, the declarative control table a template
|
|
4
|
+
* contributes, and the provenance/tier vocabulary.
|
|
5
|
+
*
|
|
6
|
+
* Everything here is DERIVED from events the harness already emits — the pane
|
|
7
|
+
* never asks the harness for anything it doesn't already say. Events arrive
|
|
8
|
+
* structurally (`{ type: string }` + fields); this module reads only fields
|
|
9
|
+
* whose emitters are versioned alongside it (the template protocols and the
|
|
10
|
+
* agents package), and ignores what it doesn't know.
|
|
11
|
+
*
|
|
12
|
+
* @category DevTools
|
|
13
|
+
*/
|
|
14
|
+
import type { ConfigOriginValue } from '@lloyal-labs/rig';
|
|
15
|
+
export type { ConfigOriginValue } from '@lloyal-labs/rig';
|
|
16
|
+
/** A structural bus event — the pane subscribes to the SAME stream the app
|
|
17
|
+
* view folds, and narrows by `type` per field it reads. */
|
|
18
|
+
export type DevEvent = {
|
|
19
|
+
type: string;
|
|
20
|
+
} & Record<string, unknown>;
|
|
21
|
+
/** The pane's tabs. `prompt` arrives with the trace transport — the model
|
|
22
|
+
* knows the name so the tab strip can reserve it, but v1 never activates it. */
|
|
23
|
+
export type PaneTab = 'timeline' | 'sources' | 'settings';
|
|
24
|
+
/**
|
|
25
|
+
* One template-contributed Settings control — pure DATA, no components. The
|
|
26
|
+
* pane renders a segmented control and dispatches
|
|
27
|
+
* `{ type: command, [field]: value }` on click; the template's reducer and
|
|
28
|
+
* handlers already know that command (it is the same one its composer sends).
|
|
29
|
+
*/
|
|
30
|
+
export interface DevControl {
|
|
31
|
+
/** The config path this control edits (display + provenance lookup),
|
|
32
|
+
* e.g. `defaults.effort`. */
|
|
33
|
+
key: string;
|
|
34
|
+
/** The `ConfigOrigin` field carrying this key's provenance, e.g. `effort`
|
|
35
|
+
* is not tracked — use the origin key that is (`reasoningMode`), or omit. */
|
|
36
|
+
originKey?: string;
|
|
37
|
+
/** The values the segmented control offers, in display order. */
|
|
38
|
+
values: readonly string[];
|
|
39
|
+
/** The command `type` dispatched on selection. */
|
|
40
|
+
command: string;
|
|
41
|
+
/** The command field carrying the selected value. */
|
|
42
|
+
field: string;
|
|
43
|
+
/** One clause shown beside the control, e.g. `applies next run`. */
|
|
44
|
+
note?: string;
|
|
45
|
+
/** Read the current value out of the live config object. */
|
|
46
|
+
read: (config: Record<string, unknown>) => string | undefined;
|
|
47
|
+
}
|
|
48
|
+
/** A clarify exchange on the planner's lane — the planner waiting on the
|
|
49
|
+
* USER, rendered with the same call/wait/answer grammar a tool wait uses. */
|
|
50
|
+
export interface ClarifyExchange {
|
|
51
|
+
questions: string[];
|
|
52
|
+
askedAt: number;
|
|
53
|
+
answeredAt: number | null;
|
|
54
|
+
}
|
|
55
|
+
/** One lane row of the timeline: an agent's span, derived live from the bus. */
|
|
56
|
+
export interface AgentLane {
|
|
57
|
+
agentId: number;
|
|
58
|
+
parentAgentId: number | null;
|
|
59
|
+
/** The run phase current at spawn — research's own markers (`plan:start`,
|
|
60
|
+
* `research:start`, `synthesize:start`) when the template emits them;
|
|
61
|
+
* null when the wire says nothing (basic). Never guessed. */
|
|
62
|
+
role: 'planner' | 'research' | 'synth' | null;
|
|
63
|
+
spawnedAt: number;
|
|
64
|
+
doneAt: number | null;
|
|
65
|
+
/** Terminal outcome, when known. `failed` carries the reason. */
|
|
66
|
+
outcome: 'running' | 'done' | 'recovered' | 'failed';
|
|
67
|
+
failReason?: string;
|
|
68
|
+
tokenCount: number;
|
|
69
|
+
/** tool name → the call currently in flight (cleared on result). */
|
|
70
|
+
inflightTool: string | null;
|
|
71
|
+
/** The agent's delivered report — `agent:return` (voluntary) or
|
|
72
|
+
* `agent:recovered` (extracted). Null until one arrives. */
|
|
73
|
+
report: string | null;
|
|
74
|
+
reportSource: 'voluntary' | 'recovery' | null;
|
|
75
|
+
/** When the pool reclaimed the branch's KV (`branch:prune` mirror). */
|
|
76
|
+
prunedAt: number | null;
|
|
77
|
+
/** The pool's drop reason (`pool:agentDrop` mirror) — richer than the
|
|
78
|
+
* bus `agent:failed` reason. */
|
|
79
|
+
dropReason: string | null;
|
|
80
|
+
/** Set on the planner while it waits on the user (research's clarify). */
|
|
81
|
+
clarify: ClarifyExchange | null;
|
|
82
|
+
/** Per-token epistemics samples (`agent:produce` under the dev gate),
|
|
83
|
+
* time-anchored to the lane's span. h = model entropy in nats (how open
|
|
84
|
+
* the next-token choice was, over the full vocabulary); s = model
|
|
85
|
+
* surprisal in nats (−ln p of the token actually picked). Past the cap
|
|
86
|
+
* the array is decimated in place — pairs averaged (h) / maxed (s) — so
|
|
87
|
+
* the WHOLE run stays covered rather than a sliding recent window.
|
|
88
|
+
* Empty when tracing is off. */
|
|
89
|
+
epistemics: EpiSample[];
|
|
90
|
+
/** Running NLL accumulator over produced tokens — never decimated, so
|
|
91
|
+
* {@link lanePpl} stays exact for the lane's full lifetime. */
|
|
92
|
+
nllSum: number;
|
|
93
|
+
nllCount: number;
|
|
94
|
+
}
|
|
95
|
+
/** One per-token epistemics sample, stamped at fold time. */
|
|
96
|
+
/** One host-resources sample on the wire — produced by the node entry's
|
|
97
|
+
* sampler (`@lloyal-labs/dev-tools/node`), folded into {@link PaneModel.host}.
|
|
98
|
+
* Declared here so a node-free protocol can name it type-only. */
|
|
99
|
+
export interface HostResourcesEvent {
|
|
100
|
+
type: 'host:resources';
|
|
101
|
+
/** The harness process's CPU use since the last sample, as % of the
|
|
102
|
+
* whole machine (all cores). */
|
|
103
|
+
cpuPct: number;
|
|
104
|
+
/** The process's resident set, MB — on a model host this is effectively
|
|
105
|
+
* weights + KV + runtime. */
|
|
106
|
+
rssMb: number;
|
|
107
|
+
/** System-wide memory in use, MB — honest per-platform accounting
|
|
108
|
+
* (darwin: vm_stat active+wired+compressed; linux: total − MemAvailable).
|
|
109
|
+
* Absent where no honest read exists. */
|
|
110
|
+
sysMemUsedMb?: number;
|
|
111
|
+
/** Total machine memory, MB. */
|
|
112
|
+
sysMemTotalMb?: number;
|
|
113
|
+
}
|
|
114
|
+
export interface EpiSample {
|
|
115
|
+
at: number;
|
|
116
|
+
h: number;
|
|
117
|
+
s: number;
|
|
118
|
+
}
|
|
119
|
+
/** Model perplexity over the lane's produced tokens — exp(mean surprisal),
|
|
120
|
+
* the same accumulator the pool's branch tracker harvests. The one number
|
|
121
|
+
* comparable ACROSS agents; null before any sample. */
|
|
122
|
+
export declare function lanePpl(lane: AgentLane): number | null;
|
|
123
|
+
/** A harness intervention the model felt but the UI never showed until now:
|
|
124
|
+
* a guard rejecting a call before dispatch, a budget/pressure nudge, or an
|
|
125
|
+
* auth rejection on an ungranted protected tool. */
|
|
126
|
+
export interface Intervention {
|
|
127
|
+
kind: 'guard' | 'nudge' | 'auth';
|
|
128
|
+
agentId: number;
|
|
129
|
+
at: number;
|
|
130
|
+
tool?: string;
|
|
131
|
+
args?: string;
|
|
132
|
+
guard?: string;
|
|
133
|
+
message?: string;
|
|
134
|
+
reason?: string;
|
|
135
|
+
}
|
|
136
|
+
/** The admission funnel for one retrieval — `rerank:end`'s live mirror. */
|
|
137
|
+
export interface AdmissionSummary {
|
|
138
|
+
selectedPassageCount: number;
|
|
139
|
+
totalChars: number;
|
|
140
|
+
durationMs: number;
|
|
141
|
+
topResults: Array<{
|
|
142
|
+
file: string;
|
|
143
|
+
heading: string;
|
|
144
|
+
score: number;
|
|
145
|
+
textPreview?: string;
|
|
146
|
+
}>;
|
|
147
|
+
topK?: number;
|
|
148
|
+
tokenBudget?: number;
|
|
149
|
+
admittedTokens?: number;
|
|
150
|
+
threshold?: number;
|
|
151
|
+
totalScored?: number;
|
|
152
|
+
}
|
|
153
|
+
/** One tool call/result pair — the Sources tab's row. */
|
|
154
|
+
export interface Retrieval {
|
|
155
|
+
agentId: number;
|
|
156
|
+
tool: string;
|
|
157
|
+
args: string;
|
|
158
|
+
dispatchedAt: number;
|
|
159
|
+
settledAt: number | null;
|
|
160
|
+
/** The tool's JSON result string, when it settled. */
|
|
161
|
+
result: string | null;
|
|
162
|
+
contextAvailablePercent: number | null;
|
|
163
|
+
/** From the `tool:dispatch` mirror — keys the trace metadata below. */
|
|
164
|
+
callId: string | null;
|
|
165
|
+
/** explore (agent-local scoring) vs exploit (re-ranked against the query).
|
|
166
|
+
* Null when the wire never said. */
|
|
167
|
+
explore: boolean | null;
|
|
168
|
+
/** The admission funnel (`rerank:end` mirror), when the tool ran one. */
|
|
169
|
+
admission: AdmissionSummary | null;
|
|
170
|
+
/** Exploit dual scores (`entailment:content:exploit` mirror) — the
|
|
171
|
+
* before/after ranking the slope chart draws. */
|
|
172
|
+
exploitChunks: Array<{
|
|
173
|
+
heading: string;
|
|
174
|
+
toolQueryScore: number;
|
|
175
|
+
combinedScore: number;
|
|
176
|
+
}> | null;
|
|
177
|
+
/** The call is PARKED: the tool reported a transient failure and the pool
|
|
178
|
+
* will re-execute after `afterMs` (`agent:tool_retry`). Rendered as
|
|
179
|
+
* waiting-on-the-outside-world, never as bare in-flight. */
|
|
180
|
+
retry: {
|
|
181
|
+
at: number;
|
|
182
|
+
afterMs: number;
|
|
183
|
+
attempt: number;
|
|
184
|
+
} | null;
|
|
185
|
+
}
|
|
186
|
+
/** One point of the live pressure series (`agent:tick` is the bus twin of the
|
|
187
|
+
* trace's per-commit `pool:tick`). */
|
|
188
|
+
export interface PressurePoint {
|
|
189
|
+
at: number;
|
|
190
|
+
cellsUsed: number;
|
|
191
|
+
nCtx: number;
|
|
192
|
+
}
|
|
193
|
+
/** One INSTALLED ability (enabled or not), as `abilities:state` describes it: manifest-derived
|
|
194
|
+
* display fields, the config schema (field names/types for the Settings
|
|
195
|
+
* form), and stored config REDACTED to key-presence — values never ride
|
|
196
|
+
* the bus. */
|
|
197
|
+
export interface AbilityInfo {
|
|
198
|
+
name: string;
|
|
199
|
+
title?: string;
|
|
200
|
+
description?: string;
|
|
201
|
+
configSchema?: {
|
|
202
|
+
properties?: Record<string, {
|
|
203
|
+
type?: string;
|
|
204
|
+
description?: string;
|
|
205
|
+
'x-secret'?: boolean;
|
|
206
|
+
}>;
|
|
207
|
+
required?: string[];
|
|
208
|
+
};
|
|
209
|
+
config: Record<string, unknown>;
|
|
210
|
+
enabled: boolean;
|
|
211
|
+
}
|
|
212
|
+
/** The folded pane state. Everything optional is honestly absent until its
|
|
213
|
+
* event arrives — the pane renders absence, never a placeholder value. */
|
|
214
|
+
export interface PaneModel {
|
|
215
|
+
/** The current run's phase cursor — set by the template's own phase events;
|
|
216
|
+
* tags each spawn with a role. */
|
|
217
|
+
runPhase: 'planner' | 'research' | 'synth' | null;
|
|
218
|
+
/** When the current run began (`query` / `plan:start`) — the timeline's
|
|
219
|
+
* anchor. Null before the first run. */
|
|
220
|
+
runStartAt: number | null;
|
|
221
|
+
/** When the run delivered its `answer` — the run-complete marker. The
|
|
222
|
+
* phase gap between pools has no open lanes but the run is still LIVE:
|
|
223
|
+
* liveness is runStartAt-to-runEndedAt, not lane-counting. */
|
|
224
|
+
runEndedAt: number | null;
|
|
225
|
+
/** When a clarify continuation re-entered planning — guards the paired
|
|
226
|
+
* `plan:start` → `query` that follows from resetting the run. */
|
|
227
|
+
runContinuedAt: number | null;
|
|
228
|
+
/** The dev gate — `config:loaded.dev`, the boot's LLOYAL_DEV signal carried
|
|
229
|
+
* on the wire. The FAB renders only when true. */
|
|
230
|
+
dev: boolean;
|
|
231
|
+
/** From basic's `ready.facts` — display only (research has no ready
|
|
232
|
+
* event; its status area degrades gracefully). */
|
|
233
|
+
facts: {
|
|
234
|
+
surface: string;
|
|
235
|
+
model: {
|
|
236
|
+
id: string;
|
|
237
|
+
sizeBytes: number;
|
|
238
|
+
};
|
|
239
|
+
abilities: string[];
|
|
240
|
+
} | null;
|
|
241
|
+
/** The live resolved config (`config:loaded` / `config:updated`, ability
|
|
242
|
+
* values already redacted by the harness). */
|
|
243
|
+
config: Record<string, unknown> | null;
|
|
244
|
+
/** Per-field provenance. */
|
|
245
|
+
origin: Record<string, ConfigOriginValue> | null;
|
|
246
|
+
/** Where the last save landed: a real path (edge) or null (served —
|
|
247
|
+
* "applied for this session"). Undefined until a save happens. */
|
|
248
|
+
lastSavedTo: string | null | undefined;
|
|
249
|
+
lanes: Map<number, AgentLane>;
|
|
250
|
+
retrievals: Retrieval[];
|
|
251
|
+
pressure: PressurePoint[];
|
|
252
|
+
/** Host samples (`host:resources`, dev-gated boots only): the harness
|
|
253
|
+
* process's cpu% of the whole machine, its resident set, and system
|
|
254
|
+
* memory (used/total MB, null where the platform offers no honest
|
|
255
|
+
* read) — the machine-pressure twin of the kv series. */
|
|
256
|
+
host: {
|
|
257
|
+
at: number;
|
|
258
|
+
cpu: number;
|
|
259
|
+
rssMb: number;
|
|
260
|
+
memUsedMb: number | null;
|
|
261
|
+
memTotalMb: number;
|
|
262
|
+
}[];
|
|
263
|
+
/** Guard rejections, nudges, auth rejections — in arrival order. */
|
|
264
|
+
interventions: Intervention[];
|
|
265
|
+
/** Enabled abilities (`abilities:state`) — the Settings nav + form source.
|
|
266
|
+
* Null until the harness says; a harness that never emits it degrades to
|
|
267
|
+
* the redacted config keys. */
|
|
268
|
+
abilities: AbilityInfo[] | null;
|
|
269
|
+
/** The structured plan (`plan` with research intent) — task descriptions
|
|
270
|
+
* in fanout order, which is also flat-mode spawn order. */
|
|
271
|
+
plan: {
|
|
272
|
+
intent: string;
|
|
273
|
+
tasks: string[];
|
|
274
|
+
} | null;
|
|
275
|
+
/** True between a clarify plan and the follow-up planning cycle — the
|
|
276
|
+
* next plan:start/query CONTINUES the run instead of resetting it. */
|
|
277
|
+
clarifying: boolean;
|
|
278
|
+
/** The first event's arrival time — the timeline's 0. */
|
|
279
|
+
t0: number | null;
|
|
280
|
+
eventCount: number;
|
|
281
|
+
}
|
|
282
|
+
export declare function createPaneModel(): PaneModel;
|
|
283
|
+
export declare function foldEvent(m: PaneModel, ev: DevEvent, now: number): void;
|
|
284
|
+
/** Live when any lane is still open — the run is producing and the pane's
|
|
285
|
+
* clocks (elapsed, park countdowns) must keep advancing even between
|
|
286
|
+
* events. */
|
|
287
|
+
export declare function isLive(m: PaneModel): boolean;
|
|
288
|
+
/** The latest pressure reading as a 0–100 used percentage, or null before the
|
|
289
|
+
* first tick. */
|
|
290
|
+
export declare function pressurePercent(m: PaneModel): number | null;
|
|
291
|
+
/** Downsample the pressure series to at most `buckets` points for a strip
|
|
292
|
+
* chart — plotted against TIME (the tick rate slows as the context fills, so
|
|
293
|
+
* index-based plotting would stretch exactly the interesting part). */
|
|
294
|
+
export declare function pressureStrip(m: PaneModel, buckets: number): {
|
|
295
|
+
at: number;
|
|
296
|
+
pct: number;
|
|
297
|
+
}[];
|
|
298
|
+
/** A fixed-width unicode sparkline of the pressure series — pure, node-free
|
|
299
|
+
* (the ink overlay renders it; anything else may too). */
|
|
300
|
+
export declare function sparkline(m: PaneModel, width: number): string;
|
|
301
|
+
/** Display order + one-clause meaning for each provenance rung — the six real
|
|
302
|
+
* values, nothing invented. */
|
|
303
|
+
export declare const PROVENANCE_RUNGS: readonly {
|
|
304
|
+
rung: ConfigOriginValue;
|
|
305
|
+
means: string;
|
|
306
|
+
}[];
|
|
307
|
+
/** The tier each well-known config key answers to. The runtime sets the tier,
|
|
308
|
+
* not the UI — it decides whether a control can exist at all. */
|
|
309
|
+
export type ConfigTier = 'session' | 'reload' | 'boot';
|
|
310
|
+
export declare const KEY_TIERS: Readonly<Record<string, ConfigTier>>;
|
|
311
|
+
/** Read a dotted config path off the live config object. */
|
|
312
|
+
export declare function readConfigPath(config: Record<string, unknown> | null, path: string): unknown;
|
|
313
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|