@hachej/boring-agent 0.1.85 → 0.1.87
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.
|
@@ -1811,6 +1811,14 @@ async function prepareVercelDeploymentSnapshot(opts) {
|
|
|
1811
1811
|
});
|
|
1812
1812
|
}
|
|
1813
1813
|
|
|
1814
|
+
// src/server/config/workspaceRoot.ts
|
|
1815
|
+
var WORKSPACE_ROOT_ENV = "BORING_AGENT_WORKSPACE_ROOT";
|
|
1816
|
+
function resolveWorkspaceRoot(defaultRoot = process.cwd()) {
|
|
1817
|
+
const configured = process.env[WORKSPACE_ROOT_ENV]?.trim();
|
|
1818
|
+
if (!configured) return defaultRoot;
|
|
1819
|
+
return configured;
|
|
1820
|
+
}
|
|
1821
|
+
|
|
1814
1822
|
// src/server/runtime/createServerFileSearch.ts
|
|
1815
1823
|
var DEFAULT_LIMIT = 500;
|
|
1816
1824
|
var MAX_LIMIT = 5e3;
|
|
@@ -12827,7 +12835,7 @@ function requirePath(value, reply) {
|
|
|
12827
12835
|
return value;
|
|
12828
12836
|
}
|
|
12829
12837
|
function gitRoutes(app, opts, done) {
|
|
12830
|
-
async function
|
|
12838
|
+
async function resolveWorkspaceRoot2(request) {
|
|
12831
12839
|
const workspace = opts.getWorkspace ? await opts.getWorkspace(request) : opts.workspace;
|
|
12832
12840
|
return workspace === void 0 ? void 0 : getNodeWorkspaceHostRoot(workspace);
|
|
12833
12841
|
}
|
|
@@ -12835,7 +12843,7 @@ function gitRoutes(app, opts, done) {
|
|
|
12835
12843
|
const query = request.query;
|
|
12836
12844
|
const path4 = requirePath(query.path, reply);
|
|
12837
12845
|
if (path4 === null) return;
|
|
12838
|
-
const workspaceRoot = await
|
|
12846
|
+
const workspaceRoot = await resolveWorkspaceRoot2(request);
|
|
12839
12847
|
if (!workspaceRoot) {
|
|
12840
12848
|
return {
|
|
12841
12849
|
enabled: false,
|
|
@@ -13967,7 +13975,8 @@ var registerAgentRoutes = async (app, opts) => {
|
|
|
13967
13975
|
}
|
|
13968
13976
|
});
|
|
13969
13977
|
const modelsWorkspaceScoped = Boolean(opts.filterModels);
|
|
13970
|
-
const requestScopedRuntime = typeof opts.getWorkspaceId === "function" || typeof opts.getWorkspaceRoot === "function" || typeof opts.getTemplatePath === "function" || typeof opts.getPi === "function" || typeof opts.getExtraTools === "function" || typeof opts.getSessionNamespace === "function" || typeof opts.getSystemPromptDynamic === "function" || typeof opts.getTrustedWorkspaceRoot === "function";
|
|
13978
|
+
const requestScopedRuntime = typeof opts.getWorkspaceId === "function" || typeof opts.getWorkspaceRoot === "function" || typeof opts.getTemplatePath === "function" || typeof opts.getPi === "function" || typeof opts.getExtraTools === "function" || typeof opts.getSessionNamespace === "function" || typeof opts.getSystemPromptDynamic === "function" || typeof opts.getRuntimeScopeContribution === "function" || typeof opts.getTrustedWorkspaceRoot === "function";
|
|
13979
|
+
const runtimeScopeByRequest = /* @__PURE__ */ new WeakMap();
|
|
13971
13980
|
const sessionChangesTracker = new InMemorySessionChangesTracker();
|
|
13972
13981
|
const externalPluginsEnabled = opts.externalPlugins !== false;
|
|
13973
13982
|
async function resolveScopePi(workspaceId, root, request) {
|
|
@@ -13990,11 +13999,13 @@ var registerAgentRoutes = async (app, opts) => {
|
|
|
13990
13999
|
const pi = await resolveScopePi(workspaceId, root, request);
|
|
13991
14000
|
const sessionNamespace = normalizeSessionNamespace(opts.getSessionNamespace ? await opts.getSessionNamespace({ workspaceId, workspaceRoot: root, request, userId: trustedCtx?.userId }) : opts.sessionNamespace);
|
|
13992
14001
|
const extraToolsAuthSubject = opts.getExtraTools ? trustedCtx?.userId ?? getRequestAuthSubject2(request) : void 0;
|
|
14002
|
+
const contribution = await opts.getRuntimeScopeContribution?.({ workspaceId, workspaceRoot: root, request });
|
|
13993
14003
|
return {
|
|
13994
14004
|
root,
|
|
13995
14005
|
templatePath: scopedTemplatePath,
|
|
13996
14006
|
pi,
|
|
13997
14007
|
sessionNamespace,
|
|
14008
|
+
loadSystemPromptAppend: contribution?.loadSystemPromptAppend,
|
|
13998
14009
|
key: JSON.stringify([
|
|
13999
14010
|
resolvedMode,
|
|
14000
14011
|
workspaceId,
|
|
@@ -14002,10 +14013,26 @@ var registerAgentRoutes = async (app, opts) => {
|
|
|
14002
14013
|
scopedTemplatePath ?? null,
|
|
14003
14014
|
pi,
|
|
14004
14015
|
sessionNamespace ?? null,
|
|
14005
|
-
extraToolsAuthSubject ?? null
|
|
14016
|
+
extraToolsAuthSubject ?? null,
|
|
14017
|
+
contribution?.identity ?? null
|
|
14006
14018
|
])
|
|
14007
14019
|
};
|
|
14008
14020
|
}
|
|
14021
|
+
function getRuntimeScope(workspaceId, request, trustedCtx) {
|
|
14022
|
+
if (!request) return resolveRuntimeScope(workspaceId, void 0, trustedCtx);
|
|
14023
|
+
let scopes = runtimeScopeByRequest.get(request);
|
|
14024
|
+
if (!scopes) {
|
|
14025
|
+
scopes = /* @__PURE__ */ new Map();
|
|
14026
|
+
runtimeScopeByRequest.set(request, scopes);
|
|
14027
|
+
}
|
|
14028
|
+
const identity = JSON.stringify([workspaceId, trustedCtx?.userId ?? null]);
|
|
14029
|
+
let promise = scopes.get(identity);
|
|
14030
|
+
if (!promise) {
|
|
14031
|
+
promise = resolveRuntimeScope(workspaceId, request, trustedCtx);
|
|
14032
|
+
scopes.set(identity, promise);
|
|
14033
|
+
}
|
|
14034
|
+
return promise;
|
|
14035
|
+
}
|
|
14009
14036
|
async function resolveSkillScope(workspaceId, request) {
|
|
14010
14037
|
const root = request && opts.getWorkspaceRoot ? await opts.getWorkspaceRoot(workspaceId, request) : workspaceRoot;
|
|
14011
14038
|
const pi = await resolveScopePi(workspaceId, root, request);
|
|
@@ -14052,6 +14079,7 @@ var registerAgentRoutes = async (app, opts) => {
|
|
|
14052
14079
|
}
|
|
14053
14080
|
async function createRuntimeBinding(workspaceId, scope, request, trustedCtx) {
|
|
14054
14081
|
const root = scope.root;
|
|
14082
|
+
const scopedSystemPromptAppend = await scope.loadSystemPromptAppend?.();
|
|
14055
14083
|
const modeCtx = {
|
|
14056
14084
|
workspaceRoot: root,
|
|
14057
14085
|
sessionId: workspaceId,
|
|
@@ -14265,7 +14293,7 @@ var registerAgentRoutes = async (app, opts) => {
|
|
|
14265
14293
|
checkReadiness
|
|
14266
14294
|
}),
|
|
14267
14295
|
harnessFactory,
|
|
14268
|
-
systemPromptAppend: opts.systemPromptAppend,
|
|
14296
|
+
systemPromptAppend: [opts.systemPromptAppend, scopedSystemPromptAppend].filter(Boolean).join("\n\n") || void 0,
|
|
14269
14297
|
systemPromptDynamic,
|
|
14270
14298
|
telemetry: opts.telemetry,
|
|
14271
14299
|
metering: opts.metering,
|
|
@@ -14324,7 +14352,7 @@ var registerAgentRoutes = async (app, opts) => {
|
|
|
14324
14352
|
}
|
|
14325
14353
|
async function resolveRuntimeBinding(workspaceId, request, options = {}) {
|
|
14326
14354
|
bindingLifecycle.assertAdmission(workspaceId, request);
|
|
14327
|
-
const scope = await
|
|
14355
|
+
const scope = await getRuntimeScope(workspaceId, request, options.trustedCtx);
|
|
14328
14356
|
bindingLifecycle.assertAdmission(workspaceId, request);
|
|
14329
14357
|
const existing = bindingLifecycle.getEntry(scope.key);
|
|
14330
14358
|
if (existing) {
|
|
@@ -14746,6 +14774,8 @@ export {
|
|
|
14746
14774
|
getBoringAgentPathEntries,
|
|
14747
14775
|
getBoringAgentRuntimeEnv,
|
|
14748
14776
|
createDirectSandbox,
|
|
14777
|
+
validatePath,
|
|
14778
|
+
assertRealPathWithinWorkspace,
|
|
14749
14779
|
createNodeWorkspace,
|
|
14750
14780
|
createBwrapSandbox,
|
|
14751
14781
|
FileHandleStore,
|
|
@@ -14758,6 +14788,7 @@ export {
|
|
|
14758
14788
|
prepareDeploymentSnapshot,
|
|
14759
14789
|
createVercelDeploymentSnapshotProvider,
|
|
14760
14790
|
prepareVercelDeploymentSnapshot,
|
|
14791
|
+
resolveWorkspaceRoot,
|
|
14761
14792
|
REMOTE_WORKER_RUNTIME_CWD,
|
|
14762
14793
|
REMOTE_WORKER_PROVIDER,
|
|
14763
14794
|
WORKER_INTERNAL_TOKEN_HEADER,
|
package/dist/front/index.js
CHANGED
|
@@ -5714,7 +5714,7 @@ function sortByUpdatedDesc(a, b) {
|
|
|
5714
5714
|
return a.id.localeCompare(b.id);
|
|
5715
5715
|
}
|
|
5716
5716
|
|
|
5717
|
-
// ../../node_modules/.pnpm/@earendil-works+pi-tui@0.80.
|
|
5717
|
+
// ../../node_modules/.pnpm/@earendil-works+pi-tui@0.80.7/node_modules/@earendil-works/pi-tui/dist/fuzzy.js
|
|
5718
5718
|
function fuzzyMatch(query, text) {
|
|
5719
5719
|
const queryLower = query.toLowerCase();
|
|
5720
5720
|
const textLower = text.toLowerCase();
|
package/dist/front/styles.css
CHANGED
|
@@ -2521,32 +2521,32 @@
|
|
|
2521
2521
|
}
|
|
2522
2522
|
}
|
|
2523
2523
|
.dark\:bg-background {
|
|
2524
|
-
&:is(
|
|
2524
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
2525
2525
|
background-color: var(--background);
|
|
2526
2526
|
}
|
|
2527
2527
|
}
|
|
2528
2528
|
.dark\:\!text-\[var\(--shiki-dark\)\] {
|
|
2529
|
-
&:is(
|
|
2529
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
2530
2530
|
color: var(--shiki-dark) !important;
|
|
2531
2531
|
}
|
|
2532
2532
|
}
|
|
2533
2533
|
.dark\:text-amber-300 {
|
|
2534
|
-
&:is(
|
|
2534
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
2535
2535
|
color: var(--color-amber-300);
|
|
2536
2536
|
}
|
|
2537
2537
|
}
|
|
2538
2538
|
.dark\:text-zinc-100 {
|
|
2539
|
-
&:is(
|
|
2539
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
2540
2540
|
color: var(--color-zinc-100);
|
|
2541
2541
|
}
|
|
2542
2542
|
}
|
|
2543
2543
|
.dark\:text-zinc-300 {
|
|
2544
|
-
&:is(
|
|
2544
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
2545
2545
|
color: var(--color-zinc-300);
|
|
2546
2546
|
}
|
|
2547
2547
|
}
|
|
2548
2548
|
.dark\:hover\:bg-accent\/50 {
|
|
2549
|
-
&:is(
|
|
2549
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
2550
2550
|
&:hover {
|
|
2551
2551
|
@media (hover: hover) {
|
|
2552
2552
|
background-color: var(--accent);
|
|
@@ -2558,7 +2558,7 @@
|
|
|
2558
2558
|
}
|
|
2559
2559
|
}
|
|
2560
2560
|
.dark\:hover\:bg-muted {
|
|
2561
|
-
&:is(
|
|
2561
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
2562
2562
|
&:hover {
|
|
2563
2563
|
@media (hover: hover) {
|
|
2564
2564
|
background-color: var(--muted);
|
|
@@ -2674,7 +2674,7 @@
|
|
|
2674
2674
|
}
|
|
2675
2675
|
.\[\&_\[data-slot\=input-group\]\]\:dark\:\!bg-transparent {
|
|
2676
2676
|
& [data-slot=input-group] {
|
|
2677
|
-
&:is(
|
|
2677
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
2678
2678
|
background-color: transparent !important;
|
|
2679
2679
|
}
|
|
2680
2680
|
}
|
|
@@ -4921,12 +4921,12 @@
|
|
|
4921
4921
|
}
|
|
4922
4922
|
}
|
|
4923
4923
|
.dark\:border-input {
|
|
4924
|
-
&:is(
|
|
4924
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
4925
4925
|
border-color: var(--boring-input);
|
|
4926
4926
|
}
|
|
4927
4927
|
}
|
|
4928
4928
|
.dark\:bg-destructive\/60 {
|
|
4929
|
-
&:is(
|
|
4929
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
4930
4930
|
background-color: var(--boring-destructive);
|
|
4931
4931
|
@supports (color: color-mix(in lab, red, red)) {
|
|
4932
4932
|
background-color: color-mix(in oklab, var(--boring-destructive) 60%, transparent);
|
|
@@ -4934,7 +4934,7 @@
|
|
|
4934
4934
|
}
|
|
4935
4935
|
}
|
|
4936
4936
|
.dark\:bg-input\/30 {
|
|
4937
|
-
&:is(
|
|
4937
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
4938
4938
|
background-color: var(--boring-input);
|
|
4939
4939
|
@supports (color: color-mix(in lab, red, red)) {
|
|
4940
4940
|
background-color: color-mix(in oklab, var(--boring-input) 30%, transparent);
|
|
@@ -4942,17 +4942,17 @@
|
|
|
4942
4942
|
}
|
|
4943
4943
|
}
|
|
4944
4944
|
.dark\:bg-transparent {
|
|
4945
|
-
&:is(
|
|
4945
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
4946
4946
|
background-color: transparent;
|
|
4947
4947
|
}
|
|
4948
4948
|
}
|
|
4949
4949
|
.dark\:text-muted-foreground {
|
|
4950
|
-
&:is(
|
|
4950
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
4951
4951
|
color: var(--boring-muted-foreground);
|
|
4952
4952
|
}
|
|
4953
4953
|
}
|
|
4954
4954
|
.dark\:hover\:bg-input\/50 {
|
|
4955
|
-
&:is(
|
|
4955
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
4956
4956
|
&:hover {
|
|
4957
4957
|
@media (hover: hover) {
|
|
4958
4958
|
background-color: var(--boring-input);
|
|
@@ -4964,7 +4964,7 @@
|
|
|
4964
4964
|
}
|
|
4965
4965
|
}
|
|
4966
4966
|
.dark\:hover\:bg-muted\/40 {
|
|
4967
|
-
&:is(
|
|
4967
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
4968
4968
|
&:hover {
|
|
4969
4969
|
@media (hover: hover) {
|
|
4970
4970
|
background-color: var(--boring-muted);
|
|
@@ -4976,7 +4976,7 @@
|
|
|
4976
4976
|
}
|
|
4977
4977
|
}
|
|
4978
4978
|
.dark\:hover\:text-foreground {
|
|
4979
|
-
&:is(
|
|
4979
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
4980
4980
|
&:hover {
|
|
4981
4981
|
@media (hover: hover) {
|
|
4982
4982
|
color: var(--boring-foreground);
|
|
@@ -4985,7 +4985,7 @@
|
|
|
4985
4985
|
}
|
|
4986
4986
|
}
|
|
4987
4987
|
.dark\:focus-visible\:ring-destructive\/40 {
|
|
4988
|
-
&:is(
|
|
4988
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
4989
4989
|
&:focus-visible {
|
|
4990
4990
|
--tw-ring-color: var(--boring-destructive);
|
|
4991
4991
|
@supports (color: color-mix(in lab, red, red)) {
|
|
@@ -4995,7 +4995,7 @@
|
|
|
4995
4995
|
}
|
|
4996
4996
|
}
|
|
4997
4997
|
.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40 {
|
|
4998
|
-
&:is(
|
|
4998
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
4999
4999
|
&:has(*:is([data-slot][aria-invalid=true])) {
|
|
5000
5000
|
--tw-ring-color: var(--boring-destructive);
|
|
5001
5001
|
@supports (color: color-mix(in lab, red, red)) {
|
|
@@ -5005,7 +5005,7 @@
|
|
|
5005
5005
|
}
|
|
5006
5006
|
}
|
|
5007
5007
|
.dark\:aria-invalid\:ring-destructive\/40 {
|
|
5008
|
-
&:is(
|
|
5008
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
5009
5009
|
&[aria-invalid="true"] {
|
|
5010
5010
|
--tw-ring-color: var(--boring-destructive);
|
|
5011
5011
|
@supports (color: color-mix(in lab, red, red)) {
|
|
@@ -5015,14 +5015,14 @@
|
|
|
5015
5015
|
}
|
|
5016
5016
|
}
|
|
5017
5017
|
.dark\:data-\[state\=active\]\:border-input {
|
|
5018
|
-
&:is(
|
|
5018
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
5019
5019
|
&[data-state="active"] {
|
|
5020
5020
|
border-color: var(--boring-input);
|
|
5021
5021
|
}
|
|
5022
5022
|
}
|
|
5023
5023
|
}
|
|
5024
5024
|
.dark\:data-\[state\=active\]\:bg-input\/30 {
|
|
5025
|
-
&:is(
|
|
5025
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
5026
5026
|
&[data-state="active"] {
|
|
5027
5027
|
background-color: var(--boring-input);
|
|
5028
5028
|
@supports (color: color-mix(in lab, red, red)) {
|
|
@@ -5032,14 +5032,14 @@
|
|
|
5032
5032
|
}
|
|
5033
5033
|
}
|
|
5034
5034
|
.dark\:data-\[state\=active\]\:text-foreground {
|
|
5035
|
-
&:is(
|
|
5035
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
5036
5036
|
&[data-state="active"] {
|
|
5037
5037
|
color: var(--boring-foreground);
|
|
5038
5038
|
}
|
|
5039
5039
|
}
|
|
5040
5040
|
}
|
|
5041
5041
|
.dark\:group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:border-transparent {
|
|
5042
|
-
&:is(
|
|
5042
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
5043
5043
|
&:is(:where(.group\/tabs-list)[data-variant="line"] *) {
|
|
5044
5044
|
&[data-state="active"] {
|
|
5045
5045
|
border-color: transparent;
|
|
@@ -5048,7 +5048,7 @@
|
|
|
5048
5048
|
}
|
|
5049
5049
|
}
|
|
5050
5050
|
.dark\:group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:bg-transparent {
|
|
5051
|
-
&:is(
|
|
5051
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
5052
5052
|
&:is(:where(.group\/tabs-list)[data-variant="line"] *) {
|
|
5053
5053
|
&[data-state="active"] {
|
|
5054
5054
|
background-color: transparent;
|
|
@@ -5057,14 +5057,14 @@
|
|
|
5057
5057
|
}
|
|
5058
5058
|
}
|
|
5059
5059
|
.dark\:data-\[state\=checked\]\:bg-primary {
|
|
5060
|
-
&:is(
|
|
5060
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
5061
5061
|
&[data-state="checked"] {
|
|
5062
5062
|
background-color: var(--boring-primary);
|
|
5063
5063
|
}
|
|
5064
5064
|
}
|
|
5065
5065
|
}
|
|
5066
5066
|
.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20 {
|
|
5067
|
-
&:is(
|
|
5067
|
+
&:is([data-theme="dark"], [data-theme="dark"] *) {
|
|
5068
5068
|
&[data-variant="destructive"] {
|
|
5069
5069
|
&:focus {
|
|
5070
5070
|
background-color: var(--boring-destructive);
|
|
@@ -5592,7 +5592,7 @@
|
|
|
5592
5592
|
}
|
|
5593
5593
|
}
|
|
5594
5594
|
}
|
|
5595
|
-
|
|
5595
|
+
[data-theme="dark"] {
|
|
5596
5596
|
--background: oklch(0.145 0.004 285.823);
|
|
5597
5597
|
--foreground: oklch(0.985 0 0);
|
|
5598
5598
|
--card: oklch(0.145 0.004 285.823);
|
|
@@ -5684,7 +5684,7 @@
|
|
|
5684
5684
|
--boring-agent-diff-remove: oklch(from var(--destructive) l c h / 0.14);
|
|
5685
5685
|
--boring-agent-diff-remove-fg: var(--destructive);
|
|
5686
5686
|
}
|
|
5687
|
-
|
|
5687
|
+
[data-theme="dark"] [data-boring-agent] {
|
|
5688
5688
|
--background: var(--boring-background, oklch(0.145 0.004 285.823));
|
|
5689
5689
|
--foreground: var(--boring-foreground, oklch(0.985 0 0));
|
|
5690
5690
|
--card: var(--boring-card, oklch(0.145 0.004 285.823));
|
|
@@ -5772,7 +5772,7 @@ pre code span[style*="--sdm-c"] {
|
|
|
5772
5772
|
color: var(--sdm-c, inherit);
|
|
5773
5773
|
background-color: var(--sdm-bg, transparent);
|
|
5774
5774
|
}
|
|
5775
|
-
|
|
5775
|
+
[data-theme="dark"] pre code span[style*="--shiki-dark"] {
|
|
5776
5776
|
color: var(--shiki-dark, var(--sdm-c, inherit));
|
|
5777
5777
|
background-color: var(--shiki-dark-bg, var(--sdm-bg, transparent));
|
|
5778
5778
|
}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -191,6 +191,17 @@ interface CreateNodeWorkspaceOptions {
|
|
|
191
191
|
}
|
|
192
192
|
declare function createNodeWorkspace(root: string, opts?: CreateNodeWorkspaceOptions): Workspace;
|
|
193
193
|
|
|
194
|
+
/**
|
|
195
|
+
* Validate and resolve a user-provided relative path under workspaceRoot.
|
|
196
|
+
*/
|
|
197
|
+
declare function validatePath(workspaceRoot: string, relPath: string): string;
|
|
198
|
+
/**
|
|
199
|
+
* Resolve symlinks and ensure candidate path remains under workspaceRoot.
|
|
200
|
+
*/
|
|
201
|
+
declare function assertRealPathWithinWorkspace(workspaceRoot: string, absPath: string): Promise<void>;
|
|
202
|
+
|
|
203
|
+
declare function resolveWorkspaceRoot(defaultRoot?: string): string;
|
|
204
|
+
|
|
194
205
|
interface BoringAgentRuntimePaths {
|
|
195
206
|
/** Runtime-visible workspace root. This is BORING_AGENT_WORKSPACE_ROOT. */
|
|
196
207
|
workspaceRoot: string;
|
|
@@ -1300,6 +1311,18 @@ interface RegisterAgentRoutesOptions {
|
|
|
1300
1311
|
workspaceId: string;
|
|
1301
1312
|
workspaceRoot: string;
|
|
1302
1313
|
}) => string | undefined | Promise<string | undefined>;
|
|
1314
|
+
/** Immutable host contribution captured once in the runtime binding scope. */
|
|
1315
|
+
getRuntimeScopeContribution?: (ctx: {
|
|
1316
|
+
workspaceId: string;
|
|
1317
|
+
workspaceRoot: string;
|
|
1318
|
+
request?: FastifyRequest;
|
|
1319
|
+
}) => Readonly<{
|
|
1320
|
+
identity: string;
|
|
1321
|
+
loadSystemPromptAppend?: () => Promise<string | undefined>;
|
|
1322
|
+
}> | Promise<Readonly<{
|
|
1323
|
+
identity: string;
|
|
1324
|
+
loadSystemPromptAppend?: () => Promise<string | undefined>;
|
|
1325
|
+
}>>;
|
|
1303
1326
|
/** Override the default pi-backed harness with a custom agent runtime. */
|
|
1304
1327
|
harnessFactory?: AgentHarnessFactory;
|
|
1305
1328
|
/** Optional pi adapter/runtime knobs used by the default harness. */
|
|
@@ -1425,4 +1448,4 @@ interface Logger {
|
|
|
1425
1448
|
}
|
|
1426
1449
|
declare function createLogger(prefix: string): Logger;
|
|
1427
1450
|
|
|
1428
|
-
export { AgentConfig, AgentDirectoryCompilerError, type AgentDirectoryCompilerErrorCode, type AgentDirectoryCompilerPublicErrorCode, AgentHarnessFactory, type AgentMeteringSink, type BoringAgentRuntimePaths, type BuiltinRuntimeModeId, type CreateAgentAppOptions, type CreateVercelProvisioningAdapterOptions, type DeploymentSnapshotProvider, type DeploymentSnapshotRecipe, type DeploymentSnapshotResult, type DeploymentSnapshotStatus, FileHandleStore, type LogFields, type Logger, MANAGED_AGENT_MCP_DELIVERY_RULE, MANAGED_AGENT_MCP_ORIGIN_SURFACE, type ManagedAgentArtifact, type ManagedAgentArtifactCandidate, type ManagedAgentArtifactRef, type ManagedAgentBoundRunnerWorkspace, type ManagedAgentCollectArtifactsInput, type ManagedAgentDelegateInput, type ManagedAgentDelegateProgress, type ManagedAgentDelegateRequestContext, type ManagedAgentDelegateResult, type ManagedAgentDelegateRunInput, type ManagedAgentDelegateRunner, type ManagedAgentDelegateStatus, type ManagedAgentDelegateStatusResult, ManagedAgentMcpDelegateController, type ManagedAgentMcpDelegateOptions, ManagedAgentMcpError, type ManagedAgentMcpHttpHandlerOptions, type ManagedAgentMcpServerOptions, type ManagedAgentSafeError, type ManagedAgentWorkspaceResolutionInput, type MeteringErrorLogger, type MeteringReleaseInput, type MeteringReleaseReason, type MeteringReservationResult, type MeteringReserveInput, type MeteringRunKind, type MeteringRunScope, type MeteringRunStatus, type MeteringSettleInput, type MeteringUsage, type MeteringUsageInput, type ModeContext, PI_PACKAGE_RESOURCE_FILTERS, type PiExtensionFactory, type PiHarnessOptions, type PiPackageSource, type PluginSkillSource, type ProvisionRuntimeWorkspaceOptions, type ProvisionWorkspaceRuntimeOptions, type ProvisioningArtifactRequest, type RegisterAgentRoutesOptions, RemoteWorkerClient, RemoteWorkerClientError, type RemoteWorkerClientOptions, RemoteWorkerExecRequest, type RemoteWorkerModeAdapterOptions, RemoteWorkerWorkspaceOp, RemoteWorkerWorkspaceResult, type ResolvedAgent, type ResolvedAgentDigestInput, type RuntimeBundle, type RuntimeEnvContribution, type RuntimeEnvContributionContext, type RuntimeFilesystemBinding, type RuntimeFilesystemBindingOperations, type RuntimeModeAdapter, type RuntimeModeId, type RuntimeNodePackageSpec$1 as RuntimeNodePackageSpec, type RuntimeProvisioningContribution$1 as RuntimeProvisioningContribution, type RuntimePythonSpec$1 as RuntimePythonSpec, type RuntimeTemplateContribution$1 as RuntimeTemplateContribution, type RuntimeWorkspaceProvisioningResult, type ShareEntryMcpResourceOptions, type SnapshotBakeOptions, type SnapshotBakeResult, UV_SETUP_COMMANDS, VERCEL_PROVISIONING_CACHE_ROOT, VERCEL_SANDBOX_WORKSPACE_ROOT, UV_SETUP_COMMANDS as VERCEL_UV_SETUP_COMMANDS, type VercelBakeClient, type VercelBakeSandbox, type VercelDeploymentSnapshotOptions, type WorkspaceAgentDispatcherBinding, type WorkspaceAgentDispatcherResolveOptions, type WorkspaceAgentDispatcherResolver, type WorkspaceProvisioningAdapter, type WorkspaceProvisioningExecResult, type WorkspaceProvisioningResult, applyCspHeaders, autoDetectMode, bakeSnapshotIfNeeded, buildDeploymentSnapshotRecipe, buildPackageHash, buildSnapshotRecipeHash, compactPiPackages, compileAgentDirectory, constantTimeTokenEqual, createAgent, createAgentApp, createDirectSandbox, createLogger, createManagedAgentMcpDelegateController, createManagedAgentMcpHttpHandler, createManagedAgentMcpServer, createNodeWorkspace, createRemoteWorkerModeAdapter, createRemoteWorkerSandbox, createRemoteWorkerWorkspace, createResolvedAgentDigest, createResourceSettingsManager, createVercelDeploymentSnapshotProvider, createVercelProvisioningAdapter, createVercelSandboxWorkspace, decodeBytesFromWorker, encodeBytesForWorker, fileRoutes, getBoringAgentPathEntries, getBoringAgentRuntimeEnv, getBoringAgentRuntimePaths, hasBwrap, mergePiPackageSources, normalizeMeteringUsage, piPackageSourceKey, prepareDeploymentSnapshot, prepareVercelDeploymentSnapshot, provisionRuntimeWorkspace, provisionWorkspaceRuntime, registerAgentRoutes, registerShareEntryResources, resolveAgentDeployment, resolveMode, resolveSandboxHandle, shareResourceUri };
|
|
1451
|
+
export { AgentConfig, AgentDirectoryCompilerError, type AgentDirectoryCompilerErrorCode, type AgentDirectoryCompilerPublicErrorCode, AgentHarnessFactory, type AgentMeteringSink, type BoringAgentRuntimePaths, type BuiltinRuntimeModeId, type CreateAgentAppOptions, type CreateVercelProvisioningAdapterOptions, type DeploymentSnapshotProvider, type DeploymentSnapshotRecipe, type DeploymentSnapshotResult, type DeploymentSnapshotStatus, FileHandleStore, type LogFields, type Logger, MANAGED_AGENT_MCP_DELIVERY_RULE, MANAGED_AGENT_MCP_ORIGIN_SURFACE, type ManagedAgentArtifact, type ManagedAgentArtifactCandidate, type ManagedAgentArtifactRef, type ManagedAgentBoundRunnerWorkspace, type ManagedAgentCollectArtifactsInput, type ManagedAgentDelegateInput, type ManagedAgentDelegateProgress, type ManagedAgentDelegateRequestContext, type ManagedAgentDelegateResult, type ManagedAgentDelegateRunInput, type ManagedAgentDelegateRunner, type ManagedAgentDelegateStatus, type ManagedAgentDelegateStatusResult, ManagedAgentMcpDelegateController, type ManagedAgentMcpDelegateOptions, ManagedAgentMcpError, type ManagedAgentMcpHttpHandlerOptions, type ManagedAgentMcpServerOptions, type ManagedAgentSafeError, type ManagedAgentWorkspaceResolutionInput, type MeteringErrorLogger, type MeteringReleaseInput, type MeteringReleaseReason, type MeteringReservationResult, type MeteringReserveInput, type MeteringRunKind, type MeteringRunScope, type MeteringRunStatus, type MeteringSettleInput, type MeteringUsage, type MeteringUsageInput, type ModeContext, PI_PACKAGE_RESOURCE_FILTERS, type PiExtensionFactory, type PiHarnessOptions, type PiPackageSource, type PluginSkillSource, type ProvisionRuntimeWorkspaceOptions, type ProvisionWorkspaceRuntimeOptions, type ProvisioningArtifactRequest, type RegisterAgentRoutesOptions, RemoteWorkerClient, RemoteWorkerClientError, type RemoteWorkerClientOptions, RemoteWorkerExecRequest, type RemoteWorkerModeAdapterOptions, RemoteWorkerWorkspaceOp, RemoteWorkerWorkspaceResult, type ResolvedAgent, type ResolvedAgentDigestInput, type RuntimeBundle, type RuntimeEnvContribution, type RuntimeEnvContributionContext, type RuntimeFilesystemBinding, type RuntimeFilesystemBindingOperations, type RuntimeModeAdapter, type RuntimeModeId, type RuntimeNodePackageSpec$1 as RuntimeNodePackageSpec, type RuntimeProvisioningContribution$1 as RuntimeProvisioningContribution, type RuntimePythonSpec$1 as RuntimePythonSpec, type RuntimeTemplateContribution$1 as RuntimeTemplateContribution, type RuntimeWorkspaceProvisioningResult, type ShareEntryMcpResourceOptions, type SnapshotBakeOptions, type SnapshotBakeResult, UV_SETUP_COMMANDS, VERCEL_PROVISIONING_CACHE_ROOT, VERCEL_SANDBOX_WORKSPACE_ROOT, UV_SETUP_COMMANDS as VERCEL_UV_SETUP_COMMANDS, type VercelBakeClient, type VercelBakeSandbox, type VercelDeploymentSnapshotOptions, type WorkspaceAgentDispatcherBinding, type WorkspaceAgentDispatcherResolveOptions, type WorkspaceAgentDispatcherResolver, type WorkspaceProvisioningAdapter, type WorkspaceProvisioningExecResult, type WorkspaceProvisioningResult, applyCspHeaders, assertRealPathWithinWorkspace, autoDetectMode, bakeSnapshotIfNeeded, buildDeploymentSnapshotRecipe, buildPackageHash, buildSnapshotRecipeHash, compactPiPackages, compileAgentDirectory, constantTimeTokenEqual, createAgent, createAgentApp, createDirectSandbox, createLogger, createManagedAgentMcpDelegateController, createManagedAgentMcpHttpHandler, createManagedAgentMcpServer, createNodeWorkspace, createRemoteWorkerModeAdapter, createRemoteWorkerSandbox, createRemoteWorkerWorkspace, createResolvedAgentDigest, createResourceSettingsManager, createVercelDeploymentSnapshotProvider, createVercelProvisioningAdapter, createVercelSandboxWorkspace, decodeBytesFromWorker, encodeBytesForWorker, fileRoutes, getBoringAgentPathEntries, getBoringAgentRuntimeEnv, getBoringAgentRuntimePaths, hasBwrap, mergePiPackageSources, normalizeMeteringUsage, piPackageSourceKey, prepareDeploymentSnapshot, prepareVercelDeploymentSnapshot, provisionRuntimeWorkspace, provisionWorkspaceRuntime, registerAgentRoutes, registerShareEntryResources, resolveAgentDeployment, resolveMode, resolveSandboxHandle, resolveWorkspaceRoot, shareResourceUri, validatePath };
|
package/dist/server/index.js
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
WORKER_REQUEST_ID_HEADER,
|
|
17
17
|
WORKER_WORKSPACE_ID_HEADER,
|
|
18
18
|
applyCspHeaders,
|
|
19
|
+
assertRealPathWithinWorkspace,
|
|
19
20
|
autoDetectMode,
|
|
20
21
|
bakeSnapshotIfNeeded,
|
|
21
22
|
buildDeploymentSnapshotRecipe,
|
|
@@ -55,8 +56,10 @@ import {
|
|
|
55
56
|
resolveAgentDeployment,
|
|
56
57
|
resolveMode,
|
|
57
58
|
resolveSandboxHandle,
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
resolveWorkspaceRoot,
|
|
60
|
+
shareResourceUri,
|
|
61
|
+
validatePath
|
|
62
|
+
} from "../chunk-RRVL5JRE.js";
|
|
60
63
|
import "../chunk-YONTHCD7.js";
|
|
61
64
|
import "../chunk-LYBTHR7J.js";
|
|
62
65
|
import "../chunk-WSQ5QNIY.js";
|
|
@@ -91,6 +94,7 @@ export {
|
|
|
91
94
|
WORKER_REQUEST_ID_HEADER,
|
|
92
95
|
WORKER_WORKSPACE_ID_HEADER,
|
|
93
96
|
applyCspHeaders,
|
|
97
|
+
assertRealPathWithinWorkspace,
|
|
94
98
|
autoDetectMode,
|
|
95
99
|
bakeSnapshotIfNeeded,
|
|
96
100
|
buildDeploymentSnapshotRecipe,
|
|
@@ -135,5 +139,7 @@ export {
|
|
|
135
139
|
resolveAgentDeployment,
|
|
136
140
|
resolveMode,
|
|
137
141
|
resolveSandboxHandle,
|
|
138
|
-
|
|
142
|
+
resolveWorkspaceRoot,
|
|
143
|
+
shareResourceUri,
|
|
144
|
+
validatePath
|
|
139
145
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hachej/boring-agent",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.87",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Pane-embeddable coding agent. Ships direct/local/vercel-sandbox execution modes behind one interface.",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"docs"
|
|
51
51
|
],
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@mariozechner/pi-coding-agent": "npm:@earendil-works/pi-coding-agent@0.
|
|
53
|
+
"@mariozechner/pi-coding-agent": "npm:@earendil-works/pi-coding-agent@0.80.7",
|
|
54
54
|
"@modelcontextprotocol/sdk": "1.29.0",
|
|
55
55
|
"@radix-ui/react-collapsible": "^1.1.14",
|
|
56
56
|
"@radix-ui/react-dialog": "^1.1.17",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"use-stick-to-bottom": "^1.1.6",
|
|
85
85
|
"yaml": "^2.9.0",
|
|
86
86
|
"zod": "^3.25.76",
|
|
87
|
-
"@hachej/boring-ui-kit": "0.1.
|
|
87
|
+
"@hachej/boring-ui-kit": "0.1.87"
|
|
88
88
|
},
|
|
89
89
|
"devDependencies": {
|
|
90
90
|
"@antithesishq/bombadil": "0.6.1",
|