@buildaharness/aielia 0.3.1 → 0.3.3

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.
Files changed (71) hide show
  1. package/README.md +31 -8
  2. package/dist/agent-loop.d.ts +8 -8
  3. package/dist/ask-clarification-service.d.ts +1 -1
  4. package/dist/ask-mode-flag.d.ts +1 -1
  5. package/dist/assistant-session.d.ts +1 -1
  6. package/dist/assistant-types.d.ts +3 -3
  7. package/dist/assistant.d.ts +12 -12
  8. package/dist/batch-research-fixtures.d.ts +1 -1
  9. package/dist/benchmark-injected-failure.d.ts +1 -1
  10. package/dist/bin-Btzhiyzi.js +2108 -0
  11. package/dist/bin-Btzhiyzi.js.map +1 -0
  12. package/dist/bin-sea-bootstrap.d.ts +1 -0
  13. package/dist/bin.d.ts +1 -0
  14. package/dist/claude-cli-llm-client.d.ts +2 -2
  15. package/dist/cli-args.d.ts +20 -0
  16. package/dist/cli-icons.d.ts +28 -0
  17. package/dist/{cli-session-D0uLdT2A.js → cli-session-DnSc6Hhx.js} +607 -127
  18. package/dist/cli-session-DnSc6Hhx.js.map +1 -0
  19. package/dist/cli.d.ts +31 -1
  20. package/dist/cli.js +1 -1691
  21. package/dist/cli.js.map +1 -1
  22. package/dist/config.d.ts +14 -6
  23. package/dist/contradiction-checker.d.ts +1 -1
  24. package/dist/diff-format.d.ts +16 -0
  25. package/dist/execution-mode.d.ts +1 -1
  26. package/dist/fact-extraction.d.ts +4 -4
  27. package/dist/failure-mode-matcher.d.ts +1 -1
  28. package/dist/file-tools-mcp-server.mjs +2 -2
  29. package/dist/file-tools.d.ts +10 -2
  30. package/dist/harness-bridge.d.ts +21 -4
  31. package/dist/index.js +68 -68
  32. package/dist/index.js.map +1 -1
  33. package/dist/ink-select-prompt.d.ts +21 -0
  34. package/dist/markdown-line.d.ts +42 -0
  35. package/dist/mcp-server-asset.d.ts +24 -0
  36. package/dist/memory-service.d.ts +12 -2
  37. package/dist/network-containment.d.ts +1 -1
  38. package/dist/node-display-names.d.ts +1 -1
  39. package/dist/one-loop-flag.d.ts +1 -1
  40. package/dist/plan-drafting-service.d.ts +1 -1
  41. package/dist/plan-drafting.d.ts +4 -4
  42. package/dist/plan-mode-flag.d.ts +1 -1
  43. package/dist/plan-sketch-service.d.ts +1 -1
  44. package/dist/plan-sketch.d.ts +1 -1
  45. package/dist/plan-store.d.ts +2 -2
  46. package/dist/plan-templates/index.d.ts +1 -1
  47. package/dist/plan-verification.d.ts +1 -1
  48. package/dist/review-checker.d.ts +10 -0
  49. package/dist/scripted-llm-client.d.ts +1 -1
  50. package/dist/sea-cache.d.ts +9 -0
  51. package/dist/self-update.d.ts +101 -0
  52. package/dist/semantic-criterion-coverage.d.ts +10 -0
  53. package/dist/shell-tools.d.ts +1 -1
  54. package/dist/spike.js.map +1 -1
  55. package/dist/tool-control-plane.d.ts +1 -1
  56. package/dist/tool-policy.d.ts +1 -1
  57. package/dist/tool-step.d.ts +10 -0
  58. package/dist/trace-events.d.ts +5 -5
  59. package/dist/trust-tagging.d.ts +1 -1
  60. package/dist/{tui-app-DxLPSGh2.js → tui-app-CFfOP2DC.js} +176 -20
  61. package/dist/tui-app-CFfOP2DC.js.map +1 -0
  62. package/dist/tui-app.d.ts +34 -9
  63. package/dist/tui-mode-flag.d.ts +1 -1
  64. package/dist/turn-intent-classifier.d.ts +5 -5
  65. package/dist/turn-interpreter.d.ts +12 -0
  66. package/dist/turn-policy.d.ts +1 -1
  67. package/dist/update-check-flag.d.ts +11 -0
  68. package/dist/version.d.ts +6 -0
  69. package/package.json +7 -3
  70. package/dist/cli-session-D0uLdT2A.js.map +0 -1
  71. 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 chat assistant that runs on the full 11-layer
4
- harness (`@buildaharness/harness`) every turn — light enough for "what's the
5
- weather" and consequential enough to gate "send that email" behind approval.
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` — `plans/harness_d2_one_loop_rewire_plan.html`): `HarnessRuntime`'s
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
@@ -96,7 +99,7 @@ silently starting over.
96
99
 
97
100
  Net effect: one real LLM call per ordinary turn, zero for a blocked one, and
98
101
  every layer of the harness touched on the ones that do run — matching what
99
- [buildaharness.com/harness-comparison](https://buildaharness.com/harness-comparison)
102
+ [myaielia.com/harness-comparison](https://myaielia.com/harness-comparison)
100
103
  calls out as missing from Hermes Agent, Kilo Code, and OpenClaw: none of them
101
104
  ships a formal Control State resolver *and* a Reviewer/output gate together.
102
105
  <!--
@@ -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 `docs/adr/005-trajectory-supervisor.md` — currently inert by default, since
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
- `docs/adr/006-generic-ask-question-mechanism.md` for the full design and why the default hasn't
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 `plans/lexical_functions_hardening_plan.html`'s Decision 6
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
@@ -26,7 +26,7 @@ export type ToolLoopResult = {
26
26
  reason: string;
27
27
  };
28
28
  /**
29
- * R2 of plans/harness_d2_one_loop_rewire_plan.html: thrown by a harness-driven proposer
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 plans/ask_question_and_plan_mode_plan.html: the plan task (if any) that was RUNNING
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 plans/ask_question_and_plan_mode_plan.html: the plan task (if any) that was RUNNING
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 plans/harness_d2_one_loop_rewire_plan.html: builds the real toolExecutors['default']
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 plans/harness_d2_one_loop_rewire_plan.html: the wiring-level counterpart to
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 plans/harness_d2_one_loop_rewire_plan.html: the batch-research counterpart to
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, `plans/harness_d2_one_loop_rewire_plan.html`) so a
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
- * plans/harness_trajectory_supervisor_plan.html). A bounded, strictly read-only tool
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
- * plans/ask_question_and_plan_mode_plan.html, structurally mirroring ActionApprovalService (T4 of
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
@@ -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 plans/ask_question_and_plan_mode_plan.html: the "global flag" control point (tier 1 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 plans/ask_question_and_plan_mode_plan.html — session/turn-routing switch, distinct from a
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
- * plans/chat_ui_browser_e2e_plan.html phase B1 (the browser-e2e lane that unblocks the
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 plans/ask_question_and_plan_mode_plan.html): a structured
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 plans/ask_question_and_plan_mode_plan.html): a drafted plan
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
@@ -42,7 +42,7 @@ export interface TurnOptions {
42
42
  approved?: boolean;
43
43
  pendingActionId?: string;
44
44
  /**
45
- * Q2 of plans/ask_question_and_plan_mode_plan.html — resolves a staged `needs_clarification`
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 plans/ask_question_and_plan_mode_plan.html — resolves a staged `needs_plan_approval`
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 plans/harness_d2_one_loop_rewire_plan.html — see one-loop-flag.ts's doc comment for the
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 plans/ask_question_and_plan_mode_plan.html — global-flag control point (tier 1 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 plans/ask_question_and_plan_mode_plan.html — see plan-mode-flag.ts's doc comment for
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 plans/harness_d2_one_loop_rewire_plan.html — 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. */
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
- * plans/chat_ui_browser_e2e_plan.html phase B1.
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 plans/ask_question_and_plan_mode_plan.html — explicit entry point into plan mode's
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 plans/ask_question_and_plan_mode_plan.html — the raw current `PlanRecord` for this
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 plans/ask_question_and_plan_mode_plan.html — the lightweight plan-sketch delegate: a
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 plans/personal_assistant_fact_extraction_llm_confidence_plan.html.
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
- * plans/harness_d2_one_loop_rewire_plan.html, see runTurn's two call sites) — "the model wants
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
- * plans/personal_assistant_dynamic_tool_budget_plan.html's Reference Transcripts tab), encoded as
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
- * plans/feature_audit_fair_comparison_plan.html F2).
21
+ * the internal plan F2).
22
22
  */
23
23
  onInjected?: () => void;
24
24
  }