dsh-agy-link 0.1.2
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 +36 -0
- package/LICENSE +21 -0
- package/README.md +113 -0
- package/README.zh.md +101 -0
- package/cordis.patch.yml +14 -0
- package/dist/client.js +262 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +2285 -0
- package/docs/AUTH.md +19 -0
- package/docs/KNOWN-GAPS.md +41 -0
- package/docs/SECURITY-NOTES.md +29 -0
- package/docs/market-pr-draft.md +41 -0
- package/package.json +100 -0
package/docs/AUTH.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Authentication notes
|
|
2
|
+
|
|
3
|
+
The plugin never stores credentials. Login is the official agy CLI flow:
|
|
4
|
+
|
|
5
|
+
1. `/agy auth` spawns an agy probe that prints the Google consent URL.
|
|
6
|
+
2. You open the URL, approve, and get an authorization code.
|
|
7
|
+
3. `/agy auth-code <code>` (or the GUI paste box) feeds the code to the
|
|
8
|
+
still-running probe on stdin; agy completes the exchange itself.
|
|
9
|
+
|
|
10
|
+
The token lands wherever agy itself puts it
|
|
11
|
+
(`~/.gemini/antigravity-cli/antigravity-oauth-token`). The plugin:
|
|
12
|
+
|
|
13
|
+
- never reads, copies, moves, or deletes that file;
|
|
14
|
+
- never logs authorization codes (the `/agy doctor` report redacts auth
|
|
15
|
+
URLs, `4/...` codes, and bearer tokens before writing);
|
|
16
|
+
- kills the login probe (process group) on cancel/dispose.
|
|
17
|
+
|
|
18
|
+
Expiry: when the token expires mid-session, calls fail fast with an
|
|
19
|
+
`AUTH` error pointing at `/agy auth`; no retries burn your quota.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Known gaps
|
|
2
|
+
|
|
3
|
+
Deliberate v1 boundaries and upstream-behavior notes.
|
|
4
|
+
|
|
5
|
+
## Not forwarded to agy
|
|
6
|
+
|
|
7
|
+
- **Images / attachments** — agy print mode (`-p`) accepts text only.
|
|
8
|
+
Image blocks in DSH messages are skipped silently.
|
|
9
|
+
- **DSH tools** — agy runs its own closed tool loop; DSH tool schemas are
|
|
10
|
+
not exported to it. The reverse direction (agy calling DSH tools over MCP)
|
|
11
|
+
is tracked as future work.
|
|
12
|
+
- **Structured outputs** — `--json-schema` exists on agy but is not wired
|
|
13
|
+
through DSH tool-call generation in v1.
|
|
14
|
+
|
|
15
|
+
## Mapping choices
|
|
16
|
+
|
|
17
|
+
- agy tool activity becomes **reasoning-block annotations**
|
|
18
|
+
(`[agy tool: name] ... -> output`), not DSH tool-call blocks — there is no
|
|
19
|
+
DSH-side tool round-trip to honor.
|
|
20
|
+
- Gemini effort suffixes fold into one base model with selectable efforts
|
|
21
|
+
(`gemini-3-6-flash` + `--effort`); Claude / GPT-OSS slugs stay verbatim
|
|
22
|
+
(agy rejects `--effort` for them).
|
|
23
|
+
- Compaction / session-title auxiliary calls run as one-shot agy turns in
|
|
24
|
+
forced `plan` mode, capped at 800K chars of history.
|
|
25
|
+
|
|
26
|
+
## Upstream behaviors observed
|
|
27
|
+
|
|
28
|
+
- Permission prompts hang print mode (upstream issue #318) — hence the
|
|
29
|
+
permission-mode design.
|
|
30
|
+
- `--sandbox` must not combine with `--dangerously-skip-permissions`
|
|
31
|
+
(upstream issue #36).
|
|
32
|
+
- First unauthenticated call takes ~60-70s to fail (agy waits for a pasted
|
|
33
|
+
code); later failures are faster.
|
|
34
|
+
|
|
35
|
+
## Fallbacks
|
|
36
|
+
|
|
37
|
+
- If `agy models` fails (signed out, old CLI), a bundled fallback catalog is
|
|
38
|
+
served so the model picker is never empty; unknown ids are still accepted.
|
|
39
|
+
- Conversation-id discovery prefers stream-embedded ids and falls back to a
|
|
40
|
+
conversations-directory snapshot diff (newest file wins; ambiguity is
|
|
41
|
+
tolerated).
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Security notes
|
|
2
|
+
|
|
3
|
+
Threat model and boundaries for dsh-agy-link.
|
|
4
|
+
|
|
5
|
+
## What the plugin executes
|
|
6
|
+
|
|
7
|
+
- Only the agy binary resolved from config (`agyBin`) or `PATH` /
|
|
8
|
+
`~/.local/bin`. No shell interpolation: argv is passed as an array.
|
|
9
|
+
- Prompt text is passed as a single `-p` argument, never through a shell.
|
|
10
|
+
- Every spawn is its own detached process group; watchdog + abort signal
|
|
11
|
+
kill the whole tree (no orphaned agy processes).
|
|
12
|
+
|
|
13
|
+
## What it can do to your machine
|
|
14
|
+
|
|
15
|
+
Whatever agy itself may do under the configured permission mode. **skip**
|
|
16
|
+
(`--dangerously-skip-permissions`) grants unattended file writes and shell
|
|
17
|
+
execution inside agy's workspace — treat it like giving any other agent
|
|
18
|
+
skip-permissions. The GUI marks this mode red for a reason.
|
|
19
|
+
|
|
20
|
+
## What it never touches
|
|
21
|
+
|
|
22
|
+
- The OAuth token file (see [AUTH.md](AUTH.md)).
|
|
23
|
+
- DSH-side secrets, API keys, or other providers' configuration.
|
|
24
|
+
|
|
25
|
+
## Report hygiene
|
|
26
|
+
|
|
27
|
+
`/agy doctor` writes its report with redaction: Google auth URLs,
|
|
28
|
+
`4/...` authorization codes, `ya29.*` tokens, and `Bearer` headers are
|
|
29
|
+
stripped before the file hits disk. Still read it before attaching.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Market PR draft (awesome-dsh-plugin)
|
|
2
|
+
|
|
3
|
+
Target: awesome-dsh-plugin repository, `data/plugins/<owner>__dsh-agy-link.yml`.
|
|
4
|
+
Replace `<owner>` with the GitHub owner chosen at publish time. File the PR
|
|
5
|
+
after: npm published, GitHub repo created, >= 10 commits, >= 1 day old,
|
|
6
|
+
topic `dsh-plugin` set.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
```yaml
|
|
11
|
+
name: dsh-agy-link
|
|
12
|
+
description: Google Antigravity (agy CLI) models for DSH — streaming chat, thinking, tool activity, usage, in-GUI Google OAuth login.
|
|
13
|
+
npm: dsh-agy-link
|
|
14
|
+
repository: https://github.com/<owner>/dsh-agy-link
|
|
15
|
+
category: model
|
|
16
|
+
tags:
|
|
17
|
+
- antigravity
|
|
18
|
+
- gemini
|
|
19
|
+
- agy
|
|
20
|
+
- model-provider
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
PR body draft:
|
|
24
|
+
|
|
25
|
+
```markdown
|
|
26
|
+
## Add dsh-agy-link (model)
|
|
27
|
+
|
|
28
|
+
- **npm**: https://www.npmjs.com/package/dsh-agy-link
|
|
29
|
+
- **repo**: https://github.com/<owner>/dsh-agy-link
|
|
30
|
+
- **category**: model
|
|
31
|
+
|
|
32
|
+
Brings Google Antigravity models (Gemini / Claude / GPT-OSS slugs exposed by
|
|
33
|
+
the agy CLI) into DSH as a first-class provider route: full streaming with
|
|
34
|
+
thinking and tool-activity annotation, token usage, session-conversation
|
|
35
|
+
binding, model discovery with effort folding, in-GUI Google OAuth login with
|
|
36
|
+
QR, an agy_ask delegation tool, and a /agy command family with a redacted
|
|
37
|
+
doctor export. Dormant-safe when agy is missing or signed out.
|
|
38
|
+
|
|
39
|
+
Checklist: dsh bundle manifest present; >= 10 commits; repo age >= 1 day;
|
|
40
|
+
`dsh-plugin` topic set on the repository.
|
|
41
|
+
```
|
package/package.json
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dsh-agy-link",
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "Google Antigravity (agy CLI) models for DeepSeek Harness — stream Gemini/Claude/GPT-OSS subscriptions into DSH with thinking, tool activity, token usage and in-GUI Google OAuth login.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"dsh-plugin",
|
|
9
|
+
"dsh",
|
|
10
|
+
"deepseek-harness",
|
|
11
|
+
"antigravity",
|
|
12
|
+
"agy",
|
|
13
|
+
"gemini"
|
|
14
|
+
],
|
|
15
|
+
"main": "./dist/index.js",
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"default": "./dist/index.js"
|
|
21
|
+
},
|
|
22
|
+
"./client": "./dist/client.js",
|
|
23
|
+
"./cordis.patch.yml": "./cordis.patch.yml",
|
|
24
|
+
"./package.json": "./package.json"
|
|
25
|
+
},
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"qrcode": "^1.5.4"
|
|
28
|
+
},
|
|
29
|
+
"peerDependencies": {
|
|
30
|
+
"@deepseek-ai/cordis": "*",
|
|
31
|
+
"@deepseek-ai/dsh-commands": "*",
|
|
32
|
+
"@deepseek-ai/dsh-llm": "*",
|
|
33
|
+
"@deepseek-ai/dsh-tools": "*",
|
|
34
|
+
"react": "^18.0.0"
|
|
35
|
+
},
|
|
36
|
+
"peerDependenciesMeta": {
|
|
37
|
+
"react": {
|
|
38
|
+
"optional": true
|
|
39
|
+
},
|
|
40
|
+
"@deepseek-ai/cordis": {
|
|
41
|
+
"optional": true
|
|
42
|
+
},
|
|
43
|
+
"@deepseek-ai/dsh-commands": {
|
|
44
|
+
"optional": true
|
|
45
|
+
},
|
|
46
|
+
"@deepseek-ai/dsh-llm": {
|
|
47
|
+
"optional": true
|
|
48
|
+
},
|
|
49
|
+
"@deepseek-ai/dsh-tools": {
|
|
50
|
+
"optional": true
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@deepseek-ai/cordis": "^4.0.1",
|
|
55
|
+
"@deepseek-ai/dsh-commands": "^0.1.0-rc.6",
|
|
56
|
+
"@deepseek-ai/dsh-llm": "^0.1.0-rc.6",
|
|
57
|
+
"@deepseek-ai/dsh-tools": "^0.1.0-rc.6",
|
|
58
|
+
"@types/node": "^24.3.0",
|
|
59
|
+
"@types/qrcode": "^1.5.5",
|
|
60
|
+
"tsdown": "^0.22.14",
|
|
61
|
+
"typescript": "^5.9.2"
|
|
62
|
+
},
|
|
63
|
+
"dsh": {
|
|
64
|
+
"bundle": {
|
|
65
|
+
"patch": "./cordis.patch.yml"
|
|
66
|
+
},
|
|
67
|
+
"client": {
|
|
68
|
+
"inject": [
|
|
69
|
+
"slots"
|
|
70
|
+
],
|
|
71
|
+
"platform": "web"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"files": [
|
|
75
|
+
"dist",
|
|
76
|
+
"cordis.patch.yml",
|
|
77
|
+
"README.md",
|
|
78
|
+
"README.zh.md",
|
|
79
|
+
"LICENSE",
|
|
80
|
+
"CHANGELOG.md",
|
|
81
|
+
"docs"
|
|
82
|
+
],
|
|
83
|
+
"scripts": {
|
|
84
|
+
"build": "tsdown",
|
|
85
|
+
"check": "tsc --noEmit",
|
|
86
|
+
"test": "node --experimental-transform-types --test \"test/**/*.test.ts\"",
|
|
87
|
+
"prepack": "npm run build"
|
|
88
|
+
},
|
|
89
|
+
"engines": {
|
|
90
|
+
"node": ">=24.0.0"
|
|
91
|
+
},
|
|
92
|
+
"repository": {
|
|
93
|
+
"type": "git",
|
|
94
|
+
"url": "git+ssh://git@github.com/amlyczz/dsh-agy-link.git"
|
|
95
|
+
},
|
|
96
|
+
"bugs": {
|
|
97
|
+
"url": "https://github.com/amlyczz/dsh-agy-link/issues"
|
|
98
|
+
},
|
|
99
|
+
"homepage": "https://github.com/amlyczz/dsh-agy-link#readme"
|
|
100
|
+
}
|