@libtmux/workspace-cli 0.1.0-alpha.11
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/LICENSE +21 -0
- package/README.md +330 -0
- package/THIRD-PARTY-NOTICES.md +183 -0
- package/dist/app-w7cbtf0n.js +747 -0
- package/dist/completions-2a9fqwq3.js +282 -0
- package/dist/extensions-8v6mfszj.js +268 -0
- package/dist/index-0j386v40.js +7112 -0
- package/dist/main-1de529jm.js +37 -0
- package/dist/main-bfnr2nkj.js +3106 -0
- package/dist/main-c8atq2pj.js +470 -0
- package/dist/main-gh3pafqb.js +369 -0
- package/dist/main.js +35 -0
- package/dist/progress-n08zapg2.js +1649 -0
- package/dist/reference-ebfxh6yp.js +90 -0
- package/dist/tmux-wa2zn8z1.js +893 -0
- package/docs/command-reference.md +227 -0
- package/docs/commands.json +1125 -0
- package/docs/completions/_tmux-workspace +239 -0
- package/docs/completions/tmux-workspace.bash +257 -0
- package/docs/completions/tmux-workspace.fish +430 -0
- package/package.json +49 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026- Tony Narlock
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
# Workspace CLI
|
|
2
|
+
|
|
3
|
+
Manage tmux workspaces from YAML and JSON with Node.js 22.12+ or Bun 1.3.14+.
|
|
4
|
+
This local implementation is in development.
|
|
5
|
+
|
|
6
|
+
## Build
|
|
7
|
+
|
|
8
|
+
Run from the repository root:
|
|
9
|
+
|
|
10
|
+
```console
|
|
11
|
+
$ bun run --cwd packages/libtmux build
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
```console
|
|
15
|
+
$ bun run --cwd packages/workspace-cli build
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
```console
|
|
19
|
+
$ node packages/workspace-cli/dist/main.js --help
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Load and capture
|
|
23
|
+
|
|
24
|
+
Save this document as `workspace.yaml`:
|
|
25
|
+
|
|
26
|
+
```yaml
|
|
27
|
+
session_name: dev
|
|
28
|
+
windows:
|
|
29
|
+
- window_name: editor
|
|
30
|
+
layout: main-vertical
|
|
31
|
+
panes:
|
|
32
|
+
- vim
|
|
33
|
+
- top
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Load on a separate tmux socket:
|
|
37
|
+
|
|
38
|
+
```console
|
|
39
|
+
$ node packages/workspace-cli/dist/main.js load ./workspace.yaml \
|
|
40
|
+
-L workspace-cli-demo \
|
|
41
|
+
-d \
|
|
42
|
+
--json
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Capture its live topology:
|
|
46
|
+
|
|
47
|
+
```console
|
|
48
|
+
$ node packages/workspace-cli/dist/main.js freeze dev \
|
|
49
|
+
-L workspace-cli-demo \
|
|
50
|
+
--json
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
All native input layouts are checked before scripts run or sessions change.
|
|
54
|
+
Names accept unique abbreviations supported by the running daemon. Only
|
|
55
|
+
version-sensitive names query it; a cold endpoint uses the selected client.
|
|
56
|
+
Saved layouts require a valid checksum, a nonempty tree and enough pane cells.
|
|
57
|
+
tmux still owns geometry correction and pruning, and may reject a layout when
|
|
58
|
+
it is applied.
|
|
59
|
+
The CLI limits custom layouts to 8192 characters and 256 nested groups;
|
|
60
|
+
these are application limits, separate from tmux's parser.
|
|
61
|
+
|
|
62
|
+
One default differs from tmuxp on purpose: a window that names no `layout`
|
|
63
|
+
tiles its panes, where tmuxp stacks them by halving the last one. Explicit
|
|
64
|
+
`layout` and `focus` agree with tmuxp, and so does the pane left active when
|
|
65
|
+
nothing sets `focus`: the last pane created in the focused window.
|
|
66
|
+
|
|
67
|
+
[`@libtmux/workspace`](../workspace) is a separate implementation, not this
|
|
68
|
+
command's engine: it converges a session that already exists, and its strict
|
|
69
|
+
schema rejects `environment`, `before_script`, `window_index`,
|
|
70
|
+
`suppress_history`, `x-` keys and the other fields below. A document written
|
|
71
|
+
here is not necessarily one that package accepts.
|
|
72
|
+
|
|
73
|
+
Loading reuses an existing session, and compares it against the document rather
|
|
74
|
+
than rebuilding it: a window the document names that the session does not hold
|
|
75
|
+
is reported, exit 1, and nothing is changed. Without `-d`, load attaches the
|
|
76
|
+
final workspace or switches the current tmux client. Attachment uses the
|
|
77
|
+
controlling terminal, including when standard streams are redirected; no
|
|
78
|
+
terminal means failure before creating sessions. Inside tmux, attached load
|
|
79
|
+
stays on the current server; use `-d` to load on another server. Explicit append
|
|
80
|
+
adds windows to the current pane's session. A load that cannot finish a session
|
|
81
|
+
it created removes it, so a rerun starts clean; an append keeps the windows it
|
|
82
|
+
added and names them.
|
|
83
|
+
|
|
84
|
+
When clients share a session, tmux selects its most recently active client before
|
|
85
|
+
loading. The CLI captures that client and targets the switch explicitly.
|
|
86
|
+
|
|
87
|
+
Two `load`s racing on the same session name are not coordinated: tmux offers no
|
|
88
|
+
lock on a session that does not exist yet, so the loser's create can fail after
|
|
89
|
+
the winner's session exists, or both can observe no session and each start one.
|
|
90
|
+
Run concurrent loads against distinct session names.
|
|
91
|
+
|
|
92
|
+
`load -2` forces 256-color terminal handling. Legacy `-8` is rejected before
|
|
93
|
+
calling tmux because supported tmux versions do not implement that legacy flag.
|
|
94
|
+
|
|
95
|
+
Pane readiness waits apply before sending commands, whatever the pane's shell
|
|
96
|
+
is. Empty panes skip the wait, including with
|
|
97
|
+
`workspace_builder_options.pane_readiness: always`.
|
|
98
|
+
|
|
99
|
+
Explicit `window_index` values reserve their slots before implicit windows are
|
|
100
|
+
allocated from the effective `base-index`; `null` leaves the index unspecified.
|
|
101
|
+
Append also reserves indexes from later input files. Removing the temporary bootstrap window preserves requested
|
|
102
|
+
indexes and restores the prior local or inherited `renumber-windows` setting.
|
|
103
|
+
A failed restoration appears as `renumber_restore_error` in the load result.
|
|
104
|
+
|
|
105
|
+
Native `load` rejects unsupported fields before any input runs scripts or changes
|
|
106
|
+
tmux. The diagnostic includes the field path. For example, `entter: false` in a
|
|
107
|
+
command is an error; use `enter: false` to leave that command unsubmitted. A
|
|
108
|
+
key starting with `x-`, at any scope, is the exception: it is accepted,
|
|
109
|
+
ignored at load, and left alone by `convert`. The refusal for any other
|
|
110
|
+
unknown key names that prefix as the way to keep it.
|
|
111
|
+
|
|
112
|
+
| Scope | Accepted fields |
|
|
113
|
+
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
114
|
+
| Workspace | `session_name`, `windows`, `start_directory`, `environment`, `shell_command_before`, `suppress_history`, `options`, `global_options`, `before_script`, `workspace_builder_options`, `plugins`, `workspace_builder`, `workspace_builder_paths`, `description` |
|
|
115
|
+
| Window | `window_name`, `window_index`, `panes`, `start_directory`, `environment`, `shell_command_before`, `suppress_history`, `options`, `options_after`, `layout`, `window_shell`, `focus`, `description` |
|
|
116
|
+
| Pane | `shell_command`, `shell_command_before`, `start_directory`, `environment`, `suppress_history`, `shell`, `focus`, `enter`, `sleep_before`, `sleep_after`, `description` |
|
|
117
|
+
| Command object | `cmd`, `enter`, `sleep_before`, `sleep_after` |
|
|
118
|
+
| `workspace_builder_options` | `pane_readiness` |
|
|
119
|
+
|
|
120
|
+
`description` is neutral metadata at workspace, window, and pane scope. Option
|
|
121
|
+
and environment maps retain their native names. Conversion preserves arbitrary
|
|
122
|
+
fields without applying the native execution contract. Documents delegated to
|
|
123
|
+
Python plugins or custom builders retain their extension fields; empty plugin
|
|
124
|
+
lists and blank builder names still use native validation.
|
|
125
|
+
|
|
126
|
+
## Inspect a workspace through MCP
|
|
127
|
+
|
|
128
|
+
The separate [MCP server](../mcp/README.md) inspects loaded workspaces on the
|
|
129
|
+
same tmux socket. Build it from the repository root:
|
|
130
|
+
|
|
131
|
+
```console
|
|
132
|
+
$ bun run --cwd packages/mcp build
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
After the detached load above, configure your MCP client to launch `node` with
|
|
136
|
+
the built `packages/mcp/dist/server.js` as its argument. Use an absolute program
|
|
137
|
+
path if the client starts outside this repository. Set `LIBTMUX_SOCKET` to
|
|
138
|
+
`workspace-cli-demo` and `LIBTMUX_TOOLSETS` to `inspect` in that subprocess's
|
|
139
|
+
environment. The socket is selected when the MCP server starts.
|
|
140
|
+
|
|
141
|
+
For a workspace loaded with `-S`, set `LIBTMUX_SOCKET_PATH` to the same absolute
|
|
142
|
+
socket path instead of `LIBTMUX_SOCKET`. If the CLI uses `TMUX_BIN`, select that
|
|
143
|
+
executable with the MCP server's `LIBTMUX_TMUX_BIN` too.
|
|
144
|
+
|
|
145
|
+
Discover tools with `tools/list`, then call `list_sessions` and `list_panes`.
|
|
146
|
+
Call `list_windows` with `session` set to `dev`, the configuration's session
|
|
147
|
+
name. Pass a returned pane ID as `paneId` to `capture_pane` or `wait_for_text`;
|
|
148
|
+
bound output with `maxLines` and waits with `timeoutMs`. A pending text wait allows
|
|
149
|
+
other inspection requests on the same connection. Read `tmux://capabilities`
|
|
150
|
+
through `resources/read` to verify the selected socket and advertised tools.
|
|
151
|
+
See the [capture guide](../mcp/README.md#read-what-panes-show) for incremental
|
|
152
|
+
reads and cursors.
|
|
153
|
+
|
|
154
|
+
Closing the MCP subprocess's stdin cancels pending waits and joins its control
|
|
155
|
+
connections. The loaded workspace remains available in tmux.
|
|
156
|
+
|
|
157
|
+
## Imports
|
|
158
|
+
|
|
159
|
+
`import tmuxinator` and `import teamocil` translate source documents and validate
|
|
160
|
+
native configuration fields before previewing or saving. Unknown fields,
|
|
161
|
+
conflicting non-null aliases and malformed command shapes fail without
|
|
162
|
+
replacing a destination. Generic `convert` preserves arbitrary fields.
|
|
163
|
+
|
|
164
|
+
Tmuxinator window command arrays stay in one pane. Explicit `panes` lists create
|
|
165
|
+
separate panes. Project `pre_window` arrays form one `; `-joined command; window
|
|
166
|
+
`pre` arrays form one `&&`-joined command before each explicit pane. Window
|
|
167
|
+
`pre` requires nonempty explicit panes. `synchronize: true` and `before` apply
|
|
168
|
+
before sequential pane creation and command delivery; `after` applies afterward.
|
|
169
|
+
|
|
170
|
+
Teamocil `commands` arrays form one `; `-joined command. Legacy `cmd` and `splits`
|
|
171
|
+
are accepted. Window options apply before pane commands. The first requested
|
|
172
|
+
window and pane focus wins; absent focus selects the first item. Both formats
|
|
173
|
+
retain window order, pane order and layouts.
|
|
174
|
+
|
|
175
|
+
Imports save an absolute project root relative to the invocation directory,
|
|
176
|
+
including when the source omits it. Window roots resolve relative to that root, so
|
|
177
|
+
moving the saved file preserves working directories. Import requires neither
|
|
178
|
+
tmux nor Python and does not check directory existence. Layout compatibility
|
|
179
|
+
is checked against the selected tmux during load. Commands use native load's
|
|
180
|
+
environment expansion from the invoking process before shell delivery.
|
|
181
|
+
|
|
182
|
+
Project lifecycle hooks, endpoint/runtime overrides, named pane titles,
|
|
183
|
+
Teamocil `clear`, filters and pane widths are refused. Use an explicit native
|
|
184
|
+
workspace or the source tool for those behaviors.
|
|
185
|
+
|
|
186
|
+
Tmuxinator expands ERB through Ruby before parsing; unexpanded `<%` markup in a
|
|
187
|
+
Tmuxinator key or value fails before output or overwrite. Teamocil evaluates no
|
|
188
|
+
templates, so `<%` in a Teamocil source is ordinary text and is preserved.
|
|
189
|
+
|
|
190
|
+
## Output
|
|
191
|
+
|
|
192
|
+
Every command accepts `--json` and `--ndjson` before or after the command name.
|
|
193
|
+
NDJSON takes precedence when both are present. Machine load requires `-d` or
|
|
194
|
+
`--append`. Machine commands never prompt. Human output honors `--color` and
|
|
195
|
+
`NO_COLOR`; machine output contains encoded data without terminal styling.
|
|
196
|
+
|
|
197
|
+
`convert`, import commands, and machine `freeze` return a document when no
|
|
198
|
+
destination is given. `--save-to` writes a file; `--force` permits replacement.
|
|
199
|
+
The file format is separate from the JSON/NDJSON output mode.
|
|
200
|
+
`freeze` infers JSON from a `.json` destination and otherwise saves YAML;
|
|
201
|
+
`-f` overrides the inferred format. `--quiet` suppresses its human save message
|
|
202
|
+
and preserves machine results.
|
|
203
|
+
Capture accepts an exact session name or ID. Without one, it uses the authenticated
|
|
204
|
+
current pane's session or the sole session on the selected server. Several sessions
|
|
205
|
+
outside tmux require an explicit target.
|
|
206
|
+
Capture reads honor cancellation. Saves check for cancellation before publishing;
|
|
207
|
+
publication already in progress may still complete.
|
|
208
|
+
|
|
209
|
+
Human `load` shows progress on terminal stderr. `--progress-format` accepts
|
|
210
|
+
`default`, `minimal`, `window`, `pane`, `verbose`, or a template with tokens such
|
|
211
|
+
as `{session}`, `{window}`, and `{session_pane_progress}`. Pane counts advance
|
|
212
|
+
after configured commands are sent; they do not wait for those commands to exit.
|
|
213
|
+
`--progress-lines` controls the recent script-output panel: default 3, 0 forwards
|
|
214
|
+
each stream directly, and -1 uses the available terminal height. Retention is
|
|
215
|
+
bounded to 64 KiB of characters for completed lines and each partial stream.
|
|
216
|
+
`TMUXP_PROGRESS_FORMAT` and `TMUXP_PROGRESS_LINES` set defaults; explicit flags
|
|
217
|
+
take precedence. `--no-progress`, `TMUXP_PROGRESS=0`, a dumb terminal, or redirected
|
|
218
|
+
stderr disables the display. Frames update from build events without timing
|
|
219
|
+
sleeps, clip to terminal width, and clear before results or attachment.
|
|
220
|
+
|
|
221
|
+
`--log-level` filters diagnostics on stderr: `debug`, `info`, `warning` (default),
|
|
222
|
+
`error`, or `critical`. Machine diagnostics are NDJSON. `load --log-file` appends
|
|
223
|
+
the selected diagnostics as NDJSON, including script output at `info` level.
|
|
224
|
+
New log files use owner-only permissions. Nonregular destinations are rejected
|
|
225
|
+
before session creation; existing log contents are preserved.
|
|
226
|
+
If logging fails during execution, stderr reports `log_error` and the command
|
|
227
|
+
keeps its result and exit status. Cancellation closes the owned log handle.
|
|
228
|
+
Interrupting a blocked output write still joins owned children and exits 130.
|
|
229
|
+
An interrupted load allows up to 100ms to emit its final machine result before
|
|
230
|
+
exiting; an unread pipe cannot hold the process open. Cancelled output may be
|
|
231
|
+
incomplete.
|
|
232
|
+
|
|
233
|
+
Bootstrap and editor commands use quoted argv directly. Child output is UTF-8
|
|
234
|
+
with replacement for invalid bytes. Captured results retain at most 64 KiB of
|
|
235
|
+
source bytes per stream and report truncation; NDJSON forwards output as it
|
|
236
|
+
arrives. A nonzero editor status becomes the CLI exit status.
|
|
237
|
+
After a captured child exits, its streams have 100ms to drain before owned
|
|
238
|
+
descendants are stopped. Remaining capture streams close after group cleanup.
|
|
239
|
+
|
|
240
|
+
## Python compatibility
|
|
241
|
+
|
|
242
|
+
Search uses native JavaScript regular expressions. `-F` treats patterns as
|
|
243
|
+
literal text; `-w` applies whole-word matching to the complete expression.
|
|
244
|
+
Python-specific regex syntax is outside the native search contract.
|
|
245
|
+
|
|
246
|
+
`shell` uses an interpreter with tmuxp 1.74.0 installed. Set
|
|
247
|
+
`TMUX_WORKSPACE_PYTHON` to choose its executable; otherwise it uses `python3`.
|
|
248
|
+
Code passed with `-c` runs in tmuxp's Python context. An interactive shell needs
|
|
249
|
+
a controlling terminal.
|
|
250
|
+
|
|
251
|
+
`load` uses the same optional interpreter when a workspace selects Python
|
|
252
|
+
`plugins` or a `workspace_builder`. Ordinary workspaces, empty plugin lists,
|
|
253
|
+
and blank builder names use the native builder without starting Python.
|
|
254
|
+
`workspace_builder_paths` adds existing import directories relative to the
|
|
255
|
+
workspace file. These directories contain executable extension code.
|
|
256
|
+
|
|
257
|
+
The adapter expands common configuration fields and supplies the tmuxp builder
|
|
258
|
+
protocol. Explicit custom builders may omit `windows` and consume their own
|
|
259
|
+
configuration. Append retains the authenticated current session across input
|
|
260
|
+
files. Python extension append rejects `before_script`; run that script
|
|
261
|
+
separately. Native append retains its bootstrap support.
|
|
262
|
+
|
|
263
|
+
Extension output uses the bounded child streams described above. Human progress
|
|
264
|
+
shows a workspace label and script output without native pane counters.
|
|
265
|
+
Extension results report `effects_scope: "observed"`, `effects_unknown: true`,
|
|
266
|
+
and newly observed window and pane IDs. These observations include concurrent
|
|
267
|
+
changes and do not establish ownership; failures do not roll back opaque
|
|
268
|
+
extension effects. Cancellation joins the owned Python process group, then
|
|
269
|
+
allows up to one second to observe surviving topology. A changed daemon or
|
|
270
|
+
failed observation is reported without comparing IDs across daemon lifetimes.
|
|
271
|
+
|
|
272
|
+
## Reference and completion
|
|
273
|
+
|
|
274
|
+
The [command reference](docs/command-reference.md) and
|
|
275
|
+
[command metadata](docs/commands.json) come from the native parser. Regenerate
|
|
276
|
+
them after changing command definitions:
|
|
277
|
+
|
|
278
|
+
```console
|
|
279
|
+
$ bun run --cwd packages/workspace-cli docs:generate
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
The build checks that the reference and packaged completion scripts are current.
|
|
283
|
+
The scripts complete commands, options, enum values, and file paths without
|
|
284
|
+
starting Node, Bun, or tmux. Saved workspace names and live sessions are outside
|
|
285
|
+
their completion scope.
|
|
286
|
+
|
|
287
|
+
Completion is tested on Linux with Bash 5.2, Zsh 5.9, and fish 4.8. Bash 3.2 is
|
|
288
|
+
a syntax target; older shells and filenames containing newlines remain unverified.
|
|
289
|
+
|
|
290
|
+
After installing the local package, load the script for your shell. Bash:
|
|
291
|
+
|
|
292
|
+
```console
|
|
293
|
+
$ source <(tmux-workspace completion bash)
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
Zsh, with its completion system initialized:
|
|
297
|
+
|
|
298
|
+
```console
|
|
299
|
+
$ autoload -Uz compinit && compinit && source <(tmux-workspace completion zsh)
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
fish:
|
|
303
|
+
|
|
304
|
+
```console
|
|
305
|
+
$ tmux-workspace completion fish | source
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
For automation, `--json` and `--ndjson` wrap the script in a structured result.
|
|
309
|
+
|
|
310
|
+
## Development status
|
|
311
|
+
|
|
312
|
+
Native discovery, conversion, imports, common searches, detached load, append,
|
|
313
|
+
capture, editor invocation, diagnostics, and the Python shell have executable
|
|
314
|
+
tests. The Linux installed-package check packs the CLI and core, installs both
|
|
315
|
+
offline into an empty project, and exercises every command in JSON and NDJSON
|
|
316
|
+
on Node 22 and Bun. It needs the optional Python runtime described above:
|
|
317
|
+
|
|
318
|
+
```console
|
|
319
|
+
$ bun run --cwd packages/workspace-cli test:install
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
Plugin and custom-builder execution has output, cancellation and borrowed-state
|
|
323
|
+
tests using the optional interpreter. Confirmation and destination choices use
|
|
324
|
+
explicit command-line flags. Native process and terminal evidence covers Linux;
|
|
325
|
+
macOS coverage is a package canary. Benchmark results cover isolated Linux
|
|
326
|
+
fixtures.
|
|
327
|
+
|
|
328
|
+
The core library keeps its zero-runtime-dependency contract. Commander, YAML,
|
|
329
|
+
and terminal text helpers are bundled into this CLI; `libtmux` remains a separate
|
|
330
|
+
package. Machine commands skip loading the progress renderer.
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# Third-party notices
|
|
2
|
+
|
|
3
|
+
`tmux-workspace` is distributed as a bundle: the packages below are compiled
|
|
4
|
+
into `dist/` and their license terms are reproduced here in full, as those
|
|
5
|
+
terms require. `libtmux` is not bundled and carries its own notice.
|
|
6
|
+
|
|
7
|
+
## ansi-regex 5.0.1
|
|
8
|
+
|
|
9
|
+
License: MIT
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
MIT License
|
|
13
|
+
|
|
14
|
+
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
|
15
|
+
|
|
16
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
17
|
+
|
|
18
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## ansi-styles 6.2.3
|
|
24
|
+
|
|
25
|
+
License: MIT
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
MIT License
|
|
29
|
+
|
|
30
|
+
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
|
31
|
+
|
|
32
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
33
|
+
|
|
34
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
35
|
+
|
|
36
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## cli-truncate 6.1.1
|
|
40
|
+
|
|
41
|
+
License: MIT
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
MIT License
|
|
45
|
+
|
|
46
|
+
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
|
47
|
+
|
|
48
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
49
|
+
|
|
50
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
51
|
+
|
|
52
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## commander 15.0.0
|
|
56
|
+
|
|
57
|
+
License: MIT
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
(The MIT License)
|
|
61
|
+
|
|
62
|
+
Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>
|
|
63
|
+
|
|
64
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
65
|
+
a copy of this software and associated documentation files (the
|
|
66
|
+
'Software'), to deal in the Software without restriction, including
|
|
67
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
68
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
69
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
70
|
+
the following conditions:
|
|
71
|
+
|
|
72
|
+
The above copyright notice and this permission notice shall be
|
|
73
|
+
included in all copies or substantial portions of the Software.
|
|
74
|
+
|
|
75
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
|
76
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
77
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
78
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
79
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
80
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
81
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## get-east-asian-width 1.6.0
|
|
85
|
+
|
|
86
|
+
License: MIT
|
|
87
|
+
|
|
88
|
+
```text
|
|
89
|
+
MIT License
|
|
90
|
+
|
|
91
|
+
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
|
92
|
+
|
|
93
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
94
|
+
|
|
95
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
96
|
+
|
|
97
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## is-fullwidth-code-point 5.1.0
|
|
101
|
+
|
|
102
|
+
License: MIT
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
MIT License
|
|
106
|
+
|
|
107
|
+
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
|
108
|
+
|
|
109
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
110
|
+
|
|
111
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
112
|
+
|
|
113
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## slice-ansi 9.0.0
|
|
117
|
+
|
|
118
|
+
License: MIT
|
|
119
|
+
|
|
120
|
+
```text
|
|
121
|
+
MIT License
|
|
122
|
+
|
|
123
|
+
Copyright (c) DC <threedeecee@gmail.com>
|
|
124
|
+
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
|
125
|
+
|
|
126
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
127
|
+
|
|
128
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
129
|
+
|
|
130
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## string-width 8.2.2
|
|
134
|
+
|
|
135
|
+
License: MIT
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
MIT License
|
|
139
|
+
|
|
140
|
+
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
|
141
|
+
|
|
142
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
143
|
+
|
|
144
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
145
|
+
|
|
146
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## strip-ansi 7.2.0
|
|
150
|
+
|
|
151
|
+
License: MIT
|
|
152
|
+
|
|
153
|
+
```text
|
|
154
|
+
MIT License
|
|
155
|
+
|
|
156
|
+
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
|
|
157
|
+
|
|
158
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
159
|
+
|
|
160
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
161
|
+
|
|
162
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## yaml 2.9.0
|
|
166
|
+
|
|
167
|
+
License: ISC
|
|
168
|
+
|
|
169
|
+
```text
|
|
170
|
+
Copyright Eemeli Aro <eemeli@gmail.com>
|
|
171
|
+
|
|
172
|
+
Permission to use, copy, modify, and/or distribute this software for any purpose
|
|
173
|
+
with or without fee is hereby granted, provided that the above copyright notice
|
|
174
|
+
and this permission notice appear in all copies.
|
|
175
|
+
|
|
176
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
177
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
178
|
+
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
179
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
|
180
|
+
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
181
|
+
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
|
182
|
+
THIS SOFTWARE.
|
|
183
|
+
```
|