@xingular/harness 1.1.1 → 1.3.1-unstable.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/CHANGELOG.md +48 -0
- package/README.md +36 -28
- package/dist/cli.js +10837 -6159
- package/dist/sdk/accounts/accounts.d.ts +27 -3
- package/dist/sdk/accounts/accounts.js +78 -24
- package/dist/sdk/accounts/secrets.d.ts +12 -0
- package/dist/sdk/accounts/secrets.js +114 -7
- package/dist/sdk/accounts/store.d.ts +26 -1
- package/dist/sdk/accounts/store.js +1 -1
- package/dist/sdk/agents/builtin.js +18 -4
- package/dist/sdk/agents/planResearch.d.ts +27 -0
- package/dist/sdk/agents/planResearch.js +82 -0
- package/dist/sdk/agents/profiles.d.ts +5 -1
- package/dist/sdk/agents/profiles.js +21 -5
- package/dist/sdk/annotations/pageScript.js +349 -48
- package/dist/sdk/annotations/part.js +34 -23
- package/dist/sdk/annotations/store.d.ts +7 -0
- package/dist/sdk/annotations/store.js +13 -5
- package/dist/sdk/browser/backend.d.ts +16 -0
- package/dist/sdk/browser/backend.js +17 -0
- package/dist/sdk/browser/contracts.d.ts +19 -0
- package/dist/sdk/browser/contracts.js +116 -0
- package/dist/sdk/browser/tools.d.ts +1 -4
- package/dist/sdk/browser/tools.js +14 -91
- package/dist/sdk/capabilities/runSnapshot.js +10 -4
- package/dist/sdk/cli.js +5 -4
- package/dist/sdk/commands/list.d.ts +3 -0
- package/dist/sdk/commands/list.js +75 -0
- package/dist/sdk/commands/registry.d.ts +258 -0
- package/dist/sdk/commands/registry.js +48 -0
- package/dist/sdk/commands/routes.d.ts +16 -0
- package/dist/sdk/commands/routes.js +33 -0
- package/dist/sdk/core/commandBudget.d.ts +23 -0
- package/dist/sdk/core/commandBudget.js +57 -0
- package/dist/sdk/core/index.js +17 -1
- package/dist/sdk/core/interactiveProfile.d.ts +46 -0
- package/dist/sdk/core/interactiveProfile.js +143 -0
- package/dist/sdk/core/shell.d.ts +20 -0
- package/dist/sdk/core/shell.js +73 -0
- package/dist/sdk/core/workspace.d.ts +13 -0
- package/dist/sdk/core/workspace.js +88 -0
- package/dist/sdk/core/workspaceBashTool.d.ts +20 -0
- package/dist/sdk/core/workspaceBashTool.js +50 -0
- package/dist/sdk/core/workspaceSandbox.d.ts +41 -0
- package/dist/sdk/core/workspaceSandbox.js +360 -0
- package/dist/sdk/core/workspaceWriteOperations.d.ts +33 -0
- package/dist/sdk/core/workspaceWriteOperations.js +224 -0
- package/dist/sdk/doctor/checks.js +71 -12
- package/dist/sdk/doctor/types.d.ts +2 -2
- package/dist/sdk/harness.d.ts +7 -0
- package/dist/sdk/harness.js +42 -2
- package/dist/sdk/hub/hub.js +5 -3
- package/dist/sdk/index.d.ts +8 -3
- package/dist/sdk/index.js +4 -1
- package/dist/sdk/pi/runtime.d.ts +2 -1
- package/dist/sdk/pi/runtime.js +2 -2
- package/dist/sdk/plugins/builtin.js +32 -15
- package/dist/sdk/plugins/builtinRegistry.d.ts +10 -3
- package/dist/sdk/plugins/builtinRegistry.js +30 -8
- package/dist/sdk/plugins/catalogue.js +2 -1
- package/dist/sdk/plugins/commandPrefix.d.ts +8 -0
- package/dist/sdk/plugins/commandPrefix.js +21 -0
- package/dist/sdk/plugins/firstParty.d.ts +1 -1
- package/dist/sdk/plugins/firstParty.js +8 -2
- package/dist/sdk/plugins/install.d.ts +6 -2
- package/dist/sdk/plugins/install.js +29 -5
- package/dist/sdk/plugins/inventory.js +6 -5
- package/dist/sdk/plugins/manifest.d.ts +2 -0
- package/dist/sdk/plugins/manifest.js +2 -1
- package/dist/sdk/plugins/surfaces.d.ts +5 -0
- package/dist/sdk/plugins/surfaces.js +11 -0
- package/dist/sdk/plugins/types.d.ts +15 -0
- package/dist/sdk/prompt/compile.d.ts +14 -0
- package/dist/sdk/prompt/compile.js +65 -31
- package/dist/sdk/prompt/standard.d.ts +17 -0
- package/dist/sdk/prompt/standard.js +21 -0
- package/dist/sdk/server/methods.js +22 -2
- package/dist/sdk/server/remote.js +36 -11
- package/dist/sdk/sessions/compactionCheckpoint.d.ts +11 -0
- package/dist/sdk/sessions/compactionCheckpoint.js +79 -0
- package/dist/sdk/sessions/continuation.d.ts +7 -2
- package/dist/sdk/sessions/continuation.js +11 -6
- package/dist/sdk/sessions/contracts.d.ts +190 -4
- package/dist/sdk/sessions/contracts.js +71 -8
- package/dist/sdk/sessions/control.d.ts +72 -0
- package/dist/sdk/sessions/control.js +158 -0
- package/dist/sdk/sessions/initialBash.d.ts +7 -0
- package/dist/sdk/sessions/initialBash.js +7 -0
- package/dist/sdk/sessions/planMode.d.ts +14 -3
- package/dist/sdk/sessions/planMode.js +74 -17
- package/dist/sdk/sessions/registry.d.ts +1 -1
- package/dist/sdk/sessions/registry.js +2 -2
- package/dist/sdk/sessions/runStore.d.ts +14 -0
- package/dist/sdk/sessions/runStore.js +38 -1
- package/dist/sdk/sessions/runner.d.ts +40 -2
- package/dist/sdk/sessions/runner.js +161 -13
- package/dist/sdk/sessions/sessions.d.ts +23 -3
- package/dist/sdk/sessions/sessions.js +225 -22
- package/dist/sdk/sessions/subagentService.d.ts +24 -0
- package/dist/sdk/sessions/subagentService.js +225 -26
- package/dist/sdk/sessions/subagents.d.ts +10 -1
- package/dist/sdk/sessions/subagents.js +4 -0
- package/dist/sdk/sessions/workSlice.d.ts +106 -0
- package/dist/sdk/sessions/workSlice.js +329 -0
- package/dist/sdk/sessions/workspaceBoundary.d.ts +15 -0
- package/dist/sdk/sessions/workspaceBoundary.js +46 -0
- package/dist/sdk/terminal/browserControl.js +2 -1
- package/dist/sdk/terminal/controller.d.ts +31 -3
- package/dist/sdk/terminal/controller.js +81 -29
- package/dist/sdk/terminal/opentui/ansi.d.ts +25 -0
- package/dist/sdk/terminal/opentui/ansi.js +192 -0
- package/dist/sdk/terminal/opentui/model.d.ts +163 -0
- package/dist/sdk/terminal/opentui/model.js +482 -0
- package/dist/sdk/terminal/opentui/subagentsWidget.d.ts +3 -3
- package/dist/sdk/terminal/opentui/subagentsWidget.js +7 -5
- package/dist/sdk/terminal/opentui/theme.d.ts +43 -0
- package/dist/sdk/terminal/opentui/theme.js +88 -0
- package/dist/sdk/terminal/piExtension.d.ts +6 -1
- package/dist/sdk/terminal/piExtension.js +177 -63
- package/dist/sdk/terminal/standalone.d.ts +7 -0
- package/dist/sdk/terminal/standalone.js +72 -13
- package/dist/sdk/terminal/subagentMonitor.d.ts +28 -6
- package/dist/sdk/terminal/subagentMonitor.js +61 -9
- package/dist/sdk/terminal/terminals.d.ts +26 -2
- package/dist/sdk/terminal/terminals.js +325 -43
- package/dist/sdk/terminal/trajectory.d.ts +6 -1
- package/dist/sdk/terminal/trajectory.js +8 -0
- package/dist/sdk/terminal/tui/annotateCommand.d.ts +1 -1
- package/dist/sdk/terminal/tui/annotateCommand.js +3 -3
- package/dist/sdk/terminal/tui/chrome.d.ts +4 -0
- package/dist/sdk/terminal/tui/chrome.js +13 -0
- package/dist/sdk/terminal/tui/commandPages.d.ts +3 -1
- package/dist/sdk/terminal/tui/commandPages.js +17 -4
- package/dist/sdk/terminal/tui/commands.d.ts +6 -0
- package/dist/sdk/terminal/tui/commands.js +213 -124
- package/dist/sdk/terminal/tui/list.d.ts +14 -1
- package/dist/sdk/terminal/tui/list.js +96 -14
- package/dist/sdk/terminal/tui/pageOverlay.js +21 -5
- package/dist/sdk/terminal/tui/pages/annotatePage.d.ts +1 -1
- package/dist/sdk/terminal/tui/pages/browserPage.js +5 -4
- package/dist/sdk/terminal/tui/pages/hubPage.d.ts +14 -1
- package/dist/sdk/terminal/tui/pages/hubPage.js +192 -28
- package/dist/sdk/terminal/tui/pages/notesPage.d.ts +5 -5
- package/dist/sdk/terminal/tui/pages/notesPage.js +18 -18
- package/dist/sdk/terminal/tui/pages/pluginsPage.d.ts +8 -6
- package/dist/sdk/terminal/tui/pages/pluginsPage.js +206 -28
- package/dist/sdk/terminal/tui/pages/subagentsPage.d.ts +1 -0
- package/dist/sdk/terminal/tui/pages/subagentsPage.js +104 -19
- package/dist/sdk/terminal/tui/pages/usagePage.d.ts +43 -0
- package/dist/sdk/terminal/tui/pages/usagePage.js +370 -0
- package/dist/sdk/terminal/tui/piAdapter.d.ts +1 -2
- package/dist/sdk/terminal/tui/piAdapter.js +3 -5
- package/dist/sdk/terminal/tui/pluginCommands.d.ts +2 -0
- package/dist/sdk/terminal/tui/pluginCommands.js +13 -9
- package/dist/sdk/terminal/tui/runtime.js +23 -3
- package/dist/sdk/terminal/tui/sessionPicker.d.ts +40 -0
- package/dist/sdk/terminal/tui/sessionPicker.js +141 -0
- package/dist/sdk/tools/checkpoint.d.ts +27 -0
- package/dist/sdk/tools/checkpoint.js +154 -0
- package/dist/sdk/tools/getCapabilities.d.ts +31 -0
- package/dist/sdk/tools/getCapabilities.js +34 -0
- package/dist/sdk/tools/sessionName.d.ts +2 -0
- package/dist/sdk/tools/sessionName.js +5 -3
- package/dist/sdk/tools/spawnSubagent.js +11 -8
- package/dist/sdk/tools/todo.d.ts +15 -0
- package/dist/sdk/tools/todo.js +64 -0
- package/dist/sdk/usage/analytics.d.ts +20 -0
- package/dist/sdk/usage/analytics.js +151 -0
- package/dist/sdk/usage/ledger.d.ts +38 -0
- package/dist/sdk/usage/ledger.js +142 -0
- package/dist/sdk/usage/limits/adapters.d.ts +11 -0
- package/dist/sdk/usage/limits/adapters.js +349 -0
- package/dist/sdk/usage/limits/capture.d.ts +8 -0
- package/dist/sdk/usage/limits/capture.js +47 -0
- package/dist/sdk/usage/limits/http.d.ts +12 -0
- package/dist/sdk/usage/limits/http.js +51 -0
- package/dist/sdk/usage/limits/normalize.d.ts +15 -0
- package/dist/sdk/usage/limits/normalize.js +211 -0
- package/dist/sdk/usage/limits/service.d.ts +30 -0
- package/dist/sdk/usage/limits/service.js +176 -0
- package/dist/sdk/usage/limits/types.d.ts +65 -0
- package/dist/sdk/usage/limits/types.js +1 -0
- package/dist/sdk/usage/serverMethods.d.ts +3 -0
- package/dist/sdk/usage/serverMethods.js +22 -0
- package/dist/sdk/usage/service.d.ts +32 -0
- package/dist/sdk/usage/service.js +66 -0
- package/dist/sdk/usage/settings.d.ts +7 -0
- package/dist/sdk/usage/settings.js +28 -0
- package/dist/sdk/usage/types.d.ts +60 -0
- package/dist/sdk/usage/types.js +4 -0
- package/dist/terminal-opentui.js +9204 -4812
- package/dist/terminal-pi.js +1848 -272
- package/docs/architecture/00-overview.md +1 -1
- package/docs/architecture/01-extension-points.md +1 -1
- package/docs/architecture/02-sessions-and-runs.md +169 -36
- package/docs/architecture/04-prompt.md +55 -15
- package/docs/architecture/06-plugins-and-capabilities.md +36 -15
- package/docs/architecture/07-tools-and-gate.md +131 -25
- package/docs/architecture/08-memory-and-history.md +4 -2
- package/docs/architecture/09-accounts-and-connectors.md +39 -3
- package/docs/architecture/10-server-protocol.md +71 -9
- package/docs/architecture/11-terminal.md +148 -60
- package/docs/architecture/12-storage.md +30 -2
- package/docs/architecture/13-world-tools.md +22 -1
- package/docs/architecture/14-surfaces-and-parity.md +58 -8
- package/docs/architecture/README.md +20 -17
- package/docs/architecture/proposals/PROP-0006-run-checklist.md +2 -0
- package/docs/architecture/proposals/PROP-0017-page-annotations.md +6 -2
- package/docs/architecture/proposals/PROP-0018-annotation-queue-and-app-targets.md +1 -1
- package/docs/architecture/proposals/PROP-0031-plugin-command-owner-namespaces.md +54 -0
- package/docs/architecture/proposals/PROP-0032-planning-quality.md +196 -0
- package/docs/architecture/proposals/PROP-0033-compaction-plan-checkpoints.md +75 -0
- package/docs/architecture/proposals/PROP-0034-conversation-fast-mode.md +120 -0
- package/docs/architecture/proposals/PROP-0035-retain-subagent-status.md +47 -0
- package/docs/architecture/proposals/PROP-0036-first-class-harness-commands.md +59 -0
- package/docs/architecture/proposals/PROP-0037-workspace-write-boundary.md +63 -0
- package/docs/architecture/proposals/PROP-0038-annotate-open-shadow-roots.md +73 -0
- package/docs/architecture/proposals/PROP-0039-workspace-boundary-hardening.md +139 -0
- package/docs/architecture/proposals/PROP-0040-one-launch-path.md +87 -0
- package/docs/architecture/proposals/PROP-0041-bounded-work-slices.md +258 -0
- package/docs/architecture/proposals/PROP-0042-usage-and-provider-limits.md +127 -0
- package/docs/architecture/proposals/PROP-0043-read-only-plan-bash.md +74 -0
- package/docs/architecture/proposals/PROP-0044-work-slice-defaults.md +93 -0
- package/docs/architecture/proposals/PROP-0045-rename-checklist-to-todo.md +132 -0
- package/docs/architecture/proposals/PROP-0046-progress-aware-stall-guards.md +82 -0
- package/docs/architecture/proposals/PROP-0047-plugins-hub-separation.md +122 -0
- package/docs/architecture/proposals/README.md +24 -6
- package/docs/decisions/ADR-0001-owned-terminal.md +1 -1
- package/docs/decisions/ADR-0021-required-command-namespaces.md +1 -1
- package/docs/decisions/ADR-0031-plugin-command-owner-namespaces.md +37 -0
- package/docs/decisions/ADR-0032-compaction-run-checkpoints.md +33 -0
- package/docs/decisions/ADR-0033-plan-mode-research-delegation.md +47 -0
- package/docs/decisions/ADR-0034-first-class-harness-terminal-commands.md +25 -0
- package/docs/decisions/ADR-0035-one-launch-path.md +40 -0
- package/docs/decisions/ADR-0036-workspace-write-operation-boundary.md +54 -0
- package/docs/decisions/ADR-0037-usage-ledger-and-provider-limits.md +44 -0
- package/docs/decisions/ADR-0038-plan-bash-os-read-only.md +29 -0
- package/docs/decisions/ADR-0039-progress-aware-stall-guards.md +39 -0
- package/docs/decisions/ADR-0040-architecture-change-workflow.md +31 -0
- package/docs/decisions/ADR-0041-plugins-hub-separation.md +41 -0
- package/docs/decisions/ADR-0042-windows-shell-without-sandbox.md +40 -0
- package/docs/decisions/ADR-0043-parents-continue-stopped-subagents.md +49 -0
- package/docs/doctor.md +14 -1
- package/docs/experiments/EXP-0003-performance-audit/data/session-runtime-replication.json +420 -0
- package/docs/experiments/EXP-0003-performance-audit/data/session-runtime.json +420 -0
- package/docs/experiments/EXP-0003-performance-audit/data/terminal-compact.json +376 -0
- package/docs/experiments/EXP-0003-performance-audit/data/terminal-history.json +422 -0
- package/docs/experiments/EXP-0003-performance-audit/data/terminal-question.json +95 -0
- package/docs/experiments/EXP-0003-performance-audit/data/terminal-wide.json +1036 -0
- package/docs/experiments/EXP-0003-performance-audit/plan.md +109 -0
- package/docs/experiments/EXP-0003-performance-audit/results.md +151 -0
- package/docs/handoff-2026-10-25-app-parity-and-solo-tabs.md +202 -0
- package/docs/parity.md +83 -27
- package/docs/releases/1.1.1.md +28 -0
- package/docs/releases/1.2.0.md +49 -0
- package/docs/releases/1.3.0.md +21 -0
- package/docs/releases/4.0.0.md +10 -9
- package/docs/releases/README.md +35 -30
- package/docs/study/00-index.md +3 -0
- package/docs/study/STUDY-0003-long-horizon-runs.md +210 -0
- package/docs/terminal-tui.md +162 -82
- package/package.json +4 -3
- package/dist/sdk/tools/checklist.d.ts +0 -9
- package/dist/sdk/tools/checklist.js +0 -54
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
- Keep subagent progress through Esc, failures and restarts. A parent continues a stopped child with
|
|
6
|
+
`spawn_subagent { continue: <runId> }`, which reopens that child's own conversation with its
|
|
7
|
+
profile, tools, account and variant, instead of starting it again. The next reply hears about
|
|
8
|
+
stopped children before it answers. A reopened terminal conversation still adopts children an
|
|
9
|
+
earlier launch started. The `/subagents` page now shows the main agent as a `main` row (a
|
|
10
|
+
reserved profile name), and both the page and the rows under the status line come back when a
|
|
11
|
+
conversation is reopened, until the next run starts. Run records keep their `model` and `effort`
|
|
12
|
+
(ADR-0043).
|
|
13
|
+
|
|
14
|
+
- Make the shell, write and edit tools work on Windows right after install. Commands run in Git
|
|
15
|
+
Bash when it is installed and in PowerShell otherwise; the tool keeps the name `bash`. Windows has
|
|
16
|
+
no write-boundary sandbox, so each command asks for a one-call approval unless Full Permission is
|
|
17
|
+
on, and plan-mode Bash is refused there. Write and edit run their atomic helper with Node
|
|
18
|
+
directly. `/doctor` names the Windows shell instead of reporting it as delegated to Pi (ADR-0042).
|
|
19
|
+
|
|
20
|
+
- Make `/doctor` check the use of Bash, not only that the executable exists. The local shell check
|
|
21
|
+
now also reports the platform write-boundary backend (sandbox-exec on macOS, bubblewrap on Linux)
|
|
22
|
+
whose absence stops every Bash call before it runs. The new live check runs one fixed command the
|
|
23
|
+
harness wrote (`printf`) in the working folder through the same root, hard-link scan and sandbox a
|
|
24
|
+
real Bash call takes, after the policy gate, and reports only the exit status. A diagnostic never
|
|
25
|
+
widens the boundary, so a command that the boundary refuses before the shell starts is reported
|
|
26
|
+
as blocked with that reason.
|
|
27
|
+
|
|
28
|
+
## 1.3.0 — todo progress, bounded work, and plugin management
|
|
29
|
+
|
|
30
|
+
- Make session naming and progress guidance concrete: name a session before the first tool call when work needs tools or changes state, and keep a todo list for multi-step work. Prompt and tool descriptions use the same wording; guidance remains advisory and subagents retain the parent's title.
|
|
31
|
+
- Rename the run checklist to todo: `todo_write`, `todo.updated`, `runs.todo`, the `todo` plugin and a todo block in the terminal. Add `/todo` (alias `/checklist`) to show the current list in the terminal and App without a model request. Existing runs still read `checklist.updated`; pinned `checklist_write` calls continue through `todo_write`; `runs.checklist` and `continuation.checklist` remain deprecated aliases for one release (PROP-0045).
|
|
32
|
+
- Raise work-slice defaults to 320 tool calls and 60 minutes, with no token ceiling unless configured. Make stall detection progress-aware, bound plan research to eligible read-only profiles, and restore the latest plan/todo context after compaction (PROP-0044–0046; ADR-0039).
|
|
33
|
+
- Separate `/plugins` local package management from `/hub` Community catalog discovery. Preserve all-channel Hub receipts and visible cache/refresh state; keep Hub-owned package removal receipt-aware and prevent floating updates (PROP-0047; ADR-0041).
|
|
34
|
+
- Improve terminal skill completion and highlighting while preserving command and argument distinctions.
|
|
35
|
+
- Make Doctor's Bash readiness check verify the required write-boundary sandbox and add a fixed, no-network live probe through the same workspace boundary; report policy blocks accurately without widening permissions.
|
|
36
|
+
|
|
37
|
+
## 1.2.0 — workspace safety and terminal capabilities
|
|
38
|
+
|
|
39
|
+
- Scope model-controlled file writes and Bash to the active project workspace by default; reject the filesystem root as a workspace. Native writes use revalidated atomic replacement; Bash fails closed on incomplete hard-link scans or unavailable sandboxing (macOS also blocks workspace-local hard links). Explicit outside-scope Bash requires approval before one execution, showing the complete escaped command; output never triggers approval or retry.
|
|
40
|
+
- Let plan mode run Bash in a read-only OS sandbox (no writes except a discarded temp folder, no network, nothing that widens it), so plans can check claims with commands such as `git log` (PROP-0043).
|
|
41
|
+
- Make plan mode evidence-grounded and allow bounded read-only research delegation. Rehydrate the active checklist and plan instructions after compaction, and retain the latest subagent status until the next run.
|
|
42
|
+
- Give plugin-owned terminal commands stable owner namespaces and make Harness-owned routes first-class core commands. Prior command forms remain hidden compatibility aliases for one release; update scripts and keybindings to canonical routes.
|
|
43
|
+
- Extend page annotations into open shadow roots while preserving existing document-only annotation targets. Closed shadow roots and frames remain unsupported.
|
|
44
|
+
- Record each run's resolved workspace root as an additive run-record field; older records remain readable.
|
|
45
|
+
- Add a searchable saved-session picker and composer history for user prompts, Bash commands and executed slash commands, restoring the draft, cursor, mode and attachments while browsing. Fix compact question-dock sizing/scrolling and narrow-page footer rendering.
|
|
46
|
+
- Add reproducible PTY and session-runtime profiling plus [EXP-0003's baseline report](docs/experiments/EXP-0003-performance-audit/results.md); it measures 1.1.1 on a dirty worktree, not 1.2.0.
|
|
47
|
+
- Update the pinned Pi runtime to 1.4.0, with the terminal adapter's private hooks and HTTP dispatcher chunk rechecked against it.
|
|
48
|
+
- Fix the work-slice stall guard reporting a reply's own checklist updates as repeated work. A call's identity is its name and every argument, hashed, instead of six fixed field names that made every `checklist_write` look alike; the counts and the nudge start fresh in each reply, so a terminal session no longer carries a repeat from one reply into the next. Three identical calls are still named once, and a repeat after that still ends the slice.
|
|
49
|
+
- Raise the work-slice defaults to 320 tool calls and 60 minutes, and drop the token cap by default: calls and the clock are the bound, and a token ceiling is available per run with `workSlice.maxNewTokens` for whoever wants one. A continuation keeps the policy, and eight slices still cap unattended work. See PROP-0044.
|
|
50
|
+
|
|
3
51
|
## 1.1.1 — agent profiles and named subagents
|
|
4
52
|
|
|
5
53
|
The first published release of the 1.1 line, and npm `latest`. It follows the 1.0.0 baseline; earlier 2.x–4.x numbers keep their existing meaning and are not reused. The 1.1.0 tag was pushed, but its release run stopped before publishing, so nothing was published under 1.1.0. This release carries the same changes, plus the release-pipeline fixes below.
|
package/README.md
CHANGED
|
@@ -45,9 +45,9 @@ index](docs/README.md) links the architecture and other project records.
|
|
|
45
45
|
- `providers: false` runs a session with the harness's own tools only.
|
|
46
46
|
- `variant: { scope }` runs the session on that scope's head variant (or `{ scope, version }`, or `{ dir }` for a variant on disk). The version is pinned for the run and recorded on it.
|
|
47
47
|
- On the caller, `recallExcludeAgents` hides those agents' conversations from history and trajectory tools.
|
|
48
|
-
- `harnessTools: false` runs a session without the History, Wiki and skill tools (and without `ask_user` and `
|
|
49
|
-
- Every session with harness tools gets `
|
|
50
|
-
- `continueFrom: <run id>` continues a run that stopped before it finished (interrupted or failed) as a new run. `harness.recovery.interruptedRunIds` lists the runs `open` marked interrupted, and `continuationOf(root, runId, sessionDir)` (`runs.continuation`) says whether one can be continued and what it left:
|
|
48
|
+
- `harnessTools: false` runs a session without the History, Wiki and skill tools (and without `ask_user` and `todo_write`).
|
|
49
|
+
- Every session with harness tools gets `todo_write`: the model sends its whole todo list (`pending`, `in_progress`, `completed`, at most 50 steps) and the run records it as a `todo.updated` event. `todoOf(events)` or the `runs.todo` method reads the latest one. Plan mode allows it. The pre-rename `checklist_write` and `checklist.updated` are still read, `runs.checklist` is a deprecated alias, and `checklistOf`/`CHECKLIST_WRITE` remain deprecated exports for one release (PROP-0045).
|
|
50
|
+
- `continueFrom: <run id>` continues a run that stopped before it finished (interrupted or failed) as a new run. `harness.recovery.interruptedRunIds` lists the runs `open` marked interrupted, and `continuationOf(root, runId, sessionDir)` (`runs.continuation`) says whether one can be continued and what it left: todo list, unanswered approvals and questions, the last tool and whether it finished, unfinished subagents. The new run reopens the same native history, records `resumedFromRunId`, keeps the account, variant version and capability set (`continuation_mismatch` otherwise), and the model is told where the earlier run stopped. The harness never continues a run by itself; which runs to continue, and when, is the application's choice.
|
|
51
51
|
- The first-party `lessons` plugin (off by default) reflects on a completed top-level run with enough tool calls and may keep one general lesson in the Wiki under `library/lessons/`, in refinement's cue/lesson shape. It uses the run's own account and model, read-only file tools, and is capped (`minToolCalls`, `maxLessons`, `maxChars`). See PROP-0008.
|
|
52
52
|
|
|
53
53
|
Every session also gets `trajectory_search` and `trajectory_read` from the built-in History plugin.
|
|
@@ -161,7 +161,8 @@ working folder brings.
|
|
|
161
161
|
and `editor` become the run's question events; `notify`, `setStatus` and `setWidget` become
|
|
162
162
|
`extension.notice` run events. What needs a terminal (custom components, key handlers, themes)
|
|
163
163
|
does nothing. A tool an extension registered is offered to the model and asks before every
|
|
164
|
-
call. A command
|
|
164
|
+
call. A terminal command runs as `/<owner-prefix>:<command>`; package extensions use their
|
|
165
|
+
normalized package name, or an optional `harness.commandPrefix` from `package.json`.
|
|
165
166
|
- **The gate runs last.** In an SDK session it is an inline extension, loaded after those on
|
|
166
167
|
disk. A terminal retains its final prepared `--extension` bridge argument; the owned frontend
|
|
167
168
|
loads that bridge as the final trusted inline factory. A plugin that changes a tool call's
|
|
@@ -271,6 +272,11 @@ The machine needs Node 22.19 or newer and Bun 1.3.14 or newer. Harness runs its
|
|
|
271
272
|
terminal frontend with Bun, using its pinned Pi SDK; no separate global `pi` installation is
|
|
272
273
|
required. On first launch, it creates a `Default` isolated account. Use `/accounts` to sign in.
|
|
273
274
|
|
|
275
|
+
On Windows the shell tool works without extra setup: it uses Git Bash when Git for Windows is
|
|
276
|
+
installed and PowerShell otherwise. Windows has no sandbox the harness can use to keep commands
|
|
277
|
+
inside the project, so each command asks for approval unless Full Permission is on, and plan mode
|
|
278
|
+
does not run commands. File edits work as usual.
|
|
279
|
+
|
|
274
280
|
Provider sign-in progress lives in the running Harness process. An embedding application can call
|
|
275
281
|
`accounts.loginStatus` after reconnecting to recover the current device code or prompt by account;
|
|
276
282
|
the status carries a revision so it can be safely merged with streamed login events. Progress is
|
|
@@ -304,29 +310,29 @@ worktree: a detached checkout under `<state dir>/worktrees/` that carries your u
|
|
|
304
310
|
changes, copies ignored files named in `.worktreeinclude`, and runs the repository's
|
|
305
311
|
`.xharness/worktree-setup` once you trust it (`xagent worktree trust-setup`). The 15 most recent
|
|
306
312
|
managed worktrees per repository are kept; older ones are pruned, and unsaved work is kept as a
|
|
307
|
-
snapshot you can restore. `/
|
|
313
|
+
snapshot you can restore. `/worktree` in a session, `xagent worktree <command>` in a shell, and
|
|
308
314
|
the `worktrees.*` server methods offer the same actions: new, switch, create branch, hand off to
|
|
309
315
|
or from the main checkout, remove, restore, prune and adopt. An application passes a worktree's id
|
|
310
316
|
as `run.worktreeId` and the session works in it. See
|
|
311
317
|
[PROP-0016](docs/architecture/proposals/PROP-0016-managed-worktrees.md).
|
|
312
318
|
|
|
313
|
-
###
|
|
319
|
+
### Web annotations
|
|
314
320
|
|
|
315
|
-
`/
|
|
316
|
-
agent's browser).
|
|
317
|
-
|
|
321
|
+
`/annotate:` (or `/annotate:annotate [url]`) opens a visible capture browser (its own window and profile, separate from the
|
|
322
|
+
agent's browser). Annotate the whole page, select a passage, or click an element there, then write a
|
|
323
|
+
comment in the terminal. `/annotate:notes` lists, edits, resolves, reveals and deletes annotations. An annotation is private
|
|
318
324
|
until you share it with the session; its agent then reads it with `page_notes_list` and
|
|
319
|
-
`page_notes_read`, with quoted page text marked untrusted.
|
|
325
|
+
`page_notes_read`, with quoted page text marked untrusted. Annotations live in `<data root>/annotations/`
|
|
320
326
|
and the `annotations.*` server methods give a host the same store. A host with its own web view
|
|
321
327
|
runs the same page helper (`annotations.pageScript`). See
|
|
322
328
|
[PROP-0017](docs/architecture/proposals/PROP-0017-page-annotations.md).
|
|
323
329
|
|
|
324
|
-
`/
|
|
330
|
+
`/annotate:` opens the inspector:
|
|
325
331
|
- Hover a component in the browser or an app window, click it, and write a comment in the popover.
|
|
326
332
|
- Then keep it as a note, add it to the agent's queue, or send it now. The agent reports back with `page_notes_mark_fixed`.
|
|
327
333
|
- App windows work two ways:
|
|
328
|
-
- **DevTools port:** start an Electron app with `--remote-debugging-port=9229` and run `/
|
|
329
|
-
- **Page bridge:** for a macOS web view such as Tauri, run `/
|
|
334
|
+
- **DevTools port:** start an Electron app with `--remote-debugging-port=9229` and run `/annotate:annotate --app 9229`.
|
|
335
|
+
- **Page bridge:** for a macOS web view such as Tauri, run `/annotate:annotate --bridge` and load the script tag it shows while developing the app. Allow `http://127.0.0.1:<port>` in the app's `script-src` and `connect-src`.
|
|
330
336
|
- A host drives the same flow with `annotations.capture.*`, and sends to its own sessions with `annotations.compose` and `annotations.delivered`.
|
|
331
337
|
|
|
332
338
|
See [PROP-0018](docs/architecture/proposals/PROP-0018-annotation-queue-and-app-targets.md).
|
|
@@ -346,9 +352,13 @@ Pi supplies the persistent execution runtime, native history and rich content co
|
|
|
346
352
|
existing isolated account, compiled context, approval gate, telemetry and Wiki/socket commands
|
|
347
353
|
remain behind the terminal. No Pi `InteractiveMode` is constructed.
|
|
348
354
|
|
|
349
|
-
|
|
350
|
-
`/
|
|
351
|
-
|
|
355
|
+
Harness terminal commands stay unprefixed: `/doctor`, `/worktree`, `/trajectory`, `/subagents`,
|
|
356
|
+
`/agents`, and `/mcp`. `/history` continues to navigate session branches. These commands are
|
|
357
|
+
registered independently of feature-plugin command metadata. Other plugin-owned commands use
|
|
358
|
+
`/<owner-prefix>:<command>`; for example, annotate a page with `/annotate:annotate
|
|
359
|
+
https://example.com`, or open the default annotation pane with `/annotate:`. Former owner-qualified
|
|
360
|
+
and `/plugin:<command>` routes for promoted Harness commands remain hidden compatibility aliases for
|
|
361
|
+
one release; help and completion show only canonical forms.
|
|
352
362
|
|
|
353
363
|
`/resume` stays inside the prepared account history and working folder. Cancel an active response
|
|
354
364
|
before changing or reloading a session. Full OMP visual parity is not established by the current
|
|
@@ -363,10 +373,10 @@ To keep an existing message and attachments, open Ctrl+K, choose Skills, then Us
|
|
|
363
373
|
Variant inspection distinguishes the pinned session version from the latest saved version.
|
|
364
374
|
Adding a library skill or rule creates a validated version for future sessions.
|
|
365
375
|
|
|
366
|
-
`/accounts`, `/permissions`, `/settings`, `/
|
|
376
|
+
`/accounts`, `/permissions`, `/settings`, `/trajectory` and `/log` retain their own centered pages.
|
|
367
377
|
`/permissions` reviews device-local Pi terminal grants and the Full Permission switch; tool grants
|
|
368
378
|
apply across terminal sessions sharing this Harness state, and Full Permission requires confirmation.
|
|
369
|
-
`/
|
|
379
|
+
`/trajectory` opens recorded runs for the current native conversation,
|
|
370
380
|
with event navigation and a detail inspector. `/log` shows a static, redacted snapshot of Harness
|
|
371
381
|
diagnostics and run events for the current conversation; press Escape to close. See
|
|
372
382
|
[terminal architecture and evidence](docs/terminal-tui.md),
|
|
@@ -496,24 +506,22 @@ omit this option retain the existing lifecycle and direct-write contract.
|
|
|
496
506
|
|
|
497
507
|
## Readiness diagnostics
|
|
498
508
|
|
|
499
|
-
Use `/
|
|
509
|
+
Use `/doctor` in the terminal for local readiness checks and explicitly selected live probes. The same
|
|
500
510
|
structured jobs are available through `harness.doctor` and `doctor.*` server methods. See
|
|
501
511
|
[Doctor](docs/doctor.md) for coverage, consent, isolation, and provider callbacks.
|
|
502
512
|
|
|
503
|
-
## Public
|
|
513
|
+
## Public package
|
|
504
514
|
|
|
505
|
-
The
|
|
515
|
+
The package is ESM: import from `@xingular/harness` or supported subpaths such as
|
|
506
516
|
`@xingular/harness/variant/seed`. JavaScript and declarations are shipped in `dist/sdk`; a
|
|
507
|
-
TypeScript loader is not required. Node 22.19 or later is required. The interactive terminal
|
|
508
|
-
|
|
517
|
+
TypeScript loader is not required. Node 22.19 or later is required. The interactive terminal also
|
|
518
|
+
requires Bun (release builds use 1.4.2); the CLI reports its version with `xagent --version`.
|
|
509
519
|
Original project code is Apache-2.0. See LICENSE, NOTICE.md and THIRD_PARTY_LICENSES.md.
|
|
510
520
|
|
|
511
521
|
A host providing its own browser tools sets `browser: false` on `createHarness` to disable the
|
|
512
522
|
generic backend and prevent tool-name collisions. The desktop App uses this for shared tabs.
|
|
513
523
|
The default standalone Harness keeps its isolated browser backend enabled.
|
|
514
524
|
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
Publication requires registry verification, green CI on supported operating systems, and approval of
|
|
519
|
-
the exact candidate and tag push.
|
|
525
|
+
See the [1.3.0 release notes](docs/releases/1.3.0.md), [1.2.0 release notes](docs/releases/1.2.0.md),
|
|
526
|
+
[1.1.1 release notes](docs/releases/1.1.1.md), and the [release procedure](docs/releases/README.md). Publication requires pre-tag review of the exact candidate, two-OS CI, a separate protected
|
|
527
|
+
`npm-publish` approval, registry verification, and npm provenance.
|