@xingular/harness 0.1.7 → 2.0.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 +14 -0
- package/README.md +29 -10
- package/dist/cli.js +5179 -2976
- package/dist/terminal-pi.js +365 -24
- package/docs/README.md +3 -0
- package/docs/decisions/ADR-0002-native-subagent-lifecycle.md +49 -0
- package/docs/decisions/ADR-0003-shared-asynchronous-subagents.md +68 -0
- package/docs/decisions/ADR-0004-fullscreen-terminal-layout.md +49 -0
- package/docs/decisions/ADR-0005-app-provided-oauth-clients.md +54 -0
- package/docs/terminal-tui.md +100 -10
- package/package.json +5 -4
- package/src/accounts/accounts.test.ts +87 -1
- package/src/accounts/accounts.ts +120 -18
- package/src/core/bus.test.ts +22 -0
- package/src/core/bus.ts +17 -2
- package/src/harness.ts +12 -2
- package/src/index.ts +7 -2
- package/src/mcp/connections.ts +39 -12
- package/src/mcp/service.test.ts +49 -3
- package/src/mcp/service.ts +14 -3
- package/src/mcp/types.ts +10 -0
- package/src/memory/curation.test.ts +44 -1
- package/src/memory/dispatch.ts +5 -0
- package/src/memory/maintenance.test.ts +17 -1
- package/src/memory/maintenance.ts +169 -8
- package/src/memory/recall.ts +2 -1
- package/src/memory/trajectory.test.ts +178 -0
- package/src/memory/trajectory.ts +220 -0
- package/src/memory/wiki.ts +2 -1
- package/src/memory/wikiIndex.ts +3 -2
- package/src/plugins/builtin.ts +4 -2
- package/src/plugins/catalogue.test.ts +1 -1
- package/src/server/methods.ts +6 -0
- package/src/server/server.test.ts +20 -1
- package/src/sessions/approvals.test.ts +49 -0
- package/src/sessions/approvals.ts +26 -4
- package/src/sessions/conversation.test.ts +56 -0
- package/src/sessions/lineageJoin.ts +1 -1
- package/src/sessions/registry.ts +38 -7
- package/src/sessions/runStore.ts +14 -0
- package/src/sessions/runner.ts +9 -3
- package/src/sessions/sessions.test.ts +46 -7
- package/src/sessions/sessions.ts +31 -39
- package/src/sessions/subagentService.test.ts +159 -0
- package/src/sessions/subagentService.ts +236 -0
- package/src/sessions/subagents.ts +97 -0
- package/src/terminal/controller.ts +73 -10
- package/src/terminal/piExtension.ts +42 -6
- package/src/terminal/socket.test.ts +23 -0
- package/src/terminal/socket.ts +42 -18
- package/src/terminal/standalone.ts +12 -0
- package/src/terminal/terminal.test.ts +150 -15
- package/src/terminal/terminals.ts +113 -5
- package/src/terminal/trajectory.test.ts +66 -0
- package/src/terminal/trajectory.ts +44 -0
- package/src/terminal/tui/application.test.ts +184 -8
- package/src/terminal/tui/application.ts +243 -81
- package/src/terminal/tui/commands.test.ts +69 -9
- package/src/terminal/tui/commands.ts +89 -7
- package/src/terminal/tui/editor.test.ts +56 -27
- package/src/terminal/tui/editor.ts +49 -19
- package/src/terminal/tui/keybindings.test.ts +8 -0
- package/src/terminal/tui/keybindings.ts +10 -1
- package/src/terminal/tui/planMode.test.ts +10 -0
- package/src/terminal/tui/planMode.ts +12 -0
- package/src/terminal/tui/runtime.socket.test.ts +77 -3
- package/src/terminal/tui/runtime.test.ts +10 -0
- package/src/terminal/tui/runtime.ts +24 -9
- package/src/terminal/tui/screen.test.ts +143 -0
- package/src/terminal/tui/screen.ts +121 -0
- package/src/terminal/tui/skillInvocation.test.ts +71 -0
- package/src/terminal/tui/skillInvocation.ts +51 -0
- package/src/terminal/tui/status.test.ts +24 -46
- package/src/terminal/tui/status.ts +42 -69
- package/src/terminal/tui/theme.ts +18 -7
- package/src/terminal/tui/trajectoryPanel.test.ts +99 -0
- package/src/terminal/tui/trajectoryPanel.ts +226 -0
- package/src/terminal/tui/transcript.test.ts +14 -0
- package/src/terminal/tui/transcript.ts +11 -0
- package/src/terminal/tui/ui.ts +2 -2
- package/src/terminal/tui/welcome.ts +4 -4
- package/src/terminal/tui/workingStatus.test.ts +44 -0
- package/src/terminal/tui/workingStatus.ts +238 -0
- package/src/tools/definitions.ts +42 -1
- package/src/tools/maintenance.ts +6 -1
- package/src/tools/spawnSubagent.ts +40 -85
- package/src/tools/types.ts +2 -0
- package/docs/evidence/terminal-2026-10-17/120x40-completed-transcript.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17/40x20-settings-interaction.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17/40x20-settings-keyboard.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17/40x20-welcome.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17/80x24-approval-0.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17/80x24-question.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17/verification.json +0 -130
- package/docs/evidence/terminal-2026-10-17-followup/120x40-completed-transcript.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/40x20-settings-interaction.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/40x20-settings-keyboard.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/40x20-welcome.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/80x24-approval-0.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/80x24-plugin-light.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/80x24-question-batch.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/80x24-question.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-approval-0.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-plugin-light.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-question-batch.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-question.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/app-bundle/verification.json +0 -95
- package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-approval-0.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-plugin-light.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-question-batch.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-question.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/global-install/README.md +0 -27
- package/docs/evidence/terminal-2026-10-17-followup/global-install/shell-command-80x24.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/global-install/shell-command.json +0 -18
- package/docs/evidence/terminal-2026-10-17-followup/global-install/verification.json +0 -95
- package/docs/evidence/terminal-2026-10-17-followup/harness-reference-80x24.json.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/harness-reference-final-80x24.json.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/harness-reference-scenario.json +0 -60
- package/docs/evidence/terminal-2026-10-17-followup/live-codex/README.md +0 -24
- package/docs/evidence/terminal-2026-10-17-followup/live-codex/complete-80x24.ansi.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/live-codex/verification.json +0 -57
- package/docs/evidence/terminal-2026-10-17-followup/omp-reference-80x24-early.json.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/omp-reference-80x24.json.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/omp-reference-scenario.json +0 -58
- package/docs/evidence/terminal-2026-10-17-followup/omp-supplemental-static.json.gz +0 -0
- package/docs/evidence/terminal-2026-10-17-followup/rea-artifacts.json +0 -320
- package/docs/evidence/terminal-2026-10-17-followup/reference-comparison.json +0 -30
- package/docs/evidence/terminal-2026-10-17-followup/reference-comparison.md +0 -133
- package/docs/evidence/terminal-2026-10-17-followup/reference-source-observations.json +0 -20
- package/docs/evidence/terminal-2026-10-17-followup/verification.json +0 -207
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"passed": true,
|
|
3
|
-
"implementation": "production standalone CLI + real Pi SDK + loopback OpenAI SSE transport",
|
|
4
|
-
"cli": "/Users/tanny/Documents/Projects/Xingular/Xingular Agent/Harness/dist/cli.js",
|
|
5
|
-
"cliSha256": "76d6ac270479abb2c84dc3eba6d7956467ece708f6b2a9976e256af1330739c1",
|
|
6
|
-
"verifierSha256": "71f2a827e458a333f9f01aa8048f30db6bb21065cd4c7b9a51feab7d130c4b62",
|
|
7
|
-
"provider": "controlled loopback OpenAI-compatible streaming transport; no external model requests or user credentials",
|
|
8
|
-
"requestCount": 18,
|
|
9
|
-
"profiles": [
|
|
10
|
-
{
|
|
11
|
-
"size": "40x20",
|
|
12
|
-
"checks": [
|
|
13
|
-
"welcome and real configured model",
|
|
14
|
-
"actual settings tabs, section focus, keyboard search/control and Escape return",
|
|
15
|
-
"command autocomplete and real accounts selector",
|
|
16
|
-
"Unicode, real streaming/thinking/read/bash/approval/question, expansion, resizing and scrolling",
|
|
17
|
-
"new session, explicit scoped resume and session naming",
|
|
18
|
-
"actual stream cancellation and interrupted run record",
|
|
19
|
-
"explicit account switching, process restart and real run on newly pinned account"
|
|
20
|
-
],
|
|
21
|
-
"persistedRunCount": 3,
|
|
22
|
-
"exitCode": 0,
|
|
23
|
-
"termiosRestored": true,
|
|
24
|
-
"bracketedPasteDisabled": true,
|
|
25
|
-
"cursorShown": true
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
"size": "80x24",
|
|
29
|
-
"checks": [
|
|
30
|
-
"welcome and real configured model",
|
|
31
|
-
"actual settings tabs, section focus, keyboard search/control and Escape return",
|
|
32
|
-
"command autocomplete and real accounts selector",
|
|
33
|
-
"Unicode, real streaming/thinking/read/bash/approval/question, expansion, resizing and scrolling",
|
|
34
|
-
"new session, explicit scoped resume and session naming",
|
|
35
|
-
"actual stream cancellation and interrupted run record",
|
|
36
|
-
"explicit account switching, process restart and real run on newly pinned account"
|
|
37
|
-
],
|
|
38
|
-
"persistedRunCount": 3,
|
|
39
|
-
"exitCode": 0,
|
|
40
|
-
"termiosRestored": true,
|
|
41
|
-
"bracketedPasteDisabled": true,
|
|
42
|
-
"cursorShown": true
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"size": "120x40",
|
|
46
|
-
"checks": [
|
|
47
|
-
"welcome and real configured model",
|
|
48
|
-
"actual settings tabs, section focus, keyboard search/control and Escape return",
|
|
49
|
-
"command autocomplete and real accounts selector",
|
|
50
|
-
"Unicode, real streaming/thinking/read/bash/approval/question, expansion, resizing and scrolling",
|
|
51
|
-
"new session, explicit scoped resume and session naming",
|
|
52
|
-
"actual stream cancellation and interrupted run record",
|
|
53
|
-
"explicit account switching, process restart and real run on newly pinned account"
|
|
54
|
-
],
|
|
55
|
-
"persistedRunCount": 3,
|
|
56
|
-
"exitCode": 0,
|
|
57
|
-
"termiosRestored": true,
|
|
58
|
-
"bracketedPasteDisabled": true,
|
|
59
|
-
"cursorShown": true
|
|
60
|
-
}
|
|
61
|
-
],
|
|
62
|
-
"captures": [
|
|
63
|
-
{
|
|
64
|
-
"file": "40x20-welcome.ansi.gz",
|
|
65
|
-
"kind": "actual PTY cumulative raw ANSI stream",
|
|
66
|
-
"columns": 40,
|
|
67
|
-
"rows": 20,
|
|
68
|
-
"rawBytes": 2901,
|
|
69
|
-
"rawSha256": "bbabb16e9e923f0bcf1c6d0781e3c91eefa819b11649a762cc34e0a104681b16",
|
|
70
|
-
"archiveBytes": 653,
|
|
71
|
-
"archiveSha256": "d22a0e07420d5e648290ccae08bb27284d8607d483f81337771102ba3dadc605"
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
"file": "40x20-settings-interaction.ansi.gz",
|
|
75
|
-
"kind": "actual PTY cumulative raw ANSI stream",
|
|
76
|
-
"columns": 40,
|
|
77
|
-
"rows": 20,
|
|
78
|
-
"rawBytes": 10395,
|
|
79
|
-
"rawSha256": "6a933553fd256805ec75cb598f9a39b390dcfd5d78dea778ffe301a1e875fad8",
|
|
80
|
-
"archiveBytes": 1259,
|
|
81
|
-
"archiveSha256": "57c28148f2fcd339167fd0a60127ffe1fe9905d8496708c79464e4e6fb3f312c"
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
"file": "40x20-settings-keyboard.ansi.gz",
|
|
85
|
-
"kind": "actual PTY cumulative raw ANSI stream",
|
|
86
|
-
"columns": 40,
|
|
87
|
-
"rows": 20,
|
|
88
|
-
"rawBytes": 12595,
|
|
89
|
-
"rawSha256": "f0a70d7cbf10d85c92d7a3fcc300a5bb2f0a26d3d5ff527924a649fd4f777403",
|
|
90
|
-
"archiveBytes": 1396,
|
|
91
|
-
"archiveSha256": "2ae513f637ddcc7fc903c55f96c35006bd11a9d95bc6d1e961c80636d7328398"
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
"file": "80x24-approval-0.ansi.gz",
|
|
95
|
-
"kind": "actual PTY cumulative raw ANSI stream",
|
|
96
|
-
"columns": 80,
|
|
97
|
-
"rows": 24,
|
|
98
|
-
"rawBytes": 54463,
|
|
99
|
-
"rawSha256": "48b0ee63969f7b8d09add20edd8c61a7b3e43786e6a22e7c2624be26b28173cd",
|
|
100
|
-
"archiveBytes": 3428,
|
|
101
|
-
"archiveSha256": "307e401b2d0d311fa362e20496b9dcc2bff4a8a427c68f0cb61517db6f180f22"
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
"file": "80x24-question.ansi.gz",
|
|
105
|
-
"kind": "actual PTY cumulative raw ANSI stream",
|
|
106
|
-
"columns": 80,
|
|
107
|
-
"rows": 24,
|
|
108
|
-
"rawBytes": 66349,
|
|
109
|
-
"rawSha256": "11951b9c71e340d8033d5bbefb259eedcd751f92881ffebc1440e721efefe459",
|
|
110
|
-
"archiveBytes": 3867,
|
|
111
|
-
"archiveSha256": "ddd4cedd9c8ab5adbd0f4e436931501a8b154b54839ffd3a22c69f5d019e6540"
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
"file": "120x40-completed-transcript.ansi.gz",
|
|
115
|
-
"kind": "actual PTY cumulative raw ANSI stream",
|
|
116
|
-
"columns": 120,
|
|
117
|
-
"rows": 40,
|
|
118
|
-
"rawBytes": 136187,
|
|
119
|
-
"rawSha256": "ace9f73ae5499e0db188ac092f658e140fccacfcc41233aa252c2ed1509ff6e7",
|
|
120
|
-
"archiveBytes": 5939,
|
|
121
|
-
"archiveSha256": "abfcf2c2c5da270b32acb5b8fce6e8e97de3d0f9b7ada664fbcfbaa5e98d52c4"
|
|
122
|
-
}
|
|
123
|
-
],
|
|
124
|
-
"limits": [
|
|
125
|
-
"The AgentSession, frontend, native tools, authorization and run writer are production code.",
|
|
126
|
-
"The controlled local transport supplies deterministic model responses and usage fixtures.",
|
|
127
|
-
"These functional checks do not establish external provider OAuth/service availability or visual equivalence to OMP.",
|
|
128
|
-
"Each compressed capture is a cumulative actual ANSI stream from PTY startup through the named interaction. Replay at its recorded dimensions."
|
|
129
|
-
]
|
|
130
|
-
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"passed": true,
|
|
3
|
-
"implementation": "production standalone CLI + real Pi SDK + loopback OpenAI SSE transport",
|
|
4
|
-
"cli": "/Users/tanny/Documents/Projects/Xingular/Xingular Agent/App/sidecar/dist/cli.js",
|
|
5
|
-
"cliSha256": "1e4f7875f31622dec113db6453072371c28c3e3e3cc6cc7f0f6cde14c0160db8",
|
|
6
|
-
"verifierSha256": "6b7652f0093b12a37bd975fcffa7accc0f34d627022397b7e45923be270abc85",
|
|
7
|
-
"provider": "controlled loopback OpenAI-compatible streaming transport; no external model requests or user credentials",
|
|
8
|
-
"requestCount": 13,
|
|
9
|
-
"profiles": [
|
|
10
|
-
{
|
|
11
|
-
"size": "80x24",
|
|
12
|
-
"checks": [
|
|
13
|
-
"welcome and real configured model",
|
|
14
|
-
"actual settings tabs, section focus, keyboard search/control and Escape return",
|
|
15
|
-
"command autocomplete and real accounts selector",
|
|
16
|
-
"suspend/resume restores cooked/raw terminal modes and command input",
|
|
17
|
-
"Unicode, real streaming/thinking/read/bash/approval/question, expansion, resizing and scrolling",
|
|
18
|
-
"trusted plugin custom overlay, widget, status and disposal",
|
|
19
|
-
"grouped question progress and atomic choice/text answers through real registry",
|
|
20
|
-
"approval deny and Escape cancellation prevent actual tool execution",
|
|
21
|
-
"question Escape cancellation settles pending tools and interrupts run",
|
|
22
|
-
"new session, explicit scoped resume and session naming",
|
|
23
|
-
"actual stream cancellation and interrupted run record",
|
|
24
|
-
"explicit account switching, process restart and real run on newly pinned account",
|
|
25
|
-
"fatal asynchronous plugin failure exits 1 and restores terminal modes",
|
|
26
|
-
"plugin startup failure exits 1 and restores terminal modes"
|
|
27
|
-
],
|
|
28
|
-
"persistedRunCount": 7,
|
|
29
|
-
"exitCode": 0,
|
|
30
|
-
"termiosRestored": true,
|
|
31
|
-
"bracketedPasteDisabled": true,
|
|
32
|
-
"cursorShown": true,
|
|
33
|
-
"fatalCleanup": {
|
|
34
|
-
"exitCode": 1,
|
|
35
|
-
"termiosRestored": true,
|
|
36
|
-
"bracketedPasteDisabled": true,
|
|
37
|
-
"cursorShown": true
|
|
38
|
-
},
|
|
39
|
-
"startupCleanup": {
|
|
40
|
-
"exitCode": 1,
|
|
41
|
-
"termiosRestored": true,
|
|
42
|
-
"bracketedPasteDisabled": true,
|
|
43
|
-
"cursorShown": true
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
],
|
|
47
|
-
"captures": [
|
|
48
|
-
{
|
|
49
|
-
"file": "80x24-approval-0.ansi.gz",
|
|
50
|
-
"kind": "actual PTY cumulative raw ANSI stream",
|
|
51
|
-
"columns": 80,
|
|
52
|
-
"rows": 24,
|
|
53
|
-
"rawBytes": 61969,
|
|
54
|
-
"rawSha256": "0df47b7493cf08f4b35ea22c6135bcbddbf0686619b47fe5bb5fcd2854eba7e7",
|
|
55
|
-
"archiveBytes": 5393,
|
|
56
|
-
"archiveSha256": "8ec49da3bff4530a47be3c0c434dfa3ce90134c42ffc48efacb6a68155b8d162"
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
"file": "80x24-question.ansi.gz",
|
|
60
|
-
"kind": "actual PTY cumulative raw ANSI stream",
|
|
61
|
-
"columns": 80,
|
|
62
|
-
"rows": 24,
|
|
63
|
-
"rawBytes": 73404,
|
|
64
|
-
"rawSha256": "c4628b4fc42b1f60a2200400ca39a835f8fb1e6fd054a607736cde234f0b0c67",
|
|
65
|
-
"archiveBytes": 5839,
|
|
66
|
-
"archiveSha256": "f650635dfc12d306a21c42611f52adae167f630ea2bc403fb519043a42a4937d"
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
"file": "80x24-plugin-light.ansi.gz",
|
|
70
|
-
"kind": "actual PTY cumulative raw ANSI stream",
|
|
71
|
-
"columns": 120,
|
|
72
|
-
"rows": 30,
|
|
73
|
-
"rawBytes": 119716,
|
|
74
|
-
"rawSha256": "f2f793909355e4583f513dc2f093e996b01bb1cbfcfdc66d8ec3cbef2155a61a",
|
|
75
|
-
"archiveBytes": 7658,
|
|
76
|
-
"archiveSha256": "87fbe3be1c3b63f81a8d9cccd846731adae2c8be6b90dd931c1e4ff927b47c46"
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
"file": "80x24-question-batch.ansi.gz",
|
|
80
|
-
"kind": "actual PTY cumulative raw ANSI stream",
|
|
81
|
-
"columns": 120,
|
|
82
|
-
"rows": 30,
|
|
83
|
-
"rawBytes": 169933,
|
|
84
|
-
"rawSha256": "884788cd457eab5e51440992caf2a6a1d932ac4410b4d716e10fdd240d8c5263",
|
|
85
|
-
"archiveBytes": 8775,
|
|
86
|
-
"archiveSha256": "0e02c89b7ed3fe9e6da6f0c91e91efec04c7d459d39606499d92ed393755afc5"
|
|
87
|
-
}
|
|
88
|
-
],
|
|
89
|
-
"limits": [
|
|
90
|
-
"The AgentSession, frontend, native tools, authorization and run writer are production code.",
|
|
91
|
-
"The controlled local transport supplies deterministic model responses and usage fixtures.",
|
|
92
|
-
"These functional checks do not establish external provider OAuth/service availability or visual equivalence to OMP.",
|
|
93
|
-
"Each compressed capture is a cumulative actual ANSI stream from PTY startup through the named interaction. Replay at its recorded dimensions."
|
|
94
|
-
]
|
|
95
|
-
}
|
|
Binary file
|
package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-plugin-light.ansi.gz
DELETED
|
Binary file
|
package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-question-batch.ansi.gz
DELETED
|
Binary file
|
|
Binary file
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# Installed global command — 2026-10-17
|
|
2
|
-
|
|
3
|
-
The user's `xingular-harness` resolved to `/opt/homebrew/bin/xingular-harness`, linked to
|
|
4
|
-
`/opt/homebrew/lib/node_modules/@xingular/harness/dist/cli.js`. That installed 0.1.6 bundle was
|
|
5
|
-
550,280 bytes with SHA-256 `06b235f6813d3e9b3b862fbdcab09887d8345a751c7e2adf267ead0314bc4833`.
|
|
6
|
-
It lacked the internal `terminal-frontend` command and Harness titanium frontend. The source
|
|
7
|
-
checkout's 0.1.6 bundle was 802,804 bytes with SHA-256
|
|
8
|
-
`2f5df943661a1e89440d0e81d59cd4a5bdb7aaf087a2a930e232b6743d5db093`. The same package version
|
|
9
|
-
had concealed that the global command was still the older Pi presentation.
|
|
10
|
-
|
|
11
|
-
The already-built checkout was packed locally without running package scripts, then installed
|
|
12
|
-
globally from its exact tarball, offline with installation scripts disabled. Nothing was
|
|
13
|
-
published. The installed CLI now matches the checkout byte for byte and retains pinned Pi
|
|
14
|
-
SDK/TUI 1.2.0. No account data or credentials were migrated or replaced.
|
|
15
|
-
|
|
16
|
-
The [production PTY report](verification.json) exercises the installed bundle at 80×24.
|
|
17
|
-
All 14 interaction groups passed, including the owned settings UI, plugin overlays, real Pi
|
|
18
|
-
native tools, Harness approvals/questions, account restart, suspend/resume and fatal/startup
|
|
19
|
-
cleanup. This uses a deterministic loopback provider, no personal credentials or external model
|
|
20
|
-
requests. Compressed captures retain reviewable screens.
|
|
21
|
-
|
|
22
|
-
The separate [shell entry-point result](shell-command.json) launches the actual executable
|
|
23
|
-
without substituting `node <bundle>`, checks the owned welcome and settings, and verifies
|
|
24
|
-
orderly terminal cleanup. Its capture is `shell-command-80x24.ansi.gz`.
|
|
25
|
-
|
|
26
|
-
This fixes the stale installed executable. It does not establish exhaustive OMP visual parity.
|
|
27
|
-
Already-running processes keep their loaded code until they exit and the command is relaunched.
|
package/docs/evidence/terminal-2026-10-17-followup/global-install/shell-command-80x24.ansi.gz
DELETED
|
Binary file
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"command": "/opt/homebrew/bin/xingular-harness",
|
|
3
|
-
"shellEntryPoint": true,
|
|
4
|
-
"ownedWelcomeAndSettings": true,
|
|
5
|
-
"terminal": {
|
|
6
|
-
"exitCode": 0,
|
|
7
|
-
"termiosRestored": true,
|
|
8
|
-
"bracketedPasteDisabled": true,
|
|
9
|
-
"cursorShown": true,
|
|
10
|
-
"snapshots": []
|
|
11
|
-
},
|
|
12
|
-
"capture": {
|
|
13
|
-
"file": "shell-command-80x24.ansi.gz",
|
|
14
|
-
"rawSha256": "5bb7e5318baf2a6b1dab5affcb0a10c632db5b21fd9ac426581f399fbb4dbcdc",
|
|
15
|
-
"archiveSha256": "594e5bec27c824bdf562376860ef16862970175af7e6222b00b90ccacf19f489"
|
|
16
|
-
},
|
|
17
|
-
"passed": true
|
|
18
|
-
}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"passed": true,
|
|
3
|
-
"implementation": "production standalone CLI + real Pi SDK + loopback OpenAI SSE transport",
|
|
4
|
-
"cli": "/opt/homebrew/lib/node_modules/@xingular/harness/dist/cli.js",
|
|
5
|
-
"cliSha256": "2f5df943661a1e89440d0e81d59cd4a5bdb7aaf087a2a930e232b6743d5db093",
|
|
6
|
-
"verifierSha256": "6b7652f0093b12a37bd975fcffa7accc0f34d627022397b7e45923be270abc85",
|
|
7
|
-
"provider": "controlled loopback OpenAI-compatible streaming transport; no external model requests or user credentials",
|
|
8
|
-
"requestCount": 13,
|
|
9
|
-
"profiles": [
|
|
10
|
-
{
|
|
11
|
-
"size": "80x24",
|
|
12
|
-
"checks": [
|
|
13
|
-
"welcome and real configured model",
|
|
14
|
-
"actual settings tabs, section focus, keyboard search/control and Escape return",
|
|
15
|
-
"command autocomplete and real accounts selector",
|
|
16
|
-
"suspend/resume restores cooked/raw terminal modes and command input",
|
|
17
|
-
"Unicode, real streaming/thinking/read/bash/approval/question, expansion, resizing and scrolling",
|
|
18
|
-
"trusted plugin custom overlay, widget, status and disposal",
|
|
19
|
-
"grouped question progress and atomic choice/text answers through real registry",
|
|
20
|
-
"approval deny and Escape cancellation prevent actual tool execution",
|
|
21
|
-
"question Escape cancellation settles pending tools and interrupts run",
|
|
22
|
-
"new session, explicit scoped resume and session naming",
|
|
23
|
-
"actual stream cancellation and interrupted run record",
|
|
24
|
-
"explicit account switching, process restart and real run on newly pinned account",
|
|
25
|
-
"fatal asynchronous plugin failure exits 1 and restores terminal modes",
|
|
26
|
-
"plugin startup failure exits 1 and restores terminal modes"
|
|
27
|
-
],
|
|
28
|
-
"persistedRunCount": 7,
|
|
29
|
-
"exitCode": 0,
|
|
30
|
-
"termiosRestored": true,
|
|
31
|
-
"bracketedPasteDisabled": true,
|
|
32
|
-
"cursorShown": true,
|
|
33
|
-
"fatalCleanup": {
|
|
34
|
-
"exitCode": 1,
|
|
35
|
-
"termiosRestored": true,
|
|
36
|
-
"bracketedPasteDisabled": true,
|
|
37
|
-
"cursorShown": true
|
|
38
|
-
},
|
|
39
|
-
"startupCleanup": {
|
|
40
|
-
"exitCode": 1,
|
|
41
|
-
"termiosRestored": true,
|
|
42
|
-
"bracketedPasteDisabled": true,
|
|
43
|
-
"cursorShown": true
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
],
|
|
47
|
-
"captures": [
|
|
48
|
-
{
|
|
49
|
-
"file": "80x24-approval-0.ansi.gz",
|
|
50
|
-
"kind": "actual PTY cumulative raw ANSI stream",
|
|
51
|
-
"columns": 80,
|
|
52
|
-
"rows": 24,
|
|
53
|
-
"rawBytes": 62572,
|
|
54
|
-
"rawSha256": "cc7b642a0f09d09eca3af30996b2a965462e547301c984fb81aaa47d39dc0663",
|
|
55
|
-
"archiveBytes": 5398,
|
|
56
|
-
"archiveSha256": "8b5ef850e4f0a7fb55d4dd15c9f2178add149e536dd6268b6292329e2ac88820"
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
"file": "80x24-question.ansi.gz",
|
|
60
|
-
"kind": "actual PTY cumulative raw ANSI stream",
|
|
61
|
-
"columns": 80,
|
|
62
|
-
"rows": 24,
|
|
63
|
-
"rawBytes": 75413,
|
|
64
|
-
"rawSha256": "9c851409fbb3d52928bb09ed45ad525744feff0f6915e79a75e9365d0012dd67",
|
|
65
|
-
"archiveBytes": 5871,
|
|
66
|
-
"archiveSha256": "fe993aab1adeef4cacbc6faadf26c322f2cdc88115d9c83ec245e0175b4f1658"
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
"file": "80x24-plugin-light.ansi.gz",
|
|
70
|
-
"kind": "actual PTY cumulative raw ANSI stream",
|
|
71
|
-
"columns": 120,
|
|
72
|
-
"rows": 30,
|
|
73
|
-
"rawBytes": 122320,
|
|
74
|
-
"rawSha256": "1da1e9a83fe56f5f90d7e6abe9c207a891de0f49b02c2190087a2a5ac1a6a2ab",
|
|
75
|
-
"archiveBytes": 7712,
|
|
76
|
-
"archiveSha256": "db8a25e009be6958d36daa37f9427d21ceeba1b0a9ef61405fb069204c596bc7"
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
"file": "80x24-question-batch.ansi.gz",
|
|
80
|
-
"kind": "actual PTY cumulative raw ANSI stream",
|
|
81
|
-
"columns": 120,
|
|
82
|
-
"rows": 30,
|
|
83
|
-
"rawBytes": 173412,
|
|
84
|
-
"rawSha256": "62e8af05a73a37320a8cbcf276c6a8a35a4a8f8771cb4dcd7d25230cf3b7d7bb",
|
|
85
|
-
"archiveBytes": 8836,
|
|
86
|
-
"archiveSha256": "152f7f4cf0cc9c0621f460fb00e91733874a691183be87807c39ac1d846a7fa6"
|
|
87
|
-
}
|
|
88
|
-
],
|
|
89
|
-
"limits": [
|
|
90
|
-
"The AgentSession, frontend, native tools, authorization and run writer are production code.",
|
|
91
|
-
"The controlled local transport supplies deterministic model responses and usage fixtures.",
|
|
92
|
-
"These functional checks do not establish external provider OAuth/service availability or visual equivalence to OMP.",
|
|
93
|
-
"Each compressed capture is a cumulative actual ANSI stream from PTY startup through the named interaction. Replay at its recorded dimensions."
|
|
94
|
-
]
|
|
95
|
-
}
|
|
Binary file
|
|
Binary file
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"executable": "/opt/homebrew/bin/node",
|
|
3
|
-
"arguments": [
|
|
4
|
-
"/Users/tanny/Documents/Projects/Xingular/Xingular Agent/Harness/dist/cli.js",
|
|
5
|
-
"--state",
|
|
6
|
-
"/private/var/folders/69/1vwvfl494kx0sqjxln4f0mtm0000gn/T/harness-omp-reference-l6rdt909/harness-state",
|
|
7
|
-
"--data",
|
|
8
|
-
"/private/var/folders/69/1vwvfl494kx0sqjxln4f0mtm0000gn/T/harness-omp-reference-l6rdt909/harness-data"
|
|
9
|
-
],
|
|
10
|
-
"working_directory": "/private/var/folders/69/1vwvfl494kx0sqjxln4f0mtm0000gn/T/harness-omp-reference-l6rdt909/project",
|
|
11
|
-
"environment": {
|
|
12
|
-
"ASSEMBLYAI_API_KEY": "",
|
|
13
|
-
"PI_CODING_AGENT_DIR": "/private/var/folders/69/1vwvfl494kx0sqjxln4f0mtm0000gn/T/harness-omp-reference-l6rdt909/agent",
|
|
14
|
-
"TERM": "xterm-256color",
|
|
15
|
-
"COLORTERM": "truecolor"
|
|
16
|
-
},
|
|
17
|
-
"terminal": {
|
|
18
|
-
"columns": 80,
|
|
19
|
-
"rows": 24,
|
|
20
|
-
"scrollback": 100
|
|
21
|
-
},
|
|
22
|
-
"events": [
|
|
23
|
-
{
|
|
24
|
-
"at_ms": 8000,
|
|
25
|
-
"type": "input",
|
|
26
|
-
"data": "/settings\r"
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
"at_ms": 10000,
|
|
30
|
-
"type": "input",
|
|
31
|
-
"data": "\u001b"
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"at_ms": 11000,
|
|
35
|
-
"type": "input",
|
|
36
|
-
"data": "/quit\r"
|
|
37
|
-
}
|
|
38
|
-
],
|
|
39
|
-
"timeout_ms": 15000,
|
|
40
|
-
"settle_ms": 200,
|
|
41
|
-
"limits": {
|
|
42
|
-
"output_bytes": 2000000
|
|
43
|
-
},
|
|
44
|
-
"normalization": {
|
|
45
|
-
"paths": true,
|
|
46
|
-
"patterns": [
|
|
47
|
-
{
|
|
48
|
-
"pattern": "Oh My Pi",
|
|
49
|
-
"replacement": "PRODUCT"
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
"pattern": "Xingular Harness",
|
|
53
|
-
"replacement": "PRODUCT"
|
|
54
|
-
}
|
|
55
|
-
]
|
|
56
|
-
},
|
|
57
|
-
"filesystem_observation_paths": [
|
|
58
|
-
"/Users/tanny/Documents/Projects/Xingular/Xingular Agent/Harness/dist/cli.js"
|
|
59
|
-
]
|
|
60
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# Personal Codex live check — 2026-10-17
|
|
2
|
-
|
|
3
|
-
The user authorized their personal Codex account for the final live check. The production
|
|
4
|
-
Harness CLI ran in an 80×24 PTY, with a disposable working directory, data root and account.
|
|
5
|
-
Only an unexpired access token was copied into the owner-only disposable secret store;
|
|
6
|
-
the original refresh token was never copied or used. No process launched against the source
|
|
7
|
-
Codex profile. A single user prompt requested one native `read` of an isolated fixture followed
|
|
8
|
-
by a short marker response.
|
|
9
|
-
|
|
10
|
-
Codex returned **“The usage limit has been reached”** before any tool execution or successful
|
|
11
|
-
assistant response. Harness surfaced that error and recorded the run as failed. This attempt
|
|
12
|
-
does not satisfy successful live streaming/tool acceptance. The JSON report records
|
|
13
|
-
`passed: false` and `outcome: blocked_by_provider_usage_limit` for that reason.
|
|
14
|
-
|
|
15
|
-
The exit code was zero after orderly application shutdown. The PTY supervisor independently
|
|
16
|
-
confirmed terminal attributes were restored; cursor visibility and bracketed-paste shutdown
|
|
17
|
-
were checked in the raw ANSI stream. The source authentication file's before/after SHA-256
|
|
18
|
-
comparison matched. The disposable profile, including its copied access credential, was
|
|
19
|
-
deleted. Credentials and personal account identity are absent from the retained evidence.
|
|
20
|
-
|
|
21
|
-
[verification.json](verification.json) binds the production CLI digest and the cumulative
|
|
22
|
-
[compressed ANSI capture](complete-80x24.ansi.gz). Replay at 80×24. The capture records the
|
|
23
|
-
quota failure and normal shutdown, not a successful model reply. The existing controlled
|
|
24
|
-
transport tests separately cover streaming, tools and approvals.
|
|
Binary file
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"passed": false,
|
|
3
|
-
"startedAt": "2026-10-17T12:05:16.009798+00:00",
|
|
4
|
-
"provider": "openai-codex",
|
|
5
|
-
"model": "gpt-6-luna",
|
|
6
|
-
"authentication": "User-authorized personal Codex sign-in; copied unexpired access token only, no refresh token",
|
|
7
|
-
"profile": "Disposable Harness account, state, working directory and data root",
|
|
8
|
-
"cliSha256": "2f5df943661a1e89440d0e81d59cd4a5bdb7aaf087a2a930e232b6743d5db093",
|
|
9
|
-
"limits": [
|
|
10
|
-
"One user prompt with one native read call and a short final answer.",
|
|
11
|
-
"No source profile launch, source credential writes, or refresh-token copy.",
|
|
12
|
-
"This check does not establish Windows or OS clipboard/image behavior."
|
|
13
|
-
],
|
|
14
|
-
"runStatus": "failed",
|
|
15
|
-
"events": [
|
|
16
|
-
"started",
|
|
17
|
-
"status.changed",
|
|
18
|
-
"message.completed",
|
|
19
|
-
"usage.updated",
|
|
20
|
-
"failed"
|
|
21
|
-
],
|
|
22
|
-
"finalMarkerVerified": false,
|
|
23
|
-
"error": "The personal Codex account rejected the live request because its usage limit had been reached.",
|
|
24
|
-
"terminal": {
|
|
25
|
-
"exitCode": 0,
|
|
26
|
-
"termiosRestored": true,
|
|
27
|
-
"bracketedPasteDisabled": true,
|
|
28
|
-
"cursorShown": true,
|
|
29
|
-
"snapshots": []
|
|
30
|
-
},
|
|
31
|
-
"capture": {
|
|
32
|
-
"file": "complete-80x24.ansi.gz",
|
|
33
|
-
"columns": 80,
|
|
34
|
-
"rows": 24,
|
|
35
|
-
"rawBytes": 30457,
|
|
36
|
-
"rawSha256": "44ab01ebf78b2b8ff0a40e95857b567056c7c6b1dc1b9442d47d58da819cbfec",
|
|
37
|
-
"archiveSha256": "20bf2e1a57989393e23f49f475897fc5a1ddc84be784af90835d16b6ea1f33b7"
|
|
38
|
-
},
|
|
39
|
-
"sourceAuthenticationUnchanged": true,
|
|
40
|
-
"disposableCredentialsRemoved": true,
|
|
41
|
-
"finishedAt": "2026-10-17T12:05:25.688875+00:00",
|
|
42
|
-
"outcome": "blocked_by_provider_usage_limit",
|
|
43
|
-
"providerError": "Codex error: The usage limit has been reached",
|
|
44
|
-
"attemptedUserPrompts": 1,
|
|
45
|
-
"notVerified": [
|
|
46
|
-
"Successful live-provider streaming",
|
|
47
|
-
"Live-provider native tool execution",
|
|
48
|
-
"Live-provider usage accounting"
|
|
49
|
-
],
|
|
50
|
-
"verified": [
|
|
51
|
-
"Production frontend surfaced the real provider quota error",
|
|
52
|
-
"Harness persisted the run as failed",
|
|
53
|
-
"Normal exit restored terminal attributes, bracketed paste and cursor visibility",
|
|
54
|
-
"Source personal Codex authentication file unchanged",
|
|
55
|
-
"Disposable profile and copied access credential removed"
|
|
56
|
-
]
|
|
57
|
-
}
|
|
Binary file
|
|
Binary file
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"executable": "/private/tmp/xingular-omp-18.11.3-ugzs7h2m/omp",
|
|
3
|
-
"arguments": [
|
|
4
|
-
"--no-session",
|
|
5
|
-
"--no-tools",
|
|
6
|
-
"--no-extensions",
|
|
7
|
-
"--no-skills",
|
|
8
|
-
"--config",
|
|
9
|
-
"/private/var/folders/69/1vwvfl494kx0sqjxln4f0mtm0000gn/T/harness-omp-reference-l6rdt909/reference.yml"
|
|
10
|
-
],
|
|
11
|
-
"working_directory": "/private/var/folders/69/1vwvfl494kx0sqjxln4f0mtm0000gn/T/harness-omp-reference-l6rdt909/project",
|
|
12
|
-
"environment": {
|
|
13
|
-
"ASSEMBLYAI_API_KEY": "",
|
|
14
|
-
"PI_CODING_AGENT_DIR": "/private/var/folders/69/1vwvfl494kx0sqjxln4f0mtm0000gn/T/harness-omp-reference-l6rdt909/agent",
|
|
15
|
-
"TERM": "xterm-256color",
|
|
16
|
-
"COLORTERM": "truecolor"
|
|
17
|
-
},
|
|
18
|
-
"terminal": {
|
|
19
|
-
"columns": 80,
|
|
20
|
-
"rows": 24,
|
|
21
|
-
"scrollback": 100
|
|
22
|
-
},
|
|
23
|
-
"events": [
|
|
24
|
-
{
|
|
25
|
-
"at_ms": 8000,
|
|
26
|
-
"type": "input",
|
|
27
|
-
"data": "/settings\r"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"at_ms": 10000,
|
|
31
|
-
"type": "input",
|
|
32
|
-
"data": "\u001b"
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"at_ms": 11000,
|
|
36
|
-
"type": "input",
|
|
37
|
-
"data": "/quit\r"
|
|
38
|
-
}
|
|
39
|
-
],
|
|
40
|
-
"timeout_ms": 15000,
|
|
41
|
-
"settle_ms": 200,
|
|
42
|
-
"limits": {
|
|
43
|
-
"output_bytes": 2000000
|
|
44
|
-
},
|
|
45
|
-
"normalization": {
|
|
46
|
-
"paths": true,
|
|
47
|
-
"patterns": [
|
|
48
|
-
{
|
|
49
|
-
"pattern": "Oh My Pi",
|
|
50
|
-
"replacement": "PRODUCT"
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
"pattern": "Xingular Harness",
|
|
54
|
-
"replacement": "PRODUCT"
|
|
55
|
-
}
|
|
56
|
-
]
|
|
57
|
-
}
|
|
58
|
-
}
|