@botiverse/oar 0.76.2 → 0.77.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/assets/brands/NOTICE.md +3 -3
- package/assets/brands/codebuddy-on-dark.svg +1 -0
- package/assets/brands/codebuddy-on-light.svg +1 -0
- package/assets/brands/codebuddy.svg +1 -0
- package/dist/brands.d.ts +8 -0
- package/dist/brands.d.ts.map +1 -1
- package/dist/brands.js +8 -0
- package/dist/brands.js.map +1 -1
- package/dist/contracts/index.d.ts +1 -1
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/login.d.ts +2 -0
- package/dist/contracts/login.d.ts.map +1 -1
- package/dist/contracts/provider-auth.d.ts +14 -4
- package/dist/contracts/provider-auth.d.ts.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/observe/redact-record.js +2 -2
- package/dist/observe/redact-record.js.map +1 -1
- package/dist/runtimes/codebuddy/account-control.d.ts +13 -0
- package/dist/runtimes/codebuddy/account-control.d.ts.map +1 -0
- package/dist/runtimes/codebuddy/account-control.js +88 -0
- package/dist/runtimes/codebuddy/account-control.js.map +1 -0
- package/dist/runtimes/codebuddy/auth-status.d.ts +7 -0
- package/dist/runtimes/codebuddy/auth-status.d.ts.map +1 -0
- package/dist/runtimes/codebuddy/auth-status.js +44 -0
- package/dist/runtimes/codebuddy/auth-status.js.map +1 -0
- package/dist/runtimes/codebuddy/extensions.d.ts +5 -0
- package/dist/runtimes/codebuddy/extensions.d.ts.map +1 -0
- package/dist/runtimes/codebuddy/extensions.js +28 -0
- package/dist/runtimes/codebuddy/extensions.js.map +1 -0
- package/dist/runtimes/codebuddy/failure.d.ts +5 -0
- package/dist/runtimes/codebuddy/failure.d.ts.map +1 -0
- package/dist/runtimes/codebuddy/failure.js +35 -0
- package/dist/runtimes/codebuddy/failure.js.map +1 -0
- package/dist/runtimes/codebuddy/index.d.ts +20 -0
- package/dist/runtimes/codebuddy/index.d.ts.map +1 -0
- package/dist/runtimes/codebuddy/index.js +15 -0
- package/dist/runtimes/codebuddy/index.js.map +1 -0
- package/dist/runtimes/codebuddy/installation.d.ts +2 -0
- package/dist/runtimes/codebuddy/installation.d.ts.map +1 -0
- package/dist/runtimes/codebuddy/installation.js +7 -0
- package/dist/runtimes/codebuddy/installation.js.map +1 -0
- package/dist/runtimes/codebuddy/list-models.d.ts +6 -0
- package/dist/runtimes/codebuddy/list-models.d.ts.map +1 -0
- package/dist/runtimes/codebuddy/list-models.js +90 -0
- package/dist/runtimes/codebuddy/list-models.js.map +1 -0
- package/dist/runtimes/codebuddy/login.d.ts +6 -0
- package/dist/runtimes/codebuddy/login.d.ts.map +1 -0
- package/dist/runtimes/codebuddy/login.js +110 -0
- package/dist/runtimes/codebuddy/login.js.map +1 -0
- package/dist/runtimes/codebuddy/options.d.ts +5 -0
- package/dist/runtimes/codebuddy/options.d.ts.map +1 -0
- package/dist/runtimes/codebuddy/options.js +21 -0
- package/dist/runtimes/codebuddy/options.js.map +1 -0
- package/dist/runtimes/codebuddy/prompt-file.d.ts +6 -0
- package/dist/runtimes/codebuddy/prompt-file.d.ts.map +1 -0
- package/dist/runtimes/codebuddy/prompt-file.js +20 -0
- package/dist/runtimes/codebuddy/prompt-file.js.map +1 -0
- package/dist/runtimes/codebuddy/session.d.ts +5 -0
- package/dist/runtimes/codebuddy/session.d.ts.map +1 -0
- package/dist/runtimes/codebuddy/session.js +52 -0
- package/dist/runtimes/codebuddy/session.js.map +1 -0
- package/dist/runtimes/cursor/auth-status.js +1 -1
- package/dist/runtimes/cursor/auth-status.js.map +1 -1
- package/dist/runtimes/pi/auth.d.ts +1 -1
- package/dist/runtimes/pi/auth.d.ts.map +1 -1
- package/dist/runtimes/pi/auth.js +36 -8
- package/dist/runtimes/pi/auth.js.map +1 -1
- package/dist/runtimes/pi/config-value.d.ts +3 -0
- package/dist/runtimes/pi/config-value.d.ts.map +1 -0
- package/dist/runtimes/pi/config-value.js +5 -0
- package/dist/runtimes/pi/config-value.js.map +1 -0
- package/dist/runtimes/pi/index.d.ts +2 -0
- package/dist/runtimes/pi/index.d.ts.map +1 -1
- package/dist/runtimes/pi/index.js +1 -0
- package/dist/runtimes/pi/index.js.map +1 -1
- package/dist/runtimes/pi/mcp.d.ts +1 -7
- package/dist/runtimes/pi/mcp.d.ts.map +1 -1
- package/dist/runtimes/pi/mcp.js +2 -9
- package/dist/runtimes/pi/mcp.js.map +1 -1
- package/dist/runtimes/qoder/daemon.js +2 -2
- package/dist/runtimes/qoder/daemon.js.map +1 -1
- package/dist/runtimes/qwen/auth-status.js +1 -1
- package/dist/runtimes/qwen/auth-status.js.map +1 -1
- package/dist/runtimes/qwen/projection.d.ts.map +1 -1
- package/dist/runtimes/qwen/projection.js +6 -1
- package/dist/runtimes/qwen/projection.js.map +1 -1
- package/dist/shared/credential-redaction.d.ts +4 -0
- package/dist/shared/credential-redaction.d.ts.map +1 -1
- package/dist/shared/credential-redaction.js +13 -4
- package/dist/shared/credential-redaction.js.map +1 -1
- package/dist/shared/stream-json/content.d.ts +2 -1
- package/dist/shared/stream-json/content.d.ts.map +1 -1
- package/dist/shared/stream-json/content.js +21 -9
- package/dist/shared/stream-json/content.js.map +1 -1
- package/dist/shared/stream-json/profile.d.ts +2 -0
- package/dist/shared/stream-json/profile.d.ts.map +1 -1
- package/dist/shared/stream-json/projection.js +1 -1
- package/dist/shared/stream-json/projection.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { TurnOutcome } from "../../contracts/session.js";
|
|
2
|
+
import { type JsonRecord } from "../../shared/json.js";
|
|
3
|
+
/** A successful prompt RPC can still carry a failed native task outcome. */
|
|
4
|
+
export declare function codebuddyPromptOutcome(response: JsonRecord): TurnOutcome | null;
|
|
5
|
+
//# sourceMappingURL=failure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failure.d.ts","sources":["../../../src/runtimes/codebuddy/failure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE5E,OAAO,EAAiC,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAQtF,4EAA4E;AAC5E,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI,CAqB/E"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { failureFromStatus } from "../../shared/failure-class.js";
|
|
2
|
+
import { asNumber, asRecord, parseJson } from "../../shared/json.js";
|
|
3
|
+
// Native 2.178.1 error categories precede the less specific HTTP status.
|
|
4
|
+
const CATEGORIES = {
|
|
5
|
+
quota: "quota", auth: "auth", custom_model_auth: "auth", network: "unknown",
|
|
6
|
+
model_service: "provider", empty_model_response: "provider", internal: "unknown",
|
|
7
|
+
};
|
|
8
|
+
/** A successful prompt RPC can still carry a failed native task outcome. */
|
|
9
|
+
export function codebuddyPromptOutcome(response) {
|
|
10
|
+
if (response.stopReason === "cancelled") {
|
|
11
|
+
return { kind: "aborted" };
|
|
12
|
+
}
|
|
13
|
+
// oxlint-disable-next-line eslint/no-underscore-dangle -- Native ACP extension envelope.
|
|
14
|
+
const meta = asRecord(response._meta);
|
|
15
|
+
const outcome = meta?.["codebuddy.ai/outcome"];
|
|
16
|
+
if (response.stopReason !== "refusal" && !(typeof outcome === "string" && outcome.startsWith("FAILED"))) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
const raw = meta?.["codebuddy.ai/errorMessage"];
|
|
20
|
+
const error = typeof raw === "string" ? asRecord(parseJson(raw)) : null;
|
|
21
|
+
const nested = asRecord(error?.error);
|
|
22
|
+
const data = asRecord(error?.data);
|
|
23
|
+
const nestedData = asRecord(nested?.data);
|
|
24
|
+
const category = data?.category ?? nestedData?.category;
|
|
25
|
+
const status = asNumber(data?.statusCode) ?? asNumber(nestedData?.statusCode);
|
|
26
|
+
const message = error?.message ?? nested?.message;
|
|
27
|
+
const fallback = typeof outcome === "string" ? outcome : String(response.stopReason);
|
|
28
|
+
return {
|
|
29
|
+
kind: "failed", failure: (typeof category === "string" ? CATEGORIES[category] : undefined)
|
|
30
|
+
?? (status === null ? "unknown" : failureFromStatus(status)),
|
|
31
|
+
reason: typeof message === "string" ? message : fallback,
|
|
32
|
+
...(status === null ? {} : { status }),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=failure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failure.js","sources":["../../../src/runtimes/codebuddy/failure.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAmB,MAAM,sBAAsB,CAAC;AAEtF,yEAAyE;AACzE,MAAM,UAAU,GAAoD;IAClE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS;IAC3E,aAAa,EAAE,UAAU,EAAE,oBAAoB,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS;CACjF,CAAC;AAEF,4EAA4E;AAC5E,MAAM,UAAU,sBAAsB,CAAC,QAAoB;IACzD,IAAI,QAAQ,CAAC,UAAU,KAAK,WAAW,EAAE,CAAC;QAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAAC,CAAC;IACxE,yFAAyF;IACzF,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,EAAE,CAAC,sBAAsB,CAAC,CAAC;IAC/C,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IACzH,MAAM,GAAG,GAAG,IAAI,EAAE,CAAC,2BAA2B,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,UAAU,EAAE,QAAQ,CAAC;IACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,MAAM,EAAE,OAAO,CAAC;IAClD,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACrF,OAAO;QACL,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;eACrF,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;QACxD,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;KACvC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const codebuddyRuntime: {
|
|
2
|
+
readonly id: "codebuddy";
|
|
3
|
+
readonly brand: {
|
|
4
|
+
readonly name: "CodeBuddy Code";
|
|
5
|
+
readonly icon: `data:image/svg+xml,${string}`;
|
|
6
|
+
readonly icons: {
|
|
7
|
+
readonly light: `data:image/svg+xml,${string}`;
|
|
8
|
+
readonly dark: `data:image/svg+xml,${string}`;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
readonly refusedSessionOptions: Readonly<Partial<Record<import("../../contracts/runtime.js").RefusableSessionOption, string>>>;
|
|
12
|
+
readonly installation: import("../../browser.js").InstallationProbe;
|
|
13
|
+
readonly listModels: (installation: import("../../browser.js").AvailableInstallation, options?: import("../../browser.js").ListModelsOptions | undefined) => Promise<import("../../browser.js").ListModelsResult>;
|
|
14
|
+
readonly login: (installation: import("../../browser.js").AvailableInstallation, interaction: import("../../browser.js").ProviderLoginInteraction, options?: import("../../contracts/login.js").LoginOptions | undefined) => Promise<import("../../contracts/login.js").LoginResult>;
|
|
15
|
+
readonly authStatus: (installation: import("../../browser.js").AvailableInstallation, options?: import("../../contracts/login.js").AuthStatusOptions | undefined) => Promise<import("../../contracts/login.js").AuthStatus>;
|
|
16
|
+
readonly session: (installation: import("../../browser.js").AvailableInstallation, options: import("../../browser.js").SessionOptions) => Promise<import("../../browser.js").Session>;
|
|
17
|
+
} & import("../../browser.js").RuntimeInventories & {
|
|
18
|
+
readonly brand: import("../../brands.js").RuntimeBrand;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sources":["../../../src/runtimes/codebuddy/index.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;CAQ3B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { runtimeBrands } from "../../brands.js";
|
|
2
|
+
import { defineRuntime } from "../../contracts/runtime.js";
|
|
3
|
+
import { onFirstCall } from "../../shared/lazy.js";
|
|
4
|
+
import { codebuddyInstallation } from "./installation.js";
|
|
5
|
+
import { codebuddyRefusedSessionOptions } from "./options.js";
|
|
6
|
+
export const codebuddyRuntime = defineRuntime({
|
|
7
|
+
id: "codebuddy", brand: runtimeBrands.codebuddy,
|
|
8
|
+
refusedSessionOptions: codebuddyRefusedSessionOptions,
|
|
9
|
+
installation: codebuddyInstallation,
|
|
10
|
+
listModels: onFirstCall(async () => { const { codebuddyListModels } = await import("./list-models.js"); return codebuddyListModels; }),
|
|
11
|
+
login: onFirstCall(async () => { const { codebuddyLogin } = await import("./login.js"); return codebuddyLogin; }),
|
|
12
|
+
authStatus: onFirstCall(async () => { const { codebuddyAuthStatus } = await import("./auth-status.js"); return codebuddyAuthStatus; }),
|
|
13
|
+
session: onFirstCall(async () => { const { codebuddySession } = await import("./session.js"); return codebuddySession; }),
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/runtimes/codebuddy/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAE9D,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAC5C,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,CAAC,SAAS;IAC/C,qBAAqB,EAAE,8BAA8B;IACrD,YAAY,EAAE,qBAAqB;IACnC,UAAU,EAAE,WAAW,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACtI,KAAK,EAAE,WAAW,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;IACjH,UAAU,EAAE,WAAW,CAAC,KAAK,IAA+B,EAAE,GAAG,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACjK,OAAO,EAAE,WAAW,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC1H,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installation.d.ts","sources":["../../../src/runtimes/codebuddy/installation.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB,8CAEpB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { environmentHome } from "../../shared/environment-home.js";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { executableInstallation } from "../../shared/installation.js";
|
|
4
|
+
export const codebuddyInstallation = executableInstallation("OAR_CODEBUDDY_BIN", "codebuddy", (env) => [
|
|
5
|
+
path.join(environmentHome(env), ".local", "bin", process.platform === "win32" ? "codebuddy.exe" : "codebuddy"),
|
|
6
|
+
], ["--help"]);
|
|
7
|
+
//# sourceMappingURL=installation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installation.js","sources":["../../../src/runtimes/codebuddy/installation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,MAAM,CAAC,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,mBAAmB,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;IACrG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC;CAC/G,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ModelEntry, ModelLister } from "../../contracts/list-models.js";
|
|
2
|
+
/** CodeBuddy 2.178.1 returns the model menu and current selection on session/new.
|
|
3
|
+
* The thought-level menu belongs to that current model only. */
|
|
4
|
+
export declare function projectCodebuddyModels(response: unknown): ModelEntry[] | undefined;
|
|
5
|
+
export declare const codebuddyListModels: ModelLister;
|
|
6
|
+
//# sourceMappingURL=list-models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-models.d.ts","sources":["../../../src/runtimes/codebuddy/list-models.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAe9E;gEACgE;AAChE,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,UAAU,EAAE,GAAG,SAAS,CA6BlF;AAuCD,eAAO,MAAM,mBAAmB,EAAE,WAkBjC,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { sessionEnvironment } from "../../shared/environment.js";
|
|
2
|
+
/* oxlint-disable typescript/promise-function-async -- Deadline callbacks deliberately return the SDK's native promises. */
|
|
3
|
+
import { client as createClient, methods, PROTOCOL_VERSION, RequestError, } from "@agentclientprotocol/sdk";
|
|
4
|
+
import { startAcpProcess, withAcpDeadline } from "../../shared/acp/process.js";
|
|
5
|
+
import { acpThoughtLevelOption } from "../../shared/acp/model.js";
|
|
6
|
+
import { asRecord, asRecordList } from "../../shared/json.js";
|
|
7
|
+
import { listingCwd } from "../../shared/listing-cwd.js";
|
|
8
|
+
function text(value) {
|
|
9
|
+
if (typeof value !== "string") {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
const trimmed = value.trim();
|
|
13
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
14
|
+
}
|
|
15
|
+
/** CodeBuddy 2.178.1 returns the model menu and current selection on session/new.
|
|
16
|
+
* The thought-level menu belongs to that current model only. */
|
|
17
|
+
export function projectCodebuddyModels(response) {
|
|
18
|
+
const root = asRecord(response);
|
|
19
|
+
const modelOption = asRecordList(root?.configOptions).find((option) => option.id === "model");
|
|
20
|
+
if (modelOption === undefined) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
// A new session's current model: what a session uses with no `model` set.
|
|
24
|
+
const current = text(modelOption.currentValue);
|
|
25
|
+
const thinking = acpThoughtLevelOption(root);
|
|
26
|
+
const effortLevels = asRecordList(thinking?.options)
|
|
27
|
+
.map((option) => text(option.value))
|
|
28
|
+
.filter((value) => value !== undefined && value !== "enabled" && value !== "disabled");
|
|
29
|
+
const defaultEffort = text(thinking?.currentValue);
|
|
30
|
+
const entries = [];
|
|
31
|
+
for (const model of asRecordList(modelOption.options)) {
|
|
32
|
+
const id = text(model.value);
|
|
33
|
+
if (id === undefined) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
const displayName = text(model.name);
|
|
37
|
+
entries.push({
|
|
38
|
+
id,
|
|
39
|
+
...(displayName === undefined || displayName === id ? {} : { displayName }),
|
|
40
|
+
...(id === current ? { default: true } : {}),
|
|
41
|
+
...(id === current && effortLevels.length > 0 ? { effortLevels } : {}),
|
|
42
|
+
...(id === current && defaultEffort !== undefined && effortLevels.includes(defaultEffort) ? { defaultEffort } : {}),
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
return entries;
|
|
46
|
+
}
|
|
47
|
+
async function readNewSession(command, cwd, timeoutMs, env) {
|
|
48
|
+
const runtime = startAcpProcess(command, ["--acp", "--permission-mode", "bypassPermissions"], createClient({ name: "oar" }), { cwd, env });
|
|
49
|
+
try {
|
|
50
|
+
const initialize = methods.agent.initialize;
|
|
51
|
+
await withAcpDeadline(runtime, initialize, timeoutMs, (requestOptions) => runtime.connection.agent.request(initialize, {
|
|
52
|
+
protocolVersion: PROTOCOL_VERSION,
|
|
53
|
+
clientCapabilities: {
|
|
54
|
+
fs: { readTextFile: false, writeTextFile: false },
|
|
55
|
+
terminal: false,
|
|
56
|
+
},
|
|
57
|
+
clientInfo: { name: "oar", version: "0.0.0" },
|
|
58
|
+
}, requestOptions));
|
|
59
|
+
// No `authenticate` or `session/close`: the server reads its
|
|
60
|
+
// own persisted login, and the process is killed once the list is read.
|
|
61
|
+
const newSession = methods.agent.session.new;
|
|
62
|
+
const response = await withAcpDeadline(runtime, newSession, timeoutMs, (requestOptions) => runtime.connection.agent.request(newSession, { cwd, mcpServers: [] }, requestOptions));
|
|
63
|
+
return asRecord(response) ?? {};
|
|
64
|
+
}
|
|
65
|
+
finally {
|
|
66
|
+
runtime.kill();
|
|
67
|
+
await runtime.exited;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export const codebuddyListModels = async (installation, options = {}) => {
|
|
71
|
+
if (installation.via !== "executable") {
|
|
72
|
+
return { kind: "unsupported", reason: "codebuddy model listing requires the CodeBuddy executable" };
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
const response = await readNewSession(installation.command, listingCwd(options), options.timeoutMs ?? 30_000, sessionEnvironment(options.env));
|
|
76
|
+
const models = projectCodebuddyModels(response);
|
|
77
|
+
if (models === undefined) {
|
|
78
|
+
return { kind: "unsupported", reason: "this CodeBuddy build returns no model config option on session/new" };
|
|
79
|
+
}
|
|
80
|
+
return { kind: "ok", models };
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (error instanceof RequestError && (error.code === -32_000 || /auth(?:entication)?|log(?:ged)? ?in/iu.test(error.message))) {
|
|
84
|
+
return { kind: "unauthenticated", detail: "CodeBuddy requires authentication" };
|
|
85
|
+
}
|
|
86
|
+
// oxlint-disable-next-line eslint/preserve-caught-error -- Native errors may contain credentials or account details.
|
|
87
|
+
throw new Error("Failed to list CodeBuddy models");
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=list-models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-models.js","sources":["../../../src/runtimes/codebuddy/list-models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AvailableInstallation } from "../../contracts/installation.js";
|
|
2
|
+
import type { LoginOptions, LoginResult } from "../../contracts/login.js";
|
|
3
|
+
import type { ProviderLoginInteraction } from "../../contracts/provider-auth.js";
|
|
4
|
+
/** Keep the CLI's current account environment, including CODEBUDDY_INTERNET_ENVIRONMENT. */
|
|
5
|
+
export declare function codebuddyLogin(installation: AvailableInstallation, interaction: ProviderLoginInteraction, options?: LoginOptions): Promise<LoginResult>;
|
|
6
|
+
//# sourceMappingURL=login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sources":["../../../src/runtimes/codebuddy/login.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAcjF,4FAA4F;AAC5F,wBAAsB,cAAc,CAAC,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAE,wBAAwB,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAgEjK"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { sessionEnvironment } from "../../shared/environment.js";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { errorMessage, loginBounds, loginExecutable, stoppedResult } from "../../shared/login.js";
|
|
4
|
+
import { asRecord } from "../../shared/json.js";
|
|
5
|
+
import { codebuddyAccountControl } from "./account-control.js";
|
|
6
|
+
import { codebuddyAuthStatus } from "./auth-status.js";
|
|
7
|
+
/** Native auth_failed includes token retrieval errors, not an explicit authorization denial. */
|
|
8
|
+
function authenticationFailure(value, redact) {
|
|
9
|
+
const error = asRecord(value);
|
|
10
|
+
if (error?.type === "cancelled") {
|
|
11
|
+
return { kind: "cancelled" };
|
|
12
|
+
}
|
|
13
|
+
const reason = error?.type === "timeout" ? "timed_out" : "process_failed";
|
|
14
|
+
return { kind: "failed", reason, detail: typeof error?.message === "string" ? redact(error.message) : "CodeBuddy reported that authentication failed" };
|
|
15
|
+
}
|
|
16
|
+
/** Keep the CLI's current account environment, including CODEBUDDY_INTERNET_ENVIRONMENT. */
|
|
17
|
+
export async function codebuddyLogin(installation, interaction, options = {}) {
|
|
18
|
+
const target = loginExecutable(installation, "CodeBuddy", undefined, sessionEnvironment(options.env));
|
|
19
|
+
if (target.kind === "settled") {
|
|
20
|
+
return target.result;
|
|
21
|
+
}
|
|
22
|
+
const aborted = () => interaction.signal?.aborted === true;
|
|
23
|
+
if (aborted()) {
|
|
24
|
+
return { kind: "cancelled" };
|
|
25
|
+
}
|
|
26
|
+
const timeoutMs = options.timeoutMs ?? 5 * 60_000;
|
|
27
|
+
const deadline = Date.now() + timeoutMs;
|
|
28
|
+
const bounds = loginBounds(interaction.signal, timeoutMs);
|
|
29
|
+
const interactionFailed = Promise.withResolvers();
|
|
30
|
+
let client = undefined;
|
|
31
|
+
const flowState = { success: false };
|
|
32
|
+
let settled = false;
|
|
33
|
+
const env = sessionEnvironment(options.env);
|
|
34
|
+
if (options.openBrowser === false) {
|
|
35
|
+
// CodeBuddy's UrlUtils honors BROWSER and does not fall back when it fails.
|
|
36
|
+
env.BROWSER = process.platform === "win32" ? path.join(env.SystemRoot ?? String.raw `C:\Windows`, "System32", "hostname.exe") : "true";
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
client = codebuddyAccountControl(target.installation.command, env, (request) => {
|
|
40
|
+
if (settled) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (request.subtype === "auth_result_callback" && request.success === true) {
|
|
44
|
+
flowState.success = true;
|
|
45
|
+
}
|
|
46
|
+
if (request.subtype === "auth_result_callback" && request.success === false && asRecord(request.error) !== null) {
|
|
47
|
+
flowState.failure = authenticationFailure(request.error, (text) => client?.secrets.line(text) ?? "CodeBuddy authentication failed");
|
|
48
|
+
}
|
|
49
|
+
const auth = asRecord(request.authState);
|
|
50
|
+
if (request.subtype === "auth_url_callback" && typeof auth?.authUrl === "string") {
|
|
51
|
+
try {
|
|
52
|
+
interaction.onEvent({ kind: "auth_url", url: auth.authUrl, instructions: "Open this URL to sign in to CodeBuddy." });
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
settled = true;
|
|
56
|
+
interactionFailed.resolve({ kind: "failed", reason: "interaction_failed", detail: client?.secrets.line(errorMessage(error)) ?? "Could not display the login link" });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
const control = client;
|
|
61
|
+
const flow = async () => {
|
|
62
|
+
await control.request({ subtype: "initialize" });
|
|
63
|
+
if (settled) {
|
|
64
|
+
return { kind: "failed", reason: "interaction_failed" };
|
|
65
|
+
}
|
|
66
|
+
// 2.173.0 lists cli-external-link but its provider inherits a different
|
|
67
|
+
// getAuthenticationType. Leave selection to native support(), as the TUI does.
|
|
68
|
+
const answer = await control.request({ subtype: "authenticate" });
|
|
69
|
+
flowState.success ||= answer.success === true;
|
|
70
|
+
return flowState.success ? { kind: "logged_in" } : flowState.failure ?? authenticationFailure(answer.error, (text) => control.secrets.line(text));
|
|
71
|
+
};
|
|
72
|
+
const stopped = async () => stoppedResult(await bounds.stopped, timeoutMs);
|
|
73
|
+
let result = { kind: "failed", reason: "process_failed" };
|
|
74
|
+
try {
|
|
75
|
+
result = await Promise.race([flow(), stopped(), interactionFailed.promise]);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
result = flowState.failure ?? { kind: "failed", reason: "process_failed", detail: control.secrets.line(errorMessage(error)) };
|
|
79
|
+
}
|
|
80
|
+
settled = true;
|
|
81
|
+
control.process.stop();
|
|
82
|
+
await control.process.exited;
|
|
83
|
+
if (!flowState.success) {
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
if (aborted()) {
|
|
87
|
+
return { kind: "logged_in" };
|
|
88
|
+
}
|
|
89
|
+
// Confirmation shares the login deadline and cancellation signal. A
|
|
90
|
+
// native success remains success unless a fresh read contradicts it.
|
|
91
|
+
const remaining = deadline - Date.now();
|
|
92
|
+
if (remaining <= 0) {
|
|
93
|
+
return { kind: "logged_in" };
|
|
94
|
+
}
|
|
95
|
+
const status = await codebuddyAuthStatus(installation, { env: options.env, timeoutMs: Math.min(30_000, remaining) }, interaction.signal);
|
|
96
|
+
return status.kind === "logged_out"
|
|
97
|
+
? { kind: "failed", reason: "not_logged_in", detail: "CodeBuddy reported success but its account query reads logged out" }
|
|
98
|
+
: { kind: "logged_in" };
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return { kind: "failed", reason: "process_failed", detail: "CodeBuddy login could not start" };
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
settled = true;
|
|
105
|
+
bounds.dispose();
|
|
106
|
+
client?.process.stop();
|
|
107
|
+
await client?.process.exited;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sources":["../../../src/runtimes/codebuddy/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { RefusedSessionOptions } from "../../contracts/runtime.js";
|
|
2
|
+
import type { SessionOptions } from "../../contracts/session.js";
|
|
3
|
+
export declare const codebuddyRefusedSessionOptions: RefusedSessionOptions;
|
|
4
|
+
export declare function checkCodebuddyLaunchArgs(args: SessionOptions["launchArgs"]): void;
|
|
5
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sources":["../../../src/runtimes/codebuddy/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE,eAAO,MAAM,8BAA8B,EAAE,qBAQ5C,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG,IAAI,CAOjF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { UnsupportedOptionError } from "../../contracts/errors.js";
|
|
2
|
+
export const codebuddyRefusedSessionOptions = {
|
|
3
|
+
goals: "CodeBuddy ACP has no verified structured goal controls",
|
|
4
|
+
appendSystemPrompt: "CodeBuddy ACP prompt append has no verified private input channel",
|
|
5
|
+
userConfiguration: "CodeBuddy has no verified way to exclude user configuration while preserving native credentials and history",
|
|
6
|
+
outputSchema: "CodeBuddy ACP has no verified final-output schema channel",
|
|
7
|
+
name: "CodeBuddy has no verified session name option",
|
|
8
|
+
serviceTier: "CodeBuddy ACP has no verified service-tier setting and readback",
|
|
9
|
+
additionalDirectories: "CodeBuddy ACP does not advertise additionalDirectories",
|
|
10
|
+
};
|
|
11
|
+
export function checkCodebuddyLaunchArgs(args) {
|
|
12
|
+
const managed = new Set(["--acp", "--acp-transport", "--serve", "--print", "-p", "--input-format", "--output-format",
|
|
13
|
+
"--resume", "-r", "--continue", "-c", "--session-id", "--fork-session", "--permission-mode", "--permission-mode-before-plan", "--system-prompt", "--system-prompt-file", "--"]);
|
|
14
|
+
for (const arg of args ?? []) {
|
|
15
|
+
const flag = arg.split("=", 1)[0] ?? arg;
|
|
16
|
+
if (managed.has(flag)) {
|
|
17
|
+
throw new UnsupportedOptionError("launchArgs", `CodeBuddy launchArgs cannot override ${flag}; OAR owns the protocol and session identity`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sources":["../../../src/runtimes/codebuddy/options.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,CAAC,MAAM,8BAA8B,GAA0B;IACnE,KAAK,EAAE,wDAAwD;IAC/D,kBAAkB,EAAE,mEAAmE;IACvF,iBAAiB,EAAE,6GAA6G;IAChI,YAAY,EAAE,2DAA2D;IACzE,IAAI,EAAE,+CAA+C;IACrD,WAAW,EAAE,iEAAiE;IAC9E,qBAAqB,EAAE,wDAAwD;CAChF,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,IAAkC;IACzE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,iBAAiB;QAClH,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,IAAI,CAAC,CAAC,CAAC;IAClL,KAAK,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QACzC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,MAAM,IAAI,sBAAsB,CAAC,YAAY,EAAE,wCAAwC,IAAI,8CAA8C,CAAC,CAAC;QAAC,CAAC;IACxK,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-file.d.ts","sources":["../../../src/runtimes/codebuddy/prompt-file.ts"],"names":[],"mappings":"AAIA,8EAA8E;AAC9E,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,MAAM,IAAI,IAAI,CAAA;CAAE,CAAC,CAQrH"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { privateTempDir } from "../../shared/private-temp.js";
|
|
4
|
+
/** Keep the prompt out of argv; retain its private file until native exit. */
|
|
5
|
+
export async function codebuddyPromptFile(text) {
|
|
6
|
+
const directory = await privateTempDir("oar-codebuddy-prompt-");
|
|
7
|
+
try {
|
|
8
|
+
const file = path.join(directory.path, "system.txt");
|
|
9
|
+
await writeFile(file, text, { flag: "wx", mode: 0o600 });
|
|
10
|
+
if (await readFile(file, "utf8") !== text) {
|
|
11
|
+
throw new Error("CodeBuddy system prompt file did not retain the supplied text");
|
|
12
|
+
}
|
|
13
|
+
return { args: ["--system-prompt-file", file], remove: () => { directory.remove(); } };
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
directory.remove();
|
|
17
|
+
throw error;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=prompt-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-file.js","sources":["../../../src/runtimes/codebuddy/prompt-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY;IACpD,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,uBAAuB,CAAC,CAAC;IAChE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACrD,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAAC,CAAC;QAChI,OAAO,EAAE,IAAI,EAAE,CAAC,sBAAsB,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QAAC,MAAM,KAAK,CAAC;IAAC,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { StartSession } from "../../contracts/session.js";
|
|
2
|
+
import { type AcpSessionProfile } from "../../shared/acp/session.js";
|
|
3
|
+
export declare const codebuddyAcpProfile: AcpSessionProfile;
|
|
4
|
+
export declare const codebuddySession: StartSession;
|
|
5
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sources":["../../../src/runtimes/codebuddy/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAM/E,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAOjF,eAAO,MAAM,mBAAmB,EAAE,iBAejC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,YAY9B,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { UnsupportedOptionError } from "../../contracts/errors.js";
|
|
2
|
+
import { codebuddyPromptFile } from "./prompt-file.js";
|
|
3
|
+
import { codebuddyPromptOutcome } from "./failure.js";
|
|
4
|
+
import { codebuddyNotifications } from "./extensions.js";
|
|
5
|
+
import { redactCodebuddyNotification } from "../../shared/credential-redaction.js";
|
|
6
|
+
import { acpSession } from "../../shared/acp/session.js";
|
|
7
|
+
import { refuseSessionOptions } from "../../shared/session-options.js";
|
|
8
|
+
import { checkCodebuddyLaunchArgs, codebuddyRefusedSessionOptions } from "./options.js";
|
|
9
|
+
const args = (options) => ["--acp", "--permission-mode", "bypassPermissions",
|
|
10
|
+
...((options.disallowedTools?.length ?? 0) === 0 ? [] : ["--disallowedTools", options.disallowedTools?.join(",") ?? ""])];
|
|
11
|
+
export const codebuddyAcpProfile = {
|
|
12
|
+
args,
|
|
13
|
+
capabilities: { queue: { durable: false }, attribution: "opaque" },
|
|
14
|
+
requestTimeoutMs: 30_000,
|
|
15
|
+
modelViaConfigOption: true,
|
|
16
|
+
promptOutcome: codebuddyPromptOutcome,
|
|
17
|
+
extensionNotifications: codebuddyNotifications,
|
|
18
|
+
redactExtensionNotification: redactCodebuddyNotification,
|
|
19
|
+
validateOptions: (options) => {
|
|
20
|
+
refuseSessionOptions(codebuddyRefusedSessionOptions, options);
|
|
21
|
+
checkCodebuddyLaunchArgs(options.launchArgs);
|
|
22
|
+
if (options.systemPrompt !== undefined && options.systemPrompt.trim() === "") {
|
|
23
|
+
throw new UnsupportedOptionError("systemPrompt", "CodeBuddy treats an empty replacement as omitted");
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
export const codebuddySession = async (installation, options) => {
|
|
28
|
+
codebuddyAcpProfile.validateOptions?.(options);
|
|
29
|
+
const file = options.systemPrompt === undefined ? undefined : await codebuddyPromptFile(options.systemPrompt);
|
|
30
|
+
try {
|
|
31
|
+
const session = await acpSession({ ...codebuddyAcpProfile, args: (input) => [...args(input), ...file?.args ?? []] })(installation, options);
|
|
32
|
+
const unsubscribe = session.rawEvents((record) => {
|
|
33
|
+
if (record.kind === "response" && record.body.kind === "exited") {
|
|
34
|
+
file?.remove();
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
return { ...session, dispose: async () => {
|
|
38
|
+
try {
|
|
39
|
+
await session.dispose();
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
unsubscribe();
|
|
43
|
+
file?.remove();
|
|
44
|
+
}
|
|
45
|
+
} };
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
file?.remove();
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sources":["../../../src/runtimes/codebuddy/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,7 +63,7 @@ export function cursorAuthStatusWith(load) {
|
|
|
63
63
|
return { kind: "unknown", detail: "cursor's sign-in status needs the bundled @cursor/sdk" };
|
|
64
64
|
}
|
|
65
65
|
if (process.env.CURSOR_API_KEY !== undefined) {
|
|
66
|
-
return { kind: "unknown", detail: "Sessions use CURSOR_API_KEY from the environment; Cursor.auth.status neither reads nor validates that key.", source: STATUS_SOURCE };
|
|
66
|
+
return { kind: "unknown", configured: ["environment: CURSOR_API_KEY"], detail: "Sessions use CURSOR_API_KEY from the environment; Cursor.auth.status neither reads nor validates that key.", source: STATUS_SOURCE };
|
|
67
67
|
}
|
|
68
68
|
const sdk = await loadedSdk(load);
|
|
69
69
|
if ("failed" in sdk) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-status.js","sources":["../../../src/runtimes/cursor/auth-status.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"auth-status.js","sources":["../../../src/runtimes/cursor/auth-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { LoginProvider, ProviderAuthFacade, ProviderLoginEvent, ProviderLoginPrompt } from "../../contracts/provider-auth.js";
|
|
2
2
|
import type { ModelRuntime } from "@earendil-works/pi-coding-agent";
|
|
3
|
-
import {
|
|
3
|
+
import type { PiModelRuntimePaths } from "./facade-runtime.js";
|
|
4
4
|
type PiLoginParameters = Parameters<ModelRuntime["login"]>;
|
|
5
5
|
type PiInteraction = PiLoginParameters[2];
|
|
6
6
|
type PiAuthEvent = Parameters<PiInteraction["notify"]>[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sources":["../../../src/runtimes/pi/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAEb,kBAAkB,EAElB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sources":["../../../src/runtimes/pi/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAEb,kBAAkB,EAElB,kBAAkB,EAIlB,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAS/D,KAAK,iBAAiB,GAAG,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AAE3D,KAAK,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC1C,KAAK,WAAW,GAAG,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,KAAK,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3D,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,kBAAkB,CAsBnE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,mBAAmB,CAoBvE;AAED,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,KAAK,CAAC,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;YAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5G,QAAQ,CAAC,MAAM,CAAC,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KACvE,CAAC;CACH;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,eAAe,GAAG,aAAa,GAAG,SAAS,CAiBpF;AA6ID,kIAAkI;AAClI,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AAExD,yEAAyE;AACzE,wBAAsB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAI3G"}
|