@edgedive/cli 0.1.6 ā 0.1.8
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/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-dev.log +3 -15
- package/.turbo/turbo-typecheck.log +4 -0
- package/AGENTS.md +135 -0
- package/CLAUDE.md +2 -134
- package/README.md +69 -0
- package/dist/api/client.d.ts +4 -0
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +20 -0
- package/dist/api/client.js.map +1 -1
- package/dist/commands/local.d.ts +2 -1
- package/dist/commands/local.d.ts.map +1 -1
- package/dist/commands/local.js +19 -4
- package/dist/commands/local.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/claude-launcher.js +1 -1
- package/dist/utils/claude-launcher.js.map +1 -1
- package/package.json +3 -2
- package/src/api/client.ts +20 -0
- package/src/commands/local.ts +25 -5
- package/src/index.ts +2 -1
- package/src/utils/claude-launcher.ts +1 -1
- package/.env +0 -2
- package/.env.local +0 -2
- package/dist/commands/takeover.d.ts +0 -10
- package/dist/commands/takeover.d.ts.map +0 -1
- package/dist/commands/takeover.js +0 -108
- package/dist/commands/takeover.js.map +0 -1
package/.turbo/turbo-build.log
CHANGED
package/.turbo/turbo-dev.log
CHANGED
|
@@ -1,20 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
> @edgedive/cli@0.1.
|
|
2
|
+
> @edgedive/cli@0.1.7 dev /Users/nimesh/edgedive/nimesh-workstream-2/packages/edgedive-cli
|
|
3
3
|
> tsc --watch
|
|
4
4
|
|
|
5
|
-
[2J[3J[H[[90m7:
|
|
5
|
+
[2J[3J[H[[90m7:55:47 PM[0m] Starting compilation in watch mode...
|
|
6
6
|
|
|
7
|
-
[[90m7:
|
|
8
|
-
|
|
9
|
-
[2J[3J[H[[90m10:45:44 AM[0m] File change detected. Starting incremental compilation...
|
|
10
|
-
|
|
11
|
-
[[90m10:45:44 AM[0m] Found 0 errors. Watching for file changes.
|
|
12
|
-
|
|
13
|
-
[2J[3J[H[[90m10:45:45 AM[0m] File change detected. Starting incremental compilation...
|
|
14
|
-
|
|
15
|
-
[[90m10:45:45 AM[0m] Found 0 errors. Watching for file changes.
|
|
16
|
-
|
|
17
|
-
[2J[3J[H[[90m1:23:54 PM[0m] File change detected. Starting incremental compilation...
|
|
18
|
-
|
|
19
|
-
[[90m1:23:54 PM[0m] Found 0 errors. Watching for file changes.
|
|
7
|
+
[[90m7:55:47 PM[0m] Found 0 errors. Watching for file changes.
|
|
20
8
|
|
package/AGENTS.md
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Edgedive CLI
|
|
2
|
+
|
|
3
|
+
Command-line tool for working on Edgedive agent sessions locally and continuing development with Claude Code.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
The CLI enables developers to:
|
|
8
|
+
- Authenticate with Edgedive using OAuth
|
|
9
|
+
- Pull down agent sessions from Edgedive
|
|
10
|
+
- Restore Claude Code session files locally
|
|
11
|
+
- Check out PR branches for continued development
|
|
12
|
+
- Resume Claude Code sessions from where the agent left off
|
|
13
|
+
|
|
14
|
+
## Available Commands
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# Authenticate with Edgedive
|
|
18
|
+
dive login --pr-url <github-pr-url>
|
|
19
|
+
dive login --issue-url <linear-issue-url>
|
|
20
|
+
|
|
21
|
+
# Prepare agent session locally
|
|
22
|
+
dive local --pr-url <github-pr-url>
|
|
23
|
+
dive local --issue-url <linear-issue-url>
|
|
24
|
+
|
|
25
|
+
# Remove stored credentials
|
|
26
|
+
dive logout
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Both `dive` and `edgedive` commands are available.
|
|
30
|
+
|
|
31
|
+
## Development Commands
|
|
32
|
+
|
|
33
|
+
From the monorepo root:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Build the CLI
|
|
37
|
+
pnpm --filter edgedive-cli run build
|
|
38
|
+
|
|
39
|
+
# Clean build artifacts
|
|
40
|
+
pnpm --filter edgedive-cli run clean
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
From this directory:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# Link for local testing
|
|
47
|
+
npm link
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Project Structure
|
|
51
|
+
|
|
52
|
+
- `src/` - TypeScript source code
|
|
53
|
+
- `commands/` - Command implementations (login, local, logout)
|
|
54
|
+
- `services/` - OAuth, API client, session management
|
|
55
|
+
- `utils/` - Helper utilities
|
|
56
|
+
- `index.ts` - CLI entry point
|
|
57
|
+
- `dist/` - Compiled JavaScript (gitignored)
|
|
58
|
+
|
|
59
|
+
## Development Guidelines
|
|
60
|
+
|
|
61
|
+
### Authentication
|
|
62
|
+
|
|
63
|
+
The CLI uses OAuth 2.0 with PKCE for secure authentication:
|
|
64
|
+
- Tokens are stored in `~/.edgedive/config.json` with restricted permissions (0600)
|
|
65
|
+
- Tokens are valid for 30 days
|
|
66
|
+
- Uses authorization code flow with PKCE for security
|
|
67
|
+
|
|
68
|
+
### Session Management
|
|
69
|
+
|
|
70
|
+
The `dive local` command:
|
|
71
|
+
1. Validates you're in the correct repository
|
|
72
|
+
2. Fetches session info from Edgedive API
|
|
73
|
+
3. Downloads and restores Claude session file
|
|
74
|
+
4. Checks out the PR branch
|
|
75
|
+
5. Launches Claude CLI with the resumed session
|
|
76
|
+
|
|
77
|
+
### Configuration
|
|
78
|
+
|
|
79
|
+
Configuration is stored in `~/.edgedive/config.json`:
|
|
80
|
+
- OAuth access token
|
|
81
|
+
- Token expiration time
|
|
82
|
+
- OAuth scope
|
|
83
|
+
|
|
84
|
+
### Environment Variables
|
|
85
|
+
|
|
86
|
+
Override defaults with:
|
|
87
|
+
- `EDGEDIVE_API_URL` - API base URL (default: `https://api.edgedive.com`)
|
|
88
|
+
- `EDGEDIVE_CLIENT_ID` - OAuth client ID
|
|
89
|
+
|
|
90
|
+
## Building for Distribution
|
|
91
|
+
|
|
92
|
+
To build the CLI for npm:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
pnpm build
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
This compiles TypeScript to JavaScript in the `dist/` directory.
|
|
99
|
+
|
|
100
|
+
## Testing
|
|
101
|
+
|
|
102
|
+
For local testing:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Link the CLI globally
|
|
106
|
+
npm link
|
|
107
|
+
|
|
108
|
+
# Test commands
|
|
109
|
+
dive login --pr-url https://github.com/owner/repo/pull/123
|
|
110
|
+
dive local --pr-url https://github.com/owner/repo/pull/123
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Security
|
|
114
|
+
|
|
115
|
+
- OAuth tokens stored with restricted file permissions
|
|
116
|
+
- PKCE prevents authorization code interception
|
|
117
|
+
- Presigned S3 URLs expire after 1 hour
|
|
118
|
+
- Local callback server only accepts localhost connections
|
|
119
|
+
|
|
120
|
+
## Troubleshooting
|
|
121
|
+
|
|
122
|
+
Common issues:
|
|
123
|
+
- **Not logged in**: Run `dive login` first
|
|
124
|
+
- **Session expired**: Tokens expire after 30 days, run `dive login` again
|
|
125
|
+
- **No agent session found**: PR may not be from an Edgedive agent
|
|
126
|
+
- **Failed to download file**: Presigned URLs expire after 1 hour, run command again
|
|
127
|
+
|
|
128
|
+
## Documentation
|
|
129
|
+
|
|
130
|
+
For comprehensive usage documentation, see [README.md](./README.md).
|
|
131
|
+
|
|
132
|
+
## Related Documentation
|
|
133
|
+
|
|
134
|
+
- [edgedive-server](../../apps/edgedive-server/CLAUDE.md) - API backend that CLI connects to
|
|
135
|
+
- [Root monorepo documentation](../../CLAUDE.md) - Monorepo overview
|
package/CLAUDE.md
CHANGED
|
@@ -1,135 +1,3 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Development Guidelines
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## Purpose
|
|
6
|
-
|
|
7
|
-
The CLI enables developers to:
|
|
8
|
-
- Authenticate with Edgedive using OAuth
|
|
9
|
-
- Pull down agent sessions from Edgedive
|
|
10
|
-
- Restore Claude Code session files locally
|
|
11
|
-
- Check out PR branches for continued development
|
|
12
|
-
- Resume Claude Code sessions from where the agent left off
|
|
13
|
-
|
|
14
|
-
## Available Commands
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
# Authenticate with Edgedive
|
|
18
|
-
dive login --pr-url <github-pr-url>
|
|
19
|
-
dive login --issue-url <linear-issue-url>
|
|
20
|
-
|
|
21
|
-
# Prepare agent session locally
|
|
22
|
-
dive local --pr-url <github-pr-url>
|
|
23
|
-
dive local --issue-url <linear-issue-url>
|
|
24
|
-
|
|
25
|
-
# Remove stored credentials
|
|
26
|
-
dive logout
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Both `dive` and `edgedive` commands are available.
|
|
30
|
-
|
|
31
|
-
## Development Commands
|
|
32
|
-
|
|
33
|
-
From the monorepo root:
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
# Build the CLI
|
|
37
|
-
pnpm --filter edgedive-cli run build
|
|
38
|
-
|
|
39
|
-
# Clean build artifacts
|
|
40
|
-
pnpm --filter edgedive-cli run clean
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
From this directory:
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
# Link for local testing
|
|
47
|
-
npm link
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Project Structure
|
|
51
|
-
|
|
52
|
-
- `src/` - TypeScript source code
|
|
53
|
-
- `commands/` - Command implementations (login, local, logout)
|
|
54
|
-
- `services/` - OAuth, API client, session management
|
|
55
|
-
- `utils/` - Helper utilities
|
|
56
|
-
- `index.ts` - CLI entry point
|
|
57
|
-
- `dist/` - Compiled JavaScript (gitignored)
|
|
58
|
-
|
|
59
|
-
## Development Guidelines
|
|
60
|
-
|
|
61
|
-
### Authentication
|
|
62
|
-
|
|
63
|
-
The CLI uses OAuth 2.0 with PKCE for secure authentication:
|
|
64
|
-
- Tokens are stored in `~/.edgedive/config.json` with restricted permissions (0600)
|
|
65
|
-
- Tokens are valid for 30 days
|
|
66
|
-
- Uses authorization code flow with PKCE for security
|
|
67
|
-
|
|
68
|
-
### Session Management
|
|
69
|
-
|
|
70
|
-
The `dive local` command:
|
|
71
|
-
1. Validates you're in the correct repository
|
|
72
|
-
2. Fetches session info from Edgedive API
|
|
73
|
-
3. Downloads and restores Claude session file
|
|
74
|
-
4. Checks out the PR branch
|
|
75
|
-
5. Launches Claude CLI with the resumed session
|
|
76
|
-
|
|
77
|
-
### Configuration
|
|
78
|
-
|
|
79
|
-
Configuration is stored in `~/.edgedive/config.json`:
|
|
80
|
-
- OAuth access token
|
|
81
|
-
- Token expiration time
|
|
82
|
-
- OAuth scope
|
|
83
|
-
|
|
84
|
-
### Environment Variables
|
|
85
|
-
|
|
86
|
-
Override defaults with:
|
|
87
|
-
- `EDGEDIVE_API_URL` - API base URL (default: `https://api.edgedive.com`)
|
|
88
|
-
- `EDGEDIVE_CLIENT_ID` - OAuth client ID
|
|
89
|
-
|
|
90
|
-
## Building for Distribution
|
|
91
|
-
|
|
92
|
-
To build the CLI for npm:
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
pnpm build
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
This compiles TypeScript to JavaScript in the `dist/` directory.
|
|
99
|
-
|
|
100
|
-
## Testing
|
|
101
|
-
|
|
102
|
-
For local testing:
|
|
103
|
-
|
|
104
|
-
```bash
|
|
105
|
-
# Link the CLI globally
|
|
106
|
-
npm link
|
|
107
|
-
|
|
108
|
-
# Test commands
|
|
109
|
-
dive login --pr-url https://github.com/owner/repo/pull/123
|
|
110
|
-
dive local --pr-url https://github.com/owner/repo/pull/123
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
## Security
|
|
114
|
-
|
|
115
|
-
- OAuth tokens stored with restricted file permissions
|
|
116
|
-
- PKCE prevents authorization code interception
|
|
117
|
-
- Presigned S3 URLs expire after 1 hour
|
|
118
|
-
- Local callback server only accepts localhost connections
|
|
119
|
-
|
|
120
|
-
## Troubleshooting
|
|
121
|
-
|
|
122
|
-
Common issues:
|
|
123
|
-
- **Not logged in**: Run `dive login` first
|
|
124
|
-
- **Session expired**: Tokens expire after 30 days, run `dive login` again
|
|
125
|
-
- **No agent session found**: PR may not be from an Edgedive agent
|
|
126
|
-
- **Failed to download file**: Presigned URLs expire after 1 hour, run command again
|
|
127
|
-
|
|
128
|
-
## Documentation
|
|
129
|
-
|
|
130
|
-
For comprehensive usage documentation, see [README.md](./README.md).
|
|
131
|
-
|
|
132
|
-
## Related Documentation
|
|
133
|
-
|
|
134
|
-
- [edgedive-server](../../apps/edgedive-server/CLAUDE.md) - API backend that CLI connects to
|
|
135
|
-
- [Root monorepo documentation](../../CLAUDE.md) - Monorepo overview
|
|
3
|
+
For all development guidelines for this package/app, please see **[AGENTS.md](./AGENTS.md)**.
|
package/README.md
CHANGED
|
@@ -141,6 +141,75 @@ pnpm build
|
|
|
141
141
|
|
|
142
142
|
Compiles TypeScript to JavaScript in the `dist/` directory.
|
|
143
143
|
|
|
144
|
+
## Building and Publishing
|
|
145
|
+
|
|
146
|
+
### Build Process
|
|
147
|
+
|
|
148
|
+
The CLI is built using TypeScript and compiled to CommonJS modules in the `dist/` directory:
|
|
149
|
+
|
|
150
|
+
1. **TypeScript Compilation**: `pnpm build` runs `tsc` which:
|
|
151
|
+
- Compiles all TypeScript files from `src/` to `dist/`
|
|
152
|
+
- Generates type declarations (`.d.ts` files)
|
|
153
|
+
- Creates source maps for debugging
|
|
154
|
+
- Outputs ES2022-compatible JavaScript modules
|
|
155
|
+
|
|
156
|
+
2. **What Gets Published**:
|
|
157
|
+
- `dist/` directory (compiled JavaScript + type declarations)
|
|
158
|
+
- `package.json`
|
|
159
|
+
- `README.md`
|
|
160
|
+
- The `bin` field in `package.json` points to `dist/index.js` for both `edgedive` and `dive` commands
|
|
161
|
+
|
|
162
|
+
### Publishing to npm
|
|
163
|
+
|
|
164
|
+
The package is published to npm under the `@edgedive/cli` scope.
|
|
165
|
+
|
|
166
|
+
#### Prerequisites
|
|
167
|
+
|
|
168
|
+
1. npm account with access to the `@edgedive` organization
|
|
169
|
+
2. Logged in to npm: `npm login`
|
|
170
|
+
3. Clean build: `pnpm clean && pnpm build`
|
|
171
|
+
|
|
172
|
+
#### Publishing Steps
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
# From the packages/edgedive-cli directory
|
|
176
|
+
|
|
177
|
+
# 1. Ensure you're on main and up to date
|
|
178
|
+
git checkout main
|
|
179
|
+
git pull origin main
|
|
180
|
+
|
|
181
|
+
# 2. Clean and build
|
|
182
|
+
pnpm clean
|
|
183
|
+
pnpm build
|
|
184
|
+
|
|
185
|
+
# 3. Test the built CLI
|
|
186
|
+
node dist/index.js --help
|
|
187
|
+
|
|
188
|
+
# 4. Update version (choose one)
|
|
189
|
+
npm version patch # 0.1.6 -> 0.1.7
|
|
190
|
+
npm version minor # 0.1.6 -> 0.2.0
|
|
191
|
+
npm version major # 0.1.6 -> 1.0.0
|
|
192
|
+
|
|
193
|
+
# 5. Publish to npm
|
|
194
|
+
npm publish --access public
|
|
195
|
+
|
|
196
|
+
# 6. Push the version tag
|
|
197
|
+
git push origin main --tags
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
#### Current Published Version
|
|
201
|
+
|
|
202
|
+
Latest: `0.1.6` (published 2025-11-07)
|
|
203
|
+
|
|
204
|
+
#### Continuous Integration
|
|
205
|
+
|
|
206
|
+
The CI pipeline (`.github/workflows/ci.yml`) automatically:
|
|
207
|
+
- Detects changes to `packages/edgedive-cli/**`
|
|
208
|
+
- Runs `pnpm build --filter @edgedive/cli`
|
|
209
|
+
- Tests the built CLI with `node dist/index.js --help`
|
|
210
|
+
|
|
211
|
+
**Note**: Publishing to npm is currently a manual process. Consider setting up automated releases via GitHub Actions when appropriate.
|
|
212
|
+
|
|
144
213
|
## OAuth Flow
|
|
145
214
|
|
|
146
215
|
The CLI uses OAuth 2.0 with PKCE (Proof Key for Code Exchange) for secure authentication:
|
package/dist/api/client.d.ts
CHANGED
|
@@ -44,6 +44,10 @@ export declare class EdgediveApiClient {
|
|
|
44
44
|
*/
|
|
45
45
|
getTakeoverByPrUrl(prUrl: string): Promise<TakeoverResponse>;
|
|
46
46
|
getTakeoverByLinearIssueUrl(linearIssueUrl: string): Promise<TakeoverResponse>;
|
|
47
|
+
/**
|
|
48
|
+
* Get session takeover information by Slack thread URL
|
|
49
|
+
*/
|
|
50
|
+
getTakeoverBySlackThreadUrl(slackThreadUrl: string): Promise<TakeoverResponse>;
|
|
47
51
|
/**
|
|
48
52
|
* Upload Claude session file for an agent session
|
|
49
53
|
*/
|
package/dist/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,YAAY,CAAC,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE;QACb,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,YAAY,CAAkB;gBAE1B,aAAa,EAAE,aAAa;IAoCxC;;OAEG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAe5D,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiBpF;;OAEG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAgBjF"}
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,YAAY,CAAC,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE;QACb,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,YAAY,CAAkB;gBAE1B,aAAa,EAAE,aAAa;IAoCxC;;OAEG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAe5D,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiBpF;;OAEG;IACG,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiBpF;;OAEG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAgBjF"}
|
package/dist/api/client.js
CHANGED
|
@@ -78,6 +78,26 @@ export class EdgediveApiClient {
|
|
|
78
78
|
throw new Error(`API request failed: ${error.message}`);
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Get session takeover information by Slack thread URL
|
|
83
|
+
*/
|
|
84
|
+
async getTakeoverBySlackThreadUrl(slackThreadUrl) {
|
|
85
|
+
try {
|
|
86
|
+
const response = await this.client.get(API_CONFIG.TAKEOVER_PATH, {
|
|
87
|
+
params: {
|
|
88
|
+
slack_thread_url: slackThreadUrl,
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
return response.data;
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
if (error.response) {
|
|
95
|
+
const errorData = error.response.data;
|
|
96
|
+
throw new Error(errorData?.error || `API request failed: ${error.response.status}`);
|
|
97
|
+
}
|
|
98
|
+
throw new Error(`API request failed: ${error.message}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
81
101
|
/**
|
|
82
102
|
* Upload Claude session file for an agent session
|
|
83
103
|
*/
|
package/dist/api/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/local.d.ts
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
interface LocalOptions {
|
|
5
5
|
prUrl?: string;
|
|
6
6
|
issueUrl?: string;
|
|
7
|
+
threadUrl?: string;
|
|
7
8
|
}
|
|
8
|
-
export declare function localCommand({ prUrl, issueUrl }: LocalOptions): Promise<void>;
|
|
9
|
+
export declare function localCommand({ prUrl, issueUrl, threadUrl }: LocalOptions): Promise<void>;
|
|
9
10
|
export {};
|
|
10
11
|
//# sourceMappingURL=local.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/commands/local.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/commands/local.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgK9F"}
|
package/dist/commands/local.js
CHANGED
|
@@ -7,7 +7,7 @@ import { EdgediveApiClient } from '../api/client.js';
|
|
|
7
7
|
import { SessionDownloader } from '../utils/session-downloader.js';
|
|
8
8
|
import { GitUtils } from '../utils/git-utils.js';
|
|
9
9
|
import { launchClaudeSession } from '../utils/claude-launcher.js';
|
|
10
|
-
export async function localCommand({ prUrl, issueUrl }) {
|
|
10
|
+
export async function localCommand({ prUrl, issueUrl, threadUrl }) {
|
|
11
11
|
const configManager = new ConfigManager();
|
|
12
12
|
const apiClient = new EdgediveApiClient(configManager);
|
|
13
13
|
const downloader = new SessionDownloader();
|
|
@@ -25,9 +25,12 @@ export async function localCommand({ prUrl, issueUrl }) {
|
|
|
25
25
|
console.log(chalk.yellow('Please run: edgedive login\n'));
|
|
26
26
|
process.exit(1);
|
|
27
27
|
}
|
|
28
|
-
if (!prUrl && !issueUrl) {
|
|
28
|
+
if (!prUrl && !issueUrl && !threadUrl) {
|
|
29
29
|
console.log(chalk.red('ā Missing session identifier.\n'));
|
|
30
|
-
console.log(chalk.yellow('Provide
|
|
30
|
+
console.log(chalk.yellow('Provide one of:\n' +
|
|
31
|
+
' --pr-url https://github.com/owner/repo/pull/123\n' +
|
|
32
|
+
' --issue-url https://linear.app/...\n' +
|
|
33
|
+
' --thread-url https://workspace.slack.com/archives/C12345/p1234567890123456\n'));
|
|
31
34
|
process.exit(1);
|
|
32
35
|
}
|
|
33
36
|
let sessionData;
|
|
@@ -43,11 +46,23 @@ export async function localCommand({ prUrl, issueUrl }) {
|
|
|
43
46
|
console.log('š Fetching session information...\n');
|
|
44
47
|
sessionData = await apiClient.getTakeoverByPrUrl(prUrl);
|
|
45
48
|
}
|
|
46
|
-
else {
|
|
49
|
+
else if (issueUrl) {
|
|
47
50
|
console.log(chalk.dim(`Linear Issue URL: ${issueUrl}\n`));
|
|
48
51
|
console.log('š Fetching session information...\n');
|
|
49
52
|
sessionData = await apiClient.getTakeoverByLinearIssueUrl(issueUrl);
|
|
50
53
|
}
|
|
54
|
+
else {
|
|
55
|
+
// Validate Slack thread URL format
|
|
56
|
+
const slackThreadPattern = /^https?:\/\/[^\/]+\.slack\.com\/archives\/([A-Z0-9]+)\/p(\d{16})/;
|
|
57
|
+
if (!slackThreadPattern.test(threadUrl)) {
|
|
58
|
+
console.log(chalk.red('ā Invalid Slack thread URL format.\n'));
|
|
59
|
+
console.log(chalk.yellow('Expected format: https://workspace.slack.com/archives/C12345/p1234567890123456\n'));
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
console.log(chalk.dim(`Slack Thread URL: ${threadUrl}\n`));
|
|
63
|
+
console.log('š Fetching session information...\n');
|
|
64
|
+
sessionData = await apiClient.getTakeoverBySlackThreadUrl(threadUrl);
|
|
65
|
+
}
|
|
51
66
|
console.log(chalk.green('ā
Found agent session!\n'));
|
|
52
67
|
if (sessionData.github_pr?.url) {
|
|
53
68
|
console.log(chalk.dim(`PR URL: ${sessionData.github_pr.url}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/commands/local.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAyB,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/commands/local.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -33,6 +33,7 @@ program
|
|
|
33
33
|
.description('Prepare an agent session locally')
|
|
34
34
|
.option('--pr-url <prUrl>', 'GitHub PR URL to load locally')
|
|
35
35
|
.option('--issue-url <issueUrl>', 'Linear issue URL to load locally')
|
|
36
|
+
.option('--thread-url <threadUrl>', 'Slack thread URL to load locally')
|
|
36
37
|
.action(async (options) => {
|
|
37
38
|
await localCommand(options);
|
|
38
39
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,MAAM,CAAC,MAAM,EAAE,CAAC;AAChB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,YAAY,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,kBAAkB,EAAE,+BAA+B,CAAC;KAC3D,MAAM,CAAC,wBAAwB,EAAE,kCAAkC,CAAC;KACpE,MAAM,CAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,MAAM,CAAC,MAAM,EAAE,CAAC;AAChB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,YAAY,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,kBAAkB,EAAE,+BAA+B,CAAC;KAC3D,MAAM,CAAC,wBAAwB,EAAE,kCAAkC,CAAC;KACpE,MAAM,CAAC,0BAA0B,EAAE,kCAAkC,CAAC;KACtE,MAAM,CAAC,KAAK,EAAE,OAAkE,EAAE,EAAE;IACnF,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -31,7 +31,7 @@ export async function launchClaudeSession(claudeSessionId, workspacePath) {
|
|
|
31
31
|
await new Promise((resolve, reject) => {
|
|
32
32
|
const shell = getUserShell();
|
|
33
33
|
// Set the CLAUDE_SESSION_END_HOOK environment variable to our hook script
|
|
34
|
-
const child = spawn(shell, ['-i', '-c', `claude -r ${claudeSessionId}`], {
|
|
34
|
+
const child = spawn(shell, ['-i', '-c', `claude -r ${claudeSessionId} --settings '{"includeCoAuthoredBy": false}'`], {
|
|
35
35
|
cwd: workspacePath,
|
|
36
36
|
stdio: 'inherit',
|
|
37
37
|
env: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-launcher.js","sourceRoot":"","sources":["../../src/utils/claude-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,MAAM,YAAY,GAAG,GAAW,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,UAAU,CAAC;AAOnE;;;GAGG;AACH,KAAK,UAAU,oBAAoB,CAAC,UAAkB;IACpD,MAAM,UAAU,GAAG;;;;;;;;qBAQA,UAAU;CAC9B,CAAC;IAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,6BAA6B,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtF,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,eAAuB,EACvB,aAAqB;IAErB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,yBAAyB,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC3F,IAAI,QAAQ,GAAkB,IAAI,CAAC;IAEnC,IAAI,CAAC;QACH,6BAA6B;QAC7B,QAAQ,GAAG,MAAM,oBAAoB,CAAC,eAAe,CAAC,CAAC;QAEvD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;YAC7B,0EAA0E;YAC1E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,eAAe,
|
|
1
|
+
{"version":3,"file":"claude-launcher.js","sourceRoot":"","sources":["../../src/utils/claude-launcher.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edgedive/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "Edgedive CLI for agent session takeover and management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
"build": "tsc",
|
|
12
12
|
"dev": "tsc --watch",
|
|
13
13
|
"clean": "rm -rf dist",
|
|
14
|
-
"start": "node dist/index.js"
|
|
14
|
+
"start": "node dist/index.js",
|
|
15
|
+
"typecheck": "tsc --noEmit"
|
|
15
16
|
},
|
|
16
17
|
"keywords": [
|
|
17
18
|
"edgedive",
|
package/src/api/client.ts
CHANGED
|
@@ -116,6 +116,26 @@ export class EdgediveApiClient {
|
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
+
/**
|
|
120
|
+
* Get session takeover information by Slack thread URL
|
|
121
|
+
*/
|
|
122
|
+
async getTakeoverBySlackThreadUrl(slackThreadUrl: string): Promise<TakeoverResponse> {
|
|
123
|
+
try {
|
|
124
|
+
const response = await this.client.get<TakeoverResponse>(API_CONFIG.TAKEOVER_PATH, {
|
|
125
|
+
params: {
|
|
126
|
+
slack_thread_url: slackThreadUrl,
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
return response.data;
|
|
130
|
+
} catch (error: any) {
|
|
131
|
+
if (error.response) {
|
|
132
|
+
const errorData = error.response.data;
|
|
133
|
+
throw new Error(errorData?.error || `API request failed: ${error.response.status}`);
|
|
134
|
+
}
|
|
135
|
+
throw new Error(`API request failed: ${error.message}`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
119
139
|
/**
|
|
120
140
|
* Upload Claude session file for an agent session
|
|
121
141
|
*/
|
package/src/commands/local.ts
CHANGED
|
@@ -12,9 +12,10 @@ import { launchClaudeSession } from '../utils/claude-launcher.js';
|
|
|
12
12
|
interface LocalOptions {
|
|
13
13
|
prUrl?: string;
|
|
14
14
|
issueUrl?: string;
|
|
15
|
+
threadUrl?: string;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
|
-
export async function localCommand({ prUrl, issueUrl }: LocalOptions): Promise<void> {
|
|
18
|
+
export async function localCommand({ prUrl, issueUrl, threadUrl }: LocalOptions): Promise<void> {
|
|
18
19
|
const configManager = new ConfigManager();
|
|
19
20
|
const apiClient = new EdgediveApiClient(configManager);
|
|
20
21
|
const downloader = new SessionDownloader();
|
|
@@ -36,11 +37,14 @@ export async function localCommand({ prUrl, issueUrl }: LocalOptions): Promise<v
|
|
|
36
37
|
process.exit(1);
|
|
37
38
|
}
|
|
38
39
|
|
|
39
|
-
if (!prUrl && !issueUrl) {
|
|
40
|
+
if (!prUrl && !issueUrl && !threadUrl) {
|
|
40
41
|
console.log(chalk.red('ā Missing session identifier.\n'));
|
|
41
42
|
console.log(
|
|
42
43
|
chalk.yellow(
|
|
43
|
-
'Provide
|
|
44
|
+
'Provide one of:\n' +
|
|
45
|
+
' --pr-url https://github.com/owner/repo/pull/123\n' +
|
|
46
|
+
' --issue-url https://linear.app/...\n' +
|
|
47
|
+
' --thread-url https://workspace.slack.com/archives/C12345/p1234567890123456\n'
|
|
44
48
|
)
|
|
45
49
|
);
|
|
46
50
|
process.exit(1);
|
|
@@ -60,10 +64,26 @@ export async function localCommand({ prUrl, issueUrl }: LocalOptions): Promise<v
|
|
|
60
64
|
console.log(chalk.dim(`PR URL: ${prUrl}\n`));
|
|
61
65
|
console.log('š Fetching session information...\n');
|
|
62
66
|
sessionData = await apiClient.getTakeoverByPrUrl(prUrl);
|
|
63
|
-
} else {
|
|
67
|
+
} else if (issueUrl) {
|
|
64
68
|
console.log(chalk.dim(`Linear Issue URL: ${issueUrl}\n`));
|
|
65
69
|
console.log('š Fetching session information...\n');
|
|
66
|
-
sessionData = await apiClient.getTakeoverByLinearIssueUrl(issueUrl
|
|
70
|
+
sessionData = await apiClient.getTakeoverByLinearIssueUrl(issueUrl);
|
|
71
|
+
} else {
|
|
72
|
+
// Validate Slack thread URL format
|
|
73
|
+
const slackThreadPattern = /^https?:\/\/[^\/]+\.slack\.com\/archives\/([A-Z0-9]+)\/p(\d{16})/;
|
|
74
|
+
if (!slackThreadPattern.test(threadUrl!)) {
|
|
75
|
+
console.log(chalk.red('ā Invalid Slack thread URL format.\n'));
|
|
76
|
+
console.log(
|
|
77
|
+
chalk.yellow(
|
|
78
|
+
'Expected format: https://workspace.slack.com/archives/C12345/p1234567890123456\n'
|
|
79
|
+
)
|
|
80
|
+
);
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
console.log(chalk.dim(`Slack Thread URL: ${threadUrl}\n`));
|
|
85
|
+
console.log('š Fetching session information...\n');
|
|
86
|
+
sessionData = await apiClient.getTakeoverBySlackThreadUrl(threadUrl!);
|
|
67
87
|
}
|
|
68
88
|
|
|
69
89
|
console.log(chalk.green('ā
Found agent session!\n'));
|
package/src/index.ts
CHANGED
|
@@ -42,7 +42,8 @@ program
|
|
|
42
42
|
.description('Prepare an agent session locally')
|
|
43
43
|
.option('--pr-url <prUrl>', 'GitHub PR URL to load locally')
|
|
44
44
|
.option('--issue-url <issueUrl>', 'Linear issue URL to load locally')
|
|
45
|
-
.
|
|
45
|
+
.option('--thread-url <threadUrl>', 'Slack thread URL to load locally')
|
|
46
|
+
.action(async (options: { prUrl?: string; issueUrl?: string; threadUrl?: string }) => {
|
|
46
47
|
await localCommand(options);
|
|
47
48
|
});
|
|
48
49
|
|
|
@@ -45,7 +45,7 @@ export async function launchClaudeSession(
|
|
|
45
45
|
await new Promise<void>((resolve, reject) => {
|
|
46
46
|
const shell = getUserShell();
|
|
47
47
|
// Set the CLAUDE_SESSION_END_HOOK environment variable to our hook script
|
|
48
|
-
const child = spawn(shell, ['-i', '-c', `claude -r ${claudeSessionId}`], {
|
|
48
|
+
const child = spawn(shell, ['-i', '-c', `claude -r ${claudeSessionId} --settings '{"includeCoAuthoredBy": false}'`], {
|
|
49
49
|
cwd: workspacePath,
|
|
50
50
|
stdio: 'inherit',
|
|
51
51
|
env: {
|
package/.env
DELETED
package/.env.local
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Takeover command - download agent session for local development
|
|
3
|
-
*/
|
|
4
|
-
interface TakeoverOptions {
|
|
5
|
-
prUrl?: string;
|
|
6
|
-
issueUrl?: string;
|
|
7
|
-
}
|
|
8
|
-
export declare function takeoverCommand({ prUrl, issueUrl }: TakeoverOptions): Promise<void>;
|
|
9
|
-
export {};
|
|
10
|
-
//# sourceMappingURL=takeover.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"takeover.d.ts","sourceRoot":"","sources":["../../src/commands/takeover.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,eAAe,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA6HzF"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Takeover command - download agent session for local development
|
|
3
|
-
*/
|
|
4
|
-
import chalk from 'chalk';
|
|
5
|
-
import { ConfigManager } from '../config/config-manager.js';
|
|
6
|
-
import { EdgediveApiClient } from '../api/client.js';
|
|
7
|
-
import { SessionDownloader } from '../utils/session-downloader.js';
|
|
8
|
-
import { GitUtils } from '../utils/git-utils.js';
|
|
9
|
-
import { launchClaudeSession } from '../utils/claude-launcher.js';
|
|
10
|
-
export async function takeoverCommand({ prUrl, issueUrl }) {
|
|
11
|
-
const configManager = new ConfigManager();
|
|
12
|
-
const apiClient = new EdgediveApiClient(configManager);
|
|
13
|
-
const downloader = new SessionDownloader();
|
|
14
|
-
try {
|
|
15
|
-
console.log(chalk.bold('\nš§ Edgedive Session Takeover\n'));
|
|
16
|
-
// Check for Windows platform
|
|
17
|
-
if (process.platform === 'win32') {
|
|
18
|
-
console.log(chalk.red('ā Windows is not currently supported for the takeover command.\n'));
|
|
19
|
-
console.log(chalk.yellow('Please use macOS or Linux to takeover agent sessions.\n'));
|
|
20
|
-
process.exit(1);
|
|
21
|
-
}
|
|
22
|
-
// Check if authenticated
|
|
23
|
-
if (!(await configManager.isAuthenticated())) {
|
|
24
|
-
console.log(chalk.red('ā You are not logged in.\n'));
|
|
25
|
-
console.log(chalk.yellow('Please run: edgedive login\n'));
|
|
26
|
-
process.exit(1);
|
|
27
|
-
}
|
|
28
|
-
if (!prUrl && !issueUrl) {
|
|
29
|
-
console.log(chalk.red('ā Missing takeover identifier.\n'));
|
|
30
|
-
console.log(chalk.yellow('Provide either --pr-url https://github.com/owner/repo/pull/123 or --issue-url https://linear.app/...\n'));
|
|
31
|
-
process.exit(1);
|
|
32
|
-
}
|
|
33
|
-
let takeoverData;
|
|
34
|
-
if (prUrl) {
|
|
35
|
-
// Validate PR URL format
|
|
36
|
-
const prUrlPattern = /^https?:\/\/github\.com\/([^\/]+)\/([^\/]+)\/pull\/(\d+)/;
|
|
37
|
-
if (!prUrlPattern.test(prUrl)) {
|
|
38
|
-
console.log(chalk.red('ā Invalid PR URL format.\n'));
|
|
39
|
-
console.log(chalk.yellow('Expected format: https://github.com/owner/repo/pull/123\n'));
|
|
40
|
-
process.exit(1);
|
|
41
|
-
}
|
|
42
|
-
console.log(chalk.dim(`PR URL: ${prUrl}\n`));
|
|
43
|
-
console.log('š Fetching session information...\n');
|
|
44
|
-
takeoverData = await apiClient.getTakeoverByPrUrl(prUrl);
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
console.log(chalk.dim(`Linear Issue URL: ${issueUrl}\n`));
|
|
48
|
-
console.log('š Fetching session information...\n');
|
|
49
|
-
takeoverData = await apiClient.getTakeoverByLinearIssueUrl(issueUrl);
|
|
50
|
-
}
|
|
51
|
-
console.log(chalk.green('ā
Found agent session!\n'));
|
|
52
|
-
if (takeoverData.github_pr?.url) {
|
|
53
|
-
console.log(chalk.dim(`PR URL: ${takeoverData.github_pr.url}`));
|
|
54
|
-
}
|
|
55
|
-
console.log(chalk.bold('Session Information:'));
|
|
56
|
-
console.log(chalk.dim(` Session ID: ${takeoverData.session_id}`));
|
|
57
|
-
console.log(chalk.dim(` Agent Type: ${takeoverData.agent_type}`));
|
|
58
|
-
console.log(chalk.dim(` Status: ${takeoverData.status}`));
|
|
59
|
-
console.log(chalk.dim(` Repository: ${takeoverData.repository.owner}/${takeoverData.repository.name}`));
|
|
60
|
-
console.log(chalk.dim(` Branch: ${takeoverData.repository.branch}`));
|
|
61
|
-
if (takeoverData.linear_issue) {
|
|
62
|
-
console.log(chalk.dim(` Linear Issue: ${takeoverData.linear_issue.identifier}`));
|
|
63
|
-
console.log(chalk.dim(` Linear URL: ${takeoverData.linear_issue.url}`));
|
|
64
|
-
}
|
|
65
|
-
// Verify current repository matches PR source
|
|
66
|
-
const cwd = process.cwd();
|
|
67
|
-
let repoInfo;
|
|
68
|
-
try {
|
|
69
|
-
repoInfo = await GitUtils.verifyRepoMatches(takeoverData.repository.owner, takeoverData.repository.name, cwd);
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
console.error(chalk.red(`\nā ${error.message}\n`));
|
|
73
|
-
console.log(chalk.yellow('Run this command from within the target repository checked out locally.'));
|
|
74
|
-
process.exit(1);
|
|
75
|
-
}
|
|
76
|
-
console.log(chalk.green(`ā
Using repository at ${repoInfo.rootPath}`));
|
|
77
|
-
// Download session files into Claude projects directory
|
|
78
|
-
const { claudeSessionId, claudeSessionPath } = await downloader.downloadSession(takeoverData, repoInfo.rootPath);
|
|
79
|
-
// Ensure PR branch is checked out locally
|
|
80
|
-
try {
|
|
81
|
-
await GitUtils.ensureBranchCheckedOut(takeoverData.repository.branch, repoInfo.rootPath);
|
|
82
|
-
console.log(chalk.green(`ā
Checked out branch ${takeoverData.repository.branch}`));
|
|
83
|
-
}
|
|
84
|
-
catch (error) {
|
|
85
|
-
console.error(chalk.red(`\nā Failed to checkout branch ${takeoverData.repository.branch}: ${error.message}\n`));
|
|
86
|
-
console.log(chalk.yellow('Resolve the git issue above and rerun the takeover command.'));
|
|
87
|
-
process.exit(1);
|
|
88
|
-
}
|
|
89
|
-
console.log(chalk.blue(`\nš Launching Claude session ${claudeSessionId}...\n`));
|
|
90
|
-
try {
|
|
91
|
-
await launchClaudeSession(claudeSessionId, repoInfo.rootPath);
|
|
92
|
-
console.log(chalk.green('\nā
Claude session closed. Happy debugging!\n'));
|
|
93
|
-
}
|
|
94
|
-
catch (error) {
|
|
95
|
-
console.error(chalk.red(`\nā Failed to start Claude automatically: ${error.message}\n`));
|
|
96
|
-
console.log(chalk.yellow(`You can resume manually with: claude -r ${claudeSessionId} (from ${repoInfo.rootPath})`));
|
|
97
|
-
process.exit(1);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
catch (error) {
|
|
101
|
-
console.error(chalk.red(`\nā Takeover failed: ${error.message}\n`));
|
|
102
|
-
if (error.message.includes('401') || error.message.includes('Unauthorized')) {
|
|
103
|
-
console.log(chalk.yellow('Your session may have expired. Please run: edgedive login\n'));
|
|
104
|
-
}
|
|
105
|
-
process.exit(1);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=takeover.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"takeover.js","sourceRoot":"","sources":["../../src/commands/takeover.ts"],"names":[],"mappings":"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"}
|