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.
@@ -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-HM6Z3PEC.js";
6
- import "./chunk-57XKCMOZ.js";
5
+ } from "./chunk-HJJYGJ36.js";
6
+ import "./chunk-LNYGV6AM.js";
7
7
  import "./chunk-OYWTQABY.js";
8
- import "./chunk-C7TOCBGY.js";
8
+ import "./chunk-TW4YWBQR.js";
9
9
  import "./chunk-BRLUAT6S.js";
10
10
  import "./chunk-JMHOO2IG.js";
11
11
  import "./chunk-QETF6ILG.js";
@@ -6,7 +6,7 @@ import {
6
6
  DEFAULT_HOST,
7
7
  DEFAULT_PORT,
8
8
  parseListen
9
- } from "./chunk-C7TOCBGY.js";
9
+ } from "./chunk-TW4YWBQR.js";
10
10
  import {
11
11
  getBundledRuntimeVersion,
12
12
  openUrlWithSystemBrowser
@@ -11,7 +11,7 @@ import {
11
11
  truncatePatch,
12
12
  uniqueSortedPaths,
13
13
  workspaceImageContentType
14
- } from "./chunk-57XKCMOZ.js";
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-C7TOCBGY.js";
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 DEFAULT_OPENPOND_API_BASE_URL3 = "https://api.openpond.ai";
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 `${DEFAULT_OPENPOND_API_BASE_URL3}/v1/sandboxes`;
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 ?? DEFAULT_OPENPOND_API_BASE_URL3);
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 normalizeOptionalUrl3(value) {
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 = normalizeOptionalUrl3(
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 normalizeOptionalUrl3(process.env.OPENPOND_SANDBOX_BASE_URL) ?? normalizeOptionalUrl3(process.env.OPENPOND_API_URL) ?? normalizeOptionalUrl3(context.apiBaseUrl) ?? normalizeOptionalUrl3(context.account?.baseUrl) ?? normalizeOptionalUrl3(context.config.baseUrl) ?? DEFAULT_OPENPOND_SANDBOX_BASE_URL;
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 only when the user directly asks to schedule the current or another task and provides an exact cadence, local date/time, and timezone. Use the conversation context to preserve the task prompt. Ask only for missing scheduling details before calling this tool. The scheduled prompt must describe the work to perform when the schedule fires, not the scheduling request itself.",
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-IXF7MIQV.js");
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
- requestOpenPondPublicApi,
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-C7TOCBGY.js";
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.64";
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 ![description](path-or-url) 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-THYIAXOB.js";
6
+ } from "./chunk-B63GTC7F.js";
7
7
  import "./chunk-OYWTQABY.js";
8
- import "./chunk-C7TOCBGY.js";
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-HM6Z3PEC.js";
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-57XKCMOZ.js";
176
+ } from "./chunk-LNYGV6AM.js";
173
177
  import {
174
178
  runOpenPondServerCli
175
- } from "./chunk-THYIAXOB.js";
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-C7TOCBGY.js";
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-57XKCMOZ.js";
49
- import "./chunk-C7TOCBGY.js";
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-XWIG4OWY.js"),
74
- import("./chunks/cli-3BI2QBI2.js")
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-DQFVZZUR.js"),
83
- import("./chunks/cli-3BI2QBI2.js")
82
+ import("./chunks/src-ESTRZ2YU.js"),
83
+ import("./chunks/cli-CQOUYUQ4.js")
84
84
  ]);
85
- const { createOpenPondAppServer } = await import("./chunks/app-server-runtime-XWIG4OWY.js");
85
+ const { createOpenPondAppServer } = await import("./chunks/app-server-runtime-6PDQHOBE.js");
86
86
  await runOpenPondServerCli({ createOpenPondServer, createOpenPondAppServer });
87
87
  return true;
88
88
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openpond",
3
- "version": "0.0.64",
3
+ "version": "0.0.65",
4
4
  "openpondReleaseVersioned": true,
5
5
  "license": "MIT",
6
6
  "description": "OpenPond CLI and local harness",