@sideboard-ai/core 0.1.202 → 0.1.203
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/{abletime-KGPD3UUJ.js → abletime-JFGZBDHH.js} +4 -2
- package/dist/{abletime-345SE3B4.js → abletime-SISJEPJ3.js} +4 -2
- package/dist/abletime-oauth-7TD5Z2QV.js +265 -0
- package/dist/abletime-oauth-OSQYFB3E.js +40 -0
- package/dist/abletime-rest-QPJTDLKX.js +25 -0
- package/dist/abletime-rest-ZJGWYALM.js +24 -0
- package/dist/{agents-OXX3ONVY.js → agents-3755WYQM.js} +4 -4
- package/dist/{agents-573ZDIX6.js → agents-ZMWL43SP.js} +4 -4
- package/dist/{app-settings-V6IHESEQ.js → app-settings-LGHMNHSP.js} +1 -1
- package/dist/{app-settings-AXCURTZJ.js → app-settings-YEPF46IJ.js} +1 -1
- package/dist/{chunk-7NKY2OX7.js → chunk-2DVCCLII.js} +78 -62
- package/dist/chunk-3PYH2RLA.js +388 -0
- package/dist/{chunk-A2TAKYSG.js → chunk-5IXJTUST.js} +4 -4
- package/dist/chunk-6VEIKW5C.js +390 -0
- package/dist/chunk-BFEBFGCS.js +250 -0
- package/dist/{chunk-STPZQR5B.js → chunk-CMGRV36E.js} +1 -1
- package/dist/{chunk-PGQGP4FD.js → chunk-FZ6IBUKY.js} +36 -218
- package/dist/{chunk-7AHAABKN.js → chunk-FZYYEMET.js} +36 -228
- package/dist/{chunk-54RSAMBH.js → chunk-LCU6GBZP.js} +2 -2
- package/dist/chunk-MHPINQKY.js +260 -0
- package/dist/chunk-PJHFNFXA.js +243 -0
- package/dist/{chunk-CXFW5LIH.js → chunk-QFBBUFD4.js} +38 -3
- package/dist/{chunk-RPX6VDW7.js → chunk-QSEF2YVQ.js} +1 -1
- package/dist/{chunk-LJHC62LZ.js → chunk-TNDUTGDV.js} +2 -2
- package/dist/{chunk-27GGXX27.js → chunk-TZNJKZ2A.js} +82 -66
- package/dist/{chunk-NIVF5NDN.js → chunk-X2TFUFIS.js} +4 -4
- package/dist/{chunk-ISV5IFH3.js → chunk-X743YN5Y.js} +38 -3
- package/dist/{coordinator-prompt-TY5FHAXC.js → coordinator-prompt-2B2JA2IE.js} +3 -3
- package/dist/{coordinator-prompt-BH4EHFOO.js → coordinator-prompt-U4PEZDAW.js} +3 -3
- package/dist/{global-workspace-NLLAPQJI.js → global-workspace-JPJ3FKKY.js} +3 -3
- package/dist/{global-workspace-5AZEEQRU.js → global-workspace-PU7ZS3LS.js} +3 -3
- package/dist/index.cjs +912 -142
- package/dist/index.d.cts +61 -9
- package/dist/index.d.ts +61 -9
- package/dist/index.js +63 -18
- package/dist/mcp/run-stdio.cjs +843 -114
- package/dist/mcp/run-stdio.js +22 -20
- package/dist/{orchestrator-JNSQDRZI.js → orchestrator-3A6KUTNI.js} +5 -5
- package/dist/{orchestrator-NCYKEI3E.js → orchestrator-Q33M24ZJ.js} +6 -6
- package/dist/{workspaces-RP76JH3J.js → workspaces-IMG7ZRUQ.js} +3 -3
- package/dist/{workspaces-PEWYWVHZ.js → workspaces-U6P6DB44.js} +3 -3
- package/dist/{worktree-ZQEUKSNE.js → worktree-FL3UIUKQ.js} +2 -2
- package/dist/{worktree-72TZWUSH.js → worktree-JSCDJPBU.js} +2 -2
- package/package.json +1 -1
|
@@ -17,9 +17,11 @@ import {
|
|
|
17
17
|
toAbleTimeIssueInfo,
|
|
18
18
|
updateAbleTimeTask,
|
|
19
19
|
verifyAbleTimeConnection
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-FZ6IBUKY.js";
|
|
21
|
+
import "./chunk-6VEIKW5C.js";
|
|
22
|
+
import "./chunk-PJHFNFXA.js";
|
|
21
23
|
import "./chunk-VKQGAWHY.js";
|
|
22
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-X743YN5Y.js";
|
|
23
25
|
import "./chunk-NSTQ6QKD.js";
|
|
24
26
|
import "./chunk-KGZBYWZ3.js";
|
|
25
27
|
import "./chunk-EQNRWDLN.js";
|
|
@@ -15,9 +15,11 @@ import {
|
|
|
15
15
|
toAbleTimeIssueInfo,
|
|
16
16
|
updateAbleTimeTask,
|
|
17
17
|
verifyAbleTimeConnection
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-FZYYEMET.js";
|
|
19
|
+
import "./chunk-3PYH2RLA.js";
|
|
20
|
+
import "./chunk-BFEBFGCS.js";
|
|
19
21
|
import "./chunk-N7WZ6NIN.js";
|
|
20
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-QFBBUFD4.js";
|
|
21
23
|
import "./chunk-4TR3HZFT.js";
|
|
22
24
|
import "./chunk-WDRMZKVB.js";
|
|
23
25
|
import "./chunk-JT7R45JB.js";
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
DEFAULT_ABLETIME_HOST,
|
|
5
|
+
normalizeAbleTimeHost
|
|
6
|
+
} from "./chunk-PJHFNFXA.js";
|
|
7
|
+
import {
|
|
8
|
+
httpFetch
|
|
9
|
+
} from "./chunk-VKQGAWHY.js";
|
|
10
|
+
import {
|
|
11
|
+
disconnectAbleTimeConnection,
|
|
12
|
+
getAbleTimeHost,
|
|
13
|
+
loadAppSettings,
|
|
14
|
+
saveAbleTimeConnection
|
|
15
|
+
} from "./chunk-X743YN5Y.js";
|
|
16
|
+
import "./chunk-NSTQ6QKD.js";
|
|
17
|
+
import "./chunk-KGZBYWZ3.js";
|
|
18
|
+
import "./chunk-EQNRWDLN.js";
|
|
19
|
+
import "./chunk-FJZWM2ON.js";
|
|
20
|
+
|
|
21
|
+
// src/integrations/abletime-oauth.ts
|
|
22
|
+
import { createHash, randomBytes } from "crypto";
|
|
23
|
+
import { createServer } from "http";
|
|
24
|
+
var ABLETIME_OAUTH_PORT = 19849;
|
|
25
|
+
var ABLETIME_OAUTH_REDIRECT = `http://127.0.0.1:${ABLETIME_OAUTH_PORT}/callback`;
|
|
26
|
+
var BAKED_ABLETIME_OAUTH_CLIENT_ID = "https://www.sideboard.cloud/oauth/abletime-client.json";
|
|
27
|
+
var ABLETIME_OAUTH_RESOURCE = `${DEFAULT_ABLETIME_HOST}/api/public/v2/mcp`;
|
|
28
|
+
var REFRESH_SKEW_MS = 5 * 6e4;
|
|
29
|
+
function hasBakedAbleTimeOAuth() {
|
|
30
|
+
return Boolean(BAKED_ABLETIME_OAUTH_CLIENT_ID.trim());
|
|
31
|
+
}
|
|
32
|
+
function ableTimeOAuthClientId() {
|
|
33
|
+
return process.env.SIDEBOARD_ABLETIME_OAUTH_CLIENT_ID?.trim() || BAKED_ABLETIME_OAUTH_CLIENT_ID.trim();
|
|
34
|
+
}
|
|
35
|
+
function ableTimeOAuthResource(host) {
|
|
36
|
+
return `${normalizeAbleTimeHost(host)}/api/public/v2/mcp`;
|
|
37
|
+
}
|
|
38
|
+
function createAbleTimePkce() {
|
|
39
|
+
const verifier = randomBytes(32).toString("base64url");
|
|
40
|
+
const challenge = createHash("sha256").update(verifier).digest("base64url");
|
|
41
|
+
return { verifier, challenge };
|
|
42
|
+
}
|
|
43
|
+
function ableTimeOAuthAuthorizeUrl(clientId, state, codeChallenge, host) {
|
|
44
|
+
const base = normalizeAbleTimeHost(host);
|
|
45
|
+
const params = new URLSearchParams({
|
|
46
|
+
response_type: "code",
|
|
47
|
+
client_id: clientId,
|
|
48
|
+
redirect_uri: ABLETIME_OAUTH_REDIRECT,
|
|
49
|
+
code_challenge: codeChallenge,
|
|
50
|
+
code_challenge_method: "S256",
|
|
51
|
+
state,
|
|
52
|
+
resource: ableTimeOAuthResource(host)
|
|
53
|
+
});
|
|
54
|
+
return `${base}/oauth/authorize?${params.toString()}`;
|
|
55
|
+
}
|
|
56
|
+
function htmlPage(title, body) {
|
|
57
|
+
return `<!doctype html><html><head><meta charset="utf-8"><title>${title}</title>
|
|
58
|
+
<style>body{font-family:ui-sans-serif,system-ui,sans-serif;padding:48px 24px;max-width:36rem;margin:0 auto;color:#1a1a1a}
|
|
59
|
+
h1{font-size:1.25rem}p{line-height:1.5;color:#444}</style></head><body>${body}</body></html>`;
|
|
60
|
+
}
|
|
61
|
+
async function exchangeAbleTimeToken(body, host) {
|
|
62
|
+
const url = `${normalizeAbleTimeHost(host)}/api/oauth/token`;
|
|
63
|
+
const res = await httpFetch(url, {
|
|
64
|
+
method: "POST",
|
|
65
|
+
headers: {
|
|
66
|
+
Accept: "application/json",
|
|
67
|
+
"Content-Type": "application/x-www-form-urlencoded"
|
|
68
|
+
},
|
|
69
|
+
body
|
|
70
|
+
});
|
|
71
|
+
const data = await res.json().catch(() => ({}));
|
|
72
|
+
if (!res.ok || data.error || !data.access_token?.trim()) {
|
|
73
|
+
const detail = data.error_description || data.error || `HTTP ${res.status}`;
|
|
74
|
+
throw new Error(`AbleTime OAuth token exchange failed: ${detail}`);
|
|
75
|
+
}
|
|
76
|
+
return data;
|
|
77
|
+
}
|
|
78
|
+
function persistAbleTimeTokens(data, input) {
|
|
79
|
+
return saveAbleTimeConnection({
|
|
80
|
+
accessToken: data.access_token.trim(),
|
|
81
|
+
refreshToken: data.refresh_token?.trim(),
|
|
82
|
+
expiresIn: data.expires_in,
|
|
83
|
+
host: input?.host,
|
|
84
|
+
viewerName: input?.viewerName
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
var refreshInFlight = null;
|
|
88
|
+
async function refreshAbleTimeAccessToken(refreshToken) {
|
|
89
|
+
const host = getAbleTimeHost();
|
|
90
|
+
const body = new URLSearchParams({
|
|
91
|
+
grant_type: "refresh_token",
|
|
92
|
+
refresh_token: refreshToken,
|
|
93
|
+
client_id: ableTimeOAuthClientId(),
|
|
94
|
+
resource: ableTimeOAuthResource(host)
|
|
95
|
+
});
|
|
96
|
+
try {
|
|
97
|
+
const data = await exchangeAbleTimeToken(body, host);
|
|
98
|
+
persistAbleTimeTokens(data, { host });
|
|
99
|
+
return data.access_token.trim();
|
|
100
|
+
} catch (err) {
|
|
101
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
102
|
+
if (/invalid_grant|invalid_token|unauthorized/i.test(message)) {
|
|
103
|
+
disconnectAbleTimeConnection();
|
|
104
|
+
throw new Error("AbleTime sign-in expired \u2014 connect again in Account settings");
|
|
105
|
+
}
|
|
106
|
+
throw err;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
async function ensureAbleTimeAccessToken() {
|
|
110
|
+
const settings = loadAppSettings();
|
|
111
|
+
const access = settings.integrations.abletimeAccessToken?.trim() || "";
|
|
112
|
+
const refresh = settings.integrations.abletimeRefreshToken?.trim() || "";
|
|
113
|
+
const expiresAt = settings.integrations.abletimeTokenExpiresAt ?? 0;
|
|
114
|
+
if (access && (!refresh || Date.now() < expiresAt - REFRESH_SKEW_MS)) {
|
|
115
|
+
return access;
|
|
116
|
+
}
|
|
117
|
+
if (refresh) {
|
|
118
|
+
if (!refreshInFlight) {
|
|
119
|
+
refreshInFlight = refreshAbleTimeAccessToken(refresh).finally(() => {
|
|
120
|
+
refreshInFlight = null;
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
return refreshInFlight;
|
|
124
|
+
}
|
|
125
|
+
return access || null;
|
|
126
|
+
}
|
|
127
|
+
var ABLETIME_OAUTH_CANCELLED = "AbleTime sign-in cancelled";
|
|
128
|
+
var AbleTimeOAuthCancelledError = class extends Error {
|
|
129
|
+
constructor(message = ABLETIME_OAUTH_CANCELLED) {
|
|
130
|
+
super(message);
|
|
131
|
+
this.name = "AbleTimeOAuthCancelledError";
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
function isAbleTimeOAuthCancelled(err) {
|
|
135
|
+
if (err instanceof AbleTimeOAuthCancelledError) return true;
|
|
136
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
137
|
+
return message.includes(ABLETIME_OAUTH_CANCELLED);
|
|
138
|
+
}
|
|
139
|
+
async function startAbleTimeOAuth(opts) {
|
|
140
|
+
if (opts?.signal?.aborted) {
|
|
141
|
+
throw new AbleTimeOAuthCancelledError();
|
|
142
|
+
}
|
|
143
|
+
const clientId = ableTimeOAuthClientId();
|
|
144
|
+
if (!clientId) {
|
|
145
|
+
throw new Error(
|
|
146
|
+
`AbleTime browser sign-in needs a Client ID Metadata Document URL. Host ${BAKED_ABLETIME_OAUTH_CLIENT_ID} (see site/oauth/abletime-client.json), or set SIDEBOARD_ABLETIME_OAUTH_CLIENT_ID.`
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
const host = opts?.host?.trim() || void 0;
|
|
150
|
+
const state = randomBytes(16).toString("hex");
|
|
151
|
+
const pkce = createAbleTimePkce();
|
|
152
|
+
const authorizeUrl = ableTimeOAuthAuthorizeUrl(clientId, state, pkce.challenge, host);
|
|
153
|
+
const timeoutMs = opts?.timeoutMs ?? 5 * 6e4;
|
|
154
|
+
const code = await new Promise((resolve, reject) => {
|
|
155
|
+
let settled = false;
|
|
156
|
+
const finish = (err, value) => {
|
|
157
|
+
if (settled) return;
|
|
158
|
+
settled = true;
|
|
159
|
+
cleanup();
|
|
160
|
+
if (err) reject(err);
|
|
161
|
+
else resolve(value);
|
|
162
|
+
};
|
|
163
|
+
const server = createServer((req, res) => {
|
|
164
|
+
try {
|
|
165
|
+
const url = new URL(req.url || "/", `http://127.0.0.1:${ABLETIME_OAUTH_PORT}`);
|
|
166
|
+
if (url.pathname !== "/callback") {
|
|
167
|
+
res.writeHead(404);
|
|
168
|
+
res.end("Not found");
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
const err = url.searchParams.get("error");
|
|
172
|
+
const gotState = url.searchParams.get("state");
|
|
173
|
+
const gotCode = url.searchParams.get("code");
|
|
174
|
+
if (err) {
|
|
175
|
+
res.writeHead(400, { "Content-Type": "text/html" });
|
|
176
|
+
res.end(htmlPage("AbleTime", `<h1>Authorization cancelled</h1><p>${err}</p>`));
|
|
177
|
+
finish(new AbleTimeOAuthCancelledError(`AbleTime OAuth: ${err}`));
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
if (gotState !== state || !gotCode) {
|
|
181
|
+
res.writeHead(400, { "Content-Type": "text/html" });
|
|
182
|
+
res.end(htmlPage("AbleTime", "<h1>Invalid callback</h1><p>State or code missing.</p>"));
|
|
183
|
+
finish(new Error("AbleTime OAuth callback was invalid"));
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
res.writeHead(200, { "Content-Type": "text/html" });
|
|
187
|
+
res.end(
|
|
188
|
+
htmlPage(
|
|
189
|
+
"AbleTime connected",
|
|
190
|
+
"<h1>AbleTime connected</h1><p>You can close this tab and return to Sideboard.</p>"
|
|
191
|
+
)
|
|
192
|
+
);
|
|
193
|
+
finish(void 0, gotCode);
|
|
194
|
+
} catch (e) {
|
|
195
|
+
finish(e instanceof Error ? e : new Error(String(e)));
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
const timer = setTimeout(() => {
|
|
199
|
+
finish(new Error("AbleTime sign-in timed out \u2014 try again"));
|
|
200
|
+
}, timeoutMs);
|
|
201
|
+
const onAbort = () => finish(new AbleTimeOAuthCancelledError());
|
|
202
|
+
const cleanup = () => {
|
|
203
|
+
clearTimeout(timer);
|
|
204
|
+
opts?.signal?.removeEventListener("abort", onAbort);
|
|
205
|
+
server.close();
|
|
206
|
+
};
|
|
207
|
+
opts?.signal?.addEventListener("abort", onAbort, { once: true });
|
|
208
|
+
if (opts?.signal?.aborted) {
|
|
209
|
+
onAbort();
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
server.on("error", (e) => {
|
|
213
|
+
finish(
|
|
214
|
+
e instanceof Error && e.code === "EADDRINUSE" ? new Error(
|
|
215
|
+
`Port ${ABLETIME_OAUTH_PORT} is in use. Close whatever is bound there, or paste an AbleTime token instead.`
|
|
216
|
+
) : e instanceof Error ? e : new Error(String(e))
|
|
217
|
+
);
|
|
218
|
+
});
|
|
219
|
+
server.listen(ABLETIME_OAUTH_PORT, "127.0.0.1", () => {
|
|
220
|
+
void Promise.resolve(opts?.openUrl?.(authorizeUrl)).catch((e) => {
|
|
221
|
+
finish(e instanceof Error ? e : new Error(String(e)));
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
const body = new URLSearchParams({
|
|
226
|
+
grant_type: "authorization_code",
|
|
227
|
+
code,
|
|
228
|
+
redirect_uri: ABLETIME_OAUTH_REDIRECT,
|
|
229
|
+
client_id: clientId,
|
|
230
|
+
code_verifier: pkce.verifier,
|
|
231
|
+
resource: ableTimeOAuthResource(host)
|
|
232
|
+
});
|
|
233
|
+
const data = await exchangeAbleTimeToken(body, host);
|
|
234
|
+
persistAbleTimeTokens(data, { host });
|
|
235
|
+
const token = data.access_token.trim();
|
|
236
|
+
try {
|
|
237
|
+
const { getAbleTimeOrientation } = await import("./abletime-JFGZBDHH.js");
|
|
238
|
+
const orientation = await getAbleTimeOrientation({ token, host });
|
|
239
|
+
return saveAbleTimeConnection({
|
|
240
|
+
accessToken: token,
|
|
241
|
+
refreshToken: data.refresh_token?.trim(),
|
|
242
|
+
expiresIn: data.expires_in,
|
|
243
|
+
host,
|
|
244
|
+
viewerName: orientation.viewer.name
|
|
245
|
+
});
|
|
246
|
+
} catch {
|
|
247
|
+
return loadAppSettings();
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
export {
|
|
251
|
+
ABLETIME_OAUTH_CANCELLED,
|
|
252
|
+
ABLETIME_OAUTH_PORT,
|
|
253
|
+
ABLETIME_OAUTH_REDIRECT,
|
|
254
|
+
ABLETIME_OAUTH_RESOURCE,
|
|
255
|
+
AbleTimeOAuthCancelledError,
|
|
256
|
+
BAKED_ABLETIME_OAUTH_CLIENT_ID,
|
|
257
|
+
ableTimeOAuthAuthorizeUrl,
|
|
258
|
+
ableTimeOAuthClientId,
|
|
259
|
+
ableTimeOAuthResource,
|
|
260
|
+
createAbleTimePkce,
|
|
261
|
+
ensureAbleTimeAccessToken,
|
|
262
|
+
hasBakedAbleTimeOAuth,
|
|
263
|
+
isAbleTimeOAuthCancelled,
|
|
264
|
+
startAbleTimeOAuth
|
|
265
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ABLETIME_OAUTH_CANCELLED,
|
|
3
|
+
ABLETIME_OAUTH_PORT,
|
|
4
|
+
ABLETIME_OAUTH_REDIRECT,
|
|
5
|
+
ABLETIME_OAUTH_RESOURCE,
|
|
6
|
+
AbleTimeOAuthCancelledError,
|
|
7
|
+
BAKED_ABLETIME_OAUTH_CLIENT_ID,
|
|
8
|
+
ableTimeOAuthAuthorizeUrl,
|
|
9
|
+
ableTimeOAuthClientId,
|
|
10
|
+
ableTimeOAuthResource,
|
|
11
|
+
createAbleTimePkce,
|
|
12
|
+
ensureAbleTimeAccessToken,
|
|
13
|
+
hasBakedAbleTimeOAuth,
|
|
14
|
+
isAbleTimeOAuthCancelled,
|
|
15
|
+
startAbleTimeOAuth
|
|
16
|
+
} from "./chunk-MHPINQKY.js";
|
|
17
|
+
import "./chunk-BFEBFGCS.js";
|
|
18
|
+
import "./chunk-N7WZ6NIN.js";
|
|
19
|
+
import "./chunk-QFBBUFD4.js";
|
|
20
|
+
import "./chunk-4TR3HZFT.js";
|
|
21
|
+
import "./chunk-WDRMZKVB.js";
|
|
22
|
+
import "./chunk-JT7R45JB.js";
|
|
23
|
+
import "./chunk-77WWLBCI.js";
|
|
24
|
+
import "./chunk-WFUDY6PC.js";
|
|
25
|
+
export {
|
|
26
|
+
ABLETIME_OAUTH_CANCELLED,
|
|
27
|
+
ABLETIME_OAUTH_PORT,
|
|
28
|
+
ABLETIME_OAUTH_REDIRECT,
|
|
29
|
+
ABLETIME_OAUTH_RESOURCE,
|
|
30
|
+
AbleTimeOAuthCancelledError,
|
|
31
|
+
BAKED_ABLETIME_OAUTH_CLIENT_ID,
|
|
32
|
+
ableTimeOAuthAuthorizeUrl,
|
|
33
|
+
ableTimeOAuthClientId,
|
|
34
|
+
ableTimeOAuthResource,
|
|
35
|
+
createAbleTimePkce,
|
|
36
|
+
ensureAbleTimeAccessToken,
|
|
37
|
+
hasBakedAbleTimeOAuth,
|
|
38
|
+
isAbleTimeOAuthCancelled,
|
|
39
|
+
startAbleTimeOAuth
|
|
40
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
ABLETIME_REST_PREFIX,
|
|
5
|
+
ableTimeDocFromText,
|
|
6
|
+
abletimeRestUrl,
|
|
7
|
+
callAbleTimeRestTool,
|
|
8
|
+
looksLikeAbleTimeUlid,
|
|
9
|
+
textFromAbleTimeDoc
|
|
10
|
+
} from "./chunk-6VEIKW5C.js";
|
|
11
|
+
import "./chunk-PJHFNFXA.js";
|
|
12
|
+
import "./chunk-VKQGAWHY.js";
|
|
13
|
+
import "./chunk-X743YN5Y.js";
|
|
14
|
+
import "./chunk-NSTQ6QKD.js";
|
|
15
|
+
import "./chunk-KGZBYWZ3.js";
|
|
16
|
+
import "./chunk-EQNRWDLN.js";
|
|
17
|
+
import "./chunk-FJZWM2ON.js";
|
|
18
|
+
export {
|
|
19
|
+
ABLETIME_REST_PREFIX,
|
|
20
|
+
ableTimeDocFromText,
|
|
21
|
+
abletimeRestUrl,
|
|
22
|
+
callAbleTimeRestTool,
|
|
23
|
+
looksLikeAbleTimeUlid,
|
|
24
|
+
textFromAbleTimeDoc
|
|
25
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ABLETIME_REST_PREFIX,
|
|
3
|
+
ableTimeDocFromText,
|
|
4
|
+
abletimeRestUrl,
|
|
5
|
+
callAbleTimeRestTool,
|
|
6
|
+
looksLikeAbleTimeUlid,
|
|
7
|
+
textFromAbleTimeDoc
|
|
8
|
+
} from "./chunk-3PYH2RLA.js";
|
|
9
|
+
import "./chunk-BFEBFGCS.js";
|
|
10
|
+
import "./chunk-N7WZ6NIN.js";
|
|
11
|
+
import "./chunk-QFBBUFD4.js";
|
|
12
|
+
import "./chunk-4TR3HZFT.js";
|
|
13
|
+
import "./chunk-WDRMZKVB.js";
|
|
14
|
+
import "./chunk-JT7R45JB.js";
|
|
15
|
+
import "./chunk-77WWLBCI.js";
|
|
16
|
+
import "./chunk-WFUDY6PC.js";
|
|
17
|
+
export {
|
|
18
|
+
ABLETIME_REST_PREFIX,
|
|
19
|
+
ableTimeDocFromText,
|
|
20
|
+
abletimeRestUrl,
|
|
21
|
+
callAbleTimeRestTool,
|
|
22
|
+
looksLikeAbleTimeUlid,
|
|
23
|
+
textFromAbleTimeDoc
|
|
24
|
+
};
|
|
@@ -44,9 +44,9 @@ import {
|
|
|
44
44
|
resolveLoginCommand,
|
|
45
45
|
resolveQuotaFallbackAgent,
|
|
46
46
|
whichOnPath
|
|
47
|
-
} from "./chunk-
|
|
48
|
-
import "./chunk-
|
|
49
|
-
import "./chunk-
|
|
47
|
+
} from "./chunk-5IXJTUST.js";
|
|
48
|
+
import "./chunk-TNDUTGDV.js";
|
|
49
|
+
import "./chunk-CMGRV36E.js";
|
|
50
50
|
import "./chunk-6K64FJDD.js";
|
|
51
51
|
import "./chunk-QQKDGPUI.js";
|
|
52
52
|
import "./chunk-SALM35KD.js";
|
|
@@ -63,7 +63,7 @@ import {
|
|
|
63
63
|
assertOrchestratorCapableAgent,
|
|
64
64
|
coerceOrchestratorAgent,
|
|
65
65
|
isOrchestratorCapableAgent
|
|
66
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-QFBBUFD4.js";
|
|
67
67
|
import "./chunk-4TR3HZFT.js";
|
|
68
68
|
import "./chunk-WDRMZKVB.js";
|
|
69
69
|
import "./chunk-JT7R45JB.js";
|
|
@@ -50,12 +50,12 @@ import {
|
|
|
50
50
|
resolveQuotaFallbackAgent,
|
|
51
51
|
turnCostUsdFromCursorUsage,
|
|
52
52
|
whichOnPath
|
|
53
|
-
} from "./chunk-
|
|
54
|
-
import "./chunk-
|
|
53
|
+
} from "./chunk-X2TFUFIS.js";
|
|
54
|
+
import "./chunk-LCU6GBZP.js";
|
|
55
55
|
import "./chunk-3OHR73VK.js";
|
|
56
56
|
import "./chunk-Y4MIXGPA.js";
|
|
57
57
|
import "./chunk-VKQGAWHY.js";
|
|
58
|
-
import "./chunk-
|
|
58
|
+
import "./chunk-QSEF2YVQ.js";
|
|
59
59
|
import "./chunk-D6JWYJ4P.js";
|
|
60
60
|
import "./chunk-INNLWYXW.js";
|
|
61
61
|
import "./chunk-SYFVUF2C.js";
|
|
@@ -73,7 +73,7 @@ import {
|
|
|
73
73
|
assertOrchestratorCapableAgent,
|
|
74
74
|
coerceOrchestratorAgent,
|
|
75
75
|
isOrchestratorCapableAgent
|
|
76
|
-
} from "./chunk-
|
|
76
|
+
} from "./chunk-X743YN5Y.js";
|
|
77
77
|
import "./chunk-NSTQ6QKD.js";
|
|
78
78
|
import "./chunk-KGZBYWZ3.js";
|
|
79
79
|
import "./chunk-EQNRWDLN.js";
|