openpond 0.0.64 → 0.0.65
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/chunks/{app-server-runtime-XWIG4OWY.js → app-server-runtime-6PDQHOBE.js} +3 -3
- package/dist/chunks/{chunk-THYIAXOB.js → chunk-B63GTC7F.js} +1 -1
- package/dist/chunks/{chunk-HM6Z3PEC.js → chunk-HJJYGJ36.js} +189 -128
- package/dist/chunks/{chunk-57XKCMOZ.js → chunk-LNYGV6AM.js} +1 -1
- package/dist/chunks/{chunk-C7TOCBGY.js → chunk-TW4YWBQR.js} +1 -1
- package/dist/chunks/{cli-3BI2QBI2.js → cli-CQOUYUQ4.js} +2 -2
- package/dist/chunks/{src-DQFVZZUR.js → src-ESTRZ2YU.js} +9 -60
- package/dist/chunks/{workspaces-IXF7MIQV.js → workspaces-ODK2CTFF.js} +2 -2
- package/dist/cli.js +5 -5
- package/package.json +1 -1
|
@@ -2,10 +2,10 @@ import { createRequire as __openpondCreateRequire } from "node:module"; var requ
|
|
|
2
2
|
import {
|
|
3
3
|
APP_SERVER_COMPOSITION,
|
|
4
4
|
createOpenPondAppServer
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-HJJYGJ36.js";
|
|
6
|
+
import "./chunk-LNYGV6AM.js";
|
|
7
7
|
import "./chunk-OYWTQABY.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-TW4YWBQR.js";
|
|
9
9
|
import "./chunk-BRLUAT6S.js";
|
|
10
10
|
import "./chunk-JMHOO2IG.js";
|
|
11
11
|
import "./chunk-QETF6ILG.js";
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
truncatePatch,
|
|
12
12
|
uniqueSortedPaths,
|
|
13
13
|
workspaceImageContentType
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-LNYGV6AM.js";
|
|
15
15
|
import {
|
|
16
16
|
AGENT_PROTOCOL_VERSION,
|
|
17
17
|
AGENT_RPC_METHODS,
|
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
event,
|
|
36
36
|
now,
|
|
37
37
|
textFromUnknown
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-TW4YWBQR.js";
|
|
39
39
|
import {
|
|
40
40
|
getBundledRuntimeVersion,
|
|
41
41
|
loadOpenPondAccountContext,
|
|
@@ -89,6 +89,7 @@ import {
|
|
|
89
89
|
GradeResultSchema,
|
|
90
90
|
GraderAuditReportSchema,
|
|
91
91
|
HarnessSourceManifestSchema,
|
|
92
|
+
HostedSavedWorkResponseSchema,
|
|
92
93
|
ModelArtifactLineageSchema,
|
|
93
94
|
ModelBindingSchema,
|
|
94
95
|
ModelProjectSchema,
|
|
@@ -136,6 +137,7 @@ import {
|
|
|
136
137
|
TrainingSourceEstimateSchema,
|
|
137
138
|
TrainingSourceRefSchema,
|
|
138
139
|
TurnSchema,
|
|
140
|
+
UpdateHostedSavedWorkRequestSchema,
|
|
139
141
|
UsageRequestAttributionSchema,
|
|
140
142
|
WORK_FORMAT_CAPABILITIES,
|
|
141
143
|
WORK_OUTPUT_CONTENT_TYPES,
|
|
@@ -15911,122 +15913,6 @@ async function looksLikeSandboxTemplateRepo(repoPath) {
|
|
|
15911
15913
|
}
|
|
15912
15914
|
}
|
|
15913
15915
|
|
|
15914
|
-
// ../server/src/api/server-payload-helpers.ts
|
|
15915
|
-
import { randomUUID as randomUUID5 } from "node:crypto";
|
|
15916
|
-
|
|
15917
|
-
// ../server/src/openpond/organizations.ts
|
|
15918
|
-
var DEFAULT_OPENPOND_API_BASE_URL2 = "https://api.openpond.ai";
|
|
15919
|
-
async function organizationRequestPayload(action) {
|
|
15920
|
-
const context = await loadOpenPondAccountContext();
|
|
15921
|
-
const token = context.token?.trim();
|
|
15922
|
-
if (!token) {
|
|
15923
|
-
throw new Error("OpenPond account API key is required to manage organizations.");
|
|
15924
|
-
}
|
|
15925
|
-
const apiBaseUrl = resolveApiBaseUrl(context);
|
|
15926
|
-
if (action.type === "list") {
|
|
15927
|
-
return openPondApiRequest(apiBaseUrl, token, "/v1/organizations");
|
|
15928
|
-
}
|
|
15929
|
-
if (action.type === "invitations_list") {
|
|
15930
|
-
return openPondApiRequest(apiBaseUrl, token, "/v1/teams/invitations");
|
|
15931
|
-
}
|
|
15932
|
-
if (action.type === "invitation_accept" || action.type === "invitation_decline") {
|
|
15933
|
-
const decision = action.type === "invitation_accept" ? "accept" : "decline";
|
|
15934
|
-
return openPondApiRequest(apiBaseUrl, token, `/v1/teams/invitations/${decision}`, {
|
|
15935
|
-
method: "POST",
|
|
15936
|
-
body: JSON.stringify(action.payload ?? {})
|
|
15937
|
-
});
|
|
15938
|
-
}
|
|
15939
|
-
if (action.type === "create") {
|
|
15940
|
-
return openPondApiRequest(apiBaseUrl, token, "/v1/organizations", {
|
|
15941
|
-
method: "POST",
|
|
15942
|
-
body: JSON.stringify(action.payload ?? {})
|
|
15943
|
-
});
|
|
15944
|
-
}
|
|
15945
|
-
if (action.type === "get") {
|
|
15946
|
-
return openPondApiRequest(apiBaseUrl, token, `/v1/organizations/${encodeURIComponent(action.slug)}`);
|
|
15947
|
-
}
|
|
15948
|
-
if (action.type === "update") {
|
|
15949
|
-
return openPondApiRequest(apiBaseUrl, token, `/v1/organizations/${encodeURIComponent(action.slug)}`, {
|
|
15950
|
-
method: "PATCH",
|
|
15951
|
-
body: JSON.stringify(action.payload ?? {})
|
|
15952
|
-
});
|
|
15953
|
-
}
|
|
15954
|
-
if (action.type === "members") {
|
|
15955
|
-
return openPondApiRequest(apiBaseUrl, token, `/v1/organizations/${encodeURIComponent(action.slug)}/members`);
|
|
15956
|
-
}
|
|
15957
|
-
if (action.type === "member_upsert") {
|
|
15958
|
-
return openPondApiRequest(apiBaseUrl, token, `/v1/organizations/${encodeURIComponent(action.slug)}/members`, {
|
|
15959
|
-
method: "POST",
|
|
15960
|
-
body: JSON.stringify(action.payload ?? {})
|
|
15961
|
-
});
|
|
15962
|
-
}
|
|
15963
|
-
if (action.type === "mcp_get") {
|
|
15964
|
-
return openPondApiRequest(apiBaseUrl, token, `/v1/organizations/${encodeURIComponent(action.slug)}/mcp-server`);
|
|
15965
|
-
}
|
|
15966
|
-
if (action.type === "mcp_generate") {
|
|
15967
|
-
return openPondApiRequest(apiBaseUrl, token, `/v1/organizations/${encodeURIComponent(action.slug)}/mcp-server`, {
|
|
15968
|
-
method: "POST",
|
|
15969
|
-
body: JSON.stringify(action.payload ?? {})
|
|
15970
|
-
});
|
|
15971
|
-
}
|
|
15972
|
-
if (action.type === "mcp_rotate") {
|
|
15973
|
-
return openPondApiRequest(
|
|
15974
|
-
apiBaseUrl,
|
|
15975
|
-
token,
|
|
15976
|
-
`/v1/organizations/${encodeURIComponent(action.slug)}/mcp-server/rotate`,
|
|
15977
|
-
{ method: "POST" }
|
|
15978
|
-
);
|
|
15979
|
-
}
|
|
15980
|
-
if (action.type === "mcp_disable") {
|
|
15981
|
-
return openPondApiRequest(
|
|
15982
|
-
apiBaseUrl,
|
|
15983
|
-
token,
|
|
15984
|
-
`/v1/organizations/${encodeURIComponent(action.slug)}/mcp-server/disable`,
|
|
15985
|
-
{ method: "POST" }
|
|
15986
|
-
);
|
|
15987
|
-
}
|
|
15988
|
-
if (action.type === "mcp_enable") {
|
|
15989
|
-
return openPondApiRequest(
|
|
15990
|
-
apiBaseUrl,
|
|
15991
|
-
token,
|
|
15992
|
-
`/v1/organizations/${encodeURIComponent(action.slug)}/mcp-server/enable`,
|
|
15993
|
-
{ method: "POST" }
|
|
15994
|
-
);
|
|
15995
|
-
}
|
|
15996
|
-
throw new Error(`Unsupported organization action: ${action.type}`);
|
|
15997
|
-
}
|
|
15998
|
-
async function openPondApiRequest(apiBaseUrl, token, path51, init = {}) {
|
|
15999
|
-
const response = await apiFetch(apiBaseUrl, token, path51, init);
|
|
16000
|
-
const payload = await response.json().catch(() => ({}));
|
|
16001
|
-
if (!response.ok) {
|
|
16002
|
-
const message = typeof payload.message === "string" ? payload.message : typeof payload.error === "string" ? payload.error : response.statusText;
|
|
16003
|
-
throw new Error(message);
|
|
16004
|
-
}
|
|
16005
|
-
return payload;
|
|
16006
|
-
}
|
|
16007
|
-
function resolveApiBaseUrl(context) {
|
|
16008
|
-
return normalizeOptionalUrl2(process.env.OPENPOND_API_URL) ?? normalizeOptionalUrl2(context.apiBaseUrl) ?? normalizeOptionalUrl2(context.account?.apiBaseUrl) ?? normalizeOptionalUrl2(context.config.apiBaseUrl) ?? normalizeOpenPondWebBaseAsApi(context.account?.baseUrl) ?? normalizeOpenPondWebBaseAsApi(context.config.baseUrl) ?? DEFAULT_OPENPOND_API_BASE_URL2;
|
|
16009
|
-
}
|
|
16010
|
-
function normalizeOpenPondWebBaseAsApi(value) {
|
|
16011
|
-
const normalized = normalizeOptionalUrl2(value);
|
|
16012
|
-
if (!normalized) return null;
|
|
16013
|
-
try {
|
|
16014
|
-
const url = new URL(normalized);
|
|
16015
|
-
if (url.hostname === "openpond.ai") return "https://api.openpond.ai";
|
|
16016
|
-
if (!url.hostname.startsWith("api.") && url.hostname.endsWith(".openpond.ai")) {
|
|
16017
|
-
url.hostname = `api.${url.hostname}`;
|
|
16018
|
-
return url.origin;
|
|
16019
|
-
}
|
|
16020
|
-
} catch {
|
|
16021
|
-
return normalized;
|
|
16022
|
-
}
|
|
16023
|
-
return normalized;
|
|
16024
|
-
}
|
|
16025
|
-
function normalizeOptionalUrl2(value) {
|
|
16026
|
-
const trimmed = value?.trim();
|
|
16027
|
-
return trimmed ? trimmed.replace(/\/$/, "") : null;
|
|
16028
|
-
}
|
|
16029
|
-
|
|
16030
15916
|
// ../../packages/sdk/dist/index.js
|
|
16031
15917
|
function createSandboxRuntimeNamespace(client) {
|
|
16032
15918
|
return {
|
|
@@ -16686,7 +16572,7 @@ function composedSignal(callerSignal, timeoutSignal, timeoutMs) {
|
|
|
16686
16572
|
return callerSignal ? AbortSignal.any([callerSignal, timeoutSignal]) : timeoutSignal;
|
|
16687
16573
|
}
|
|
16688
16574
|
var DEFAULT_OPENPOND_WEB_BASE_URL = "https://openpond.ai";
|
|
16689
|
-
var
|
|
16575
|
+
var DEFAULT_OPENPOND_API_BASE_URL2 = "https://api.openpond.ai";
|
|
16690
16576
|
async function streamSandboxEventOutput(params) {
|
|
16691
16577
|
const response = await apiFetch2(params.sandboxApiUrl, params.apiKey, params.path, { timeoutMs: 0, maxResponseBytes: 0 });
|
|
16692
16578
|
if (!response.body) {
|
|
@@ -16756,7 +16642,7 @@ function normalizeSandboxApiUrl2(baseUrlOrApiUrl) {
|
|
|
16756
16642
|
return `${url.origin}${normalizedPath}/v1/sandboxes`;
|
|
16757
16643
|
}
|
|
16758
16644
|
if (url.origin === DEFAULT_OPENPOND_WEB_BASE_URL) {
|
|
16759
|
-
return `${
|
|
16645
|
+
return `${DEFAULT_OPENPOND_API_BASE_URL2}/v1/sandboxes`;
|
|
16760
16646
|
}
|
|
16761
16647
|
return `${url.origin}${normalizedPath}/api/sandboxes`;
|
|
16762
16648
|
}
|
|
@@ -16776,7 +16662,7 @@ var OpenPondSandboxInstanceClient = class {
|
|
|
16776
16662
|
sandboxApiUrl;
|
|
16777
16663
|
constructor(options) {
|
|
16778
16664
|
this.apiKey = options.apiKey;
|
|
16779
|
-
this.sandboxApiUrl = normalizeSandboxApiUrl2(options.sandboxApiUrl ?? options.baseUrl ??
|
|
16665
|
+
this.sandboxApiUrl = normalizeSandboxApiUrl2(options.sandboxApiUrl ?? options.baseUrl ?? DEFAULT_OPENPOND_API_BASE_URL2);
|
|
16780
16666
|
this.apiRootUrl = apiRootUrlFromSandboxApiUrl(this.sandboxApiUrl);
|
|
16781
16667
|
}
|
|
16782
16668
|
create(input, options = {}) {
|
|
@@ -17772,7 +17658,7 @@ var WORK_OUTPUT_MIME_TYPES = Object.freeze({
|
|
|
17772
17658
|
});
|
|
17773
17659
|
|
|
17774
17660
|
// ../server/src/openpond/sandbox-inputs.ts
|
|
17775
|
-
function
|
|
17661
|
+
function normalizeOptionalUrl2(value) {
|
|
17776
17662
|
const trimmed = value?.trim();
|
|
17777
17663
|
return trimmed ? trimmed.replace(/\/$/, "") : null;
|
|
17778
17664
|
}
|
|
@@ -19379,7 +19265,7 @@ function organizationStatus(organization) {
|
|
|
19379
19265
|
return typeof organization.status === "string" ? organization.status : "active";
|
|
19380
19266
|
}
|
|
19381
19267
|
async function resolveSandboxClient() {
|
|
19382
|
-
const configuredSandboxApiUrl =
|
|
19268
|
+
const configuredSandboxApiUrl = normalizeOptionalUrl2(
|
|
19383
19269
|
process.env.OPENPOND_SANDBOX_API_URL
|
|
19384
19270
|
);
|
|
19385
19271
|
const configuredSandboxApiKey = process.env.OPENPOND_SANDBOX_API_KEY?.trim();
|
|
@@ -19500,7 +19386,177 @@ function sandboxAccountSummary(context, sandboxApiUrl) {
|
|
|
19500
19386
|
};
|
|
19501
19387
|
}
|
|
19502
19388
|
function resolveSandboxBaseUrl(context) {
|
|
19503
|
-
return
|
|
19389
|
+
return normalizeOptionalUrl2(process.env.OPENPOND_SANDBOX_BASE_URL) ?? normalizeOptionalUrl2(process.env.OPENPOND_API_URL) ?? normalizeOptionalUrl2(context.apiBaseUrl) ?? normalizeOptionalUrl2(context.account?.baseUrl) ?? normalizeOptionalUrl2(context.config.baseUrl) ?? DEFAULT_OPENPOND_SANDBOX_BASE_URL;
|
|
19390
|
+
}
|
|
19391
|
+
|
|
19392
|
+
// ../server/src/openpond/saved-work.ts
|
|
19393
|
+
async function listHostedSavedWork() {
|
|
19394
|
+
const payload = HostedSavedWorkResponseSchema.parse(
|
|
19395
|
+
await requestOpenPondPublicApi({ path: "/saved-work" })
|
|
19396
|
+
);
|
|
19397
|
+
return {
|
|
19398
|
+
...payload,
|
|
19399
|
+
webBaseUrl: hostedWebBaseUrl()
|
|
19400
|
+
};
|
|
19401
|
+
}
|
|
19402
|
+
async function createHostedSavedWork(input) {
|
|
19403
|
+
const body = CreateHostedSavedWorkRequestSchema.parse(input);
|
|
19404
|
+
return requestOpenPondPublicApi({
|
|
19405
|
+
path: "/saved-work",
|
|
19406
|
+
method: "POST",
|
|
19407
|
+
body
|
|
19408
|
+
});
|
|
19409
|
+
}
|
|
19410
|
+
async function updateHostedSavedWork(scheduleId, input) {
|
|
19411
|
+
const body = UpdateHostedSavedWorkRequestSchema.parse(input);
|
|
19412
|
+
return requestOpenPondPublicApi({
|
|
19413
|
+
path: `/saved-work/schedules/${encodeURIComponent(scheduleId)}`,
|
|
19414
|
+
method: "PATCH",
|
|
19415
|
+
body
|
|
19416
|
+
});
|
|
19417
|
+
}
|
|
19418
|
+
async function deleteHostedSavedWork(scheduleId) {
|
|
19419
|
+
return requestOpenPondPublicApi({
|
|
19420
|
+
path: `/saved-work/schedules/${encodeURIComponent(scheduleId)}`,
|
|
19421
|
+
method: "DELETE"
|
|
19422
|
+
});
|
|
19423
|
+
}
|
|
19424
|
+
async function runHostedSavedWork(scheduleId, clientRequestId) {
|
|
19425
|
+
return requestOpenPondPublicApi({
|
|
19426
|
+
path: `/saved-work/schedules/${encodeURIComponent(scheduleId)}/run`,
|
|
19427
|
+
method: "POST",
|
|
19428
|
+
body: { clientRequestId }
|
|
19429
|
+
});
|
|
19430
|
+
}
|
|
19431
|
+
function hostedWebBaseUrl(env = process.env) {
|
|
19432
|
+
const configured = env.OPENPOND_HOSTED_WEB_URL?.trim() || env.OPENPOND_SANDBOX_BASE_URL?.trim() || env.OPENPOND_API_URL?.trim() || env.OPENPOND_SANDBOX_API_URL?.trim() || "https://api.openpond.ai";
|
|
19433
|
+
const url = new URL(configured);
|
|
19434
|
+
if (url.hostname === "staging-api.openpond.ai" || url.hostname.endsWith(".staging-api.openpond.ai")) {
|
|
19435
|
+
return "https://staging.openpond.ai";
|
|
19436
|
+
}
|
|
19437
|
+
if (url.hostname === "api.openpond.ai" || url.hostname.endsWith(".api.openpond.ai")) {
|
|
19438
|
+
return "https://openpond.ai";
|
|
19439
|
+
}
|
|
19440
|
+
url.pathname = "";
|
|
19441
|
+
url.search = "";
|
|
19442
|
+
url.hash = "";
|
|
19443
|
+
return url.origin;
|
|
19444
|
+
}
|
|
19445
|
+
|
|
19446
|
+
// ../server/src/api/server-payload-helpers.ts
|
|
19447
|
+
import { randomUUID as randomUUID5 } from "node:crypto";
|
|
19448
|
+
|
|
19449
|
+
// ../server/src/openpond/organizations.ts
|
|
19450
|
+
var DEFAULT_OPENPOND_API_BASE_URL3 = "https://api.openpond.ai";
|
|
19451
|
+
async function organizationRequestPayload(action) {
|
|
19452
|
+
const context = await loadOpenPondAccountContext();
|
|
19453
|
+
const token = context.token?.trim();
|
|
19454
|
+
if (!token) {
|
|
19455
|
+
throw new Error("OpenPond account API key is required to manage organizations.");
|
|
19456
|
+
}
|
|
19457
|
+
const apiBaseUrl = resolveApiBaseUrl(context);
|
|
19458
|
+
if (action.type === "list") {
|
|
19459
|
+
return openPondApiRequest(apiBaseUrl, token, "/v1/organizations");
|
|
19460
|
+
}
|
|
19461
|
+
if (action.type === "invitations_list") {
|
|
19462
|
+
return openPondApiRequest(apiBaseUrl, token, "/v1/teams/invitations");
|
|
19463
|
+
}
|
|
19464
|
+
if (action.type === "invitation_accept" || action.type === "invitation_decline") {
|
|
19465
|
+
const decision = action.type === "invitation_accept" ? "accept" : "decline";
|
|
19466
|
+
return openPondApiRequest(apiBaseUrl, token, `/v1/teams/invitations/${decision}`, {
|
|
19467
|
+
method: "POST",
|
|
19468
|
+
body: JSON.stringify(action.payload ?? {})
|
|
19469
|
+
});
|
|
19470
|
+
}
|
|
19471
|
+
if (action.type === "create") {
|
|
19472
|
+
return openPondApiRequest(apiBaseUrl, token, "/v1/organizations", {
|
|
19473
|
+
method: "POST",
|
|
19474
|
+
body: JSON.stringify(action.payload ?? {})
|
|
19475
|
+
});
|
|
19476
|
+
}
|
|
19477
|
+
if (action.type === "get") {
|
|
19478
|
+
return openPondApiRequest(apiBaseUrl, token, `/v1/organizations/${encodeURIComponent(action.slug)}`);
|
|
19479
|
+
}
|
|
19480
|
+
if (action.type === "update") {
|
|
19481
|
+
return openPondApiRequest(apiBaseUrl, token, `/v1/organizations/${encodeURIComponent(action.slug)}`, {
|
|
19482
|
+
method: "PATCH",
|
|
19483
|
+
body: JSON.stringify(action.payload ?? {})
|
|
19484
|
+
});
|
|
19485
|
+
}
|
|
19486
|
+
if (action.type === "members") {
|
|
19487
|
+
return openPondApiRequest(apiBaseUrl, token, `/v1/organizations/${encodeURIComponent(action.slug)}/members`);
|
|
19488
|
+
}
|
|
19489
|
+
if (action.type === "member_upsert") {
|
|
19490
|
+
return openPondApiRequest(apiBaseUrl, token, `/v1/organizations/${encodeURIComponent(action.slug)}/members`, {
|
|
19491
|
+
method: "POST",
|
|
19492
|
+
body: JSON.stringify(action.payload ?? {})
|
|
19493
|
+
});
|
|
19494
|
+
}
|
|
19495
|
+
if (action.type === "mcp_get") {
|
|
19496
|
+
return openPondApiRequest(apiBaseUrl, token, `/v1/organizations/${encodeURIComponent(action.slug)}/mcp-server`);
|
|
19497
|
+
}
|
|
19498
|
+
if (action.type === "mcp_generate") {
|
|
19499
|
+
return openPondApiRequest(apiBaseUrl, token, `/v1/organizations/${encodeURIComponent(action.slug)}/mcp-server`, {
|
|
19500
|
+
method: "POST",
|
|
19501
|
+
body: JSON.stringify(action.payload ?? {})
|
|
19502
|
+
});
|
|
19503
|
+
}
|
|
19504
|
+
if (action.type === "mcp_rotate") {
|
|
19505
|
+
return openPondApiRequest(
|
|
19506
|
+
apiBaseUrl,
|
|
19507
|
+
token,
|
|
19508
|
+
`/v1/organizations/${encodeURIComponent(action.slug)}/mcp-server/rotate`,
|
|
19509
|
+
{ method: "POST" }
|
|
19510
|
+
);
|
|
19511
|
+
}
|
|
19512
|
+
if (action.type === "mcp_disable") {
|
|
19513
|
+
return openPondApiRequest(
|
|
19514
|
+
apiBaseUrl,
|
|
19515
|
+
token,
|
|
19516
|
+
`/v1/organizations/${encodeURIComponent(action.slug)}/mcp-server/disable`,
|
|
19517
|
+
{ method: "POST" }
|
|
19518
|
+
);
|
|
19519
|
+
}
|
|
19520
|
+
if (action.type === "mcp_enable") {
|
|
19521
|
+
return openPondApiRequest(
|
|
19522
|
+
apiBaseUrl,
|
|
19523
|
+
token,
|
|
19524
|
+
`/v1/organizations/${encodeURIComponent(action.slug)}/mcp-server/enable`,
|
|
19525
|
+
{ method: "POST" }
|
|
19526
|
+
);
|
|
19527
|
+
}
|
|
19528
|
+
throw new Error(`Unsupported organization action: ${action.type}`);
|
|
19529
|
+
}
|
|
19530
|
+
async function openPondApiRequest(apiBaseUrl, token, path51, init = {}) {
|
|
19531
|
+
const response = await apiFetch(apiBaseUrl, token, path51, init);
|
|
19532
|
+
const payload = await response.json().catch(() => ({}));
|
|
19533
|
+
if (!response.ok) {
|
|
19534
|
+
const message = typeof payload.message === "string" ? payload.message : typeof payload.error === "string" ? payload.error : response.statusText;
|
|
19535
|
+
throw new Error(message);
|
|
19536
|
+
}
|
|
19537
|
+
return payload;
|
|
19538
|
+
}
|
|
19539
|
+
function resolveApiBaseUrl(context) {
|
|
19540
|
+
return normalizeOptionalUrl3(process.env.OPENPOND_API_URL) ?? normalizeOptionalUrl3(context.apiBaseUrl) ?? normalizeOptionalUrl3(context.account?.apiBaseUrl) ?? normalizeOptionalUrl3(context.config.apiBaseUrl) ?? normalizeOpenPondWebBaseAsApi(context.account?.baseUrl) ?? normalizeOpenPondWebBaseAsApi(context.config.baseUrl) ?? DEFAULT_OPENPOND_API_BASE_URL3;
|
|
19541
|
+
}
|
|
19542
|
+
function normalizeOpenPondWebBaseAsApi(value) {
|
|
19543
|
+
const normalized = normalizeOptionalUrl3(value);
|
|
19544
|
+
if (!normalized) return null;
|
|
19545
|
+
try {
|
|
19546
|
+
const url = new URL(normalized);
|
|
19547
|
+
if (url.hostname === "openpond.ai") return "https://api.openpond.ai";
|
|
19548
|
+
if (!url.hostname.startsWith("api.") && url.hostname.endsWith(".openpond.ai")) {
|
|
19549
|
+
url.hostname = `api.${url.hostname}`;
|
|
19550
|
+
return url.origin;
|
|
19551
|
+
}
|
|
19552
|
+
} catch {
|
|
19553
|
+
return normalized;
|
|
19554
|
+
}
|
|
19555
|
+
return normalized;
|
|
19556
|
+
}
|
|
19557
|
+
function normalizeOptionalUrl3(value) {
|
|
19558
|
+
const trimmed = value?.trim();
|
|
19559
|
+
return trimmed ? trimmed.replace(/\/$/, "") : null;
|
|
19504
19560
|
}
|
|
19505
19561
|
|
|
19506
19562
|
// ../server/src/workspace/local-project-source-upload.ts
|
|
@@ -31297,7 +31353,7 @@ function createWorkModelToolDefinitions(deps) {
|
|
|
31297
31353
|
...deps.createScheduledWork ? [
|
|
31298
31354
|
{
|
|
31299
31355
|
name: "schedule_work",
|
|
31300
|
-
description: "Create durable recurring Work
|
|
31356
|
+
description: "Create durable recurring Work through the OpenPond control plane when the user directly asks to schedule the current or another task and provides an exact cadence, local date/time, and timezone. This capability does not depend on a scheduler daemon inside the sandbox. Use the conversation context to preserve the task prompt and ask only for genuinely unavailable required scheduling details. Delivery is not required: unless the user explicitly requests an external destination or format, default to managed in-app Work outputs; report-like work should create a polished PDF plus a concise in-app summary. The scheduled prompt must describe only the work to perform when the schedule fires, not the scheduling request itself.",
|
|
31301
31357
|
parameters: savedWorkScheduleParameters(),
|
|
31302
31358
|
execute: async (context) => {
|
|
31303
31359
|
const input = CreateHostedSavedWorkRequestSchema.parse({
|
|
@@ -45320,7 +45376,7 @@ function uniqueEvidence2(run, evidence) {
|
|
|
45320
45376
|
}
|
|
45321
45377
|
async function verifyAppliedProfileCommit(input) {
|
|
45322
45378
|
const command = input.command ?? (async (name, args, cwd, env) => {
|
|
45323
|
-
const { runWorkspaceCommand } = await import("./workspaces-
|
|
45379
|
+
const { runWorkspaceCommand } = await import("./workspaces-ODK2CTFF.js");
|
|
45324
45380
|
return runWorkspaceCommand(name, args, cwd, env);
|
|
45325
45381
|
});
|
|
45326
45382
|
const result = await command("git", ["rev-parse", "HEAD"], input.repoPath);
|
|
@@ -52955,6 +53011,7 @@ async function createOpenPondAppServer(options = {}) {
|
|
|
52955
53011
|
return readBundledAuthoringProfileSkill(name);
|
|
52956
53012
|
},
|
|
52957
53013
|
executeWebSearch: createWebSearchExecutorFromEnv(),
|
|
53014
|
+
createScheduledWork: createHostedSavedWork,
|
|
52958
53015
|
executeConnectedAppTool: createCloudConnectedAppToolExecutor(),
|
|
52959
53016
|
listIntegrationConnections: listAppServerIntegrationConnections,
|
|
52960
53017
|
loadPersonalizationSoul: async () => (await loadPersonalizationSettings(store, storeDir)).soul,
|
|
@@ -53137,11 +53194,15 @@ export {
|
|
|
53137
53194
|
savePersonalizationSettings,
|
|
53138
53195
|
workspaceToolExperienceBlocker,
|
|
53139
53196
|
createHostedTurnHelpers,
|
|
53140
|
-
organizationRequestPayload,
|
|
53141
53197
|
resolveOpenPondSandboxClient,
|
|
53142
53198
|
sandboxRequestPayload,
|
|
53143
53199
|
listSandboxIntegrationConnections,
|
|
53144
|
-
|
|
53200
|
+
listHostedSavedWork,
|
|
53201
|
+
createHostedSavedWork,
|
|
53202
|
+
updateHostedSavedWork,
|
|
53203
|
+
deleteHostedSavedWork,
|
|
53204
|
+
runHostedSavedWork,
|
|
53205
|
+
organizationRequestPayload,
|
|
53145
53206
|
previewLocalProjectSourceUpload,
|
|
53146
53207
|
codexHistorySessionWithLiveStatus,
|
|
53147
53208
|
fetchCloudProjects,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
now
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-TW4YWBQR.js";
|
|
5
5
|
|
|
6
6
|
// ../server/src/workspace/workspace-command.ts
|
|
7
7
|
import { spawn, spawnSync } from "node:child_process";
|
|
@@ -3,7 +3,7 @@ import { createRequire as __openpondCreateRequire } from "node:module"; var requ
|
|
|
3
3
|
// ../server/src/constants.ts
|
|
4
4
|
var DEFAULT_HOST = "127.0.0.1";
|
|
5
5
|
var DEFAULT_PORT = 17874;
|
|
6
|
-
var VERSION = "0.0.
|
|
6
|
+
var VERSION = "0.0.65";
|
|
7
7
|
var HOSTED_CHAT_SYSTEM_PROMPT = "You are OpenPond Chat. Respond in the user's language. If the user's latest message is language-neutral, ambiguous, or only a short test, respond in English. Be concise and directly answer the latest request. Do not use emojis. Use Markdown when it improves scanability. If you emit reasoning or thinking content, keep it sparse and user-readable: at most one short sentence for major progress, decisions, or blockers. Omit reasoning for routine searches, reads, tool calls, and obvious next steps. Do not restate the user request, narrate every action, or include code blocks, code excerpts, diffs, raw tool payloads, or markdown examples in reasoning. Put necessary code or exact snippets only in the final assistant answer. When the user asks to show or preview an image that is available as a workspace path or signed image URL, use Markdown image syntax like  instead of a bare path or raw HTML. For workspace-backed answers, use a Codex-style shape: brief outcome first, then Changed Files if files changed, then Verification if checks ran. End with a concise final answer that summarizes the result and verification when relevant. Do not mention raw tool JSON, internal repo paths, or origin/remote URLs unless the user explicitly asks for them or they are necessary to explain a git/deploy failure.";
|
|
8
8
|
var APP_PREFERENCES_CACHE_TYPE = "app_preferences";
|
|
9
9
|
var APP_PREFERENCES_CACHE_KEY = "global";
|
|
@@ -3,9 +3,9 @@ import {
|
|
|
3
3
|
resolveWebLaunchMessages,
|
|
4
4
|
runOpenPondAppServerCli,
|
|
5
5
|
runOpenPondServerCli
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-B63GTC7F.js";
|
|
7
7
|
import "./chunk-OYWTQABY.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-TW4YWBQR.js";
|
|
9
9
|
import "./chunk-BRLUAT6S.js";
|
|
10
10
|
import "./chunk-JMHOO2IG.js";
|
|
11
11
|
import "./chunk-6FZNXLVN.js";
|
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
createCloudConnectedAppToolExecutor,
|
|
27
27
|
createCrossSystemExpertBootstrapService,
|
|
28
28
|
createEvidenceSnapshot,
|
|
29
|
+
createHostedSavedWork,
|
|
29
30
|
createHostedTurnHelpers,
|
|
30
31
|
createImproveLimit,
|
|
31
32
|
createImproveTargetKind,
|
|
@@ -53,6 +54,7 @@ import {
|
|
|
53
54
|
createWebFetchModelToolDefinition,
|
|
54
55
|
createWebSearchExecutorFromEnv,
|
|
55
56
|
createWebSearchModelToolDefinition,
|
|
57
|
+
deleteHostedSavedWork,
|
|
56
58
|
ensureCapabilityToken,
|
|
57
59
|
ensureLocalHarnessRunOverlay,
|
|
58
60
|
ensureSelectedLocalHarnessWorkspace,
|
|
@@ -74,6 +76,7 @@ import {
|
|
|
74
76
|
isBundledAuthoringSkillName,
|
|
75
77
|
isOpenAiCompatibleProviderId,
|
|
76
78
|
linkHarnessReviewTaskset,
|
|
79
|
+
listHostedSavedWork,
|
|
77
80
|
listOpenAiCompatibleProviderModels,
|
|
78
81
|
listSandboxIntegrationConnections,
|
|
79
82
|
loadBundledAuthoringSkills,
|
|
@@ -107,7 +110,6 @@ import {
|
|
|
107
110
|
readChatAttachmentTextFile,
|
|
108
111
|
readTasksetAuthoringProfileSkill,
|
|
109
112
|
recordLocalHarnessImprovementBoundary,
|
|
110
|
-
requestOpenPondPublicApi,
|
|
111
113
|
requireQualifiedModelImprovement,
|
|
112
114
|
resolveBenchmarkUpstreamModel,
|
|
113
115
|
resolveContextCompactionAdapter,
|
|
@@ -121,6 +123,7 @@ import {
|
|
|
121
123
|
retryableHostedError,
|
|
122
124
|
reviewSelectedLocalHarnessEvaluation,
|
|
123
125
|
runHostedContextCompaction,
|
|
126
|
+
runHostedSavedWork,
|
|
124
127
|
runLocalHarnessEvaluationBaseline,
|
|
125
128
|
runLocalHarnessRefinerWorker,
|
|
126
129
|
safeChatAttachmentPathSegment,
|
|
@@ -135,6 +138,7 @@ import {
|
|
|
135
138
|
stringValue,
|
|
136
139
|
trimOutput,
|
|
137
140
|
trustedProviderContextLimit,
|
|
141
|
+
updateHostedSavedWork,
|
|
138
142
|
uploadLocalProjectCloudSource,
|
|
139
143
|
upsertInternalSandboxProject,
|
|
140
144
|
validateOpenAiCompatibleProvider,
|
|
@@ -143,7 +147,7 @@ import {
|
|
|
143
147
|
workspaceHasHead,
|
|
144
148
|
workspaceToolExperienceBlocker,
|
|
145
149
|
writeWorkspaceFile
|
|
146
|
-
} from "./chunk-
|
|
150
|
+
} from "./chunk-HJJYGJ36.js";
|
|
147
151
|
import {
|
|
148
152
|
appWorkspacePaths,
|
|
149
153
|
checkWorkspaceGitAvailability,
|
|
@@ -169,10 +173,10 @@ import {
|
|
|
169
173
|
runCommand,
|
|
170
174
|
startMacOSCommandLineToolsInstall,
|
|
171
175
|
workspaceImageContentType
|
|
172
|
-
} from "./chunk-
|
|
176
|
+
} from "./chunk-LNYGV6AM.js";
|
|
173
177
|
import {
|
|
174
178
|
runOpenPondServerCli
|
|
175
|
-
} from "./chunk-
|
|
179
|
+
} from "./chunk-B63GTC7F.js";
|
|
176
180
|
import {
|
|
177
181
|
createAppServer,
|
|
178
182
|
runAgentCompaction
|
|
@@ -188,7 +192,7 @@ import {
|
|
|
188
192
|
isCliEntrypoint,
|
|
189
193
|
now,
|
|
190
194
|
textFromUnknown
|
|
191
|
-
} from "./chunk-
|
|
195
|
+
} from "./chunk-TW4YWBQR.js";
|
|
192
196
|
import {
|
|
193
197
|
createOpenPondRepoApp,
|
|
194
198
|
getBundledRuntimeVersion,
|
|
@@ -256,7 +260,6 @@ import {
|
|
|
256
260
|
GithubExtensionError,
|
|
257
261
|
HarnessRunManifestContentSchema,
|
|
258
262
|
HarnessRunManifestSchema,
|
|
259
|
-
HostedSavedWorkResponseSchema,
|
|
260
263
|
HuggingFaceDatasetInspectionSchema,
|
|
261
264
|
HuggingFaceDatasetLocatorSchema,
|
|
262
265
|
HuggingFaceDatasetSourceRefSchema,
|
|
@@ -35717,60 +35720,6 @@ function createServerWorkspaceWorkflows(deps) {
|
|
|
35717
35720
|
};
|
|
35718
35721
|
}
|
|
35719
35722
|
|
|
35720
|
-
// ../server/src/openpond/saved-work.ts
|
|
35721
|
-
async function listHostedSavedWork() {
|
|
35722
|
-
const payload = HostedSavedWorkResponseSchema.parse(
|
|
35723
|
-
await requestOpenPondPublicApi({ path: "/saved-work" })
|
|
35724
|
-
);
|
|
35725
|
-
return {
|
|
35726
|
-
...payload,
|
|
35727
|
-
webBaseUrl: hostedWebBaseUrl()
|
|
35728
|
-
};
|
|
35729
|
-
}
|
|
35730
|
-
async function createHostedSavedWork(input) {
|
|
35731
|
-
const body = CreateHostedSavedWorkRequestSchema.parse(input);
|
|
35732
|
-
return requestOpenPondPublicApi({
|
|
35733
|
-
path: "/saved-work",
|
|
35734
|
-
method: "POST",
|
|
35735
|
-
body
|
|
35736
|
-
});
|
|
35737
|
-
}
|
|
35738
|
-
async function updateHostedSavedWork(scheduleId, input) {
|
|
35739
|
-
const body = UpdateHostedSavedWorkRequestSchema.parse(input);
|
|
35740
|
-
return requestOpenPondPublicApi({
|
|
35741
|
-
path: `/saved-work/schedules/${encodeURIComponent(scheduleId)}`,
|
|
35742
|
-
method: "PATCH",
|
|
35743
|
-
body
|
|
35744
|
-
});
|
|
35745
|
-
}
|
|
35746
|
-
async function deleteHostedSavedWork(scheduleId) {
|
|
35747
|
-
return requestOpenPondPublicApi({
|
|
35748
|
-
path: `/saved-work/schedules/${encodeURIComponent(scheduleId)}`,
|
|
35749
|
-
method: "DELETE"
|
|
35750
|
-
});
|
|
35751
|
-
}
|
|
35752
|
-
async function runHostedSavedWork(scheduleId, clientRequestId) {
|
|
35753
|
-
return requestOpenPondPublicApi({
|
|
35754
|
-
path: `/saved-work/schedules/${encodeURIComponent(scheduleId)}/run`,
|
|
35755
|
-
method: "POST",
|
|
35756
|
-
body: { clientRequestId }
|
|
35757
|
-
});
|
|
35758
|
-
}
|
|
35759
|
-
function hostedWebBaseUrl(env = process.env) {
|
|
35760
|
-
const configured = env.OPENPOND_HOSTED_WEB_URL?.trim() || env.OPENPOND_SANDBOX_BASE_URL?.trim() || env.OPENPOND_API_URL?.trim() || env.OPENPOND_SANDBOX_API_URL?.trim() || "https://api.openpond.ai";
|
|
35761
|
-
const url = new URL(configured);
|
|
35762
|
-
if (url.hostname === "staging-api.openpond.ai" || url.hostname.endsWith(".staging-api.openpond.ai")) {
|
|
35763
|
-
return "https://staging.openpond.ai";
|
|
35764
|
-
}
|
|
35765
|
-
if (url.hostname === "api.openpond.ai" || url.hostname.endsWith(".api.openpond.ai")) {
|
|
35766
|
-
return "https://openpond.ai";
|
|
35767
|
-
}
|
|
35768
|
-
url.pathname = "";
|
|
35769
|
-
url.search = "";
|
|
35770
|
-
url.hash = "";
|
|
35771
|
-
return url.origin;
|
|
35772
|
-
}
|
|
35773
|
-
|
|
35774
35723
|
// ../server/src/remote-access/tailscale.ts
|
|
35775
35724
|
import { execFile as execFile5 } from "node:child_process";
|
|
35776
35725
|
import { existsSync as existsSync11 } from "node:fs";
|
|
@@ -45,8 +45,8 @@ import {
|
|
|
45
45
|
truncatePatch,
|
|
46
46
|
uniqueSortedPaths,
|
|
47
47
|
workspaceImageContentType
|
|
48
|
-
} from "./chunk-
|
|
49
|
-
import "./chunk-
|
|
48
|
+
} from "./chunk-LNYGV6AM.js";
|
|
49
|
+
import "./chunk-TW4YWBQR.js";
|
|
50
50
|
import "./chunk-UACZUFIA.js";
|
|
51
51
|
export {
|
|
52
52
|
MACOS_GIT_MISSING_DEVELOPER_TOOLS_ERROR,
|
package/dist/cli.js
CHANGED
|
@@ -70,8 +70,8 @@ async function runEmbeddedCompanion(argv) {
|
|
|
70
70
|
if (argv[0] === "__app-server") {
|
|
71
71
|
process.argv = [process.execPath, "openpond-app-server", ...argv.slice(1)];
|
|
72
72
|
const [{ createOpenPondAppServer }, { runOpenPondAppServerCli }] = await Promise.all([
|
|
73
|
-
import("./chunks/app-server-runtime-
|
|
74
|
-
import("./chunks/cli-
|
|
73
|
+
import("./chunks/app-server-runtime-6PDQHOBE.js"),
|
|
74
|
+
import("./chunks/cli-CQOUYUQ4.js")
|
|
75
75
|
]);
|
|
76
76
|
await runOpenPondAppServerCli(createOpenPondAppServer);
|
|
77
77
|
return true;
|
|
@@ -79,10 +79,10 @@ async function runEmbeddedCompanion(argv) {
|
|
|
79
79
|
if (argv[0] === "__server") {
|
|
80
80
|
process.argv = [process.execPath, "openpond-server", ...argv.slice(1)];
|
|
81
81
|
const [{ createOpenPondServer }, { runOpenPondServerCli }] = await Promise.all([
|
|
82
|
-
import("./chunks/src-
|
|
83
|
-
import("./chunks/cli-
|
|
82
|
+
import("./chunks/src-ESTRZ2YU.js"),
|
|
83
|
+
import("./chunks/cli-CQOUYUQ4.js")
|
|
84
84
|
]);
|
|
85
|
-
const { createOpenPondAppServer } = await import("./chunks/app-server-runtime-
|
|
85
|
+
const { createOpenPondAppServer } = await import("./chunks/app-server-runtime-6PDQHOBE.js");
|
|
86
86
|
await runOpenPondServerCli({ createOpenPondServer, createOpenPondAppServer });
|
|
87
87
|
return true;
|
|
88
88
|
}
|