omnius 1.0.867 → 1.0.869

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/api/py-embed.js +13 -0
  2. package/dist/index.js +2 -2
  3. package/dist/library.js +222 -194
  4. package/dist/tui/native/worker.js +873 -145
  5. package/dist/update-worker.js +128 -77
  6. package/docs/DISCOVERY.json +3049 -432
  7. package/docs/DISCOVERY.md +71 -7
  8. package/docs/design/media-unification-TODO.md +71 -26
  9. package/docs/design/media-unification-design.md +89 -0
  10. package/docs/design/session-presentation-TODO.md +55 -0
  11. package/docs/design/update-operation-cancellation.md +40 -0
  12. package/docs/design/update-session-restoration-TODO.md +67 -0
  13. package/docs/work-orders/evidence/instrument-interface-live-20261016/interface-after-reconstruction.png +0 -0
  14. package/docs/work-orders/evidence/instrument-interface-live-20261016/interface-before-reconstruction.png +0 -0
  15. package/docs/work-orders/evidence/instrument-interface-live-20261016/media-audio-playing.png +0 -0
  16. package/docs/work-orders/evidence/instrument-interface-live-20261016/media-image-100x30.png +0 -0
  17. package/docs/work-orders/evidence/instrument-interface-live-20261016/media-image-120x36.png +0 -0
  18. package/docs/work-orders/evidence/instrument-interface-live-20261016/media-image-160x48.png +0 -0
  19. package/docs/work-orders/evidence/instrument-interface-live-20261016/media-image-60x20.png +0 -0
  20. package/docs/work-orders/evidence/instrument-interface-live-20261016/media-image-80x24.png +0 -0
  21. package/docs/work-orders/evidence/instrument-interface-live-20261016/media-progress-collapsed.png +0 -0
  22. package/docs/work-orders/evidence/instrument-interface-live-20261016/media-video-frame-a.png +0 -0
  23. package/docs/work-orders/evidence/instrument-interface-live-20261016/media-video-frame-b.png +0 -0
  24. package/docs/work-orders/evidence/instrument-interface-live-20261016/media-voice-autocomplete-junction.png +0 -0
  25. package/docs/work-orders/evidence/instrument-interface-live-20261016/report.json +1054 -0
  26. package/docs/work-orders/evidence/instrument-media-live-20261016/media-audio-playing.png +0 -0
  27. package/docs/work-orders/evidence/instrument-media-live-20261016/media-image-100x30.png +0 -0
  28. package/docs/work-orders/evidence/instrument-media-live-20261016/media-image-120x36.png +0 -0
  29. package/docs/work-orders/evidence/instrument-media-live-20261016/media-image-160x48.png +0 -0
  30. package/docs/work-orders/evidence/instrument-media-live-20261016/media-image-60x20.png +0 -0
  31. package/docs/work-orders/evidence/instrument-media-live-20261016/media-image-80x24.png +0 -0
  32. package/docs/work-orders/evidence/instrument-media-live-20261016/media-progress-collapsed.png +0 -0
  33. package/docs/work-orders/evidence/instrument-media-live-20261016/media-video-frame-a.png +0 -0
  34. package/docs/work-orders/evidence/instrument-media-live-20261016/media-video-frame-b.png +0 -0
  35. package/docs/work-orders/evidence/instrument-media-live-20261016/media-voice-autocomplete-junction.png +0 -0
  36. package/docs/work-orders/evidence/instrument-media-live-20261016/report.json +813 -0
  37. package/docs/work-orders/evidence/instrument-media-verification-20261016.json +59 -0
  38. package/docs/work-orders/evidence/instrument-working-live-20261016/action-working-progress.png +0 -0
  39. package/docs/work-orders/evidence/instrument-working-live-20261016/action-working-result-json.png +0 -0
  40. package/docs/work-orders/evidence/instrument-working-live-20261016/interface-after-reconstruction.png +0 -0
  41. package/docs/work-orders/evidence/instrument-working-live-20261016/interface-before-reconstruction.png +0 -0
  42. package/docs/work-orders/evidence/instrument-working-live-20261016/media-audio-playing.png +0 -0
  43. package/docs/work-orders/evidence/instrument-working-live-20261016/media-image-100x30.png +0 -0
  44. package/docs/work-orders/evidence/instrument-working-live-20261016/media-image-120x36.png +0 -0
  45. package/docs/work-orders/evidence/instrument-working-live-20261016/media-image-160x48.png +0 -0
  46. package/docs/work-orders/evidence/instrument-working-live-20261016/media-image-60x20.png +0 -0
  47. package/docs/work-orders/evidence/instrument-working-live-20261016/media-image-80x24.png +0 -0
  48. package/docs/work-orders/evidence/instrument-working-live-20261016/media-progress-collapsed.png +0 -0
  49. package/docs/work-orders/evidence/instrument-working-live-20261016/media-video-frame-a.png +0 -0
  50. package/docs/work-orders/evidence/instrument-working-live-20261016/media-video-frame-b.png +0 -0
  51. package/docs/work-orders/evidence/instrument-working-live-20261016/media-voice-autocomplete-junction.png +0 -0
  52. package/docs/work-orders/evidence/instrument-working-live-20261016/report.json +1180 -0
  53. package/docs/work-orders/evidence/native-interface-state-verification-20261016.json +79 -0
  54. package/docs/work-orders/evidence/native-working-state-verification-20261016.json +66 -0
  55. package/docs/work-orders/evidence/project-media-browser-20261016/dark-1440-image-output.png +0 -0
  56. package/docs/work-orders/evidence/project-media-browser-20261016/dark-360-image-output.png +0 -0
  57. package/docs/work-orders/evidence/project-media-browser-20261016/light-1440-image-output.png +0 -0
  58. package/docs/work-orders/evidence/project-media-browser-20261016/report.json +47455 -0
  59. package/docs/work-orders/evidence/project-media-unification-20261016.json +108 -0
  60. package/docs/work-orders/evidence/session-native-restore-followup-20261016.json +30 -0
  61. package/docs/work-orders/evidence/session-transcript-browser-20261016.json +1196 -0
  62. package/docs/work-orders/evidence/session-transcript-dark-1440-session-code.png +0 -0
  63. package/docs/work-orders/evidence/session-transcript-dark-1440-session-image.png +0 -0
  64. package/docs/work-orders/evidence/session-transcript-dark-1440-session-working.png +0 -0
  65. package/docs/work-orders/evidence/session-transcript-light-320-session-code.png +0 -0
  66. package/docs/work-orders/evidence/session-transcript-light-320-session-image.png +0 -0
  67. package/docs/work-orders/evidence/session-transcript-light-320-session-working.png +0 -0
  68. package/docs/work-orders/evidence/tool-event-presentation-verification-20261016.json +87 -0
  69. package/docs/work-orders/evidence/update-operation-cancellation-20261016.json +106 -0
  70. package/docs/work-orders/session-transcript-browser-20261016.md +21 -0
  71. package/npm-shrinkwrap.json +2 -2
  72. package/package.json +1 -1
@@ -0,0 +1,87 @@
1
+ {
2
+ "feature": "Canonical tool presentation events, complete visible history and validated media identity",
3
+ "verifiedAt": "2026-10-17T03:14:54.847994+00:00",
4
+ "baseCommit": "549349ff2b77560e2eb740de332c367daf243f32",
5
+ "passed": true,
6
+ "verificationScope": "Focused JSON CLI, actual FileReadTool, session persistence/parser and daemon frontend transport tests; not the entire CLI or workspace suite.",
7
+ "uniqueTests": 88,
8
+ "uniqueTestFiles": 9,
9
+ "suites": {
10
+ "chat-agent-output.test.ts": 24,
11
+ "chat-session-config-isolation.test.ts": 2,
12
+ "chat-session-tool-events.test.ts": 14,
13
+ "run-json-tool-events.test.ts": 1,
14
+ "tool-events.test.ts": 4,
15
+ "tui-structured-memory-lifecycle.test.ts": 3,
16
+ "web-chat-transport-lifecycle.test.ts": 27,
17
+ "web-ui-client-runtime.test.ts": 4,
18
+ "web-ui-script.test.ts": 9
19
+ },
20
+ "deduplication": "The final 19-test authority follow-up replaces the corresponding three suites in the 88-test combined run. Earlier 41/42/84-test batches and separate FileReadTool run are not added again.",
21
+ "rawReports": [
22
+ "/tmp/omnius-tool-event-presentation-final.json",
23
+ "/tmp/omnius-tool-event-authority-final.json"
24
+ ],
25
+ "checks": {
26
+ "cliNoEmit": "PASS: pnpm --filter omnius exec tsc --noEmit",
27
+ "ownedDiffCheck": "PASS"
28
+ },
29
+ "behavior": [
30
+ "Main-runner tool call/result/status NDJSON retains whitelisted canonical action_id and parent_action_id plus compatible aliases, timestamps, valid measured stage/percent/duration/bytes and bounded separate diagnostics.",
31
+ "Known source extraction v1 phases map deterministically to source-started/source-chunk/source-pending/source-ready; source/chunk counts survive. Percent is present only with valid positive known total and in-range accounted characters; unknown coverage is never fabricated.",
32
+ "Both streamed and nonstreamed /v1/chat and /api/chat preserve tool events in durable sessions. Legacy final-only call receipts are persisted without duplicating calls that arrived live.",
33
+ "JSON CLI and native working cards enable the runner operator-detail channel. An actual FileReadTool reads a scratch file over 28KB; the callback receives its complete output and host-issued identity, independently of projected display/model content.",
34
+ "Complete redacted result output is retained past the former 4000-character wire and 2048-character disk limits. Canonical visible user/tool/assistant history survives compaction; only the inference-role request projection is compacted.",
35
+ "Project media candidates use captured invocation identity and regular owned files. Intended project-root aliases share canonical artifact IDs; arbitrary alias/inner symlink/outside-root candidates are rejected. Daemon structured candidates require an established registered project matching the session.",
36
+ "Any explicit artifacts array is authoritative, including empty/rejected receipts. New producers always serialize the validated set; stale claims and unlisted raw paths cannot revive replacement previews during replay. Browser acquisition still requires authenticated HEAD/If-Match/GET.",
37
+ "Persisted per-action progress rejects stale timestamps and post-result updates; a phase change clears an old percentage, and diagnostics never replace measured progress. Unknown result outcome remains omitted rather than falsely failed or completed.",
38
+ "One-off /api/generate and /v1/generate now reuse the UTF-8/NDJSON parser; tool/status records no longer corrupt the terminal JSON receipt, while the Ollama response and _oa event envelopes remain intact."
39
+ ],
40
+ "isolation": [
41
+ "API tests start only disposable loopback daemon fixtures with scratch configuration, in-memory/mock endpoints, and harmless Node output children. No live inference, benchmark, model loading, downloads, CUDA allocation or production daemon was started.",
42
+ "The actual public runWithTUI test uses mocked backend responses and a genuine read-only FileReadTool against scratch files. Network fetch is stubbed; broker/preflight/background auxiliary inference are disabled in the fixture.",
43
+ "The JSON CLI test injects the runner and GPU selection initializer; filesystem artifact checks use scratch project directories. No GPU toggle, service change, npm install/publish, dist rebuild or unrelated user-file mutation was performed."
44
+ ],
45
+ "limits": [
46
+ "JSON CLI callbacks currently carry main-runner actions only. Child-agent transport is not expanded or conflated; parent IDs remain intact when supplied.",
47
+ "Generic tool progress has no producer invocation ID. It is correlated only when exactly one active main action for that tool is known; concurrent ambiguous progress stays uncorrelated.",
48
+ "The existing bounded storage policy for multi-megabyte tool arguments remains; full redacted result output and canonical visible message history are retained.",
49
+ "These are isolated backend and transport checks. Actual browser/native visual verification is owned by the other agents and is not counted in this receipt.",
50
+ "Repeated test API-server setup emits existing SIGINT/SIGTERM MaxListeners warnings; all assertions and clean teardown pass. No unrelated listener lifecycle refactor was included."
51
+ ],
52
+ "correctiveNotes": [
53
+ "A regression-first JSON CLI test found that undefined canonical-ID properties from sanitized progress overwrote valid action identities. The sanitizer now omits absent keys, and the final callback test proves identity survives merging.",
54
+ "Earlier formatter/worker option mismatch prevented the first Vitest run before any tests executed; final runs explicitly set minWorkers1/maxWorkers3.",
55
+ "Review tightened explicit artifact-set authority and stale progress ordering after the first combined run. The final focused authority follow-up covers those changes and replaces its prior suites without increasing the unique total."
56
+ ],
57
+ "ownedFiles": [
58
+ "packages/cli/src/tool-events.ts",
59
+ "packages/cli/src/api/chat-agent-output.ts",
60
+ "packages/cli/src/api/chat-session.ts",
61
+ "packages/cli/src/api/serve.ts",
62
+ "packages/cli/src/commands/run.ts",
63
+ "packages/cli/src/tui/interactive.ts",
64
+ "packages/cli/tests/tool-events.test.ts",
65
+ "packages/cli/tests/run-json-tool-events.test.ts",
66
+ "packages/cli/tests/chat-agent-output.test.ts",
67
+ "packages/cli/tests/chat-session-tool-events.test.ts",
68
+ "packages/cli/tests/tui-structured-memory-lifecycle.test.ts",
69
+ "packages/cli/tests/web-chat-transport-lifecycle.test.ts",
70
+ "packages/cli/tests/fixtures/web-chat-output-child.mjs"
71
+ ],
72
+ "sourceSha256": {
73
+ "packages/cli/src/tool-events.ts": "da239513e37c2a4e527e0ae87b99674cd1524a017e5d91086c4bdee9a2590c65",
74
+ "packages/cli/src/api/chat-agent-output.ts": "2d0060d1fe290bb39a1868e2cd9305264f6f2dac80664fb4ded2725843054eca",
75
+ "packages/cli/src/api/chat-session.ts": "92745a12ffc69276205b2c05e42991ea3776512c2944fbf31b94cbcb33d83ee6",
76
+ "packages/cli/src/api/serve.ts": "333cef4052d701249f27570937ff0064b61582c989b2fd2bec9ca11f46f33f9d",
77
+ "packages/cli/src/commands/run.ts": "2c235802cbbdbce8601b03579ccc91cec36284c334d60cf3305d3ee71207fef5",
78
+ "packages/cli/src/tui/interactive.ts": "b4d48ec27e3f1688b01ef125aacd99959e0d672a75849f5571f84f133aa57154",
79
+ "packages/cli/tests/tool-events.test.ts": "2602f050c999faedf3e7a6fd3859321cf66553234c7069ccd04522efd26acd54",
80
+ "packages/cli/tests/run-json-tool-events.test.ts": "f2d0039f11a132b91f120b48400b6201b292baa528dc794eb76b93818c95ceb6",
81
+ "packages/cli/tests/chat-agent-output.test.ts": "d0d59e79225f254967b8339fdaa39c4c3275705b1035a85aa3ef503d06a424d2",
82
+ "packages/cli/tests/chat-session-tool-events.test.ts": "f455a3339556fb206abe4598bebf9027ddc3522701f7fd5ead6387c88e6abec1",
83
+ "packages/cli/tests/tui-structured-memory-lifecycle.test.ts": "96209dd414a67b9a5231fadb5b35d0168acc575480d9719ce7ef983a7fd745b0",
84
+ "packages/cli/tests/web-chat-transport-lifecycle.test.ts": "a39c603204d0f86c8620fc8f4969747e6066e2e1eaa20cb8927465fbd366ae58",
85
+ "packages/cli/tests/fixtures/web-chat-output-child.mjs": "9e95de20c4047db88ac3bce5215356b7bfeb063f53df4a04187ab9462ba9e826"
86
+ }
87
+ }
@@ -0,0 +1,106 @@
1
+ {
2
+ "feature": "Owned update cancellation and retained native operation modal",
3
+ "verifiedAt": "2026-10-17T02:48:28.608783+00:00",
4
+ "baseCommit": "c1ac73eaf8a745cc6a6031eec839f724d3cf8e6d",
5
+ "passed": true,
6
+ "verificationScope": "Focused updater, restart, native modal and mandatory daemon frontend transport regressions; not the entire CLI/workspace suite.",
7
+ "uniqueTests": 179,
8
+ "uniqueTestFiles": 14,
9
+ "suites": {
10
+ "api-update-route.test.ts": 1,
11
+ "auto-update-controller.test.ts": 14,
12
+ "native-modal-lifecycle.test.ts": 1,
13
+ "quick-update.test.ts": 40,
14
+ "update-client-state.test.ts": 37,
15
+ "update-command-lifecycle.test.ts": 5,
16
+ "update-dashboard-verification.test.ts": 2,
17
+ "update-elevation-prompt.test.ts": 4,
18
+ "update-install-overlay.test.ts": 6,
19
+ "update-restart.test.ts": 18,
20
+ "update-service.test.ts": 17,
21
+ "web-chat-transport-lifecycle.test.ts": 21,
22
+ "web-ui-client-runtime.test.ts": 4,
23
+ "web-ui-script.test.ts": 9
24
+ },
25
+ "nativeScenarios": {
26
+ "native-modal-lifecycle": 5,
27
+ "counting": "Five actual native scenarios are contained in the one Vitest bridge assertion; not added again to the test total."
28
+ },
29
+ "deduplication": "Final five-test command lifecycle run replaces the earlier four-test run in the 142-test batch. Earlier 60/65-test focused batches are not added again. The final 62-test ownership follow-up replaces its three prior suites (Quick40 instead of38); no repeated assertions are added.",
30
+ "rawReports": [
31
+ "/tmp/omnius-update-operation-verification-20261016.json",
32
+ "/tmp/omnius-update-command-final-20261016.json",
33
+ "/tmp/omnius-update-transport-verification-20261016.json",
34
+ "/tmp/omnius-update-ownership-final-20261016.json"
35
+ ],
36
+ "checks": {
37
+ "cliNoEmit": "PASS: pnpm --filter omnius exec tsc --noEmit --pretty false",
38
+ "ownedDiffCheck": "PASS"
39
+ },
40
+ "behavior": [
41
+ "Top-right native Cancel; Escape/Ctrl+C/outside clicks cannot retire a running updater. Progress and terminal errors remain in the same retained modal.",
42
+ "The initiating client retains a private cancellation capability; durable state saves only its hash. Exact operation requests are polled by the worker. A client adopting another running operation gets no Cancel authority.",
43
+ "Installer cancellation signals its owned process group, escalates to SIGKILL, retires remaining descendants on early parent close, and waits for close. Service recovery completes before durable cancelled settlement; package rollback is never claimed.",
44
+ "Quick Update waits for durable terminal state; cancellation never triggers client restart. Preparation checkpoint and failure resume remain transactional. Supervisor ACK rejection retains the error modal and resumes the paused client.",
45
+ "Full Update now uses the coordinated package/daemon/indicator transaction; explicit dependency/rebuild/Python/Ollama maintenance remains separate. Removed duplicate direct global-package deletion/install, arbitrary daemon PID cleanup and naked exit120 restart.",
46
+ "Existing browser update polling treats cancelled as terminal rather than polling forever.",
47
+ "Returned transaction capability hash is checked before granting Cancel authority, including concurrent-starter adoption. Authoritative failed worker state is never relabeled cancelled merely because an AbortSignal arrived later; a completed package transaction can cancel only this client restart."
48
+ ],
49
+ "isolation": [
50
+ "Final command-wiring tests inject transaction services, stub command execution, prohibit live fetch, and set scratch XDG state/cache plus OMNIUS_HOME/CONFIG_HOME.",
51
+ "Service tests inject installer/service outcomes. The existing verification helper may perform a read-only npm prefix metadata probe; no npm install/update/rebuild, package replacement or service operation was run.",
52
+ "Actual subprocess cancellation tests launch only harmless Node fixtures; no model/GPU/CUDA requests. Restart suite includes its existing harmless foreground PTY migration fixture.",
53
+ "No dist rebuild, package install, daemon restart, npm publication or unrelated user-file edit was performed."
54
+ ],
55
+ "limits": [
56
+ "Windows task-tree termination code is present but not live-tested here; POSIX TERM-ignore escalation and fast-parent-exit descendant retirement are tested.",
57
+ "Explicit privileged/runtime setup prompts borrow the terminal and keep their existing external controls; native Cancel does not falsely claim those external system operations were rolled back.",
58
+ "Native interface/transcript restart-envelope enhancements are separately owned and tested by the parent/team; this receipt includes their current update-client-state/restart regressions but does not claim authorship."
59
+ ],
60
+ "correctedFixtureFailures": [
61
+ "Initial process-group test exposed an orphan descendant when the direct parent exited early. The owned close path now retires the remaining group; the identified harmless leaked fixture was cleaned up after exact cmdline/PGID verification. Final two-case regression confirms no running descendant remains.",
62
+ "Initial command fixture had an unreliable dynamic-import mock and reached the source worker-path existence guard under default XDG state. It failed before worker/installer/daemon mutation; local update lock/path checks occurred, so that run is not used as isolation evidence. Static import plus explicit injected services and scratch XDG/home fixed the fixture.",
63
+ "A concurrent user publish temporarily removed workspace dist exports, preventing one fixture from collecting. No dist changes were made; final tests passed after exports became available."
64
+ ],
65
+ "sharedFileHunks": {
66
+ "packages/cli/src/tui/commands.ts": "Only update handling/imports; media implementation was committed before these edits.",
67
+ "packages/cli/src/tui/native/protocol.ts": "NativeModalSpec headerActions/nonDismissible only; concurrent interface snapshot fields belong to widget agent.",
68
+ "packages/cli/src/api/web-ui.ts": "Only cancelled terminal status recognition in update polling; other browser edits remain separately owned."
69
+ },
70
+ "ownedFiles": [
71
+ "packages/cli/src/quick-update.ts",
72
+ "packages/cli/src/update-service.ts",
73
+ "packages/cli/src/update-worker.ts",
74
+ "packages/cli/src/tui/update-progress.ts",
75
+ "packages/cli/src/tui/commands.ts",
76
+ "packages/cli/src/tui/native/components/modals.ts",
77
+ "packages/cli/src/tui/native/protocol.ts",
78
+ "packages/cli/src/api/web-ui.ts",
79
+ "packages/cli/tests/quick-update.test.ts",
80
+ "packages/cli/tests/update-service.test.ts",
81
+ "packages/cli/tests/update-install-overlay.test.ts",
82
+ "packages/cli/tests/update-command-lifecycle.test.ts",
83
+ "packages/cli/tests/update-elevation-prompt.test.ts",
84
+ "packages/cli/tests/native-modal-lifecycle.bun.ts",
85
+ "packages/cli/tests/native-modal-lifecycle.test.ts",
86
+ "docs/design/update-operation-cancellation.md"
87
+ ],
88
+ "sourceSha256": {
89
+ "packages/cli/src/quick-update.ts": "4aa5362a7da58b6136bf6e0111f53944c34977a829e2ff3caf21e9f3442e0fdc",
90
+ "packages/cli/src/update-service.ts": "07fde071b191f920e5d2d278d4c856a2ef40799f1fd88b34214ead853eb3b33b",
91
+ "packages/cli/src/update-worker.ts": "d8358c6d4ebaef9946314783973b6f577bbb67a0740c30083e6f547d38efa149",
92
+ "packages/cli/src/tui/update-progress.ts": "028f260692883f7101b0f02016624b12d443b6adaabf8b4e9f42d3d1de5c8316",
93
+ "packages/cli/src/tui/commands.ts": "4c60696f0530a48121f7e478c253d80b3bd2f5481ae9517e6bd52f3c8390bfcf",
94
+ "packages/cli/src/tui/native/components/modals.ts": "c5e44e41777d1a4a1769ee8a50fdd2160ae45a12797d729cc835e7849c6c78c2",
95
+ "packages/cli/src/tui/native/protocol.ts": "787851a776cee5bf219c89e0526d0432cf8530862693e8952561a4d4841e9be6",
96
+ "packages/cli/src/api/web-ui.ts": "0c2f1035f56a95491d7a78a774198aa88477b49f9bcd7f3f77a6bfad407a39c3",
97
+ "packages/cli/tests/quick-update.test.ts": "99f7562641806d7563bef95dc22a879f3f1b4ee4b075151671447d068d81c502",
98
+ "packages/cli/tests/update-service.test.ts": "4c116b26d070aaf26356b8b4de818d777268147c139186edf9939b3d2855c90a",
99
+ "packages/cli/tests/update-install-overlay.test.ts": "0f2615aeea04188de404fac8d5199cf76cac125611a2abab25a8cf1ba647aa38",
100
+ "packages/cli/tests/update-command-lifecycle.test.ts": "a23de3a476cee4856e9f49112d26ef62cfbb7029b5b8336d5157dda4710afa37",
101
+ "packages/cli/tests/update-elevation-prompt.test.ts": "8cf42f85491eceb994f9903ae4ecc989d6fe19ad9642eb294635df6f90c86e20",
102
+ "packages/cli/tests/native-modal-lifecycle.bun.ts": "62dd7612bbc18750ed22595e5503cd98d538ead0b7c33273fadbf518abfc0c81",
103
+ "packages/cli/tests/native-modal-lifecycle.test.ts": "6a6956b20e237fc9223ad03bf0fd58b502a8115e15d08a1aec473cbab1843b01",
104
+ "docs/design/update-operation-cancellation.md": "0c4142e6a1e19d6da2bd41a0ce4c36461753b3ab606efdd0e3981e09c4af4def"
105
+ }
106
+ }
@@ -0,0 +1,21 @@
1
+ # Session transcript media, code and action states
2
+
3
+ The browser now uses one renderer for restored sessions and live tool events. Tool calls, their measured progress, diagnostics, validated artifacts and the final assistant answer remain under their original turn. Exact action IDs pair parallel work; duplicate or late events cannot change a terminal outcome. Legacy results pair by name only when one unmatched call exists. Missing outcomes remain explicitly unrecorded.
4
+
5
+ Image, video and audio previews use the invocation project's artifact identity. Authenticated HEAD validation and revision-pinned GET precede preview, Open and Download activation. Explicit artifact receipts, including an empty list, remain authoritative. External, foreign-project and traversal identities cannot become media requests. Switching sessions aborts pending acquisitions, revokes object URLs and releases action timers; stale session polling cannot repaint another project or clear its newer poller.
6
+
7
+ Code fences use scoped local syntax styles, an exact-text Copy control and a bounded cache of completed highlights. Incomplete and very large fences stay escaped text. JSON formatting changes whitespace only, retaining large integers, exponent notation, escapes and duplicate keys. Syntax classes cannot style unrelated telemetry. Complete JSON fences display with indentation while Copy retains the exact source, including original line endings. Delayed startup preferences cannot replace an explicit session/New selection, and stale project hydration cannot overwrite the current project. Local cached tool provenance uses the same escaped renderer as canonical history.
8
+
9
+ Verification:
10
+
11
+ - 105 tests passed across seven suites, including all required chat transport lifecycle, client runtime and inline-script gates. CLI TypeScript no-emit passed.
12
+ - Actual Chromium rendered current source-bundled production HTML at 320, 768 and 1440 pixels, dark and light. All 48 checks passed: canonical restore/grouping, three decoded media formats, video/audio playback, byte-exact downloads, keyboard detail modal, Unicode clipboard, scoped syntax, correlated synthetic working states and session- and project-switch cleanup.
13
+ - Dark desktop and light phone screenshots were visually reviewed. No shared compiled output, publish package, real daemon, model, GPU workload or service was changed by this validation.
14
+
15
+ Run the isolated browser proof with:
16
+
17
+ ```sh
18
+ node scripts/test-web-session-live.mjs --run --out /tmp/omnius-web-session
19
+ ```
20
+
21
+ The harness compiles only browser source into an owned temporary directory and serves an API fixture. Every session, artifact, progress event and media byte is synthetic. It forbids inference/execution requests and foreign-origin traffic. The [durable report](evidence/session-transcript-browser-20261016.json) records source hashes, individual checks and selected screenshots.
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.867",
3
+ "version": "1.0.869",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.867",
9
+ "version": "1.0.869",
10
10
  "bundleDependencies": [
11
11
  "image-to-ascii"
12
12
  ],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.867",
3
+ "version": "1.0.869",
4
4
  "description": "AI coding agent powered by open-source models (Ollama/vLLM) — interactive TUI with agentic tool-calling loop",
5
5
  "type": "module",
6
6
  "main": "./dist/library.js",