@buildaharness/aielia 0.3.1 → 0.3.2
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 +30 -7
- package/dist/agent-loop.d.ts +8 -8
- package/dist/ask-clarification-service.d.ts +1 -1
- package/dist/ask-mode-flag.d.ts +1 -1
- package/dist/assistant-session.d.ts +1 -1
- package/dist/assistant-types.d.ts +3 -3
- package/dist/assistant.d.ts +12 -12
- package/dist/batch-research-fixtures.d.ts +1 -1
- package/dist/benchmark-injected-failure.d.ts +1 -1
- package/dist/bin-CqkqT6KK.js +2107 -0
- package/dist/bin-CqkqT6KK.js.map +1 -0
- package/dist/bin-sea-bootstrap.d.ts +1 -0
- package/dist/bin.d.ts +1 -0
- package/dist/claude-cli-llm-client.d.ts +2 -2
- package/dist/cli-args.d.ts +20 -0
- package/dist/cli-icons.d.ts +28 -0
- package/dist/{cli-session-D0uLdT2A.js → cli-session-BiX2DOni.js} +550 -121
- package/dist/cli-session-BiX2DOni.js.map +1 -0
- package/dist/cli.d.ts +31 -1
- package/dist/cli.js +1 -1691
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +14 -6
- package/dist/contradiction-checker.d.ts +1 -1
- package/dist/diff-format.d.ts +16 -0
- package/dist/execution-mode.d.ts +1 -1
- package/dist/fact-extraction.d.ts +4 -4
- package/dist/failure-mode-matcher.d.ts +1 -1
- package/dist/file-tools-mcp-server.mjs +2 -2
- package/dist/file-tools.d.ts +10 -2
- package/dist/harness-bridge.d.ts +4 -4
- package/dist/index.js +68 -68
- package/dist/index.js.map +1 -1
- package/dist/ink-select-prompt.d.ts +21 -0
- package/dist/markdown-line.d.ts +42 -0
- package/dist/mcp-server-asset.d.ts +24 -0
- package/dist/memory-service.d.ts +2 -2
- package/dist/network-containment.d.ts +1 -1
- package/dist/node-display-names.d.ts +1 -1
- package/dist/one-loop-flag.d.ts +1 -1
- package/dist/plan-drafting-service.d.ts +1 -1
- package/dist/plan-drafting.d.ts +4 -4
- package/dist/plan-mode-flag.d.ts +1 -1
- package/dist/plan-sketch-service.d.ts +1 -1
- package/dist/plan-sketch.d.ts +1 -1
- package/dist/plan-store.d.ts +2 -2
- package/dist/plan-templates/index.d.ts +1 -1
- package/dist/plan-verification.d.ts +1 -1
- package/dist/scripted-llm-client.d.ts +1 -1
- package/dist/sea-cache.d.ts +9 -0
- package/dist/self-update.d.ts +101 -0
- package/dist/shell-tools.d.ts +1 -1
- package/dist/spike.js.map +1 -1
- package/dist/tool-control-plane.d.ts +1 -1
- package/dist/tool-policy.d.ts +1 -1
- package/dist/tool-step.d.ts +10 -0
- package/dist/trace-events.d.ts +5 -5
- package/dist/trust-tagging.d.ts +1 -1
- package/dist/{tui-app-DxLPSGh2.js → tui-app-4_TrzESz.js} +176 -20
- package/dist/tui-app-4_TrzESz.js.map +1 -0
- package/dist/tui-app.d.ts +34 -9
- package/dist/tui-mode-flag.d.ts +1 -1
- package/dist/turn-intent-classifier.d.ts +5 -5
- package/dist/turn-policy.d.ts +1 -1
- package/dist/update-check-flag.d.ts +11 -0
- package/dist/version.d.ts +6 -0
- package/package.json +7 -3
- package/dist/cli-session-D0uLdT2A.js.map +0 -1
- package/dist/tui-app-DxLPSGh2.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
# @buildaharness/aielia
|
|
2
2
|
|
|
3
|
-
A general-purpose, everyday-use
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
A general-purpose, everyday-use AI agent you can hand real, multi-step work to —
|
|
4
|
+
research across a list, files to go through, a message to draft and send. It runs
|
|
5
|
+
on the full 11-layer harness (`@buildaharness/harness`) every turn, which controls
|
|
6
|
+
what it may do, what it may believe, and what a job may cost — light enough for
|
|
7
|
+
"what's the weather", and it stages anything that can't be undone (`write_file`,
|
|
8
|
+
`run_shell_command`, `send_email`) for your approval. Website: https://myaielia.com.
|
|
6
9
|
|
|
7
10
|
## Design
|
|
8
11
|
|
|
@@ -13,7 +16,7 @@ policy-governed gates decide what's actually allowed to happen — see
|
|
|
13
16
|
ADR-003 (harness consolidation) for the 5-primitive model this
|
|
14
17
|
assistant's design is one instance of. **As of 2026-09-06 the tool loop
|
|
15
18
|
runs inside the harness by default** (`ASSISTANT_ONE_LOOP`, default
|
|
16
|
-
`enabled` —
|
|
19
|
+
`enabled` — the internal plan): `HarnessRuntime`'s
|
|
17
20
|
own `driveMainLoop` calls `AgentLoop`'s tool-calling machinery one iteration
|
|
18
21
|
at a time, and the per-tool-call gate composes the harness's own live
|
|
19
22
|
`ControlState` with the turn-local one accumulated from this turn's prior
|
|
@@ -367,7 +370,7 @@ follow-up `needs_clarification` batch if it's still unresolved once the first ba
|
|
|
367
370
|
folded in, resolved through this exact same path.
|
|
368
371
|
|
|
369
372
|
Two kinds of sites can raise a `questions` batch: the Trajectory Supervisor's `ASK_USER` directive
|
|
370
|
-
(see
|
|
373
|
+
(see ADR-005 — currently inert by default, since
|
|
371
374
|
`HARNESS_TRAJECTORY_SUPERVISOR` stays off) and a handful of deterministic sites with a genuinely
|
|
372
375
|
enumerable option set, e.g. a batch-research budget running out ("continue with N more steps" /
|
|
373
376
|
"stop and summarize" / "let me clarify the goal"). A site with no discrete option set keeps
|
|
@@ -382,7 +385,7 @@ time, or a per-`turn()` `{ askMode: 'enabled' }` override — following `oneLoop
|
|
|
382
385
|
env/build-time/per-call chain. The effective mode is always the most restrictive of (global
|
|
383
386
|
config, per-session override, per-call-site opt-out): a narrower scope can turn structured
|
|
384
387
|
questions off even when a broader one left them on, never the reverse. See
|
|
385
|
-
|
|
388
|
+
ADR-006 for the full design and why the default hasn't
|
|
386
389
|
flipped to `'enabled'` yet — the mechanism and its conformance suite are done, but the benchmark
|
|
387
390
|
run that would justify the flip hasn't happened.
|
|
388
391
|
|
|
@@ -549,7 +552,7 @@ that opens raw sockets and ignores those env vars entirely. That tradeoff —
|
|
|
549
552
|
weaker than real OS-native sandboxing (Linux seccomp/landlock, macOS
|
|
550
553
|
`sandbox-exec`, Windows job objects) or a container-per-command, but
|
|
551
554
|
identical across the CLI and the Tauri desktop app with no new dependency —
|
|
552
|
-
is deliberate; see
|
|
555
|
+
is deliberate; see the internal plan's Decision 6
|
|
553
556
|
for the full comparison.
|
|
554
557
|
|
|
555
558
|
**The command's output gets the same trust boundary as `fetch_url`/`web_search`.**
|
|
@@ -664,6 +667,26 @@ piped-stdin case an intentional choice instead of an implicit one. An
|
|
|
664
667
|
unrecognized value is ignored, with a startup warning, rather than silently
|
|
665
668
|
picking one of the two behaviors for you.
|
|
666
669
|
|
|
670
|
+
#### Updates and the update check
|
|
671
|
+
|
|
672
|
+
`aielia --version` / `aielia --help` print and exit. `aielia update` replaces the
|
|
673
|
+
**standalone binary** with the latest release (`aielia update --dry-run` only
|
|
674
|
+
reports what it would do): it downloads the binary for your platform, verifies
|
|
675
|
+
its SHA-256 against the hash published in the release manifest at
|
|
676
|
+
`https://myaielia.com/aielia-latest.json` (HTTPS only — anything else is
|
|
677
|
+
refused), and only then swaps it in. A copy installed with npm can't
|
|
678
|
+
self-replace, so there it prints `npm update -g @buildaharness/aielia` instead.
|
|
679
|
+
|
|
680
|
+
While an interactive session starts, the CLI also does a **passive update
|
|
681
|
+
check**: at most once per 24 hours, one plain `GET` of that manifest (falling
|
|
682
|
+
back to GitHub's Releases API) — no query string, no identifiers, default
|
|
683
|
+
User-Agent only — and, if a newer version exists, a one-line notice. The request
|
|
684
|
+
is visible to GitHub and Cloudflare (which serve myaielia.com). It never runs
|
|
685
|
+
for scripted use (stdin not a TTY, or `ASSISTANT_NON_INTERACTIVE_APPROVAL` set).
|
|
686
|
+
Turn it off with `ASSISTANT_UPDATE_CHECK=disabled` or
|
|
687
|
+
`/config set updateCheck disabled`; the explicit `aielia update` still works
|
|
688
|
+
with it off.
|
|
689
|
+
|
|
667
690
|
#### Web search needs a Brave Search API key
|
|
668
691
|
|
|
669
692
|
Brave Search is the only backend `web_search` supports. Enable web tools with
|
package/dist/agent-loop.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export type ToolLoopResult = {
|
|
|
26
26
|
reason: string;
|
|
27
27
|
};
|
|
28
28
|
/**
|
|
29
|
-
* R2 of
|
|
29
|
+
* R2 of the internal plan: thrown by a harness-driven proposer
|
|
30
30
|
* (createHarnessProposer, below) when runToolIterationStep produces a 'needs_approval' or
|
|
31
31
|
* 'escalated' ToolLoopResult — the harness's own execute() rethrows anything satisfying
|
|
32
32
|
* isHarnessPauseSignal unexamined (no SYSTEM_ERROR evidence, no task-FAILED transition), so this
|
|
@@ -40,7 +40,7 @@ export declare class OneLoopPause extends Error implements HarnessPauseSignal {
|
|
|
40
40
|
kind: 'needs_approval' | 'escalated';
|
|
41
41
|
}>;
|
|
42
42
|
/**
|
|
43
|
-
* P10 of
|
|
43
|
+
* P10 of the internal plan: the plan task (if any) that was RUNNING
|
|
44
44
|
* — i.e. whichever task `execute()` was calling this proposer for — when `result` was
|
|
45
45
|
* produced, threaded from `ToolExecutorContext.currentTaskId`. Lets the catcher
|
|
46
46
|
* (assistant.ts's `buildToolLoopPauseResult`) check INV-36's trust condition without
|
|
@@ -54,7 +54,7 @@ export declare class OneLoopPause extends Error implements HarnessPauseSignal {
|
|
|
54
54
|
kind: 'needs_approval' | 'escalated';
|
|
55
55
|
}>,
|
|
56
56
|
/**
|
|
57
|
-
* P10 of
|
|
57
|
+
* P10 of the internal plan: the plan task (if any) that was RUNNING
|
|
58
58
|
* — i.e. whichever task `execute()` was calling this proposer for — when `result` was
|
|
59
59
|
* produced, threaded from `ToolExecutorContext.currentTaskId`. Lets the catcher
|
|
60
60
|
* (assistant.ts's `buildToolLoopPauseResult`) check INV-36's trust condition without
|
|
@@ -164,7 +164,7 @@ export declare class AgentLoop {
|
|
|
164
164
|
*/
|
|
165
165
|
createControlPlaneState(): TurnControlPlaneState;
|
|
166
166
|
/**
|
|
167
|
-
* R2 of
|
|
167
|
+
* R2 of the internal plan: builds the real toolExecutors['default']
|
|
168
168
|
* entry HarnessBridge.run() swaps in when the one-loop flag is enabled — a proposer that calls
|
|
169
169
|
* runToolIterationStep once per driveMainLoop iteration and translates its discriminated result
|
|
170
170
|
* into the primitives D0/D1 already built: a plain return (status 'continue', no output yet) for
|
|
@@ -198,7 +198,7 @@ export declare class AgentLoop {
|
|
|
198
198
|
riskHint?: TurnIntentClassification['riskLevel'];
|
|
199
199
|
}): (toolCtx: ToolExecutorContext) => Promise<unknown>;
|
|
200
200
|
/**
|
|
201
|
-
* R3 of
|
|
201
|
+
* R3 of the internal plan: the wiring-level counterpart to
|
|
202
202
|
* `createHarnessProposer` above — builds the same `messages`/`tools` shape `runToolLoop` builds
|
|
203
203
|
* (system prompt + transcript + user message; whichever of FILE_TOOLS/WEB_TOOLS/SHELL_TOOLS/
|
|
204
204
|
* ACTION_TOOLS/REMINDER_TOOLS are configured) so `assistant.ts`'s `runTurn` doesn't need to
|
|
@@ -213,7 +213,7 @@ export declare class AgentLoop {
|
|
|
213
213
|
sources: AssistantSource[];
|
|
214
214
|
};
|
|
215
215
|
/**
|
|
216
|
-
* R4 of
|
|
216
|
+
* R4 of the internal plan: the batch-research counterpart to
|
|
217
217
|
* `createOneLoopProposer` above — routes `runBatchToolLoop`'s probe → calibrate → confirm-gate
|
|
218
218
|
* → resolve-remaining → synthesize sequence through the same harness-driven proposer mechanism,
|
|
219
219
|
* instead of batch research remaining a second code path that (per R3) never reached the
|
|
@@ -280,7 +280,7 @@ export declare class AgentLoop {
|
|
|
280
280
|
private runToolIterations;
|
|
281
281
|
/**
|
|
282
282
|
* One iteration's worth of `runToolIterations`' ReAct loop, extracted (R1 of the D2
|
|
283
|
-
* one-loop-rewire follow-up plan,
|
|
283
|
+
* one-loop-rewire follow-up plan, the internal plan) so a
|
|
284
284
|
* harness-driven proposer (R2) can call this directly, once per `driveMainLoop` iteration,
|
|
285
285
|
* instead of only ever being driven by `runToolIterations`' own `for` loop. Preserves every
|
|
286
286
|
* early-return branch of the original loop body exactly — the unparsed-tool-call retry,
|
|
@@ -350,7 +350,7 @@ export declare class AgentLoop {
|
|
|
350
350
|
private executeToolCall;
|
|
351
351
|
/**
|
|
352
352
|
* Trajectory Supervisor GATHER_EVIDENCE host (S5 of
|
|
353
|
-
*
|
|
353
|
+
* the internal plan). A bounded, strictly read-only tool
|
|
354
354
|
* loop the harness calls (via HarnessRunOptions.runInvestigation) when the supervisor
|
|
355
355
|
* decides the run is stuck for lack of a fact.
|
|
356
356
|
*
|
|
@@ -25,7 +25,7 @@ export interface AskClarificationPendingState {
|
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
27
|
* Owns the ask-question "staged clarification, resolved by ID" pattern — Q2 of
|
|
28
|
-
*
|
|
28
|
+
* the internal plan, structurally mirroring ActionApprovalService (T4 of
|
|
29
29
|
* the file-tools plan: what gets resolved is exactly what was staged, never re-derived from a
|
|
30
30
|
* second LLM call). Unlike a write/shell action, resolving a clarification means resuming a
|
|
31
31
|
* *harness run* — the checkpoint HarnessBridge would otherwise have deleted on any thrown
|
package/dist/ask-mode-flag.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* unit-testable in isolation, mirroring one-loop-flag.ts's exact shape (module-level default,
|
|
4
4
|
* an injectable resolver so tests never touch real process.env).
|
|
5
5
|
*
|
|
6
|
-
* Q2 of
|
|
6
|
+
* Q2 of the internal plan: the "global flag" control point (tier 1 of
|
|
7
7
|
* Q1's three-tier INV-29 resolution) for the batched-questions ask-question mechanism, resolved
|
|
8
8
|
* at this package's boundary and handed to `@buildaharness/harness`'s `resolveAskMode()` as
|
|
9
9
|
* `globalEnabled`. 'disabled' (the default, for the whole rollout window, per Q1's
|
|
@@ -6,7 +6,7 @@ import { ShellToolsContext } from './shell-tools.js';
|
|
|
6
6
|
import { ActionToolsContext } from './action-tools.js';
|
|
7
7
|
import { SpendCapConfig, SpendState } from './spend-cap.js';
|
|
8
8
|
/**
|
|
9
|
-
* P1 of
|
|
9
|
+
* P1 of the internal plan — session/turn-routing switch, distinct from a
|
|
10
10
|
* tool-permission list. While `active`, `assistant.ts`'s turn entry point routes every incoming
|
|
11
11
|
* message for this session to `PlanDraftingService` instead of `TurnInterpreter`'s normal
|
|
12
12
|
* classify/tool-loop pipeline (see PlanDraftingService's own doc comment for the two designed
|
|
@@ -29,7 +29,7 @@ export interface AssistantTrace {
|
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
31
|
* Which code path actually produced this turn's reply — a test/telemetry affordance for
|
|
32
|
-
*
|
|
32
|
+
* the internal plan phase B1 (the browser-e2e lane that unblocks the
|
|
33
33
|
* ASSISTANT_ONE_LOOP default-flip, R5 of the D2 one-loop rewire). The reply text itself is
|
|
34
34
|
* identical across all three by design (INV-19); this field is how a test asserts "the flag
|
|
35
35
|
* changed which path ran" without diffing internal traces.
|
|
@@ -45,7 +45,7 @@ export interface AssistantTrace {
|
|
|
45
45
|
export type ProposerKind = 'posthoc' | 'flat-oneloop' | 'batch-oneloop';
|
|
46
46
|
export interface AssistantTurnResult {
|
|
47
47
|
/**
|
|
48
|
-
* `needs_clarification` (Q2 of
|
|
48
|
+
* `needs_clarification` (Q2 of the internal plan): a structured
|
|
49
49
|
* ask-question escalation (a populated `EscalationHalt.blocker.questions`, Q0) was staged for
|
|
50
50
|
* resume via AskClarificationService instead of terminating the turn — pass
|
|
51
51
|
* `pendingClarificationId` + a completed `AskResponse` back into
|
|
@@ -54,7 +54,7 @@ export interface AssistantTurnResult {
|
|
|
54
54
|
* every escalation on the pre-existing `escalated`/`reply: null` path, byte-identical to today.
|
|
55
55
|
*/
|
|
56
56
|
/**
|
|
57
|
-
* `needs_plan_approval` (P2 of
|
|
57
|
+
* `needs_plan_approval` (P2 of the internal plan): a drafted plan
|
|
58
58
|
* (plan mode's P1/P3) was staged for the mandatory whole-plan approval gate instead of
|
|
59
59
|
* continuing to revise — pass `planApprovalId` back into
|
|
60
60
|
* `turn(message, { planApprovalId, planDecision, edits? })` to resolve it. Every drafted plan
|
package/dist/assistant.d.ts
CHANGED
|
@@ -42,7 +42,7 @@ export interface TurnOptions {
|
|
|
42
42
|
approved?: boolean;
|
|
43
43
|
pendingActionId?: string;
|
|
44
44
|
/**
|
|
45
|
-
* Q2 of
|
|
45
|
+
* Q2 of the internal plan — resolves a staged `needs_clarification`
|
|
46
46
|
* result (see AssistantTurnResult.pendingClarificationId) with the user's answer. Mirrors
|
|
47
47
|
* `pendingActionId`/`approved`'s own "resolved by ID, never re-derived" shape:
|
|
48
48
|
* `clarificationAnswer` must answer exactly the questions that were staged, validated
|
|
@@ -51,7 +51,7 @@ export interface TurnOptions {
|
|
|
51
51
|
pendingClarificationId?: string;
|
|
52
52
|
clarificationAnswer?: AskResponse;
|
|
53
53
|
/**
|
|
54
|
-
* P2 of
|
|
54
|
+
* P2 of the internal plan — resolves a staged `needs_plan_approval`
|
|
55
55
|
* result (see AssistantTurnResult.planApprovalId) with the user's decision. Mirrors
|
|
56
56
|
* `pendingActionId`/`approved`'s "resolved by ID, never re-derived" shape: what gets
|
|
57
57
|
* approved/declined is exactly the plan that was staged, never re-drafted.
|
|
@@ -198,7 +198,7 @@ export interface PersonalAssistantOptions {
|
|
|
198
198
|
*/
|
|
199
199
|
spendCap?: SpendCapConfig;
|
|
200
200
|
/**
|
|
201
|
-
* R2 of
|
|
201
|
+
* R2 of the internal plan — see one-loop-flag.ts's doc comment for the
|
|
202
202
|
* full rollout rationale. 'disabled' (the default, for the whole R2-R4 rollout window): today's
|
|
203
203
|
* behavior, byte-for-byte — HarnessBridge.run() always uses `() => draftReply` as its toolFn,
|
|
204
204
|
* regardless of whether a caller happens to supply a proposer. 'enabled' lets a supplied
|
|
@@ -208,7 +208,7 @@ export interface PersonalAssistantOptions {
|
|
|
208
208
|
*/
|
|
209
209
|
oneLoopMode?: OneLoopMode;
|
|
210
210
|
/**
|
|
211
|
-
* Q2 of
|
|
211
|
+
* Q2 of the internal plan — global-flag control point (tier 1 of
|
|
212
212
|
* INV-29) for the ask-question mechanism. Undefined (the default) falls back to
|
|
213
213
|
* `DEFAULT_ASK_MODE` ('disabled') — today's behavior, byte-for-byte: every escalation stays on
|
|
214
214
|
* the plain `escalated`/`reply: null` path. Only cli.ts/chat-ui's App.tsx (or an equivalent
|
|
@@ -218,7 +218,7 @@ export interface PersonalAssistantOptions {
|
|
|
218
218
|
*/
|
|
219
219
|
askMode?: AskMode;
|
|
220
220
|
/**
|
|
221
|
-
* P11 of
|
|
221
|
+
* P11 of the internal plan — see plan-mode-flag.ts's doc comment for
|
|
222
222
|
* the full rollout rationale. 'legacy' (the default, for the whole rollout window): P3's
|
|
223
223
|
* judgment-based auto-trigger below never fires, so `turn()` never auto-enters plan mode's
|
|
224
224
|
* exclusive drafting+approval loop — today's behavior, byte-for-byte, for every real user turn.
|
|
@@ -255,7 +255,7 @@ export declare class PersonalAssistant {
|
|
|
255
255
|
private readonly dangerouslySkipPermissions;
|
|
256
256
|
/** Whenever any of fileTools/webTools/shellTools is configured, `turn()` routes through AgentLoop instead of a single plain chat call — computed once here since it never changes for the lifetime of an instance. */
|
|
257
257
|
private readonly toolLoopWillRun;
|
|
258
|
-
/** R3 of
|
|
258
|
+
/** R3 of the internal plan — mirrors the same flag HarnessBridge was given at construction, kept here too so runTurn can decide whether to defer the tool loop into a harness-driven proposer instead of precomputing draftReply. See PersonalAssistantOptions.oneLoopMode's doc comment. */
|
|
259
259
|
private readonly oneLoopMode;
|
|
260
260
|
/** Q2 — global-flag tier of the ask-question mechanism's three-tier INV-29 resolution. See PersonalAssistantOptions.askMode's doc comment. */
|
|
261
261
|
private readonly askMode;
|
|
@@ -266,7 +266,7 @@ export declare class PersonalAssistant {
|
|
|
266
266
|
* AssistantTurnResult.proposerKind, and emitted as a 'proposer_selected' trace event from
|
|
267
267
|
* runTurn itself. A single mutable field is safe because `turn()` is awaited end to end (turns
|
|
268
268
|
* never overlap within one instance). See AssistantTurnResult.proposerKind and
|
|
269
|
-
*
|
|
269
|
+
* the internal plan phase B1.
|
|
270
270
|
*/
|
|
271
271
|
private lastProposerKind;
|
|
272
272
|
private readonly memoryService;
|
|
@@ -309,7 +309,7 @@ export declare class PersonalAssistant {
|
|
|
309
309
|
/** Ends the current conversation — see AssistantSession.clearSession's doc comment for exactly what is and isn't cleared. */
|
|
310
310
|
clearSession(sessionId: string): Promise<void>;
|
|
311
311
|
/**
|
|
312
|
-
* P1 of
|
|
312
|
+
* P1 of the internal plan — explicit entry point into plan mode's
|
|
313
313
|
* exclusive drafting state. No production caller yet: P3 will later set this automatically from
|
|
314
314
|
* a judgment-based trigger ahead of TurnInterpreter's classification. Until then this is reached
|
|
315
315
|
* only by a caller (a future `/plan` CLI command, or a test) that wants to exercise the drafting
|
|
@@ -322,7 +322,7 @@ export declare class PersonalAssistant {
|
|
|
322
322
|
draftId: string;
|
|
323
323
|
}>;
|
|
324
324
|
/**
|
|
325
|
-
* P7 of
|
|
325
|
+
* P7 of the internal plan — the raw current `PlanRecord` for this
|
|
326
326
|
* session, regardless of `mode`, so a caller (chat-ui's persistent banner, the CLI's `/plan
|
|
327
327
|
* show`) can display live drafting/awaiting-approval state independent of any single turn's
|
|
328
328
|
* own result (a `needs_plan_approval` result only carries a snapshot at the moment it's
|
|
@@ -331,7 +331,7 @@ export declare class PersonalAssistant {
|
|
|
331
331
|
*/
|
|
332
332
|
getPlanState(sessionId: string): Promise<PlanRecord | null>;
|
|
333
333
|
/**
|
|
334
|
-
* P9 of
|
|
334
|
+
* P9 of the internal plan — the lightweight plan-sketch delegate: a
|
|
335
335
|
* cheaper "just go research and draft an approach" path than plan mode's durable task-graph
|
|
336
336
|
* machinery (P0-P8), explicitly invoked (a CLI `/plan sketch <request>` command, a chat-ui
|
|
337
337
|
* "Sketch a plan" action) rather than auto-triggered. Returns advice in the reply text — it
|
|
@@ -376,7 +376,7 @@ export declare class PersonalAssistant {
|
|
|
376
376
|
/**
|
|
377
377
|
* `/memory confirm <n|category>` — `selector` is either a 1-based index into `/memory`'s
|
|
378
378
|
* flat, display-order "Pending confirmation" listing, or one of FactCategory's names for a
|
|
379
|
-
* bulk confirm. Phase 3 of
|
|
379
|
+
* bulk confirm. Phase 3 of the internal plan.
|
|
380
380
|
* `conflictNotices` (if any) are advisory only — every confirmed fact is promoted regardless,
|
|
381
381
|
* matching how every other contradiction check in this codebase never gates belief admission.
|
|
382
382
|
*/
|
|
@@ -411,7 +411,7 @@ export declare class PersonalAssistant {
|
|
|
411
411
|
/**
|
|
412
412
|
* Shared by the flag-OFF flat/batch tool loop's own needs_approval/escalated ToolLoopResult and
|
|
413
413
|
* the flag-ON harness-driven proposer's equivalent OneLoopPause (R3 of
|
|
414
|
-
*
|
|
414
|
+
* the internal plan, see runTurn's two call sites) — "the model wants
|
|
415
415
|
* to write/run/send something" or "the tool loop gave up" means the same thing to the caller
|
|
416
416
|
* regardless of which loop discovered it.
|
|
417
417
|
*/
|
|
@@ -2,7 +2,7 @@ import { LLMStructuredResponse } from '@buildaharness/runtime';
|
|
|
2
2
|
import { WebSearchResult } from './web-tools.js';
|
|
3
3
|
/**
|
|
4
4
|
* The real school-dates comparison this plan is built on (see
|
|
5
|
-
*
|
|
5
|
+
* the internal plan's Reference Transcripts tab), encoded as
|
|
6
6
|
* a reusable scripted-LLM-response fixture instead of duplicated inline in assistant.test.ts —
|
|
7
7
|
* so the integration replay test stays traceable back to the actual incident that motivated this
|
|
8
8
|
* plan, and any recalibration of thresholds later has the real shape to check against.
|
|
@@ -18,7 +18,7 @@ export interface InjectedFailureOptions {
|
|
|
18
18
|
* injected into this turn). The benchmark reads it back as `ArmTurnOutput.injectedFailureFired`
|
|
19
19
|
* so `recoveryRate` only counts tasks where the failure genuinely fired for this arm — not
|
|
20
20
|
* every task that merely *declares* an `injectedFailure` (see
|
|
21
|
-
*
|
|
21
|
+
* the internal plan F2).
|
|
22
22
|
*/
|
|
23
23
|
onInjected?: () => void;
|
|
24
24
|
}
|