@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/docs/parity.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Capability parity register
|
|
2
2
|
|
|
3
|
-
**Status:** descriptive register, as of 2026-
|
|
3
|
+
**Status:** descriptive register, as of 2026-11-19. The binding rules are
|
|
4
4
|
[14 Surfaces and parity](architecture/14-surfaces-and-parity.md) (`INV-PAR-1`–`INV-PAR-4`).
|
|
5
5
|
|
|
6
6
|
Every capability a person can use is a Harness capability. The standalone terminal (`xagent`)
|
|
@@ -12,44 +12,98 @@ Host-only surfaces (presentation a terminal cannot show, `INV-PAR-4`) are not li
|
|
|
12
12
|
host keeps its own register. The App's is
|
|
13
13
|
[`App/docs/architecture/app-only-surfaces.md`](../../App/docs/architecture/app-only-surfaces.md).
|
|
14
14
|
|
|
15
|
-
Status: **parity**
|
|
16
|
-
|
|
15
|
+
Status: **parity** only where both surfaces passed acceptance; **implemented** means source routes
|
|
16
|
+
exist but acceptance is not certified; **terminal only**, **host only**, **partial**, **planned**,
|
|
17
|
+
and **host-backed** (needs a host object; terminal fallback named). A slash-command row marked
|
|
18
|
+
implemented is not a parity claim; acceptance is tracked per command.
|
|
17
19
|
|
|
18
20
|
## Register
|
|
19
21
|
|
|
20
22
|
| Capability | Harness owner | Method or tool | Terminal surface | App surface | Status | Gap |
|
|
21
23
|
|---|---|---|---|---|---|---|
|
|
22
24
|
| Sessions and turns | `sessions/` | `sessions.run`, `terminal.*` | the terminal itself | Solo chat | parity | — |
|
|
23
|
-
| Plan mode | `sessions/planMode.ts` | `plan: true` | `/plan`, Shift+Tab, plan card | plan request, PlanCard | parity | — |
|
|
24
|
-
|
|
|
25
|
+
| Plan mode | `sessions/planMode.ts` | `plan: true` | `/plan`, Shift+Tab, plan card; bounded plan/todo context is restored after compaction | plan request, PlanCard; shared Harness checkpoint behavior | parity | — |
|
|
26
|
+
| Capability discovery | `tools/getCapabilities.ts` | read-only `get_capabilities` | terminal extension reports Pi's active tools and schemas; shared plan allowlist includes it | structured Harness run uses the same tool; no duplicate App-owned tool | implemented; acceptance not recertified | — |
|
|
27
|
+
| Bash command mode | `sessions/sessions.ts`, `sessions/initialBash.ts` | `initialBashCommand`; Bash `workspaceWriteScope` | `!command` defaults to workspace; `!outside command` asks before running once | same `!command` and `!outside command` composer semantics | parity | — |
|
|
28
|
+
| Workspace-scoped writes | `core/workspace.ts`, `sessions/workspaceBoundary.ts`, `core/workspaceBashTool.ts`, `core/workspaceSandbox.ts`, `core/workspaceWriteOperations.ts` | pinned non-root `RunRecord.workspaceRoot`; native `edit`/`write`; Bash scope | revalidated atomic native writes; external-hard-link scan and Bash sandbox (Windows: no sandbox, each Bash call asks once, plan-mode Bash refused; ADR-0042); complete escaped outside command in scrollable approval details (deny if too small); no output-triggered retry | same Harness gate and full approval action in scrollable App details; App policy can tighten scope; Full Permission remains the eligible explicit bypass | parity | — |
|
|
25
29
|
| Side questions | `sessions/sideQuestions.ts` | `sideQuestions.start/read/interrupt`; terminal `terminal.sideQuestions.*` | `/btw` contextual dock with scroll and copy | side-question dock through the shared service | parity | — |
|
|
26
30
|
| Approvals and standing approvals | `sessions/approvals.ts` | `approvals.*` | decision dock, `/permissions` | approvals dock, settings | parity | — |
|
|
27
|
-
| Questions (`ask_user`) | `tools/askUser.ts` | `ask_user
|
|
28
|
-
| Subagents | `sessions/subagentService.ts` | `spawn_subagent` (requires `title`, PROP-0030), `subagents
|
|
29
|
-
| Agent profiles | `agents/profiles.ts` | `spawn_subagent { agent }`, `agents.list/get/create/remove`; terminal `terminal.agents.*` | `/agents` page: browse, create, edit in `$EDITOR`, copy, delete |
|
|
30
|
-
| Run
|
|
31
|
+
| Questions (`ask_user`) | `tools/askUser.ts` | shared `ask_user` tool | plan-mode dock: strict aligned columns, bounded body scroll, 80×24 source sketch viewport; connected structural projection with high-confidence boundary normalization (PROP-0026, PROP-0028) | plan-mode form accepts the same 80×24 ASCII source contract with literal preview and accessible overflow; no typography change required | parity; terminal projection verified in isolated fixtures | — |
|
|
32
|
+
| Subagents | `sessions/subagentService.ts` | `spawn_subagent` (requires `title`, PROP-0030; `continue` resumes a stopped child, ADR-0043), `subagents.*`; plan mode allows only named eligible read-only research profiles | `/subagents` page with the `main` row pinned first, and live rows under the status line (mark, profile, parent-set title, `n of m tasks`), both rebuilt from saved runs when a conversation reopens; plan-mode research delegation uses the same Harness gate | reply trajectory; plan-mode research delegation uses the same Harness gate | parity | — |
|
|
33
|
+
| Agent profiles | `agents/profiles.ts` | `spawn_subagent { agent }`, `agents.list/get/create/remove`; terminal `terminal.agents.*` | `/agents` page: browse, create, edit in `$EDITOR`, copy, delete | Solo `/agents` lists profiles; profile details and management are not wired | partial | PAR-010 |
|
|
34
|
+
| Run todo list | `tools/todo.ts` | `todo_write`, `runs.todo` (`runs.checklist` deprecated); terminal `todo` telemetry | registered in terminal sessions and their subagents; each write shows as a todo block in the transcript; `/todo` shows the current list; a subagent row shows its `n of m tasks` | `/todo` shows the current list on demand; each write is not rendered inline | terminal done; App shows it on demand | PAR-001 |
|
|
31
35
|
| Continuation of a stopped run | `sessions/continuation.ts` | `continueFrom`, `runs.continuation` | not offered (`/resume` reopens history only) | not offered | planned | PAR-003 |
|
|
36
|
+
| Bounded replies and checkpoints (PROP-0041) | `sessions/workSlice.ts`, `tools/checkpoint.ts`, `sessions/runner.ts` | `checkpoint_write`, `workSlice`, `runs.continuation.checkpoint`, `checkpoint`/`heartbeat` events | guard on every terminal reply with the shared tool; the handoff is recorded on the run; no checkpoint card or slice control yet | not wired | implemented; terminal card, App presentation and `/slices` open | PAR-004 |
|
|
32
37
|
| Accounts | `accounts/` | `accounts.*` | `/accounts` | Accounts | parity | — |
|
|
33
38
|
| Models and effort | `accounts/choices.ts` | — | `/model`, `/effort` | composer pickers | parity | — |
|
|
34
39
|
| Skills | `plugins/`, `tools/dispatch.ts` | `skill_load` | `$name`, `/skill:name`, browser Skills tab | Capability, composer | parity | — |
|
|
35
|
-
| Plugins and Hub | `plugins/`, `hub/` | `plugins.*`, `hub.*` |
|
|
40
|
+
| Plugins and Hub | `plugins/`, `hub/` | `plugins.*`, `hub.*` | full-screen `/plugins` local manager; separate full-screen `/hub` Community catalog with bounded registry/document Preview (no Pi-package Preview) | local Plugins manager; Community Hub with payload Preview for non-package entries | parity | — |
|
|
36
41
|
| Connected apps (MCP) | `mcp/` | `connections.*`, broker tools | resource browser Connections tab | Connections | parity | — |
|
|
37
42
|
| Web search and page reading | `web/` | `web_search`, `web_fetch` | world tools | world tools | parity | — |
|
|
38
|
-
| Isolated browser | `browser/` | `browser_*` | world tools, headed on request, `/settings` Browser tab |
|
|
39
|
-
|
|
|
40
|
-
| Managed worktrees | `worktrees/` (PROP-0016) | `worktrees.*` | `--worktree`, `/worktree`, `xagent worktree` |
|
|
41
|
-
| Wiki notes (model tools) | `wiki/`, `tools/` | `wiki_*` | `xagent-wiki` shell
|
|
42
|
-
| History and trajectory (model tools) | `history/` | `history_*`, `trajectory_*` |
|
|
43
|
+
| Isolated browser | `browser/` | shared `browser_*` schemas | isolated world tools, headed on request, `/settings` Browser tab | native WebKit: navigate, tabs, visible-text read and page scroll without refs; unsupported operations refuse explicitly | partial; native backend gap | PAR-015 |
|
|
44
|
+
| Web annotations | `annotations/` (PROP-0017, PROP-0018, PROP-0038) | `annotations.*`, `annotations.capture.*`, `page_notes_*` | `/annotate:` pane (also `/annotate:annotate`), `/annotate:notes` saved list | website tab Annotate panel (inspector, queue to the focused thread, app windows through `annotations.capture.*`) | parity in the working tree; native WKWebView gestures unaccepted | PAR-011 |
|
|
45
|
+
| Managed worktrees | `worktrees/` (PROP-0016) | `worktrees.*` | `--worktree`, `/worktree`, `xagent worktree` | Solo `/worktree` lists records only; Solo starts sessions in the project folder and has no worktree level | partial | PAR-012 |
|
|
46
|
+
| Wiki notes (model tools) | `wiki/`, `tools/` | `wiki_*` | `Terminals.ownTools` registers Wiki-read tools through the session socket; `xagent-wiki` remains a person-facing shell utility | structured Harness tools | implemented on both; acceptance not recertified | PAR-002: acceptance not recertified |
|
|
47
|
+
| History and trajectory (model tools) | `history/` | `history_*`, `trajectory_*` | `Terminals.ownTools` registers model tools through the session socket; `/trajectory` page; `/history` navigates session branches | structured tools and trajectory views | implemented on both; acceptance not recertified | PAR-002: acceptance not recertified |
|
|
43
48
|
| Wiki browsing | `wiki/` | `wiki.*` | none | Wiki | host only | PAR-005 |
|
|
44
49
|
| Variants and refinement | `variant/`, `refine/` | `harnesses.*`, `refine.*` | browser Variant tab (read-only), `xagent refine` | Harness screen | host only | PAR-004 |
|
|
45
|
-
| Output trim and budget guard plugins | `plugins/firstParty.ts` |
|
|
50
|
+
| Output trim and budget guard plugins | `plugins/firstParty.ts` | trusted first-party hooks | `firstParty.list` loads enabled hooks in `terminal/piExtension.ts` | structured Harness sessions load enabled hooks | implemented on both; acceptance not recertified | PAR-006: acceptance not recertified |
|
|
46
51
|
| Doctor | `doctor/` | `doctor.*` | `/doctor` | diagnostics | parity | — |
|
|
47
52
|
| Run inspection | `sessions/runStore.ts` | `runs.*` | `/trajectory`, `/log` | run views, analytics | parity | — |
|
|
48
|
-
|
|
|
49
|
-
|
|
|
53
|
+
| Usage analytics | `usage/` (PROP-0042) | `usage.summary`, `usage.sync` | `/usage:`, `/usage:analysis` page (Analysis tab) | not wired | terminal implemented; host planned | PAR-016 |
|
|
54
|
+
| Provider limits | `usage/limits/` (PROP-0042) | `usage.limits` | `/usage:limit` page (Limits tab) | not wired | terminal implemented; host planned | PAR-016 |
|
|
55
|
+
| Session catalog (sessions per folder) | `sessions/` saved-history controls; shared catalog not implemented | `sessions.*` controls; no cross-surface catalog method | `/session` selects native Pi histories in the current folder | `/session` reads `bridge.agent.threads(SOLO_ID)`, maps each thread to its project folder, and filters by current effective account; `all` broadens only this App list | planned; catalogs differ | PAR-008 |
|
|
56
|
+
| Folder choice and recent folders | project/worktree selection remains surface-specific | launch `cwd`, `--worktree`, `/worktree` | starts in launch folder; explicit worktree commands | Solo sidebar is Project › Session; new sessions use the project's folder, with no folder/worktree level | planned; no shared recent-folder picker | PAR-009 |
|
|
50
57
|
| Computer control | — | `computer_*` (host tools) | unavailable, with reason | macOS bridge (host-backed) | host-backed | PAR-007 |
|
|
51
58
|
| Shared files vault | — | `files_*` (host tools) | none | Files | host only | PAR-007 |
|
|
52
59
|
|
|
60
|
+
## Core slash-command surfaces (PROP-0040)
|
|
61
|
+
|
|
62
|
+
These are the fixed `CORE_COMMANDS` entries. The App column records the current Solo source route,
|
|
63
|
+
not a claim that it has passed acceptance. `commands.list`, a handler-completeness test, and source
|
|
64
|
+
presence do not certify parity. Each command needs its own acceptance evidence; dynamic
|
|
65
|
+
plugin/extension, prompt-template and skill commands are listed by `commands.list` but are not in
|
|
66
|
+
this fixed table.
|
|
67
|
+
|
|
68
|
+
| Command | Terminal surface | App Solo route in source | Acceptance / remaining gap |
|
|
69
|
+
|---|---|---|---|
|
|
70
|
+
| `/help` | Command list and palette | Searchable command picker; selection fills the composer | Not certified per command |
|
|
71
|
+
| `/plan` | Plan request / mode toggle | Plan request; bare form toggles persistent plan mode; model Bash runs read-only (PROP-0043) | Not certified per command |
|
|
72
|
+
| `/btw` (`/side`) | Contextual side-question dock | Shared side-question service; bare form dismisses the dock | Not certified per command |
|
|
73
|
+
| `/new` | New conversation | Replaces focused tab with a draft; archives its saved session | Not certified per command |
|
|
74
|
+
| `/stop` | Interrupt current reply | Stops the focused session's reply | Not certified per command |
|
|
75
|
+
| `/session` (`/resume`) | Search/select native saved history in the current folder | Lists App Solo threads by folder and effective account; `all` widens only within that App list | PAR-008: separate catalogs; no native-history path opening; not certified |
|
|
76
|
+
| `/history` (`/tree`) | Navigate branches in the current native session | Calls `session.navigate` with stable native entry ID; same-session navigation, optional summary, no fork fallback | Route uses Harness `sessions.navigate`; per-command acceptance pending |
|
|
77
|
+
| `/fork` | Fork from a user message | Uses session tree/fork and opens the new session | Not certified per command |
|
|
78
|
+
| `/clone` | Clone the current branch | Uses session clone and opens the copy | Not certified per command |
|
|
79
|
+
| `/model` | Choose model | App model picker updates session runtime | Not certified per command |
|
|
80
|
+
| `/effort` | Choose reasoning effort | Updates session runtime effort | Not certified per command |
|
|
81
|
+
| `/thinking` | Toggle thinking display | Toggles transcript thinking visibility | Not certified per command |
|
|
82
|
+
| `/name` | Name the native session | Renames the saved session | Not certified per command |
|
|
83
|
+
| `/compact` | Compact current context | Runs Harness compact command | Not certified per command |
|
|
84
|
+
| `/copy` | Copy last reply | Copies last reply to the clipboard | Not certified per command |
|
|
85
|
+
| `/export` | Export HTML or JSONL | Runs Harness session export; relative paths resolve from the project folder | Not certified per command |
|
|
86
|
+
| `/trajectory` | Inspect recorded runs | Opens trajectory view for the requested or latest run | Not certified per command |
|
|
87
|
+
| `/reload` | Reload trusted resources and keybindings | Reloads Harness resources and refreshes command discovery | Not certified per command |
|
|
88
|
+
| `/accounts` | Accounts page | Opens App Accounts | Not certified per command |
|
|
89
|
+
| `/permissions` | Permissions page | Opens App approval settings | Not certified per command |
|
|
90
|
+
| `/harness` | Harness resource browser | Opens App Harness screen | Not certified per command |
|
|
91
|
+
| `/skills` | Skills browser shortcut | Opens Capability skills | Not certified per command |
|
|
92
|
+
| `/connections` | Connections browser | Opens App connectors | Not certified per command |
|
|
93
|
+
| `/mcp` | Connections browser shortcut | Opens the same App connectors view | Not certified per command |
|
|
94
|
+
| `/tools` | Tools page | Opens Capability tools | Not certified per command |
|
|
95
|
+
| `/plugins` | Full-screen local Plugins manager | Opens local Plugins manager | Not certified per command |
|
|
96
|
+
| `/hub` | Separate full-screen Community Hub catalog | Opens Community Hub | Not certified per command |
|
|
97
|
+
| `/components` | Components browser | Opens App Harness components | Not certified per command |
|
|
98
|
+
| `/settings` | Terminal settings | Opens App settings | Not certified per command |
|
|
99
|
+
| `/doctor` | Doctor checks, including explicitly confirmed live probes | Runs local readiness checks only | Not certified; App route does not expose live checks |
|
|
100
|
+
| `/worktree` | Managed-worktree page and actions | Lists worktrees; Solo has no typed create/status/remove methods wired, and no worktree level | PAR-012; management actions unavailable; not certified |
|
|
101
|
+
| `/subagents` | Live monitor and roster with the `main` row, restored on reopen | Opens latest run's trajectory, not a dedicated subagent roster | Not certified; surfaces differ |
|
|
102
|
+
| `/agents` | Browse/create/edit/copy/delete profiles | Lists profiles only; detail/create/remove methods are not wired into Solo | PAR-010; management actions unavailable; not certified |
|
|
103
|
+
| `/log` | Harness diagnostics and current run events | Opens latest run's trajectory, not a separate log reader | Not certified; surfaces differ |
|
|
104
|
+
| `/hotkeys` | Keyboard controls | Opens App shortcut settings | Not certified per command |
|
|
105
|
+
| `/quit` | Restore terminal and exit | Closes the focused Solo tab; does not exit the App | Not certified per command |
|
|
106
|
+
|
|
53
107
|
The terminal-only display amendments [PROP-0026](architecture/proposals/PROP-0026-connected-sketch-display.md)
|
|
54
108
|
and [PROP-0028](architecture/proposals/PROP-0028-normalize-question-wireframes.md) permit connected
|
|
55
109
|
structural glyphs, frame-attached standalone dividers, and high-confidence boundary normalization
|
|
@@ -62,17 +116,19 @@ or live-model sketch quality.
|
|
|
62
116
|
|
|
63
117
|
| ID | Gap | Planned change |
|
|
64
118
|
|---|---|---|
|
|
65
|
-
| PAR-001 |
|
|
66
|
-
| PAR-002 | Wiki,
|
|
119
|
+
| PAR-001 | Todo list not rendered inline in the App | Both surfaces can show the current list: the terminal renders each write as a todo block and `/todo` shows a snapshot; the App's `/todo` shows a read-only list. The App still does not draw an inline block for each write. |
|
|
120
|
+
| PAR-002 | Acceptance of terminal-model History/Wiki/skill tools | Source gap resolved: `Terminals.ownTools` registers History/trajectory, Wiki-read and skill tools over the session socket; `xagent-wiki` is a user-facing shell utility, not the model's only route. Acceptance has not been recertified in this documentation pass. |
|
|
67
121
|
| PAR-003 | Continuation unused | `/resume` lists interrupted runs and continues one with `continueFrom`; the App offers Continue. |
|
|
68
122
|
| PAR-004 | Refinement and adoption only in the App | Variant tab actions: start, candidates, adopt, trust. |
|
|
69
123
|
| PAR-005 | Wiki browsing only in the App | A `/wiki` page over `wiki.*`. |
|
|
70
|
-
| PAR-006 |
|
|
124
|
+
| PAR-006 | Acceptance of terminal first-party hooks | Source gap resolved: enabled hooks are returned by protected `firstParty.list` and loaded by `terminal/piExtension.ts`. Acceptance has not been recertified in this documentation pass. |
|
|
71
125
|
| PAR-007 | Host tools without a Harness owner | Decide each: computer control stays host-backed (terminal shows unavailable); the files vault becomes a Harness capability or is dropped. |
|
|
72
|
-
| PAR-008 | Separate session catalogs |
|
|
73
|
-
| PAR-009 |
|
|
74
|
-
| PAR-010 | Agent
|
|
75
|
-
| PAR-011 |
|
|
76
|
-
| PAR-012 | Managed
|
|
77
|
-
| PAR-014 | Connected terminal sketch display | Closed by [PROP-0026 verification](evidence/terminal-connected-sketches/README.md) and extended by [PROP-0028 verification](evidence/terminal-wireframe-normalization/README.md): production PTY fixtures cover connected corners/tees, title-bearing rules, missing and whitespace-shifted side edges, internal table widths, frame-attached dividers, resize/panning and unchanged raw persistence/answers. Harness and host checks passed. Host literal rendering remains permitted; no host implementation change was required. This is fixture verification, not an every-font or live-model guarantee. |
|
|
126
|
+
| PAR-008 | Separate session catalogs | Proposal approved; shared catalog is not implemented. Terminal `/session` selects native Pi history in the current folder. App `/session` reads Solo `agent.threads`, maps threads through Solo project groups, and filters to the current effective account and folder; `/session all` broadens only within that App catalog. It cannot open an arbitrary native session path. No cross-surface catalog or visibility guarantee exists. |
|
|
127
|
+
| PAR-009 | Shared folder/recent-project choice | Terminal starts from its launch `cwd` and can switch through its worktree surface. App Solo uses Project › Session and starts new sessions in the selected project's folder; it has no folder/worktree level or shared recent-folder picker. |
|
|
128
|
+
| PAR-010 | Agent profile management in Solo | App Solo `/agents` can list profiles. Although the renderer allowlist includes `agents.get`, Solo does not wrap it; `agents.create/remove` are not exposed there. Profile details and management actions are unavailable, unlike terminal `/agents`. |
|
|
129
|
+
| PAR-011 | Web annotations | Harness, terminal and App source done (PROP-0017, PROP-0018, 2026-10-24): the App calls `annotations.*`, imports its old notes once, uses the `page_notes_*` tools, and has the Annotate panel. Open: acceptance of the inspector and selection gestures in the running App's WKWebView. PROP-0038 (2026-10-25): both front ends share the page helper, so open shadow roots work in the terminal's capture browser and the App's tabs alike; composed text capture, save, resolve and reveal were exercised in an isolated App WKWebView, inspector clicks were not. |
|
|
130
|
+
| PAR-012 | Managed worktree management in Solo | Harness and terminal provide full worktree operations (PROP-0016). Solo `/worktree` lists records only: its renderer adapter does not wire typed `worktrees.create`, `status` or `remove` calls, and Solo session creation stays at the project folder with no worktree level. Handoff, branch, prune, restore and setup-trust actions are also absent from this Solo surface. |
|
|
78
131
|
| PAR-013 | Expanded question wireframes and terminal layout | Closed by [PROP-0025 verification](evidence/terminal-question-wireframes/README.md): four-size production PTY acceptance covers aligned compact columns, body scrolling, pinned controls, Shift+arrow sketch panning and live resizing. Host contracts accept 80×24 literal ASCII sketches (1,943 bytes); six isolated browser tests include exact-boundary content, accessible overflow and unchanged selection/answers. This is controlled fixture acceptance, not live-provider or native Tauri evidence. |
|
|
132
|
+
| PAR-014 | Connected terminal sketch display | Closed by [PROP-0026 verification](evidence/terminal-connected-sketches/README.md) and extended by [PROP-0028 verification](evidence/terminal-wireframe-normalization/README.md): production PTY fixtures cover connected corners/tees, title-bearing rules, missing and whitespace-shifted side edges, internal table widths, frame-attached dividers, resize/panning and unchanged raw persistence/answers. Harness and host checks passed. Host literal rendering remains permitted; no host implementation change was required. This is fixture verification, not an every-font or live-model guarantee. |
|
|
133
|
+
| PAR-016 | Usage analytics and provider limits in the App | The terminal has `/usage:analysis` and `/usage:limit` over `usage.*`. The App presents the same capability: an analytics view and a per-account provider limit view. |
|
|
134
|
+
| PAR-015 | Native WebKit browser-tool coverage | The shared browser schema is wider than the native backend. Native WebKit supports navigation, tabs, visible-text reads and scrolling without refs. Accessibility snapshots, snapshot-ref interactions (including click/type/select/ref-scroll), browser screenshots, waits and keyboard presses return an explicit `browser_unsupported` refusal before effects; there is no automatic switch to the isolated Harness browser. See page 13 and the native backend's `surfaces` note. |
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Xingular Harness 1.1.1
|
|
2
|
+
|
|
3
|
+
The first published release of the 1.1 line, and npm `latest`. It follows the published 1.0.0
|
|
4
|
+
baseline. The 1.1.0 tag was pushed, but its release run stopped before publishing, so nothing was
|
|
5
|
+
published under 1.1.0.
|
|
6
|
+
|
|
7
|
+
## Agent profiles and named subagents
|
|
8
|
+
|
|
9
|
+
- A subagent can start from a named profile: the built-in `worker` and `explorer`, a person's
|
|
10
|
+
`<data root>/agents/<name>.md`, a repository's `.xingular/agents/<name>.md`, or a variant's c5
|
|
11
|
+
subagent. A profile narrows the child's tools and plugins and may choose its variant, model and
|
|
12
|
+
effort (PROP-0029, ADR-0030).
|
|
13
|
+
- The parent names each subagent. `spawn_subagent` requires a short `title`; `subagents.spawn`
|
|
14
|
+
takes an optional one (PROP-0030). The live roster, `/subagents` and the transcript show the
|
|
15
|
+
title.
|
|
16
|
+
- The terminal runs the checklist tool and shows each write as a checklist block. An in-progress
|
|
17
|
+
item shows a yellow dot, and a running subagent's row shows the working spinner in its profile's
|
|
18
|
+
colour.
|
|
19
|
+
|
|
20
|
+
## Release pipeline
|
|
21
|
+
|
|
22
|
+
- The release pack and smoke scripts take their npm cache from the system temp folder. They
|
|
23
|
+
previously used a macOS-only path, which failed on Linux runners.
|
|
24
|
+
- The `/help` terminal check matches the documented grouped, scrollable help: it pages until every
|
|
25
|
+
group is seen, and its expected group is `Plugins`.
|
|
26
|
+
|
|
27
|
+
Checks for this release: `npm run ci` (148 test files, 1111 tests), the exact-tarball fresh
|
|
28
|
+
installation smoke test including the packaged terminal, and the release preflight.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Xingular Harness 1.2.0
|
|
2
|
+
|
|
3
|
+
This release builds on the published 1.1.1 line.
|
|
4
|
+
|
|
5
|
+
## Compatibility note
|
|
6
|
+
|
|
7
|
+
The filesystem root cannot be used as an active workspace, because that would make the boundary
|
|
8
|
+
meaningless. The workspace boundary is intentionally stricter: model-controlled writes outside the active project,
|
|
9
|
+
including writes to temporary directories, require a one-call approval unless the eligible Full
|
|
10
|
+
Permission switch is explicitly enabled. Remembered per-tool grants do not cover them; unattended
|
|
11
|
+
runs cannot request approval. The Full Permission switch remains off by default. A workspace with
|
|
12
|
+
an external hard-link alias blocks default-scope Bash until the alias is removed or the file is
|
|
13
|
+
replaced with a copy. Native writes use atomic replacement and preserve ordinary file mode where
|
|
14
|
+
possible; ACLs and extended attributes are not guaranteed to survive replacement. On macOS, the
|
|
15
|
+
sandbox also blocks workspace-local hard-link creation.
|
|
16
|
+
|
|
17
|
+
## Workspace write boundary
|
|
18
|
+
|
|
19
|
+
Model-controlled file writes and Bash are scoped to the active project workspace by default. Native
|
|
20
|
+
write/edit operations revalidate the target and atomically replace the directory entry under an
|
|
21
|
+
OS-enforced write scope, so an in-workspace hard link does not modify an outside alias. Default Bash
|
|
22
|
+
scans for external hard links and runs in an OS sandbox that prevents cross-boundary hard-link
|
|
23
|
+
creation; unavailable or incomplete enforcement fails closed. Reads remain unchanged. Explicit
|
|
24
|
+
outside Bash writes require pre-execution one-call approval and run exactly once (`workspaceWriteScope:
|
|
25
|
+
'outside'`; in the terminal composer, `!outside <command>`). The approval shows the complete quoted
|
|
26
|
+
command in scrollable details; if the terminal is too small to show both details and choices, the
|
|
27
|
+
request is denied. Command output cannot trigger approval or automatic retry. Runs record their
|
|
28
|
+
resolved `workspaceRoot`; older run records remain readable.
|
|
29
|
+
Protection from a separate same-user process outside Harness is not provided.
|
|
30
|
+
|
|
31
|
+
## Planning and run continuity
|
|
32
|
+
|
|
33
|
+
Plan mode now requires evidence-grounded repository research and can delegate bounded read-only investigations to eligible research profiles. After compaction, active runs rehydrate the latest checklist and plan instructions. The terminal keeps the latest subagent status visible until its next run.
|
|
34
|
+
|
|
35
|
+
## Terminal commands and annotations
|
|
36
|
+
|
|
37
|
+
Plugin-owned terminal commands use `/<owner-prefix>:<command>`, while Harness-owned routes such as `/doctor`, `/worktree`, `/trajectory`, `/subagents`, and `/agents` are first-class core commands. Prior command forms remain hidden compatibility aliases for one release; migrate scripts and keybindings to the canonical names.
|
|
38
|
+
|
|
39
|
+
The annotation inspector now supports content in open shadow roots, including composed selections and targets. Closed shadow roots and frames remain unsupported, and existing document-only annotations retain their behavior.
|
|
40
|
+
|
|
41
|
+
## Terminal interaction
|
|
42
|
+
|
|
43
|
+
`/session` without a path now opens a searchable saved-session picker. Composer history includes user prompts, Bash commands and executed slash commands; browsing temporarily replaces the draft and restores its cursor, mode and attachments when it returns. Compact question docks now size each tab independently, keep nested sketches scrollable, and preserve page-footer hints at narrow widths.
|
|
44
|
+
|
|
45
|
+
## Performance evidence
|
|
46
|
+
|
|
47
|
+
Adds reproducible PTY and session-runtime profiling and publishes the [EXP-0003 report](../experiments/EXP-0003-performance-audit/results.md). That report is a 1.1.1 baseline captured from a dirty worktree, not a clean 1.2.0 benchmark; it also records a failed narrow-width `/settings` footer check and other measurement limits.
|
|
48
|
+
|
|
49
|
+
Node 22.19 or later is required. Building or running the standalone terminal also requires Bun 1.3.14 or later. See the project license and notices for third-party terms.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Xingular Harness 1.3.0
|
|
2
|
+
|
|
3
|
+
This minor release builds on 1.2.0 with clearer run progress, more reliable work-slice limits, bounded plan research, and distinct local-plugin and Community Hub experiences.
|
|
4
|
+
|
|
5
|
+
## Run progress and work slices
|
|
6
|
+
|
|
7
|
+
- `session_name` guidance names the session before the first tool call when a request needs tools or changes state. Multi-step work uses `todo_write`; the prompt and tool descriptions share the same concrete guidance.
|
|
8
|
+
- The run checklist is now a todo list: `todo_write`, `todo.updated`, `runs.todo`, the `todo` plugin and a terminal todo block. `/todo` displays the current list without a model request; `/checklist` remains an alias. Existing `checklist.updated` events are still read, and legacy pinned tools and server methods remain available as deprecated compatibility aliases for one release.
|
|
9
|
+
- Work slices default to 320 tool calls and 60 minutes, with no token cap unless configured. Stall detection recognizes meaningful progress, bounds repeated calls by name and arguments within each reply, and resets its counters between replies.
|
|
10
|
+
- Plan research can delegate only to named profiles whose effective tools and plugins qualify for read-only research. The active plan and latest todo list are restored after compaction.
|
|
11
|
+
|
|
12
|
+
## Plugins and Community Hub
|
|
13
|
+
|
|
14
|
+
- `/plugins` is a dedicated local plugin manager for installed packages, switching, trust, settings, install, update and removal. `/hub` is a separate Community catalog with Catalog and Installed views; Installed retains receipts from every channel and labels each channel.
|
|
15
|
+
- Hub shows cached or bundled catalog entries before refreshing remotely, and exposes origin, refresh time and stale/error status. Registry/document entries keep a bounded payload Preview; Pi packages have no payload Preview. Hub-owned packages remain pinned to receipt versions: removal is receipt-aware, and floating plugin updates cannot silently replace them.
|
|
16
|
+
- No catalog schema or storage migration is required; existing receipts, settings and trust remain intact. The broad `/harness` resource browser remains available.
|
|
17
|
+
|
|
18
|
+
## Terminal
|
|
19
|
+
|
|
20
|
+
- Skill completion and syntax highlighting distinguish enabled skill invocations, command names and arguments while retaining the existing composer workflow.
|
|
21
|
+
- Doctor's Bash readiness check now requires the platform write-boundary sandbox. Its live check runs one fixed, no-network command through the same workspace boundary as normal Bash, reports only the exit status, and stays subject to policy without being widened by Full Permission.
|
package/docs/releases/4.0.0.md
CHANGED
|
@@ -8,11 +8,11 @@ terminal command namespace, documented below. Earlier published versions remain
|
|
|
8
8
|
|
|
9
9
|
- Managed Git worktrees for sessions and the terminal, with leases, guarded setup scripts, handoff,
|
|
10
10
|
pruning, restoration, and bounded snapshots that preserve uncommitted work.
|
|
11
|
-
-
|
|
12
|
-
through Harness methods and terminal `/
|
|
11
|
+
- Web annotations and queued comments, including capture, review, resolution, sharing, and delivery
|
|
12
|
+
through Harness methods and terminal `/annotate:` and `/annotate:notes` pages.
|
|
13
13
|
- A unified terminal resource browser with persistent full-screen sections for browser tabs,
|
|
14
14
|
plugins, skills, connectors, variants, and other Harness resources.
|
|
15
|
-
- A full-screen `/trajectory` Runs/Events browser with searchable event details, selected-event
|
|
15
|
+
- A full-screen `/history:trajectory` Runs/Events browser with searchable event details, selected-event
|
|
16
16
|
JSON, and a responsive split-pane layout.
|
|
17
17
|
- Additional terminal controls for browser settings, plugin settings, and subagent activity.
|
|
18
18
|
- Fix Node 22 SQLite parameter binding in recall and run indexes, and guard worktree Git calls
|
|
@@ -31,12 +31,13 @@ credentials are configured inside an isolated Harness account.
|
|
|
31
31
|
|
|
32
32
|
The new server methods are additive. The published executable is `xagent`, replacing the earlier
|
|
33
33
|
`xharness` candidate command without a compatibility alias; scripts using that candidate name must
|
|
34
|
-
be updated.
|
|
35
|
-
`/subagents`, `/trajectory`, `/doctor`,
|
|
36
|
-
|
|
37
|
-
`/
|
|
38
|
-
for
|
|
39
|
-
place. Install this exact version or use the `latest` tag; historical
|
|
34
|
+
be updated. All plugin-owned terminal commands use `/<owner-prefix>:<command>`: for example,
|
|
35
|
+
`/subagents:subagents`, `/history:trajectory`, `/doctor:doctor`, `/worktrees:worktree`, and
|
|
36
|
+
`/annotate:annotate`. The annotation prefix root `/annotate:` opens the default capture pane, and
|
|
37
|
+
`/annotate:notes` opens saved annotations. Existing `/plugin:<command>` and former bare required-plugin
|
|
38
|
+
forms remain hidden compatibility aliases for one release. Existing session, variant, account, plugin,
|
|
39
|
+
and browser contracts remain in place. Install this exact version or use the `latest` tag; historical
|
|
40
|
+
versions remain available.
|
|
40
41
|
|
|
41
42
|
## Verification scope
|
|
42
43
|
|
package/docs/releases/README.md
CHANGED
|
@@ -1,41 +1,46 @@
|
|
|
1
1
|
# Release procedure
|
|
2
2
|
|
|
3
|
-
1. Review and commit completed Harness changes on the active release branch. Review App
|
|
3
|
+
1. Review and commit the completed Harness changes on the active release branch. Review App
|
|
4
4
|
compatibility changes separately. Preserve old tags and exclude outputs, external references,
|
|
5
5
|
and caches.
|
|
6
|
-
2. Run npm run ci and the required App checks on
|
|
7
|
-
1.4.2 and use Node 22.19.0
|
|
8
|
-
3. Run npm run release:pack
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
5. Present the exact commit, candidate inventory
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
6. After approval, push the reviewed
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
6
|
+
2. Run `npm run ci` and the required App checks. Require green CI on Ubuntu and macOS; install Bun
|
|
7
|
+
1.4.2 and use Node 22.19.0. Do not waive failing checks.
|
|
8
|
+
3. Run `npm run release:pack` and inspect the candidate inventory, SHA-256 and npm integrity. Run
|
|
9
|
+
`npm run release:smoke -- <tarball> --terminal` for a fresh-install SDK/server/terminal check;
|
|
10
|
+
`--offline` is only a local smoke check, not fresh-install acceptance.
|
|
11
|
+
4. Run `npm run release:preflight`. Verify npm scope ownership and trusted-publisher settings for
|
|
12
|
+
`tanntnny/xingular-harness` and `release.yml`, with direct publishing enabled. Configure the
|
|
13
|
+
GitHub `npm-publish` environment with required reviewers. No login is started automatically; an
|
|
14
|
+
already-used version, unreachable registry, or missing publishing configuration blocks release.
|
|
15
|
+
5. Candidate approval is a pre-tag gate. Present the exact clean commit, candidate inventory,
|
|
16
|
+
SHA-256, npm integrity, release notes and check results for approval. Do not create or push the
|
|
17
|
+
matching `v<version>` tag until the person explicitly approves that candidate.
|
|
18
|
+
6. After candidate approval, push the reviewed commit and matching tag. The workflow reruns CI on
|
|
19
|
+
both OSes, builds one candidate, and smoke-tests that exact tarball on both OSes. Before approving
|
|
20
|
+
the protected `npm-publish` environment, compare the uploaded candidate's commit, SHA-256 and npm
|
|
21
|
+
integrity with the approved local candidate; stop if they differ. This environment approval is a
|
|
22
|
+
separate publication gate. The publish job publishes that same tarball with OIDC provenance and
|
|
23
|
+
`--tag latest`, then verifies registry integrity/provenance and creates a GitHub release. No local
|
|
24
|
+
publishing token is needed. Inspect registry state before retrying any failed publication.
|
|
22
25
|
|
|
23
26
|
A published version cannot be replaced. Corrections require a later version. This package's
|
|
24
27
|
intentional 1.0.0 reset does not rewrite historical decisions or claim an ordering above older
|
|
25
28
|
2.x–5.x development versions. Publication status and local evidence belong in the candidate report.
|
|
26
29
|
|
|
27
|
-
## 4.0.0 candidate
|
|
30
|
+
## Historical 4.0.0 candidate evidence
|
|
28
31
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
tests, 47 sidecar tests, and 7 dev-signing tests passed with 1 skipped), layer check, and Rust tests
|
|
32
|
-
(168 passed, 1 ignored); and App UI consistency. The registry lists 1.0.0 as `latest` and 4.0.0 as
|
|
33
|
-
unused. The clean-tree release preflight passed. Exact-tarball packaging and a fresh-install smoke
|
|
34
|
-
test passed, including the packaged SDK, types, CLI, server and isolated terminal. The tagged
|
|
35
|
-
preflight, two-OS CI, and exact-tarball smoke are enforced by the release workflow. The npm
|
|
36
|
-
trusted-publisher configuration for `tanntnny/xingular-harness` and `release.yml` requires
|
|
37
|
-
package-owner verification; `npm login` does not verify that setting.
|
|
32
|
+
The following report records a prior candidate and registry snapshot; it is not evidence for any
|
|
33
|
+
current candidate or a description of the current release gates.
|
|
38
34
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
35
|
+
At the time, local checks on that candidate source passed: Harness `npm run ci` (typecheck, 134 test
|
|
36
|
+
files with 1,004 passing tests and 3 skipped, plus the standalone proof); App typecheck, `npm test`
|
|
37
|
+
(566 renderer tests, 47 sidecar tests, and 7 dev-signing tests passed with 1 skipped), layer check,
|
|
38
|
+
and Rust tests (168 passed, 1 ignored); and App UI consistency. The registry snapshot listed 1.0.0 as
|
|
39
|
+
`latest` and 4.0.0 as unused. Its clean-tree preflight, exact-tarball packaging and fresh-install
|
|
40
|
+
smoke test passed. The package-owner verification of npm trusted-publisher configuration for
|
|
41
|
+
`tanntnny/xingular-harness` and `release.yml` was still required; `npm login` does not verify that
|
|
42
|
+
setting. These results and registry values are historical.
|
|
43
|
+
|
|
44
|
+
At that time, the workflow ran full CI and exact-tarball smoke on Ubuntu and macOS before publishing.
|
|
45
|
+
The current workflow and approval gates are described above. No local test failure was waived by the
|
|
46
|
+
historical report.
|
package/docs/study/00-index.md
CHANGED
|
@@ -20,6 +20,9 @@ written and the claim moves to checked behavior. Cite material as
|
|
|
20
20
|
side question, and checked-out external implementations.
|
|
21
21
|
- [Harness feature-gap review](feature-gap-review.md) — task/goal management, long-running work,
|
|
22
22
|
memory, execution isolation, verification, and observability gaps against the studied peers.
|
|
23
|
+
- [Why a long run takes hours](STUDY-0003-long-horizon-runs.md) — measured diagnosis of two 70–97
|
|
24
|
+
minute replies (447 and 266 tool calls, 5 and 2 compactions, zero assistant text), what other
|
|
25
|
+
harnesses do about it, and the fixes proposed in [PROP-0041](../architecture/proposals/PROP-0041-bounded-work-slices.md).
|
|
23
26
|
|
|
24
27
|
## Sources
|
|
25
28
|
|