overmux 0.0.4 → 0.0.6
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 +43 -0
- package/README.md +16 -2
- package/dist/bin.js +140 -127
- package/dist/bin.js.map +1 -1
- package/dist/docs/000-index.md +2 -4
- package/dist/docs/100-introduction/200-how-overmux-works.md +126 -2
- package/dist/docs/100-introduction/{300-why-overmux.md → 300-why-i-built-overmux.md} +1 -1
- package/dist/docs/200-getting-started/100-install-and-run-overmux.md +2 -2
- package/dist/docs/200-getting-started/400-secure-with-https/200-tailscale-serve.md +3 -3
- package/dist/docs/200-getting-started/400-secure-with-https/300-cloudflare-tunnel.md +2 -2
- package/dist/docs/200-getting-started/400-secure-with-https/400-self-hosted-reverse-proxy.md +2 -2
- package/dist/docs/200-getting-started/500-set-up-overmux-with-packages.md +42 -0
- package/dist/docs/400-reference/100-project-structure.md +83 -0
- package/dist/docs/400-reference/200-configuration.md +257 -0
- package/dist/docs/400-reference/300-storage-locations.md +46 -0
- package/dist/docs/400-reference/400-authentication-and-security.md +37 -0
- package/dist/docs/400-reference/500-server/000-index.md +13 -0
- package/dist/docs/400-reference/500-server/100-resources.md +191 -0
- package/dist/docs/400-reference/500-server/200-operations.md +111 -0
- package/dist/docs/400-reference/500-server/300-streams.md +140 -0
- package/dist/docs/400-reference/500-server/400-notifications.md +32 -0
- package/dist/docs/400-reference/500-server/500-api.md +118 -0
- package/dist/docs/400-reference/600-client/000-index.md +9 -0
- package/dist/docs/400-reference/600-client/005-setting-up-your-ui.md +137 -0
- package/dist/docs/400-reference/600-client/007-deep-links.md +87 -0
- package/dist/docs/400-reference/600-client/010-commands.md +189 -0
- package/dist/docs/400-reference/600-client/020-shortcuts.md +171 -0
- package/dist/docs/400-reference/600-client/100-api.md +370 -0
- package/dist/docs/400-reference/600-client/200-theming.md +209 -0
- package/dist/docs/400-reference/600-client/300-tech-stack-recommendations.md +12 -0
- package/dist/docs/400-reference/{400-cli → 700-cli}/050-init.md +2 -4
- package/{docs/400-reference/400-cli → dist/docs/400-reference/700-cli}/100-serve.md +9 -4
- package/{docs/400-reference/400-cli → dist/docs/400-reference/700-cli}/200-auth.md +1 -4
- package/dist/docs/400-reference/{400-cli → 700-cli}/300-call.md +1 -4
- package/dist/docs/400-reference/{400-cli → 700-cli}/350-instance.md +1 -4
- package/dist/docs/400-reference/700-cli/600-docs.md +128 -0
- package/dist/docs/400-reference/{400-cli → 700-cli}/700-desktop.md +1 -3
- package/dist/docs/500-hosted-pages.md +0 -1
- package/dist/exports/client.d.ts +5 -14
- package/dist/exports/client.d.ts.map +1 -1
- package/dist/exports/client.js +141 -46
- package/dist/exports/client.js.map +1 -1
- package/dist/exports/{index-DS70rKzo.d.ts → index-Cz3xkCa4.d.ts} +50 -36
- package/dist/exports/index-Cz3xkCa4.d.ts.map +1 -0
- package/dist/exports/index.d.ts +1 -1
- package/dist/exports/index.js +19 -5
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/{notifications-av0FK0yZ.js → notifications-BFAD3QQl.js} +29 -4
- package/dist/exports/notifications-BFAD3QQl.js.map +1 -0
- package/dist/exports/server.d.ts +1 -44
- package/dist/exports/server.d.ts.map +1 -1
- package/dist/exports/server.js +9 -1061
- package/dist/exports/server.js.map +1 -1
- package/dist/internal/server/coordinator/server-child.js +47 -43
- package/dist/internal/server/coordinator/server-child.js.map +1 -1
- package/docs/000-index.md +2 -4
- package/docs/100-introduction/200-how-overmux-works.md +126 -2
- package/docs/100-introduction/{300-why-overmux.md → 300-why-i-built-overmux.md} +1 -1
- package/docs/200-getting-started/100-install-and-run-overmux.md +2 -2
- package/docs/200-getting-started/400-secure-with-https/200-tailscale-serve.md +3 -3
- package/docs/200-getting-started/400-secure-with-https/300-cloudflare-tunnel.md +2 -2
- package/docs/200-getting-started/400-secure-with-https/400-self-hosted-reverse-proxy.md +2 -2
- package/docs/200-getting-started/500-set-up-overmux-with-packages.md +42 -0
- package/docs/400-reference/100-project-structure.md +83 -0
- package/docs/400-reference/200-configuration.md +257 -0
- package/docs/400-reference/300-storage-locations.md +46 -0
- package/docs/400-reference/400-authentication-and-security.md +37 -0
- package/docs/400-reference/500-server/000-index.md +13 -0
- package/docs/400-reference/500-server/100-resources.md +191 -0
- package/docs/400-reference/500-server/200-operations.md +111 -0
- package/docs/400-reference/500-server/300-streams.md +140 -0
- package/docs/400-reference/500-server/400-notifications.md +32 -0
- package/docs/400-reference/500-server/500-api.md +118 -0
- package/docs/400-reference/600-client/000-index.md +9 -0
- package/docs/400-reference/600-client/005-setting-up-your-ui.md +137 -0
- package/docs/400-reference/600-client/007-deep-links.md +87 -0
- package/docs/400-reference/600-client/010-commands.md +189 -0
- package/docs/400-reference/600-client/020-shortcuts.md +171 -0
- package/docs/400-reference/600-client/100-api.md +370 -0
- package/docs/400-reference/600-client/200-theming.md +209 -0
- package/docs/400-reference/600-client/300-tech-stack-recommendations.md +12 -0
- package/docs/400-reference/{400-cli → 700-cli}/050-init.md +2 -4
- package/{dist/docs/400-reference/400-cli → docs/400-reference/700-cli}/100-serve.md +9 -4
- package/{dist/docs/400-reference/400-cli → docs/400-reference/700-cli}/200-auth.md +1 -4
- package/docs/400-reference/{400-cli → 700-cli}/300-call.md +1 -4
- package/docs/400-reference/{400-cli → 700-cli}/350-instance.md +1 -4
- package/docs/400-reference/700-cli/600-docs.md +128 -0
- package/docs/400-reference/{400-cli → 700-cli}/700-desktop.md +1 -3
- package/docs/500-hosted-pages.md +0 -1
- package/package.json +4 -3
- package/src/internal/cli/app.ts +3 -5
- package/src/internal/cli/commands/docs-ai-context.ts +33 -0
- package/src/internal/cli/commands/docs.ts +19 -2
- package/src/internal/cli/commands/init-template.ts +1 -1
- package/src/internal/cli/commands/serve.ts +3 -0
- package/src/internal/cli/login.ts +9 -9
- package/src/internal/client/client-definition.ts +6 -8
- package/src/internal/client/host/deep-link-navigation.ts +75 -0
- package/src/internal/client/host/overmux-host.tsx +9 -0
- package/src/internal/client/index.ts +0 -6
- package/src/internal/client/overmux-react.ts +71 -40
- package/src/internal/server/auth/auth-service.ts +2 -2
- package/src/internal/server/auth/instance-control.ts +65 -14
- package/src/internal/server/coordinator/ipc-protocol.ts +0 -1
- package/src/internal/server/runtime/create-runtime.ts +5 -3
- package/src/internal/server/runtime/runtime-instance.ts +5 -4
- package/src/internal/server/runtime/runtime-operations.ts +9 -3
- package/src/internal/server/runtime/runtime-resources.ts +12 -32
- package/src/internal/server/runtime/runtime-streams.ts +5 -6
- package/src/internal/server/server-logger.ts +5 -10
- package/src/internal/server/server-startup-options.ts +5 -10
- package/src/internal/server/start-application-server.ts +4 -7
- package/src/public/ai-context.ts +7 -29
- package/src/public/client.ts +0 -6
- package/src/public/config.ts +156 -31
- package/src/public/server.ts +1 -16
- package/dist/docs/100-introduction/100-what-is-overmux.md +0 -7
- package/dist/docs/300-fundamentals/100-project-structure.md +0 -23
- package/dist/docs/300-fundamentals/200-configuration.md +0 -3
- package/dist/docs/300-fundamentals/300-theming.md +0 -54
- package/dist/docs/300-fundamentals/400-server.md +0 -3
- package/dist/docs/300-fundamentals/500-client.md +0 -3
- package/dist/docs/300-fundamentals/600-operations.md +0 -3
- package/dist/docs/300-fundamentals/700-resources.md +0 -3
- package/dist/docs/300-fundamentals/800-streams.md +0 -3
- package/dist/docs/300-fundamentals/900-authentication-and-security.md +0 -3
- package/dist/docs/400-reference/100-configuration.md +0 -23
- package/dist/docs/400-reference/200-server-api.md +0 -21
- package/dist/docs/400-reference/300-client-api.md +0 -39
- package/dist/docs/400-reference/400-cli/400-check.md +0 -20
- package/dist/docs/400-reference/400-cli/500-ai-context.md +0 -102
- package/dist/docs/400-reference/400-cli/600-docs.md +0 -23
- package/dist/exports/index-DS70rKzo.d.ts.map +0 -1
- package/dist/exports/notifications-av0FK0yZ.js.map +0 -1
- package/docs/100-introduction/100-what-is-overmux.md +0 -7
- package/docs/300-fundamentals/100-project-structure.md +0 -23
- package/docs/300-fundamentals/200-configuration.md +0 -3
- package/docs/300-fundamentals/300-theming.md +0 -54
- package/docs/300-fundamentals/400-server.md +0 -3
- package/docs/300-fundamentals/500-client.md +0 -3
- package/docs/300-fundamentals/600-operations.md +0 -3
- package/docs/300-fundamentals/700-resources.md +0 -3
- package/docs/300-fundamentals/800-streams.md +0 -3
- package/docs/300-fundamentals/900-authentication-and-security.md +0 -3
- package/docs/400-reference/100-configuration.md +0 -23
- package/docs/400-reference/200-server-api.md +0 -21
- package/docs/400-reference/300-client-api.md +0 -39
- package/docs/400-reference/400-cli/400-check.md +0 -20
- package/docs/400-reference/400-cli/500-ai-context.md +0 -102
- package/docs/400-reference/400-cli/600-docs.md +0 -23
- package/src/internal/cli/commands/ai.ts +0 -44
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "`overmux docs`"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Overmux documentation and AI context commands
|
|
6
|
+
|
|
7
|
+
## `overmux docs path`
|
|
8
|
+
|
|
9
|
+
`overmux docs path` prints the installed Overmux CLI’s absolute documentation path.
|
|
10
|
+
|
|
11
|
+
```console
|
|
12
|
+
$ overmux docs path
|
|
13
|
+
/path/to/somewhere/node_modules/overmux/docs
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## `overmux docs ai-context`
|
|
17
|
+
|
|
18
|
+
`overmux docs ai-context` prints `CLAUDE.md`/`AGENTS.md` guidance for coding agents.
|
|
19
|
+
|
|
20
|
+
### Usage
|
|
21
|
+
|
|
22
|
+
```text
|
|
23
|
+
overmux docs ai-context
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Prints the selected snippets shown in [available snippets](#available-snippets).
|
|
27
|
+
|
|
28
|
+
### Set up your coding agent
|
|
29
|
+
|
|
30
|
+
Tell your agent how to load Overmux guidance using `overmux docs ai-context`.
|
|
31
|
+
|
|
32
|
+
<CodeBlockTabs defaultValue="agents">
|
|
33
|
+
<CodeBlockTabsList>
|
|
34
|
+
<CodeBlockTabsTrigger value="agents">AGENTS.md</CodeBlockTabsTrigger>
|
|
35
|
+
<CodeBlockTabsTrigger value="claude">CLAUDE.md</CodeBlockTabsTrigger>
|
|
36
|
+
</CodeBlockTabsList>
|
|
37
|
+
<CodeBlockTab value="agents">
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
echo 'Run `overmux docs ai-context` for help configuring Overmux.' >> AGENTS.md
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
</CodeBlockTab>
|
|
44
|
+
<CodeBlockTab value="claude">
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
echo 'Run `overmux docs ai-context` for help configuring Overmux.' >> CLAUDE.md
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
</CodeBlockTab>
|
|
51
|
+
</CodeBlockTabs>
|
|
52
|
+
|
|
53
|
+
### Configure context snippets
|
|
54
|
+
|
|
55
|
+
Use `aiContextSnippets` in `overmux.config.ts` to select which snippets `overmux docs ai-context` prints.
|
|
56
|
+
|
|
57
|
+
```ts
|
|
58
|
+
import {
|
|
59
|
+
coreAiContextSnippets,
|
|
60
|
+
defineOvermuxConfig,
|
|
61
|
+
} from "overmux";
|
|
62
|
+
|
|
63
|
+
export default defineOvermuxConfig({
|
|
64
|
+
aiContextSnippets: coreAiContextSnippets,
|
|
65
|
+
// ...
|
|
66
|
+
});
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
When `aiContextSnippets` is omitted, Overmux uses `defaultAiContextSnippets`. Set it to an empty array to emit no context.
|
|
70
|
+
|
|
71
|
+
You can compose an explicit selection from the individual exports:
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
import {
|
|
75
|
+
defineOvermuxConfig,
|
|
76
|
+
packageSourceSnippet,
|
|
77
|
+
techStackRecommendationsSnippet,
|
|
78
|
+
} from "overmux";
|
|
79
|
+
|
|
80
|
+
export default defineOvermuxConfig({
|
|
81
|
+
aiContextSnippets: [
|
|
82
|
+
packageSourceSnippet,
|
|
83
|
+
techStackRecommendationsSnippet,
|
|
84
|
+
],
|
|
85
|
+
// ...
|
|
86
|
+
});
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Options
|
|
90
|
+
|
|
91
|
+
| Flag | Description | Default |
|
|
92
|
+
| --- | --- | --- |
|
|
93
|
+
| `--config <path>, -c <path>` | Configuration file | `$XDG_CONFIG_HOME/overmux/overmux.config.ts` |
|
|
94
|
+
|
|
95
|
+
### Snippet presets
|
|
96
|
+
|
|
97
|
+
[//]: # (BEGIN GENERATED AI CONTEXT PRESETS)
|
|
98
|
+
|
|
99
|
+
| Export | Included snippets |
|
|
100
|
+
| --- | --- |
|
|
101
|
+
| `defaultAiContextSnippets` | `package-source`, `tech-stack-recommendations` |
|
|
102
|
+
| `coreAiContextSnippets` | `package-source` |
|
|
103
|
+
|
|
104
|
+
[//]: # (END GENERATED AI CONTEXT PRESETS)
|
|
105
|
+
|
|
106
|
+
### Available snippets
|
|
107
|
+
|
|
108
|
+
[//]: # (BEGIN GENERATED AI CONTEXT)
|
|
109
|
+
|
|
110
|
+
#### `package-source`
|
|
111
|
+
|
|
112
|
+
```text
|
|
113
|
+
Overmux ships with documentation and TypeScript source.
|
|
114
|
+
|
|
115
|
+
Run `overmux docs path` to find the installed documentation directory for the Overmux CLI. This prints a documentation directory, not source paths.
|
|
116
|
+
|
|
117
|
+
Inspect TypeScript source in installed packages, e.g. `node_modules/overmux/src` and `node_modules/@overmux/xterm/src`.
|
|
118
|
+
|
|
119
|
+
Inspect these files so guidance matches the versions used by the application.
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
#### `tech-stack-recommendations`
|
|
123
|
+
|
|
124
|
+
```text
|
|
125
|
+
Prefer pnpm as the package manager, TanStack Router for routing, shadcn/ui for UI components, and Zod for schemas and runtime validation. Follow the application's established stack when it already differs.
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
[//]: # (END GENERATED AI CONTEXT)
|
package/dist/exports/client.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { B as InstanceIdentity, w as ContractInputArguments } from "./index-Cz3xkCa4.js";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { UseMutationResult } from "@tanstack/react-query";
|
|
4
4
|
import { CSSProperties, ComponentType, ReactNode, RefObject } from "react";
|
|
5
|
-
import { KeyBinding, KeyBinding as KeyBinding$1
|
|
5
|
+
import { KeyBinding, KeyBinding as KeyBinding$1 } from "@overmux/keybindings";
|
|
6
6
|
declare const enableBackgroundNotifications: () => Promise<boolean>;
|
|
7
7
|
declare const disableBackgroundNotifications: () => Promise<void>;
|
|
8
8
|
type DesktopHost = {
|
|
@@ -85,17 +85,6 @@ type ChordPrefix = {
|
|
|
85
85
|
binding: KeyBinding$1;
|
|
86
86
|
unmatched: "replay-to-focused-input";
|
|
87
87
|
};
|
|
88
|
-
declare const shortcutBindingSchema: z.ZodUnion<readonly [z.ZodCustom<KeyBinding$1, KeyBinding$1>, z.ZodArray<z.ZodCustom<KeyBinding$1, KeyBinding$1>>]>;
|
|
89
|
-
declare const commandBindingSchema: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodCustom<KeyBinding$1, KeyBinding$1>, z.ZodArray<z.ZodCustom<KeyBinding$1, KeyBinding$1>>]>, z.ZodObject<{
|
|
90
|
-
binding: z.ZodUnion<readonly [z.ZodCustom<KeyBinding$1, KeyBinding$1>, z.ZodArray<z.ZodCustom<KeyBinding$1, KeyBinding$1>>]>;
|
|
91
|
-
when: z.ZodObject<{
|
|
92
|
-
media: z.ZodString;
|
|
93
|
-
}, z.core.$strip>;
|
|
94
|
-
}, z.core.$strip>]>;
|
|
95
|
-
declare const chordPrefixSchema: z.ZodObject<{
|
|
96
|
-
binding: z.ZodCustom<KeyBinding$1, KeyBinding$1>;
|
|
97
|
-
unmatched: z.ZodLiteral<"replay-to-focused-input">;
|
|
98
|
-
}, z.core.$strip>;
|
|
99
88
|
declare const formatShortcutBinding: (binding: ShortcutBinding) => string;
|
|
100
89
|
type CommandRunResult$1 = Promise<unknown> | unknown;
|
|
101
90
|
type CommandRun<TServerConfig, TParams> = (input: {
|
|
@@ -139,6 +128,7 @@ type ClientAppDefinition<TCommands extends CommandRegistry = CommandRegistry> =
|
|
|
139
128
|
chordPrefixes?: readonly ChordPrefix[];
|
|
140
129
|
commands: TCommands;
|
|
141
130
|
component: ComponentType;
|
|
131
|
+
navigate?: (route: string) => unknown;
|
|
142
132
|
shortcutOverrides?: Partial<Record<Extract<keyof TCommands, string>, readonly CommandBinding[]>>;
|
|
143
133
|
};
|
|
144
134
|
declare const defineOvermuxClient: <const TCommands extends CommandRegistry>(definition: ClientAppDefinition<TCommands>) => ClientAppDefinition<TCommands>;
|
|
@@ -236,6 +226,7 @@ type ResourceResult<T> = {
|
|
|
236
226
|
status: "success";
|
|
237
227
|
};
|
|
238
228
|
type StreamResult<TClientMessage, TServerMessage> = {
|
|
229
|
+
connectionId: symbol | undefined;
|
|
239
230
|
close: () => void;
|
|
240
231
|
error?: Error;
|
|
241
232
|
send: (message: TClientMessage) => boolean;
|
|
@@ -263,5 +254,5 @@ type ShortcutInputTarget = {
|
|
|
263
254
|
input: RefObject<HTMLElement | null>;
|
|
264
255
|
};
|
|
265
256
|
declare const useShortcutInputTarget: (target: ShortcutInputTarget) => void;
|
|
266
|
-
export { type ChordPrefix, type CommandBinding, type CommandEntry, type CommandHandle, type ConditionalShortcutBinding, type InstanceIdentity, type KeyBinding, type KeySequence, type OvermuxClientAppearance, type OvermuxContrast, type OvermuxExternalPortalContainer, OvermuxHost, OvermuxPortal, type OvermuxPortalProps, type OvermuxScheme, type OvermuxServerApi, type OvermuxStyle, OvermuxThemeScope, type OvermuxThemeScopeProps, type OvermuxThemeToken, type ResourceResult, type ShortcutBinding, type ShortcutInputTarget, type SkipToken, type StreamResult,
|
|
257
|
+
export { type ChordPrefix, type CommandBinding, type CommandEntry, type CommandHandle, type ConditionalShortcutBinding, type InstanceIdentity, type KeyBinding, type KeySequence, type OvermuxClientAppearance, type OvermuxContrast, type OvermuxExternalPortalContainer, OvermuxHost, OvermuxPortal, type OvermuxPortalProps, type OvermuxScheme, type OvermuxServerApi, type OvermuxStyle, OvermuxThemeScope, type OvermuxThemeScopeProps, type OvermuxThemeToken, type ResourceResult, type ShortcutBinding, type ShortcutInputTarget, type SkipToken, type StreamResult, createOvermuxHooks, defineCommandRegistry, defineOvermuxClient, disableBackgroundNotifications, enableBackgroundNotifications, formatShortcutBinding, readClipboardText, skipToken, useCommand, useCommands, useShortcutInputTarget, writeClipboardText };
|
|
267
258
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","names":[],"sources":["../../src/internal/client/background-notifications.ts","../../src/internal/client/host/desktop-host.ts","../../src/internal/client/clipboard.ts","../../src/internal/client/browser-api.ts","../../src/internal/client/theme-scope.tsx","../../src/internal/client/client-definition.ts","../../src/internal/client/commands.tsx","../../src/internal/client/overmux-react.ts","../../src/internal/client/host/overmux-host.tsx","../../src/internal/client/shortcuts.tsx"],"mappings":";;;;;;cAyJa,qCAA6B;cAkB7B,sCAA8B;;;KC3KtC;EACH;EACA;EACA;IAAa,SAAS;MAAY;;IAA+B;;EACjE;IAAc,YAAY;IAAuB;;EACjD;IAAkB,OAAO;IAAgC;;;QAGnD;YACI;IACR,cAAc;;;;;cCPL,yBAA8B;cAQ9B,qBAA4B,iBAAe;;;KCFnD,aAAW,WAAW;EAAkB,mBAAmB;IAC5D,YAAY;KAEX,UAAQ,KAAK;EAAY,aAAa,eAAe,EAAE;IACxD;KAEC,WAAS,KAAK;EAAY,cAAc,gBAAgB,EAAE;IAC3D,EAAE,OAAO;KAER,YAAY,WAAW,cAAc,aAAW;KAChD,eAAe,SAAS,YAAY,YAAY,YAAY,UAC/D,aAAW,SAAS;KAEjB,gBAAgB,SAAS,YAAY,YAAY,YAAY,WAChE,aAAW,SAAS;KAEjB,mBAAmB,eAAe,EAAE,eACpC,uBAAuB,SAC1B,SAAS;KAGN;EACH;EACA;;KAGU,iBAAiB,iBAAiB;EAC5C,mBAAmB,YAAY,YAAY,gBACzC,IAAI,QACD,MAAM,mBAAmB,eAAe,eAAe,UACvD,QAAQ,gBAAgB,eAAe;;;;KC3BlC;KACA;cAEC;KAoBD,4BAA4B;KAE5B,eAAe,gBACzB,QAAQ,OAAO;KAEL;EACV,WAAW;EACX;;KAGU;EACV,UAAU;EACV,WAAW;;KAGD;EACV,UAAU;EACV;EACA,WAAW;EACX,SAAS;EACT,QAAQ;;cAoBG,kBAAiB,UAAA,YAAwB,uCAAkB;cAK3D,sBAAqB,UAAA,WAAA,UAAA,QAAA,SAM/B,2CAAsB,IAAA;;;
|
|
1
|
+
{"version":3,"file":"client.d.ts","names":[],"sources":["../../src/internal/client/background-notifications.ts","../../src/internal/client/host/desktop-host.ts","../../src/internal/client/clipboard.ts","../../src/internal/client/browser-api.ts","../../src/internal/client/theme-scope.tsx","../../src/internal/client/client-definition.ts","../../src/internal/client/commands.tsx","../../src/internal/client/overmux-react.ts","../../src/internal/client/host/overmux-host.tsx","../../src/internal/client/shortcuts.tsx"],"mappings":"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"}
|
package/dist/exports/client.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "./style.css";
|
|
2
|
-
import { a as notificationSchema, l as resolveOvermuxReturnTo, o as overmuxLogoutPath, r as instanceIdSchema, t as createInstanceIdentity } from "./notifications-
|
|
2
|
+
import { a as notificationSchema, c as parseDeepLink, l as resolveOvermuxReturnTo, o as overmuxLogoutPath, r as instanceIdSchema, t as createInstanceIdentity } from "./notifications-BFAD3QQl.js";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { QueryClient, QueryClientProvider, useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
5
5
|
import { Component, createContext, createElement, useCallback, useContext, useEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore } from "react";
|
|
6
|
-
import { formatKeyBinding,
|
|
6
|
+
import { formatKeyBinding, keyBindingSchema, matchesKeyBinding, platformBinding } from "@overmux/keybindings";
|
|
7
7
|
import { createPortal } from "react-dom";
|
|
8
8
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
9
9
|
//#region src/internal/shared/background-notifications.ts
|
|
@@ -320,16 +320,16 @@ const writeClipboardText = async (text) => {
|
|
|
320
320
|
};
|
|
321
321
|
//#endregion
|
|
322
322
|
//#region src/internal/client/client-definition.ts
|
|
323
|
-
const shortcutBindingSchema = z.union([keyBindingSchema
|
|
323
|
+
const shortcutBindingSchema = z.union([keyBindingSchema, z.array(keyBindingSchema).min(2)]);
|
|
324
324
|
const commandBindingSchema = z.union([shortcutBindingSchema, z.object({
|
|
325
325
|
binding: shortcutBindingSchema,
|
|
326
326
|
when: z.object({ media: z.string().trim().min(1) })
|
|
327
327
|
})]);
|
|
328
328
|
const chordPrefixSchema = z.object({
|
|
329
|
-
binding: keyBindingSchema
|
|
329
|
+
binding: keyBindingSchema,
|
|
330
330
|
unmatched: z.literal("replay-to-focused-input")
|
|
331
331
|
});
|
|
332
|
-
const formatShortcutBinding = (binding) => typeof binding === "string" ? formatKeyBinding
|
|
332
|
+
const formatShortcutBinding = (binding) => typeof binding === "string" ? formatKeyBinding(binding) : binding.map(formatKeyBinding).join(" ");
|
|
333
333
|
const validateBindings = (bindings) => bindings?.forEach((binding) => commandBindingSchema.parse(binding));
|
|
334
334
|
const defineCommandRegistry = () => (commands) => Object.fromEntries(Object.entries(commands).map(([id, command]) => {
|
|
335
335
|
validateBindings(command.defaultBindings);
|
|
@@ -519,57 +519,98 @@ const useOperationById = (id, signal) => {
|
|
|
519
519
|
const useStreamById = (id, input) => {
|
|
520
520
|
const { manifest, overmuxServerApi } = useRuntime();
|
|
521
521
|
const streamAvailable = manifest.streams.includes(id);
|
|
522
|
-
const [state, setState] = useState({ status: "opening" });
|
|
523
|
-
const listeners = useMemo(() => /* @__PURE__ */ new Set(), []);
|
|
524
522
|
const canonicalInput = useCanonicalInput(input);
|
|
523
|
+
const scope = useMemo(() => ({
|
|
524
|
+
canonicalInput,
|
|
525
|
+
id,
|
|
526
|
+
overmuxServerApi,
|
|
527
|
+
streamAvailable
|
|
528
|
+
}), [
|
|
529
|
+
canonicalInput,
|
|
530
|
+
id,
|
|
531
|
+
overmuxServerApi,
|
|
532
|
+
streamAvailable
|
|
533
|
+
]);
|
|
534
|
+
const [state, setState] = useState({
|
|
535
|
+
scope,
|
|
536
|
+
status: "opening"
|
|
537
|
+
});
|
|
538
|
+
const [listeners] = useState(() => /* @__PURE__ */ new Set());
|
|
525
539
|
const streamRef = useRef(void 0);
|
|
526
540
|
useEffect(() => {
|
|
527
541
|
streamRef.current?.close();
|
|
528
542
|
streamRef.current = void 0;
|
|
529
|
-
if (!streamAvailable) {
|
|
530
|
-
setState({
|
|
543
|
+
if (!scope.streamAvailable) {
|
|
544
|
+
setState({
|
|
545
|
+
scope,
|
|
546
|
+
status: "closed"
|
|
547
|
+
});
|
|
531
548
|
return;
|
|
532
549
|
}
|
|
533
|
-
setState({
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
550
|
+
setState({
|
|
551
|
+
scope,
|
|
552
|
+
status: "opening"
|
|
553
|
+
});
|
|
554
|
+
let active = true;
|
|
555
|
+
const stream = scope.overmuxServerApi.openStream({
|
|
556
|
+
id: scope.id,
|
|
557
|
+
input: scope.canonicalInput,
|
|
558
|
+
onClose: () => active && setState({
|
|
559
|
+
scope,
|
|
560
|
+
status: "closed"
|
|
561
|
+
}),
|
|
562
|
+
onError: (error) => active && setState({
|
|
563
|
+
scope,
|
|
539
564
|
error,
|
|
540
565
|
status: "closed"
|
|
541
566
|
}),
|
|
542
|
-
onOpen: () => setState({
|
|
543
|
-
|
|
567
|
+
onOpen: () => active && setState({
|
|
568
|
+
scope,
|
|
569
|
+
connectionId: Symbol(scope.id),
|
|
570
|
+
status: "open"
|
|
571
|
+
}),
|
|
572
|
+
onMessage: (message) => active && listeners.forEach((listener) => listener(message))
|
|
544
573
|
});
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
574
|
+
const connection = {
|
|
575
|
+
close: () => {
|
|
576
|
+
if (!active) return;
|
|
577
|
+
active = false;
|
|
578
|
+
if (streamRef.current === connection) streamRef.current = void 0;
|
|
579
|
+
setState({
|
|
580
|
+
scope,
|
|
581
|
+
status: "closed"
|
|
582
|
+
});
|
|
583
|
+
stream.close();
|
|
584
|
+
},
|
|
585
|
+
send: stream.send
|
|
549
586
|
};
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
}
|
|
587
|
+
streamRef.current = connection;
|
|
588
|
+
return connection.close;
|
|
589
|
+
}, [listeners, scope]);
|
|
590
|
+
const [methods] = useState(() => ({
|
|
591
|
+
close: () => streamRef.current?.close(),
|
|
592
|
+
send: (message) => streamRef.current?.send(message) ?? false,
|
|
593
|
+
subscribe: (listener) => {
|
|
594
|
+
listeners.add(listener);
|
|
595
|
+
return () => listeners.delete(listener);
|
|
596
|
+
}
|
|
597
|
+
}));
|
|
598
|
+
if (!streamAvailable) return {
|
|
599
|
+
...methods,
|
|
600
|
+
connectionId: void 0,
|
|
601
|
+
error: /* @__PURE__ */ new Error(`Stream is not available: ${id}`),
|
|
602
|
+
status: "closed"
|
|
603
|
+
};
|
|
604
|
+
if (state.scope !== scope) return {
|
|
605
|
+
...methods,
|
|
606
|
+
connectionId: void 0,
|
|
607
|
+
status: "opening"
|
|
608
|
+
};
|
|
567
609
|
return {
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
status:
|
|
572
|
-
subscribe
|
|
610
|
+
...methods,
|
|
611
|
+
connectionId: state.connectionId,
|
|
612
|
+
error: state.error,
|
|
613
|
+
status: state.status
|
|
573
614
|
};
|
|
574
615
|
};
|
|
575
616
|
const undiscoveredInstance = () => void 0;
|
|
@@ -763,12 +804,62 @@ const installInstanceForwarding = (transport) => {
|
|
|
763
804
|
return unsubscribe;
|
|
764
805
|
};
|
|
765
806
|
//#endregion
|
|
807
|
+
//#region src/internal/client/host/deep-link-navigation.ts
|
|
808
|
+
const defaultNavigate = (route) => window.location.assign(route);
|
|
809
|
+
/**
|
|
810
|
+
* Intercepts overmux:// anchor activation inside the running app, including the
|
|
811
|
+
* temporary anchors created by xterm's default link handler. Without this,
|
|
812
|
+
* browser/PWA clicks dispatch the custom protocol to the OS, which fails in
|
|
813
|
+
* Android PWAs where it is not possible to install an Overmux protocol handler.
|
|
814
|
+
*
|
|
815
|
+
* Validates the original URL and compares its instance ID with authenticated
|
|
816
|
+
* runtime discovery. For same-instance links, preventDefault stops OS dispatch
|
|
817
|
+
* and navigate receives only the local path, query, and fragment. By default,
|
|
818
|
+
* this loads that route on the current origin; a supplied router callback avoids
|
|
819
|
+
* a document reload. Instance IDs are never treated as network hostnames.
|
|
820
|
+
*
|
|
821
|
+
* Valid cross-instance links remain Desktop's responsibility. Browsers/PWAs
|
|
822
|
+
* block unknown or different instances; all hosts block invalid links. Ordinary
|
|
823
|
+
* links and clicks already cancelled by application code are left untouched.
|
|
824
|
+
* Returns cleanup for the document listeners when the runtime unmounts.
|
|
825
|
+
*/
|
|
826
|
+
const installDeepLinkNavigation = ({ getInstance, navigate = defaultNavigate }) => {
|
|
827
|
+
const onClick = (event) => {
|
|
828
|
+
if (event.defaultPrevented || event.button > 1) return;
|
|
829
|
+
const anchor = event.composedPath().find((target) => target instanceof HTMLAnchorElement);
|
|
830
|
+
if (anchor?.protocol !== "overmux:") return;
|
|
831
|
+
let link;
|
|
832
|
+
try {
|
|
833
|
+
link = parseDeepLink(anchor.getAttribute("href") ?? "");
|
|
834
|
+
} catch {
|
|
835
|
+
event.preventDefault();
|
|
836
|
+
console.warn("Cannot open an invalid Overmux deep link.");
|
|
837
|
+
return;
|
|
838
|
+
}
|
|
839
|
+
if (link.instanceId !== getInstance()?.instanceId) {
|
|
840
|
+
if (window.overmuxHost?.version !== 1) {
|
|
841
|
+
event.preventDefault();
|
|
842
|
+
console.warn("Cannot open an Overmux link to an unknown or different instance in this browser.");
|
|
843
|
+
}
|
|
844
|
+
return;
|
|
845
|
+
}
|
|
846
|
+
event.preventDefault();
|
|
847
|
+
navigate(link.route);
|
|
848
|
+
};
|
|
849
|
+
document.addEventListener("click", onClick);
|
|
850
|
+
document.addEventListener("auxclick", onClick);
|
|
851
|
+
return () => {
|
|
852
|
+
document.removeEventListener("click", onClick);
|
|
853
|
+
document.removeEventListener("auxclick", onClick);
|
|
854
|
+
};
|
|
855
|
+
};
|
|
856
|
+
//#endregion
|
|
766
857
|
//#region src/internal/client/shortcuts.tsx
|
|
767
858
|
const bindingSequence = (binding) => typeof binding === "string" ? [binding] : [...binding];
|
|
768
859
|
const normalizedBinding = (binding) => bindingSequence(binding).map((key) => platformBinding(key));
|
|
769
860
|
const sequenceMatches = (binding, pending, event) => {
|
|
770
861
|
const sequence = normalizedBinding(binding);
|
|
771
|
-
return sequence.length > pending.length && pending.every((key, index) => sequence[index] === key) && matchesKeyBinding
|
|
862
|
+
return sequence.length > pending.length && pending.every((key, index) => sequence[index] === key) && matchesKeyBinding(sequence[pending.length], event);
|
|
772
863
|
};
|
|
773
864
|
const isTextInput = (element) => element instanceof HTMLInputElement || element instanceof HTMLSelectElement || element instanceof HTMLTextAreaElement || element instanceof HTMLElement && (element.isContentEditable || element.getAttribute("role") === "textbox");
|
|
774
865
|
const acceptsTextInput = (bindings) => {
|
|
@@ -924,7 +1015,7 @@ const ShortcutHost = ({ children, definition, registrations, registrationRevisio
|
|
|
924
1015
|
if (runShortcut(complete.shortcut, event, registrations)) event.stopPropagation();
|
|
925
1016
|
return;
|
|
926
1017
|
}
|
|
927
|
-
if (!pending.length) pendingTarget = definition.chordPrefixes?.some((prefix) => matchesKeyBinding
|
|
1018
|
+
if (!pending.length) pendingTarget = definition.chordPrefixes?.some((prefix) => matchesKeyBinding(prefix.binding, event)) ? selectShortcutInputTarget(inputTargets, document.activeElement) : void 0;
|
|
928
1019
|
pending = [...pending, normalizedBinding(matches[0].binding)[pending.length]];
|
|
929
1020
|
pendingEvents = [...pendingEvents, event];
|
|
930
1021
|
event.preventDefault();
|
|
@@ -1703,6 +1794,10 @@ const OvermuxRuntime = ({ definition }) => {
|
|
|
1703
1794
|
}, [transport]);
|
|
1704
1795
|
useEffect(() => installNotificationForwarding(transport), [transport]);
|
|
1705
1796
|
useEffect(() => installInstanceForwarding(transport), [transport]);
|
|
1797
|
+
useEffect(() => installDeepLinkNavigation({
|
|
1798
|
+
getInstance: transport.getInstance,
|
|
1799
|
+
navigate: definition.navigate
|
|
1800
|
+
}), [transport, definition.navigate]);
|
|
1706
1801
|
const refreshCommands = useCallback(() => setRegistrationRevision((revision) => revision + 1), []);
|
|
1707
1802
|
const registerCommand = useCallback((registration) => {
|
|
1708
1803
|
registrations.add(registration);
|
|
@@ -1747,6 +1842,6 @@ const OvermuxHost = ({ definition }) => /* @__PURE__ */ jsx(OvermuxThemeScope, {
|
|
|
1747
1842
|
children: location.pathname === "/_overmux/settings" ? /* @__PURE__ */ jsx(HostedSettingsPage, {}) : location.pathname === "/_overmux/logout" ? /* @__PURE__ */ jsx(HostedLogoutPage, {}) : /* @__PURE__ */ jsx(OvermuxRuntime, { definition })
|
|
1748
1843
|
});
|
|
1749
1844
|
//#endregion
|
|
1750
|
-
export { OvermuxHost, OvermuxPortal, OvermuxThemeScope,
|
|
1845
|
+
export { OvermuxHost, OvermuxPortal, OvermuxThemeScope, createOvermuxHooks, defineCommandRegistry, defineOvermuxClient, disableBackgroundNotifications, enableBackgroundNotifications, formatShortcutBinding, readClipboardText, skipToken, useCommand, useCommands, useShortcutInputTarget, writeClipboardText };
|
|
1751
1846
|
|
|
1752
1847
|
//# sourceMappingURL=client.js.map
|