pi-one-ui 0.1.1 → 0.2.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.
Files changed (113) hide show
  1. package/README.md +66 -39
  2. package/extensions/{shell → app/commands}/settings-previews.ts +7 -7
  3. package/extensions/app/config/renderer.ts +13 -63
  4. package/extensions/app/config/shell.ts +24 -138
  5. package/extensions/app/config/store.ts +290 -0
  6. package/extensions/app/host/pi-extension-port.ts +25 -0
  7. package/extensions/app/host/pi-ui-port.ts +52 -0
  8. package/extensions/app/host/tui-capabilities.ts +27 -0
  9. package/extensions/app/overlay/input-router.ts +63 -0
  10. package/extensions/app/overlay/overlay-manager.ts +39 -0
  11. package/extensions/{shell → app/overlay}/selector-border.ts +3 -3
  12. package/extensions/app/overlay/selector-controller.ts +104 -0
  13. package/extensions/app/ownership/layout-registry.ts +65 -0
  14. package/extensions/app/ownership.ts +21 -7
  15. package/extensions/app/panel.ts +261 -140
  16. package/extensions/app/runtime/event-coordinator.ts +84 -0
  17. package/extensions/app/runtime/render-scheduler.ts +56 -0
  18. package/extensions/app/runtime/runtime-state.ts +83 -0
  19. package/extensions/app/runtime/tui-runtime.ts +546 -0
  20. package/extensions/features/{context.ts → context-inspector/index.ts} +30 -23
  21. package/extensions/features/{shell/flush-docked-bash.ts → flush-docked-bash.ts} +1 -4
  22. package/extensions/index.ts +2 -48
  23. package/extensions/layouts/context/index.ts +188 -0
  24. package/extensions/{shell → layouts/context/message}/user-message-styles.ts +2 -2
  25. package/extensions/{shell → layouts/context/message}/user-message.ts +2 -2
  26. package/extensions/{transcript → layouts/context}/renderer/compact-mode.ts +17 -13
  27. package/extensions/layouts/context/renderer/context-refresh.ts +79 -0
  28. package/extensions/{transcript → layouts/context}/renderer/default-mode.ts +3 -3
  29. package/extensions/{transcript → layouts/context}/renderer/index.ts +14 -14
  30. package/extensions/{transcript → layouts/context}/renderer/mouse/hover.ts +2 -2
  31. package/extensions/{transcript → layouts/context}/renderer/mouse/interaction.ts +26 -7
  32. package/extensions/{transcript → layouts/context}/renderer/mouse/layout.ts +1 -1
  33. package/extensions/{transcript → layouts/context}/renderer/mouse/packets.ts +3 -3
  34. package/extensions/{transcript → layouts/context}/renderer/mouse/scroll.ts +12 -7
  35. package/extensions/{transcript → layouts/context}/renderer/tool/diff/diff-component.ts +2 -2
  36. package/extensions/{transcript → layouts/context}/renderer/tool/diff/diff-edit-render.ts +1 -1
  37. package/extensions/{transcript → layouts/context}/renderer/tool/diff/diff-highlight.ts +1 -1
  38. package/extensions/{transcript → layouts/context}/renderer/tool/diff/diff-layout.ts +1 -1
  39. package/extensions/{transcript → layouts/context}/renderer/tool/diff/diff-limits.ts +1 -1
  40. package/extensions/{transcript → layouts/context}/renderer/tool/diff/diff-palette.ts +1 -1
  41. package/extensions/{transcript → layouts/context}/renderer/tool/diff/diff-presentation.ts +1 -1
  42. package/extensions/{transcript → layouts/context}/renderer/tool/diff/diff-renderer.ts +1 -1
  43. package/extensions/{transcript → layouts/context}/renderer/tool/diff/diff-write-render.ts +1 -1
  44. package/extensions/{transcript → layouts/context}/renderer/tool/diff/index.ts +2 -2
  45. package/extensions/{transcript → layouts/context}/renderer/tool/grouping.ts +4 -4
  46. package/extensions/{transcript → layouts/context}/renderer/tool/message-display.ts +6 -4
  47. package/extensions/{transcript → layouts/context}/renderer/tool/names.ts +2 -2
  48. package/extensions/{transcript → layouts/context}/renderer/tool/result.ts +3 -3
  49. package/extensions/{features/agent-summary → layouts/context/summary}/core.ts +1 -1
  50. package/extensions/{features → layouts/context/thinking}/compact-thinking.ts +7 -7
  51. package/extensions/{shell → layouts/editor}/accent-rail-editor.ts +8 -8
  52. package/extensions/{shell → layouts/editor}/completion-menu.ts +3 -6
  53. package/extensions/layouts/editor/controller.ts +613 -0
  54. package/extensions/{shell → layouts/editor}/editor-metadata-format.ts +6 -3
  55. package/extensions/layouts/editor/factory.ts +159 -0
  56. package/extensions/layouts/editor/index.ts +16 -0
  57. package/extensions/{shell → layouts/editor}/minimalist-editor.ts +4 -4
  58. package/extensions/layouts/editor/ownership.ts +103 -0
  59. package/extensions/{shell → layouts/editor}/ui.ts +2 -2
  60. package/extensions/layouts/footer/controller.ts +392 -0
  61. package/extensions/layouts/footer/data.ts +41 -0
  62. package/extensions/{shell → layouts/footer}/extension-status.ts +2 -2
  63. package/extensions/{shell → layouts/footer}/footer-layout.ts +1 -1
  64. package/extensions/{shell → layouts/footer}/footer.ts +11 -8
  65. package/extensions/layouts/footer/index.ts +24 -0
  66. package/extensions/layouts/header/index.ts +5 -0
  67. package/extensions/{features/shell → layouts/header}/startup-header.ts +105 -19
  68. package/extensions/layouts/working-line/controller.ts +291 -0
  69. package/extensions/{shell → layouts/working-line}/interaction-summary.ts +3 -3
  70. package/extensions/{shell → layouts/working-line}/working-line-spinners.ts +1 -1
  71. package/extensions/{shell → layouts/working-line}/working-line.ts +4 -4
  72. package/extensions/{shell → services}/live-context.ts +29 -1
  73. package/extensions/services/project-refresh.ts +374 -0
  74. package/extensions/{shell → services}/project-state.ts +5 -5
  75. package/extensions/{shell/state.ts → services/session-state.ts} +75 -5
  76. package/extensions/{shell → shared}/format.ts +4 -4
  77. package/extensions/tools/component-tree.ts +6 -6
  78. package/package.json +4 -4
  79. package/extensions/shell/index.ts +0 -1659
  80. package/extensions/shell/project-refresh.ts +0 -130
  81. package/extensions/shell/settings-command.ts +0 -2144
  82. package/extensions/transcript/index.ts +0 -65
  83. package/extensions/transcript/renderer/transcript-refresh.ts +0 -79
  84. /package/extensions/{shell → app/ownership}/prototype-patch-registry.ts +0 -0
  85. /package/extensions/{shell → app/runtime}/session-lifecycle.ts +0 -0
  86. /package/extensions/features/{shell/aliases.ts → aliases.ts} +0 -0
  87. /package/extensions/features/{shell → legacy}/working-message.ts +0 -0
  88. /package/extensions/features/{reference → session-reference}/index.ts +0 -0
  89. /package/extensions/features/{reference → session-reference}/session.ts +0 -0
  90. /package/extensions/features/{reference/subagent.ts → subagent-autocomplete.ts} +0 -0
  91. /package/extensions/{shell → layouts/context/message}/user-message-osc.ts +0 -0
  92. /package/extensions/{transcript → layouts/context}/renderer/markdown-enhance.ts +0 -0
  93. /package/extensions/{transcript → layouts/context}/renderer/tool/diff/ATTRIBUTION.md +0 -0
  94. /package/extensions/{transcript → layouts/context}/renderer/tool/diff/ansi-utils.ts +0 -0
  95. /package/extensions/{transcript → layouts/context}/renderer/tool/diff/diff-header.ts +0 -0
  96. /package/extensions/{transcript → layouts/context}/renderer/tool/diff/diff-inline.ts +0 -0
  97. /package/extensions/{transcript → layouts/context}/renderer/tool/diff/diff-parse.ts +0 -0
  98. /package/extensions/{transcript → layouts/context}/renderer/tool/diff/diff-text.ts +0 -0
  99. /package/extensions/{transcript → layouts/context}/renderer/tool/diff/line-width-safety.ts +0 -0
  100. /package/extensions/{transcript → layouts/context}/renderer/tool/diff/shiki-highlight.ts +0 -0
  101. /package/extensions/{transcript → layouts/context}/renderer/tool/diff/write-execution.ts +0 -0
  102. /package/extensions/{transcript → layouts/context}/renderer/tool/show-more-hint.ts +0 -0
  103. /package/extensions/{features/agent-summary → layouts/context/summary}/index.ts +0 -0
  104. /package/extensions/{shell → layouts/editor}/accent-rail-layout-patch.ts +0 -0
  105. /package/extensions/{shell → layouts/editor}/editor-transfer.ts +0 -0
  106. /package/extensions/{shell → layouts/footer}/footer-format.ts +0 -0
  107. /package/extensions/{shell → layouts/working-line}/working-line-messages.ts +0 -0
  108. /package/extensions/{shell/git.ts → services/git-data.ts} +0 -0
  109. /package/extensions/{shell/package-version.ts → services/package-data.ts} +0 -0
  110. /package/extensions/{shell/runtime.ts → services/runtime-data.ts} +0 -0
  111. /package/extensions/{shell → services}/telemetry.ts +0 -0
  112. /package/extensions/{shell → shared}/icons.ts +0 -0
  113. /package/extensions/{shell → shared}/style.ts +0 -0
@@ -1,130 +0,0 @@
1
- export type StopProjectRefreshInterval = () => void;
2
-
3
- export type ScheduleProjectRefreshOptions = {
4
- force?: boolean;
5
- };
6
-
7
- export type ProjectRefreshRun = {
8
- isCurrent: () => boolean;
9
- };
10
-
11
- export type ProjectRefreshScheduler<T> = {
12
- schedule: (target: T, options?: ScheduleProjectRefreshOptions) => void;
13
- invalidate: () => void;
14
- stop: () => void;
15
- };
16
-
17
- export const PROJECT_REFRESH_THROTTLE_MS = 5_000;
18
-
19
- export function startProjectRefreshInterval(
20
- intervalMs: number,
21
- refresh: () => void,
22
- ): StopProjectRefreshInterval {
23
- if (intervalMs <= 0) return () => {};
24
-
25
- const timer = setInterval(refresh, intervalMs);
26
- timer.unref?.();
27
-
28
- return () => clearInterval(timer);
29
- }
30
-
31
- export function createProjectRefreshScheduler<T>(
32
- refresh: (target: T, run: ProjectRefreshRun) => Promise<void>,
33
- afterRefresh: () => void,
34
- throttleMs = PROJECT_REFRESH_THROTTLE_MS,
35
- ): ProjectRefreshScheduler<T> {
36
- let refreshInFlight = false;
37
- let refreshPending = false;
38
- let pendingForce = false;
39
- let pendingTarget: T | undefined;
40
- let delayedRefresh: ReturnType<typeof setTimeout> | undefined;
41
- let lastRefreshStartedAt: number | undefined;
42
- let generation = 0;
43
-
44
- const clearDelayedRefresh = () => {
45
- if (!delayedRefresh) return;
46
- clearTimeout(delayedRefresh);
47
- delayedRefresh = undefined;
48
- };
49
-
50
- const runRefresh = (
51
- target: T,
52
- options: ScheduleProjectRefreshOptions = {},
53
- ) => {
54
- clearDelayedRefresh();
55
- if (refreshInFlight) {
56
- refreshPending = true;
57
- pendingForce ||= options.force === true;
58
- pendingTarget = target;
59
- return;
60
- }
61
-
62
- const currentGeneration = generation;
63
- const run: ProjectRefreshRun = {
64
- isCurrent: () => currentGeneration === generation,
65
- };
66
- refreshInFlight = true;
67
- lastRefreshStartedAt = Date.now();
68
- void refresh(target, run)
69
- .catch(() => undefined)
70
- .finally(() => {
71
- if (currentGeneration !== generation) return;
72
- refreshInFlight = false;
73
- afterRefresh();
74
- if (refreshPending) {
75
- refreshPending = false;
76
- const nextForce = pendingForce;
77
- pendingForce = false;
78
- const nextTarget = pendingTarget ?? target;
79
- pendingTarget = undefined;
80
- schedule(nextTarget, { force: nextForce });
81
- }
82
- });
83
- };
84
-
85
- const schedule = (target: T, options: ScheduleProjectRefreshOptions = {}) => {
86
- if (
87
- options.force ||
88
- throttleMs <= 0 ||
89
- lastRefreshStartedAt === undefined
90
- ) {
91
- runRefresh(target, options);
92
- return;
93
- }
94
-
95
- const delayMs = Math.max(
96
- 0,
97
- throttleMs - (Date.now() - lastRefreshStartedAt),
98
- );
99
- if (delayMs === 0) {
100
- runRefresh(target);
101
- return;
102
- }
103
-
104
- pendingTarget = target;
105
- if (delayedRefresh) return;
106
- delayedRefresh = setTimeout(() => {
107
- delayedRefresh = undefined;
108
- const nextTarget = pendingTarget ?? target;
109
- pendingTarget = undefined;
110
- runRefresh(nextTarget);
111
- }, delayMs);
112
- delayedRefresh.unref?.();
113
- };
114
-
115
- const invalidate = () => {
116
- generation += 1;
117
- clearDelayedRefresh();
118
- refreshInFlight = false;
119
- refreshPending = false;
120
- pendingForce = false;
121
- pendingTarget = undefined;
122
- lastRefreshStartedAt = undefined;
123
- };
124
-
125
- return {
126
- schedule,
127
- invalidate,
128
- stop: invalidate,
129
- };
130
- }