dazzer-connect 0.1.0 → 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.
- package/README.md +69 -38
- package/dist/index.js +2020 -44
- package/package.json +31 -22
- package/dist/commands/login.js +0 -72
- package/dist/commands/logout.js +0 -21
- package/dist/commands/status.js +0 -38
- package/dist/env.js +0 -25
- package/dist/lib/config-store.js +0 -44
- package/dist/lib/device-flow.js +0 -110
- package/dist/lib/discovery.js +0 -27
- package/dist/lib/loopback-flow.js +0 -212
- package/dist/lib/output.js +0 -79
- package/dist/lib/refresh.js +0 -60
- package/dist/lib/token-store.js +0 -60
package/README.md
CHANGED
|
@@ -1,30 +1,54 @@
|
|
|
1
|
-
# dazzer-
|
|
1
|
+
# dazzer-connect
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Dazzer is a memory your AI tools share: they check what you already know before answering, and save what settles. This signs you in from a terminal, for the tools that cannot sign in by themselves.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## You probably do not need this
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Most AI clients can sign in on their own. If yours can, skip this package entirely:
|
|
8
|
+
|
|
9
|
+
- **Claude Code, Codex, Copilot, Cursor, Antigravity, Devin** — install the Dazzer plugin from inside the client. Each one words the command differently, so take it from the source rather than from here: [dazzer-io/dazzer-plugin](https://github.com/dazzer-io/dazzer-plugin). This is the route Dazzer's own first-time setup uses.
|
|
10
|
+
- **Claude's desktop app, Claude in a browser, anything else with a connectors screen** — open its settings, add a connector, paste `https://graph.dazzer.io/mcp`, and sign in there. Nothing to install.
|
|
11
|
+
|
|
12
|
+
Both of those stay connected and renew themselves. That leaves two cases, and they are the reason this exists: a client that only takes a pass you paste in, and a machine with no browser — a server, a container, a remote session.
|
|
13
|
+
|
|
14
|
+
## Sign in
|
|
15
|
+
|
|
16
|
+
Needs Node.js 22.12 or later. Once installed, the command is `dazzer`.
|
|
8
17
|
|
|
9
18
|
```bash
|
|
10
|
-
# One-off
|
|
11
|
-
npx dazzer-
|
|
19
|
+
# One-off, nothing installed
|
|
20
|
+
npx dazzer-connect auth login
|
|
12
21
|
|
|
13
|
-
# Or
|
|
14
|
-
npm i -g dazzer-
|
|
22
|
+
# Or keep it around
|
|
23
|
+
npm i -g dazzer-connect
|
|
15
24
|
dazzer auth login
|
|
16
25
|
```
|
|
17
26
|
|
|
18
|
-
|
|
27
|
+
Your browser opens to sign in. On a machine with no browser, add `--no-browser`:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
dazzer auth login --no-browser
|
|
31
|
+
```
|
|
19
32
|
|
|
20
|
-
|
|
33
|
+
You get a link to open on any other device — your phone will do. Sign in there and the terminal finishes on its own.
|
|
21
34
|
|
|
22
|
-
|
|
35
|
+
Sign-in does try to notice a missing browser on its own, but do not count on it — on a machine that merely *thinks* it has a screen it will wait for a browser that never opens.
|
|
23
36
|
|
|
24
|
-
|
|
25
|
-
|
|
37
|
+
## What you get, and how long it lasts
|
|
38
|
+
|
|
39
|
+
Sign-in prints two ready-to-paste blocks. **Use the first one if you possibly can** — it names the address only, your client signs in for itself, and the connection renews without you:
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"mcpServers": {
|
|
44
|
+
"dazzer": {
|
|
45
|
+
"url": "https://graph.dazzer.io/mcp"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
26
50
|
|
|
27
|
-
The
|
|
51
|
+
The second carries a pass, for clients that cannot do that:
|
|
28
52
|
|
|
29
53
|
```json
|
|
30
54
|
{
|
|
@@ -32,52 +56,59 @@ The block looks like this (your access token is filled in automatically):
|
|
|
32
56
|
"dazzer": {
|
|
33
57
|
"url": "https://graph.dazzer.io/mcp",
|
|
34
58
|
"headers": {
|
|
35
|
-
"Authorization": "Bearer <your-
|
|
59
|
+
"Authorization": "Bearer <your-pass>"
|
|
36
60
|
}
|
|
37
61
|
}
|
|
38
62
|
}
|
|
39
63
|
}
|
|
40
64
|
```
|
|
41
65
|
|
|
42
|
-
|
|
66
|
+
**That pass lasts about an hour.** Enough to get working now; not a way to set something up and walk away. When it expires, run `dazzer auth login` again — or switch to the first block and stop thinking about it.
|
|
43
67
|
|
|
44
|
-
|
|
68
|
+
Merge either one with any `mcpServers` entries you already have, save, and restart your client.
|
|
45
69
|
|
|
46
70
|
## Other commands
|
|
47
71
|
|
|
48
72
|
```bash
|
|
49
|
-
dazzer auth status #
|
|
50
|
-
dazzer auth logout # sign
|
|
73
|
+
dazzer auth status # is my sign-in still good?
|
|
74
|
+
dazzer auth logout # cancel your sign-in and remove it from this machine
|
|
51
75
|
dazzer --help
|
|
52
76
|
```
|
|
53
77
|
|
|
54
|
-
|
|
78
|
+
`auth status` asks the server rather than trusting what is on disk, so it can tell you your sign-in has been revoked elsewhere.
|
|
55
79
|
|
|
56
|
-
|
|
80
|
+
`auth logout` cancels your sign-in at the server and removes it from this machine, and says "Signed out." only when it knows both happened. If your sign-in could not be cancelled right now — the server did not answer, or your credential store would not open or would not let it go — it says so, fails, and keeps it, so running it again can finish. If the server gives an answer that will not change, it removes the sign-in from this machine and tells you it stops working once it goes 30 days unused. A pass you pasted into another app keeps working until it expires, within the hour.
|
|
57
81
|
|
|
58
|
-
|
|
59
|
-
|--------|----------|---------|
|
|
60
|
-
| Flag | `--issuer` | — |
|
|
61
|
-
| Env | `DAZZER_AUTH_ISSUER` | `https://auth.dazzer.io` |
|
|
62
|
-
| Env | `DAZZER_AUTH_CLIENT_ID` | `dazzer-cli-local` |
|
|
63
|
-
| Env | `DAZZER_AUTH_RESOURCE` | `https://graph.dazzer.io/mcp` |
|
|
82
|
+
## Where your sign-in is kept
|
|
64
83
|
|
|
65
|
-
|
|
84
|
+
Your passes go in your operating system's own credential store — Keychain on macOS, Credential Manager on Windows, Secret Service on Linux. Nothing is written in plain text. The rest, such as which server you signed in to and when it expires, sits in a settings folder alongside your other applications' settings.
|
|
66
85
|
|
|
67
|
-
|
|
68
|
-
dazzer auth login --issuer http://localhost:3003
|
|
69
|
-
```
|
|
86
|
+
Plenty of servers and containers have no credential store at all. Sign-in still completes and prints the blocks above, and `auth status` tells you that is what happened rather than claiming you are signed out. On such a machine `auth logout` cannot check for a saved sign-in, so it will not call itself a sign-out; on Linux, `dazzer auth logout --forget-this-machine` removes this machine's record instead, says that nothing was cancelled, and leaves any sign-in still in the credential store where it is. It refuses on macOS and Windows, whose credential store is locked rather than missing, and when sign-in recorded saving a sign-in here.
|
|
70
87
|
|
|
71
|
-
##
|
|
88
|
+
## Settings
|
|
72
89
|
|
|
73
|
-
|
|
74
|
-
- **Metadata** (issuer, client id, expiry): config directory from `env-paths("dazzer")` — typically `~/Library/Application Support/dazzer/` on macOS.
|
|
90
|
+
Everything points at production unless you say otherwise.
|
|
75
91
|
|
|
76
|
-
|
|
92
|
+
| Setting | What it is | Default |
|
|
93
|
+
|---|---|---|
|
|
94
|
+
| `DAZZER_AUTH_ISSUER` | where you sign in | `https://auth.dazzer.io` |
|
|
95
|
+
| `DAZZER_AUTH_CLIENT_ID` | which client is asking | `dazzer-cli-local` |
|
|
96
|
+
| `DAZZER_AUTH_RESOURCE` | what you are signing in to | `https://graph.dazzer.io/mcp` |
|
|
97
|
+
| `DAZZER_API_BASE_URL` | where Dazzer itself is | `https://graph.dazzer.io` |
|
|
77
98
|
|
|
78
|
-
|
|
99
|
+
The first three are about signing in. The last one is Dazzer itself — the same service, seen from the other side — and it is the address the tool sends to once it has a sign-in to carry. Both addresses have to be `https`; an unencrypted one is refused before anything is sent.
|
|
100
|
+
|
|
101
|
+
Signing in and checking status each take a matching flag — `--issuer`, `--client-id`, `--resource` — which wins over the setting. Against a sign-in server running on your own machine:
|
|
79
102
|
|
|
80
103
|
```bash
|
|
81
|
-
|
|
82
|
-
node packages/oauth-cli/dist/index.js auth login --issuer http://localhost:3003
|
|
104
|
+
dazzer auth login --issuer http://localhost:3003
|
|
83
105
|
```
|
|
106
|
+
|
|
107
|
+
## Something wrong?
|
|
108
|
+
|
|
109
|
+
Email [support@dazzer.io](mailto:support@dazzer.io). If it is a security problem, write to
|
|
110
|
+
[security@dazzer.io](mailto:security@dazzer.io) instead and please do not post it publicly first.
|
|
111
|
+
|
|
112
|
+
## Licence
|
|
113
|
+
|
|
114
|
+
MIT.
|