teamshare-bridge 0.11.0 → 0.11.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/dist/bridge/daemon.js +89 -0
- package/dist/bridge/daemon.js.map +1 -1
- package/dist/bridge/local-server.d.ts +5 -0
- package/dist/bridge/local-server.js +195 -0
- package/dist/bridge/local-server.js.map +1 -1
- package/dist/bridge/spawn.d.ts +10 -0
- package/dist/bridge/spawn.js +78 -15
- package/dist/bridge/spawn.js.map +1 -1
- package/dist/cli/commands/build.js +7 -2
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/chat.js +5 -0
- package/dist/cli/commands/chat.js.map +1 -1
- package/dist/cli/commands/cleanup.js +28 -1
- package/dist/cli/commands/cleanup.js.map +1 -1
- package/dist/cli/commands/doc.js +4 -0
- package/dist/cli/commands/doc.js.map +1 -1
- package/dist/cli/commands/link.js +30 -2
- package/dist/cli/commands/link.js.map +1 -1
- package/dist/cli/commands/run.js +13 -4
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/worker.js +18 -1
- package/dist/cli/commands/worker.js.map +1 -1
- package/dist/lib/api.js +18 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/brief.js +5 -0
- package/dist/lib/brief.js.map +1 -1
- package/dist/lib/cache-cleaner.d.ts +51 -0
- package/dist/lib/cache-cleaner.js +403 -0
- package/dist/lib/cache-cleaner.js.map +1 -0
- package/dist/lib/chat-reply.js +1 -0
- package/dist/lib/chat-reply.js.map +1 -1
- package/dist/lib/config.d.ts +38 -1
- package/dist/lib/config.js +23 -2
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/git-pipeline.d.ts +18 -3
- package/dist/lib/git-pipeline.js +82 -4
- package/dist/lib/git-pipeline.js.map +1 -1
- package/dist/lib/orchestrator/client.js +10 -4
- package/dist/lib/orchestrator/client.js.map +1 -1
- package/dist/lib/orchestrator/runner.d.ts +6 -1
- package/dist/lib/orchestrator/runner.js +86 -14
- package/dist/lib/orchestrator/runner.js.map +1 -1
- package/dist/lib/orchestrator/worktree.d.ts +24 -0
- package/dist/lib/orchestrator/worktree.js +99 -0
- package/dist/lib/orchestrator/worktree.js.map +1 -1
- package/dist/lib/rate-gate.d.ts +42 -0
- package/dist/lib/rate-gate.js +128 -0
- package/dist/lib/rate-gate.js.map +1 -0
- package/dist/lib/workspace/bus.d.ts +30 -0
- package/dist/lib/workspace/bus.js +101 -0
- package/dist/lib/workspace/bus.js.map +1 -0
- package/dist/lib/workspace/classify.d.ts +32 -0
- package/dist/lib/workspace/classify.js +197 -0
- package/dist/lib/workspace/classify.js.map +1 -0
- package/dist/lib/workspace/presence.d.ts +26 -0
- package/dist/lib/workspace/presence.js +130 -0
- package/dist/lib/workspace/presence.js.map +1 -0
- package/dist/lib/workspace/repo-lock.d.ts +90 -0
- package/dist/lib/workspace/repo-lock.js +296 -0
- package/dist/lib/workspace/repo-lock.js.map +1 -0
- package/dist/lib/workspace/shim-runner.d.ts +1 -0
- package/dist/lib/workspace/shim-runner.js +233 -0
- package/dist/lib/workspace/shim-runner.js.map +1 -0
- package/dist/lib/workspace/shims.d.ts +9 -0
- package/dist/lib/workspace/shims.js +88 -0
- package/dist/lib/workspace/shims.js.map +1 -0
- package/package.json +1 -1
- package/tools/workspace-arbitration-check.mjs +390 -0
|
@@ -3,6 +3,14 @@ export interface WorktreeInfo {
|
|
|
3
3
|
branch: string;
|
|
4
4
|
commitHash: string;
|
|
5
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* Arbitrated create (IMP-950): exclusive lock on the main repo while the
|
|
8
|
+
* worktree is registered. Returns null when the workspace stays busy past
|
|
9
|
+
* the wait budget - the caller reports failure instead of corrupting state.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createWorktreeAsync(repoPath: string, branch: string, baseBranch: string, taskId: string, agentId?: string): Promise<WorktreeInfo | null>;
|
|
12
|
+
/** Arbitrated remove (IMP-950). */
|
|
13
|
+
export declare function removeWorktreeAsync(repoPath: string, worktreePath: string, agentId?: string): Promise<boolean>;
|
|
6
14
|
export interface GitStatus {
|
|
7
15
|
branch: string;
|
|
8
16
|
dirty: boolean;
|
|
@@ -30,6 +38,17 @@ export declare function gitStatus(worktreePath: string): GitStatus;
|
|
|
30
38
|
* Commit changes in a worktree.
|
|
31
39
|
*/
|
|
32
40
|
export declare function gitCommit(worktreePath: string, message: string, files?: string[]): string;
|
|
41
|
+
/**
|
|
42
|
+
* Merge a branch into the integration branch - arbitrated (IMP-950).
|
|
43
|
+
* gitMerge CHECKS OUT the target branch inside the MAIN repo tree; without
|
|
44
|
+
* the lock a concurrent session could have its working files swapped
|
|
45
|
+
* mid-edit. Returns { skipped: true } when the workspace stayed busy.
|
|
46
|
+
*/
|
|
47
|
+
export declare function gitMergeAsync(repoPath: string, sourceBranch: string, targetBranch: string, agentId?: string): Promise<{
|
|
48
|
+
success: boolean;
|
|
49
|
+
conflictFiles?: string[];
|
|
50
|
+
skipped?: boolean;
|
|
51
|
+
}>;
|
|
33
52
|
/**
|
|
34
53
|
* Merge a branch into the integration branch.
|
|
35
54
|
*/
|
|
@@ -86,6 +105,11 @@ export declare function gitInit(dir: string, remoteName?: string, originUrl?: st
|
|
|
86
105
|
* This allows the orchestrator to work on projects that have no git repo yet.
|
|
87
106
|
*/
|
|
88
107
|
export declare function ensureRepoExists(repoPath: string): void;
|
|
108
|
+
/**
|
|
109
|
+
* Detect a sensible base branch for auto-created worktrees (IMP-950):
|
|
110
|
+
* origin/HEAD > current branch > 'main'. Never throws.
|
|
111
|
+
*/
|
|
112
|
+
export declare function detectDefaultBranch(repoPath: string): string;
|
|
89
113
|
/**
|
|
90
114
|
* Ensure a local bare repo exists and is configured as the origin remote for
|
|
91
115
|
* `repoPath`. When no remote is configured (the user hasn't linked a GitHub /
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createWorktreeAsync = createWorktreeAsync;
|
|
4
|
+
exports.removeWorktreeAsync = removeWorktreeAsync;
|
|
3
5
|
exports.getWorktreeRoot = getWorktreeRoot;
|
|
4
6
|
exports.createWorktree = createWorktree;
|
|
5
7
|
exports.removeWorktree = removeWorktree;
|
|
6
8
|
exports.gitStatus = gitStatus;
|
|
7
9
|
exports.gitCommit = gitCommit;
|
|
10
|
+
exports.gitMergeAsync = gitMergeAsync;
|
|
8
11
|
exports.gitMerge = gitMerge;
|
|
9
12
|
exports.gitDiff = gitDiff;
|
|
10
13
|
exports.gitPush = gitPush;
|
|
@@ -14,21 +17,66 @@ exports.gitRemoteUrl = gitRemoteUrl;
|
|
|
14
17
|
exports.isGitRepo = isGitRepo;
|
|
15
18
|
exports.gitInit = gitInit;
|
|
16
19
|
exports.ensureRepoExists = ensureRepoExists;
|
|
20
|
+
exports.detectDefaultBranch = detectDefaultBranch;
|
|
17
21
|
exports.ensureLocalBareRepo = ensureLocalBareRepo;
|
|
18
22
|
/**
|
|
19
23
|
* Git Worktree Manager: creates, manages, and removes Git worktrees
|
|
20
24
|
* for orchestrator tasks. All git operations use native CLI.
|
|
25
|
+
*
|
|
26
|
+
* Workspace arbitration (IMP-950): worktree add/remove and integration
|
|
27
|
+
* merges mutate the MAIN repo's checked-out tree or its .git state - the
|
|
28
|
+
* async *Async variants run those under an exclusive repo lock so they can
|
|
29
|
+
* never interleave with another session's branch operations in the same
|
|
30
|
+
* repo. The sync originals stay unlocked for legacy callers.
|
|
21
31
|
*/
|
|
22
32
|
const child_process_1 = require("child_process");
|
|
23
33
|
const fs_1 = require("fs");
|
|
24
34
|
const path_1 = require("path");
|
|
25
35
|
const os_1 = require("os");
|
|
26
36
|
const git_auth_1 = require("../git-auth");
|
|
37
|
+
const repo_lock_1 = require("../workspace/repo-lock");
|
|
38
|
+
const bus_1 = require("../workspace/bus");
|
|
27
39
|
const log = {
|
|
28
40
|
info: (msg) => console.log(`[worktree] ${msg}`),
|
|
29
41
|
warn: (msg) => console.warn(`[worktree] ${msg}`),
|
|
30
42
|
error: (msg) => console.error(`[worktree] ${msg}`),
|
|
31
43
|
};
|
|
44
|
+
/** Wait budget for repo-mutating worktree operations. */
|
|
45
|
+
const WORKTREE_LOCK_WAIT_MS = 5 * 60_000;
|
|
46
|
+
function holderFor(agentId, taskId, label) {
|
|
47
|
+
return { agentId, taskId, label };
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Arbitrated create (IMP-950): exclusive lock on the main repo while the
|
|
51
|
+
* worktree is registered. Returns null when the workspace stays busy past
|
|
52
|
+
* the wait budget - the caller reports failure instead of corrupting state.
|
|
53
|
+
*/
|
|
54
|
+
async function createWorktreeAsync(repoPath, branch, baseBranch, taskId, agentId) {
|
|
55
|
+
const handle = await (0, repo_lock_1.acquireWsLock)({ kind: 'dir', path: (0, path_1.resolve)(repoPath) }, 'exclusive', holderFor(agentId, taskId, `worktree add ${branch}`), { waitMs: WORKTREE_LOCK_WAIT_MS, pollMs: 1000 });
|
|
56
|
+
if (!handle)
|
|
57
|
+
return null;
|
|
58
|
+
try {
|
|
59
|
+
const info = createWorktree(repoPath, branch, baseBranch, taskId);
|
|
60
|
+
(0, bus_1.publishEvent)({ type: 'worktree.created', dir: info.path, agentId, taskId, note: branch });
|
|
61
|
+
return info;
|
|
62
|
+
}
|
|
63
|
+
finally {
|
|
64
|
+
(0, repo_lock_1.releaseWsLock)(handle);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/** Arbitrated remove (IMP-950). */
|
|
68
|
+
async function removeWorktreeAsync(repoPath, worktreePath, agentId) {
|
|
69
|
+
const handle = await (0, repo_lock_1.acquireWsLock)({ kind: 'dir', path: (0, path_1.resolve)(repoPath) }, 'exclusive', holderFor(agentId, undefined, `worktree remove`), { waitMs: WORKTREE_LOCK_WAIT_MS, pollMs: 1000 });
|
|
70
|
+
if (!handle)
|
|
71
|
+
return false;
|
|
72
|
+
try {
|
|
73
|
+
removeWorktree(repoPath, worktreePath);
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
(0, repo_lock_1.releaseWsLock)(handle);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
32
80
|
/**
|
|
33
81
|
* Validate that a path is safe (no traversal, no network drives).
|
|
34
82
|
* Returns true if the path is safe to use.
|
|
@@ -211,6 +259,23 @@ function gitCommit(worktreePath, message, files) {
|
|
|
211
259
|
throw err;
|
|
212
260
|
}
|
|
213
261
|
}
|
|
262
|
+
/**
|
|
263
|
+
* Merge a branch into the integration branch - arbitrated (IMP-950).
|
|
264
|
+
* gitMerge CHECKS OUT the target branch inside the MAIN repo tree; without
|
|
265
|
+
* the lock a concurrent session could have its working files swapped
|
|
266
|
+
* mid-edit. Returns { skipped: true } when the workspace stayed busy.
|
|
267
|
+
*/
|
|
268
|
+
async function gitMergeAsync(repoPath, sourceBranch, targetBranch, agentId) {
|
|
269
|
+
const handle = await (0, repo_lock_1.acquireWsLock)({ kind: 'dir', path: (0, path_1.resolve)(repoPath) }, 'exclusive', holderFor(agentId, undefined, `merge ${sourceBranch} -> ${targetBranch}`), { waitMs: WORKTREE_LOCK_WAIT_MS, pollMs: 1000 });
|
|
270
|
+
if (!handle)
|
|
271
|
+
return { success: false, skipped: true };
|
|
272
|
+
try {
|
|
273
|
+
return gitMerge(repoPath, sourceBranch, targetBranch);
|
|
274
|
+
}
|
|
275
|
+
finally {
|
|
276
|
+
(0, repo_lock_1.releaseWsLock)(handle);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
214
279
|
/**
|
|
215
280
|
* Merge a branch into the integration branch.
|
|
216
281
|
*/
|
|
@@ -450,6 +515,40 @@ function ensureRepoExists(repoPath) {
|
|
|
450
515
|
}
|
|
451
516
|
}
|
|
452
517
|
}
|
|
518
|
+
/**
|
|
519
|
+
* Detect a sensible base branch for auto-created worktrees (IMP-950):
|
|
520
|
+
* origin/HEAD > current branch > 'main'. Never throws.
|
|
521
|
+
*/
|
|
522
|
+
function detectDefaultBranch(repoPath) {
|
|
523
|
+
try {
|
|
524
|
+
const out = (0, child_process_1.execSync)('git symbolic-ref --short refs/remotes/origin/HEAD', {
|
|
525
|
+
cwd: repoPath,
|
|
526
|
+
encoding: 'utf-8',
|
|
527
|
+
timeout: 5_000,
|
|
528
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
529
|
+
}).trim();
|
|
530
|
+
const short = out.split('/').pop();
|
|
531
|
+
if (short)
|
|
532
|
+
return short;
|
|
533
|
+
}
|
|
534
|
+
catch {
|
|
535
|
+
/* fall through */
|
|
536
|
+
}
|
|
537
|
+
try {
|
|
538
|
+
const cur = (0, child_process_1.execSync)('git rev-parse --abbrev-ref HEAD', {
|
|
539
|
+
cwd: repoPath,
|
|
540
|
+
encoding: 'utf-8',
|
|
541
|
+
timeout: 5_000,
|
|
542
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
543
|
+
}).trim();
|
|
544
|
+
if (cur && cur !== 'HEAD')
|
|
545
|
+
return cur;
|
|
546
|
+
}
|
|
547
|
+
catch {
|
|
548
|
+
/* fall through */
|
|
549
|
+
}
|
|
550
|
+
return 'main';
|
|
551
|
+
}
|
|
453
552
|
/**
|
|
454
553
|
* Ensure a local bare repo exists and is configured as the origin remote for
|
|
455
554
|
* `repoPath`. When no remote is configured (the user hasn't linked a GitHub /
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../../src/lib/orchestrator/worktree.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../../src/lib/orchestrator/worktree.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IMP-917 rate gate: when the signed-in user hits a plan rate limit
|
|
3
|
+
* (backend responds HTTP 429 code=RATE_LIMITED with details.retryAfterMs),
|
|
4
|
+
* every bridge process on this machine pauses outbound requests until the
|
|
5
|
+
* window resets - then resumes automatically.
|
|
6
|
+
*
|
|
7
|
+
* Design guarantees:
|
|
8
|
+
* - Shared state via ~/.teamshare/rate-limit.json so the daemon and spawned
|
|
9
|
+
* CLI subprocesses all observe the same gate.
|
|
10
|
+
* - Waits are async sleeps (never block the event loop).
|
|
11
|
+
* - MAX_PAUSE_MS caps auto-waiting: longer limits fail FAST with an enriched
|
|
12
|
+
* error so sessions never hang for hours.
|
|
13
|
+
*/
|
|
14
|
+
export declare const DEFAULT_MAX_PAUSE_MS: number;
|
|
15
|
+
export interface GateState {
|
|
16
|
+
scope?: string;
|
|
17
|
+
resetAt: number;
|
|
18
|
+
seenAt: number;
|
|
19
|
+
}
|
|
20
|
+
/** Max auto-pause window (ms) - overridable for tests/ops. */
|
|
21
|
+
export declare function maxPauseMs(): number;
|
|
22
|
+
/**
|
|
23
|
+
* Parse the retry wait out of a RATE_LIMITED ApiError:
|
|
24
|
+
* 1. details.retryAfterMs / retryAfterSec (machine-readable, preferred)
|
|
25
|
+
* 2. "Try again in N seconds/minutes/hours" in the message
|
|
26
|
+
* 3. 60s default
|
|
27
|
+
*/
|
|
28
|
+
export declare function parseRetryAfterMs(err: unknown): number;
|
|
29
|
+
/** True when the error is a user rate-limit hit (HTTP 429 RATE_LIMITED). */
|
|
30
|
+
export declare function isRateLimitError(err: unknown): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Record a fresh limit hit. Waits are capped at maxPauseMs + jitter so the
|
|
33
|
+
* shared file never asks anyone to sleep for hours.
|
|
34
|
+
*/
|
|
35
|
+
export declare function noteRateLimit(err: unknown, now?: number): GateState;
|
|
36
|
+
/**
|
|
37
|
+
* Remaining ms until the shared gate lifts (0 when clear/expired). Reads the
|
|
38
|
+
* file every call so subprocesses stay in sync.
|
|
39
|
+
*/
|
|
40
|
+
export declare function gateRemainingMs(now?: number): number;
|
|
41
|
+
/** Async-sleep until the shared gate lifts. Returns ms actually waited. */
|
|
42
|
+
export declare function waitIfGated(log?: (text: string) => void, now?: number): Promise<number>;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* IMP-917 rate gate: when the signed-in user hits a plan rate limit
|
|
4
|
+
* (backend responds HTTP 429 code=RATE_LIMITED with details.retryAfterMs),
|
|
5
|
+
* every bridge process on this machine pauses outbound requests until the
|
|
6
|
+
* window resets - then resumes automatically.
|
|
7
|
+
*
|
|
8
|
+
* Design guarantees:
|
|
9
|
+
* - Shared state via ~/.teamshare/rate-limit.json so the daemon and spawned
|
|
10
|
+
* CLI subprocesses all observe the same gate.
|
|
11
|
+
* - Waits are async sleeps (never block the event loop).
|
|
12
|
+
* - MAX_PAUSE_MS caps auto-waiting: longer limits fail FAST with an enriched
|
|
13
|
+
* error so sessions never hang for hours.
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.DEFAULT_MAX_PAUSE_MS = void 0;
|
|
17
|
+
exports.maxPauseMs = maxPauseMs;
|
|
18
|
+
exports.parseRetryAfterMs = parseRetryAfterMs;
|
|
19
|
+
exports.isRateLimitError = isRateLimitError;
|
|
20
|
+
exports.noteRateLimit = noteRateLimit;
|
|
21
|
+
exports.gateRemainingMs = gateRemainingMs;
|
|
22
|
+
exports.waitIfGated = waitIfGated;
|
|
23
|
+
const node_fs_1 = require("node:fs");
|
|
24
|
+
const node_path_1 = require("node:path");
|
|
25
|
+
const node_os_1 = require("node:os");
|
|
26
|
+
const api_1 = require("./api");
|
|
27
|
+
exports.DEFAULT_MAX_PAUSE_MS = 10 * 60_000;
|
|
28
|
+
const GATE_DIR = (0, node_path_1.join)((0, node_os_1.homedir)(), '.teamshare');
|
|
29
|
+
const GATE_FILE = (0, node_path_1.join)(GATE_DIR, 'rate-limit.json');
|
|
30
|
+
/** Max auto-pause window (ms) - overridable for tests/ops. */
|
|
31
|
+
function maxPauseMs() {
|
|
32
|
+
const raw = Number(process.env.TEAMSHARE_RATE_PAUSE_MAX_MS);
|
|
33
|
+
return Number.isFinite(raw) && raw > 0 ? raw : exports.DEFAULT_MAX_PAUSE_MS;
|
|
34
|
+
}
|
|
35
|
+
function readFileGate() {
|
|
36
|
+
try {
|
|
37
|
+
if (!(0, node_fs_1.existsSync)(GATE_FILE))
|
|
38
|
+
return null;
|
|
39
|
+
const parsed = JSON.parse((0, node_fs_1.readFileSync)(GATE_FILE, 'utf8'));
|
|
40
|
+
if (typeof parsed?.resetAt !== 'number')
|
|
41
|
+
return null;
|
|
42
|
+
return parsed;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function writeFileGate(state) {
|
|
49
|
+
try {
|
|
50
|
+
(0, node_fs_1.mkdirSync)(GATE_DIR, { recursive: true });
|
|
51
|
+
(0, node_fs_1.writeFileSync)(GATE_FILE, JSON.stringify(state), 'utf8');
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
/* best-effort - gating degrades to per-process memory */
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Parse the retry wait out of a RATE_LIMITED ApiError:
|
|
59
|
+
* 1. details.retryAfterMs / retryAfterSec (machine-readable, preferred)
|
|
60
|
+
* 2. "Try again in N seconds/minutes/hours" in the message
|
|
61
|
+
* 3. 60s default
|
|
62
|
+
*/
|
|
63
|
+
function parseRetryAfterMs(err) {
|
|
64
|
+
if (err instanceof api_1.ApiError && err.status === 429) {
|
|
65
|
+
const details = (err.details ?? {});
|
|
66
|
+
if (typeof details.retryAfterMs === 'number' && details.retryAfterMs > 0) {
|
|
67
|
+
return details.retryAfterMs;
|
|
68
|
+
}
|
|
69
|
+
if (typeof details.retryAfterSec === 'number' && details.retryAfterSec > 0) {
|
|
70
|
+
return details.retryAfterSec * 1000;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const text = err instanceof Error ? err.message : String(err);
|
|
74
|
+
const m = /try again in (\d+) (second|minute|hour)/i.exec(text);
|
|
75
|
+
if (m) {
|
|
76
|
+
const n = Number(m[1]);
|
|
77
|
+
const unit = m[2].toLowerCase();
|
|
78
|
+
if (unit === 'second')
|
|
79
|
+
return n * 1000;
|
|
80
|
+
if (unit === 'minute')
|
|
81
|
+
return n * 60_000;
|
|
82
|
+
return n * 3_600_000;
|
|
83
|
+
}
|
|
84
|
+
return 60_000;
|
|
85
|
+
}
|
|
86
|
+
/** True when the error is a user rate-limit hit (HTTP 429 RATE_LIMITED). */
|
|
87
|
+
function isRateLimitError(err) {
|
|
88
|
+
return err instanceof api_1.ApiError && err.status === 429 && err.code === 'RATE_LIMITED';
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Record a fresh limit hit. Waits are capped at maxPauseMs + jitter so the
|
|
92
|
+
* shared file never asks anyone to sleep for hours.
|
|
93
|
+
*/
|
|
94
|
+
function noteRateLimit(err, now = Date.now()) {
|
|
95
|
+
const scope = err instanceof api_1.ApiError
|
|
96
|
+
? String(err.details?.scope ?? '')
|
|
97
|
+
: '';
|
|
98
|
+
const jitter = 1_500 + Math.floor(Math.random() * 1_500);
|
|
99
|
+
const state = {
|
|
100
|
+
scope: scope || undefined,
|
|
101
|
+
seenAt: now,
|
|
102
|
+
resetAt: Math.min(now + parseRetryAfterMs(err) + jitter, now + maxPauseMs() + jitter),
|
|
103
|
+
};
|
|
104
|
+
writeFileGate(state);
|
|
105
|
+
return state;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Remaining ms until the shared gate lifts (0 when clear/expired). Reads the
|
|
109
|
+
* file every call so subprocesses stay in sync.
|
|
110
|
+
*/
|
|
111
|
+
function gateRemainingMs(now = Date.now()) {
|
|
112
|
+
const state = readFileGate();
|
|
113
|
+
if (!state)
|
|
114
|
+
return 0;
|
|
115
|
+
return Math.max(0, state.resetAt - now);
|
|
116
|
+
}
|
|
117
|
+
/** Async-sleep until the shared gate lifts. Returns ms actually waited. */
|
|
118
|
+
async function waitIfGated(log, now = Date.now()) {
|
|
119
|
+
const remaining = gateRemainingMs(now);
|
|
120
|
+
if (remaining <= 0)
|
|
121
|
+
return 0;
|
|
122
|
+
const state = readFileGate();
|
|
123
|
+
log?.(`[rate-gate] user rate-limited${state?.scope ? ` (${state.scope})` : ''} - pausing ${Math.ceil(remaining / 1000)}s`);
|
|
124
|
+
await new Promise((r) => setTimeout(r, remaining));
|
|
125
|
+
log?.('[rate-gate] pause complete - resuming requests');
|
|
126
|
+
return remaining;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=rate-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-gate.js","sourceRoot":"","sources":["../../src/lib/rate-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface BridgeRuntime {
|
|
2
|
+
port: number;
|
|
3
|
+
pid: number;
|
|
4
|
+
startedAt: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function runtimeFile(): string;
|
|
7
|
+
/** Runtime file written by the daemon on start (stale entries are fine). */
|
|
8
|
+
export declare function writeRuntimeFile(entry: BridgeRuntime): void;
|
|
9
|
+
export declare function readRuntimeFile(): BridgeRuntime | null;
|
|
10
|
+
/**
|
|
11
|
+
* Best arbiter base URL: explicit env override > runtime file > probe the
|
|
12
|
+
* candidate ports once. Returns null when no daemon answers - callers must
|
|
13
|
+
* fail open.
|
|
14
|
+
*/
|
|
15
|
+
export declare function discoverArbiter(): Promise<string | null>;
|
|
16
|
+
export type WsEventType = 'lock.waiting' | 'lock.granted' | 'lock.released' | 'build.start' | 'build.finish' | 'peer.ping' | 'presence.here' | 'worktree.created';
|
|
17
|
+
export interface WsEvent {
|
|
18
|
+
type: WsEventType;
|
|
19
|
+
/** ISO timestamp (filled automatically). */
|
|
20
|
+
ts?: string;
|
|
21
|
+
dir?: string;
|
|
22
|
+
agentId?: string;
|
|
23
|
+
kind?: string;
|
|
24
|
+
taskId?: string;
|
|
25
|
+
note?: string;
|
|
26
|
+
}
|
|
27
|
+
/** Log always; relay to the daemon's SSE hub when reachable. Never throws. */
|
|
28
|
+
export declare function publishEvent(event: WsEvent): void;
|
|
29
|
+
/** Convenience: did `file` appear recently (used by tests). */
|
|
30
|
+
export declare function arbitrationLogExists(): boolean;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runtimeFile = runtimeFile;
|
|
4
|
+
exports.writeRuntimeFile = writeRuntimeFile;
|
|
5
|
+
exports.readRuntimeFile = readRuntimeFile;
|
|
6
|
+
exports.discoverArbiter = discoverArbiter;
|
|
7
|
+
exports.publishEvent = publishEvent;
|
|
8
|
+
exports.arbitrationLogExists = arbitrationLogExists;
|
|
9
|
+
/**
|
|
10
|
+
* Workspace event bus (IMP-950): local-only pings between agent processes.
|
|
11
|
+
*
|
|
12
|
+
* Truth lives on the filesystem (repo-lock); this module only adds
|
|
13
|
+
* visibility - "agent B is waiting on my folder", "build finished in X".
|
|
14
|
+
* Events are ALWAYS appended to ~/.teamshare/arbitration.log and,
|
|
15
|
+
* best-effort, POSTed to the daemon's /arbitrate/publish endpoint which
|
|
16
|
+
* fans them out over SSE (GET /arbitrate/events). A dead daemon never
|
|
17
|
+
* blocks anything here.
|
|
18
|
+
*/
|
|
19
|
+
const node_fs_1 = require("node:fs");
|
|
20
|
+
const node_os_1 = require("node:os");
|
|
21
|
+
const node_path_1 = require("node:path");
|
|
22
|
+
const config_1 = require("../config");
|
|
23
|
+
const repo_lock_1 = require("./repo-lock");
|
|
24
|
+
const RUNTIME_FILE = (0, node_path_1.join)((0, node_os_1.homedir)(), '.teamshare', 'runtime.json');
|
|
25
|
+
function runtimeFile() {
|
|
26
|
+
return RUNTIME_FILE;
|
|
27
|
+
}
|
|
28
|
+
/** Runtime file written by the daemon on start (stale entries are fine). */
|
|
29
|
+
function writeRuntimeFile(entry) {
|
|
30
|
+
try {
|
|
31
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.join)(RUNTIME_FILE, '..'), { recursive: true });
|
|
32
|
+
(0, node_fs_1.writeFileSync)(RUNTIME_FILE, JSON.stringify(entry, null, 2), 'utf8');
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
/* best-effort */
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function readRuntimeFile() {
|
|
39
|
+
try {
|
|
40
|
+
const raw = JSON.parse((0, node_fs_1.readFileSync)(RUNTIME_FILE, 'utf8'));
|
|
41
|
+
return raw && typeof raw.port === 'number' ? raw : null;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Best arbiter base URL: explicit env override > runtime file > probe the
|
|
49
|
+
* candidate ports once. Returns null when no daemon answers - callers must
|
|
50
|
+
* fail open.
|
|
51
|
+
*/
|
|
52
|
+
async function discoverArbiter() {
|
|
53
|
+
const forced = process.env.TS_ARBITER_URL;
|
|
54
|
+
if (forced)
|
|
55
|
+
return forced.replace(/\/$/, '');
|
|
56
|
+
const runtime = readRuntimeFile();
|
|
57
|
+
if (runtime) {
|
|
58
|
+
const base = `http://127.0.0.1:${runtime.port}`;
|
|
59
|
+
if (await pingOk(base))
|
|
60
|
+
return base;
|
|
61
|
+
}
|
|
62
|
+
for (const port of config_1.BRIDGE_CANDIDATE_PORTS) {
|
|
63
|
+
const base = `http://127.0.0.1:${port}`;
|
|
64
|
+
if (await pingOk(base))
|
|
65
|
+
return base;
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
async function pingOk(base) {
|
|
70
|
+
try {
|
|
71
|
+
const res = await fetch(`${base}/ping`, { signal: AbortSignal.timeout(700) });
|
|
72
|
+
return res.ok;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/** Log always; relay to the daemon's SSE hub when reachable. Never throws. */
|
|
79
|
+
function publishEvent(event) {
|
|
80
|
+
const full = { ts: new Date().toISOString(), ...event };
|
|
81
|
+
(0, repo_lock_1.logArbitration)(`${full.type}${full.dir ? ` dir=${full.dir}` : ''}` +
|
|
82
|
+
`${full.agentId ? ` agent=${full.agentId}` : ''}` +
|
|
83
|
+
`${full.note ? ` note=${full.note}` : ''}`);
|
|
84
|
+
void relay(full).catch(() => undefined);
|
|
85
|
+
}
|
|
86
|
+
async function relay(event) {
|
|
87
|
+
const base = await discoverArbiter();
|
|
88
|
+
if (!base)
|
|
89
|
+
return;
|
|
90
|
+
await fetch(`${base}/arbitrate/publish`, {
|
|
91
|
+
method: 'POST',
|
|
92
|
+
headers: { 'Content-Type': 'application/json' },
|
|
93
|
+
body: JSON.stringify({ ok: true, event }),
|
|
94
|
+
signal: AbortSignal.timeout(1200),
|
|
95
|
+
}).catch(() => undefined);
|
|
96
|
+
}
|
|
97
|
+
/** Convenience: did `file` appear recently (used by tests). */
|
|
98
|
+
function arbitrationLogExists() {
|
|
99
|
+
return (0, node_fs_1.existsSync)((0, node_path_1.join)((0, node_os_1.homedir)(), '.teamshare', 'arbitration.log'));
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bus.js","sourceRoot":"","sources":["../../../src/lib/workspace/bus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command classification (IMP-950): decides how intrusive a shell command
|
|
3
|
+
* is before anyone runs it. One table feeds BOTH arbitration layers:
|
|
4
|
+
* - bridge-owned spawns (orchestrator runner) arbitrate in-process;
|
|
5
|
+
* - PATH shims consult this via the arbiter's acquire endpoint.
|
|
6
|
+
*
|
|
7
|
+
* Philosophy: known-mutating commands are exclusive; known-read-only are
|
|
8
|
+
* shared; long-lived dev servers take a shared hold for their lifetime so
|
|
9
|
+
* an exclusive seeker can SEE them (and ping) without being blocked forever;
|
|
10
|
+
* everything else passes through untouched - fail-open beats bricking.
|
|
11
|
+
*/
|
|
12
|
+
export type CommandClass =
|
|
13
|
+
/** Excludes all other holders for its duration. */
|
|
14
|
+
'exclusive'
|
|
15
|
+
/** Coexists with other shared holders; blocked only by exclusive. */
|
|
16
|
+
| 'shared'
|
|
17
|
+
/** Shared hold kept alive while the command runs (dev servers). */
|
|
18
|
+
| 'long-shared'
|
|
19
|
+
/** No arbitration at all. */
|
|
20
|
+
| 'passthrough';
|
|
21
|
+
export interface Classification {
|
|
22
|
+
cls: CommandClass;
|
|
23
|
+
/** Human label used in lock files + pings ("npm install"). */
|
|
24
|
+
label: string;
|
|
25
|
+
/** Machine-global resources also required (engine DLLs, package stores). */
|
|
26
|
+
global?: string[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Classify a full command line. Never throws - unknown input is
|
|
30
|
+
* passthrough.
|
|
31
|
+
*/
|
|
32
|
+
export declare function classifyCommand(commandLine: string): Classification;
|