openpond 0.0.61 → 0.0.63

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.
Files changed (108) hide show
  1. package/dist/chunks/{actions-command-QVYIPEN5.js → actions-command-DZ6D7JTO.js} +2 -2
  2. package/dist/chunks/{app-layer-GCNXR4F3.js → app-layer-TUAFALOE.js} +5 -5
  3. package/dist/chunks/{app-server-runtime-737DBOSH.js → app-server-runtime-O26LVUYH.js} +7 -7
  4. package/dist/chunks/{apps-JB3POF6Z.js → apps-KSZRA7Y2.js} +5 -5
  5. package/dist/chunks/{chunk-NPEWMLRH.js → chunk-66KQLYSH.js} +1 -1
  6. package/dist/chunks/{chunk-ZJPLJP2Q.js → chunk-6FKBOGA4.js} +2 -2
  7. package/dist/chunks/{chunk-6RMGHEFF.js → chunk-7IFPXSSJ.js} +1 -1
  8. package/dist/chunks/{chunk-5HMXXGWZ.js → chunk-7UVEB2AZ.js} +2 -2
  9. package/dist/chunks/{chunk-32R4GQD3.js → chunk-IXA5PMXC.js} +2 -2
  10. package/dist/chunks/{chunk-XIUCBUUQ.js → chunk-J2REM7LE.js} +1 -1
  11. package/dist/chunks/{chunk-XSHMPOQV.js → chunk-JGOP4GCK.js} +6 -0
  12. package/dist/chunks/{chunk-TOMMZN6V.js → chunk-JTFDOA2P.js} +41 -16
  13. package/dist/chunks/{chunk-IZ3XGRAG.js → chunk-K4JEWEJQ.js} +1 -1
  14. package/dist/chunks/{chunk-L5JTI6LQ.js → chunk-KGU437HZ.js} +4 -2
  15. package/dist/chunks/{chunk-ZAX7MLQJ.js → chunk-LEL5AQJU.js} +1 -1
  16. package/dist/chunks/{chunk-B3WVCPXG.js → chunk-PLDCQVNW.js} +71 -6
  17. package/dist/chunks/{chunk-YSVY4O42.js → chunk-T55IL3GI.js} +1 -1
  18. package/dist/chunks/{chunk-BQQS5RRI.js → chunk-V2CTXKS2.js} +156 -61
  19. package/dist/chunks/{chunk-LBIVEX6V.js → chunk-YDH34BGG.js} +35 -33
  20. package/dist/chunks/{cli-MFFCFH3P.js → cli-LPFU4ULD.js} +6 -6
  21. package/dist/chunks/{core-commands-KCFU7U5Y.js → core-commands-OEOBYFIW.js} +6 -6
  22. package/dist/chunks/{desktop-test-FEQVX4N4.js → desktop-test-BRLZF3O7.js} +5 -5
  23. package/dist/chunks/{extension-M4DH25KH.js → extension-5BUCIDKG.js} +1 -1
  24. package/dist/chunks/{help-ZUIE4EPY.js → help-MT6VPW4X.js} +1 -1
  25. package/dist/chunks/{opchat-7KRZIFFD.js → opchat-O4DVKNFW.js} +5 -5
  26. package/dist/chunks/{organizations-ZWPFNM6K.js → organizations-ACNOJ57Q.js} +7 -7
  27. package/dist/chunks/{profile-GF57OWI6.js → profile-7LLWXAJE.js} +12 -7
  28. package/dist/chunks/{project-agent-65MXZHGM.js → project-agent-RVYQYTU2.js} +27 -7
  29. package/dist/chunks/{sandbox-command-WH2OQRHP.js → sandbox-command-QST23BX5.js} +6 -6
  30. package/dist/chunks/{sandbox-template-W5HU24TF.js → sandbox-template-N7UG3P6V.js} +7 -7
  31. package/dist/chunks/{src-YUIJKNIC.js → src-CPM5Q7T5.js} +4 -4
  32. package/dist/chunks/{src-O5QXOQ5H.js → src-M37V6NVU.js} +60 -13
  33. package/dist/chunks/{teams-bot-5ATLXSHC.js → teams-bot-ITTI47XS.js} +5 -5
  34. package/dist/chunks/{workspaces-4XJ3GXL4.js → workspaces-CYBR37US.js} +2 -2
  35. package/dist/cli.js +13 -13
  36. package/dist/index.js +6 -0
  37. package/dist/sandbox/client-handles.d.ts +2 -1
  38. package/dist/sandbox/client.d.ts +3 -1
  39. package/dist/sandbox/types/org-project-agent.d.ts +13 -0
  40. package/dist/web/assets/{AppDialog-BvdkukM_.js → AppDialog-wIb8mGQ0.js} +1 -1
  41. package/dist/web/assets/{AppsView-9h3-BQbk.js → AppsView-D097dPIV.js} +1 -1
  42. package/dist/web/assets/{BrowserSidebar-C6WJ5wIu.js → BrowserSidebar-DrD-o_yB.js} +1 -1
  43. package/dist/web/assets/{CommandMenu-C7en9zgQ.js → CommandMenu-L5LelA2h.js} +1 -1
  44. package/dist/web/assets/{CommunityView-CoqI6Dks.js → CommunityView-DUJ8NryS.js} +1 -1
  45. package/dist/web/assets/{ComposerCreateImproveStrip-DMq6A2Ba.js → ComposerCreateImproveStrip-BP-7DmQG.js} +1 -1
  46. package/dist/web/assets/{GetStartedView-B-zgx1jI.js → GetStartedView-B7gB6Hii.js} +1 -1
  47. package/dist/web/assets/{LabModelVersionDetailPage-CkNOBygO.js → LabModelVersionDetailPage-CNDz2a6I.js} +1 -1
  48. package/dist/web/assets/{LabSkillSidebar-CmRHuu78.js → LabSkillSidebar-BImOQcjk.js} +1 -1
  49. package/dist/web/assets/{LabsRoute-DLPZqEev.js → LabsRoute-BauSK1is.js} +3 -3
  50. package/dist/web/assets/{MainChatThread-CFGsODmc.js → MainChatThread-BZvAqQO6.js} +2 -2
  51. package/dist/web/assets/MainPane-CuhwxMxg.js +6 -0
  52. package/dist/web/assets/{MarkdownText-C4Ixpl-i.js → MarkdownText-gwAue4u5.js} +1 -1
  53. package/dist/web/assets/{Messages-DmEk_BWS.js → Messages-DijmQL-z.js} +8 -8
  54. package/dist/web/assets/{NativeSkillSidebar-Cn824hrX.js → NativeSkillSidebar-aCkrdGa0.js} +1 -1
  55. package/dist/web/assets/{NewProjectDialog-BFEDv4Ga.js → NewProjectDialog-D98WIQzr.js} +1 -1
  56. package/dist/web/assets/{OutputsPage-hfQyqQzx.js → OutputsPage-BA0c6cfy.js} +1 -1
  57. package/dist/web/assets/{RightChatPanelStack-CiPKX3Ea.js → RightChatPanelStack-DKDEmrEH.js} +1 -1
  58. package/dist/web/assets/{ScheduledWorkPage-CyoZsUCe.js → ScheduledWorkPage-DeHi99mv.js} +1 -1
  59. package/dist/web/assets/SettingsView--fL3Ecuy.js +6 -0
  60. package/dist/web/assets/SettingsView-BS5m5vdt.css +1 -0
  61. package/dist/web/assets/TeamChatView-D2mCoLZ3.js +3 -0
  62. package/dist/web/assets/{TerminalOverlay-CpsPuPIM.js → TerminalOverlay-BHMsVp4L.js} +1 -1
  63. package/dist/web/assets/{TrainingCreationPanel-DMLpUVbJ.js → TrainingCreationPanel-CPnMWgkt.js} +1 -1
  64. package/dist/web/assets/{TrainingDraftPanel-gAhpwkYs.js → TrainingDraftPanel-0scEtzSW.js} +1 -1
  65. package/dist/web/assets/{UsageSettingsSection-WBtxLhBx.js → UsageSettingsSection-COoCLLg6.js} +1 -1
  66. package/dist/web/assets/{WorkspaceDiffPanel-CUpwqvzZ.js → WorkspaceDiffPanel-BFTwZ_dB.js} +5 -5
  67. package/dist/web/assets/{WorkspaceEnvironmentMenu-LIbOBT4f.js → WorkspaceEnvironmentMenu-DFlkdd9T.js} +3 -3
  68. package/dist/web/assets/{WorkspaceGitDialogs-8y7rRSou.js → WorkspaceGitDialogs-Dt3LO27Z.js} +1 -1
  69. package/dist/web/assets/{WorkspaceMonacoEditor-BpHmWrCD.js → WorkspaceMonacoEditor-3g05teoR.js} +3 -3
  70. package/dist/web/assets/{arrow-up-right-3TbyK1ec.js → arrow-up-right-DYGSWA2J.js} +1 -1
  71. package/dist/web/assets/{chevron-up-C4tTuxXs.js → chevron-up-4qfvI9iW.js} +1 -1
  72. package/dist/web/assets/{cloud-upload-ZGHLWEn3.js → cloud-upload-COReKxOy.js} +1 -1
  73. package/dist/web/assets/{cssMode-kfZCOm_r.js → cssMode-BbH67BYF.js} +1 -1
  74. package/dist/web/assets/{folder-open-C4WG_lDr.js → folder-open-9OjGqNgP.js} +1 -1
  75. package/dist/web/assets/{folder-plus-CKRaDeR3.js → folder-plus-DF5E6zr3.js} +1 -1
  76. package/dist/web/assets/{git-branch-yLi5tff8.js → git-branch-eCwyZXMl.js} +1 -1
  77. package/dist/web/assets/{git-commit-horizontal-BPyGYak3.js → git-commit-horizontal-cPm51DqY.js} +1 -1
  78. package/dist/web/assets/{htmlMode-DT--Et9k.js → htmlMode-DD6Oge4x.js} +1 -1
  79. package/dist/web/assets/{index--lwjVZXT.js → index-BO2W2U23.js} +66 -66
  80. package/dist/web/assets/index-BRLugX1S.js +1 -0
  81. package/dist/web/assets/{index-B_HvNtwl.css → index-Y7IoiSlQ.css} +1 -1
  82. package/dist/web/assets/{info-CzzHwSUb.js → info-p1mFpqBI.js} +1 -1
  83. package/dist/web/assets/{jsonMode-CKg1GzqC.js → jsonMode-C2Xd56A_.js} +1 -1
  84. package/dist/web/assets/{lspLanguageFeatures-B76Yo6xo.js → lspLanguageFeatures-BjYEk4gJ.js} +1 -1
  85. package/dist/web/assets/{monaco.contribution-BRuQU-2A.js → monaco.contribution-Bo-5m7yy.js} +2 -2
  86. package/dist/web/assets/{monaco.contribution-CLpGfCSS.js → monaco.contribution-C7WMqwmc.js} +2 -2
  87. package/dist/web/assets/{monaco.contribution-CS3H8RrD.js → monaco.contribution-DzWlEgU1.js} +2 -2
  88. package/dist/web/assets/{monaco.contribution-DqeexNAI.js → monaco.contribution-quEPEMQZ.js} +2 -2
  89. package/dist/web/assets/{play-EDFh3BPS.js → play-Ctx-iMqd.js} +1 -1
  90. package/dist/web/assets/{python-De_Vr_hD.js → python-Cm64qCpk.js} +1 -1
  91. package/dist/web/assets/{refresh-cw-DRJJ-X1U.js → refresh-cw-Bn28jIl0.js} +1 -1
  92. package/dist/web/assets/{save-BSxqIWP6.js → save-BM5IQX65.js} +1 -1
  93. package/dist/web/assets/{square-BV-Vgh5a.js → square-DAGpFfSr.js} +1 -1
  94. package/dist/web/assets/{toggleHighContrast-1Suz4cxo.js → toggleHighContrast-DLW8Fnck.js} +1 -1
  95. package/dist/web/assets/{tsMode-DMyzpvFI.js → tsMode-BleUN_8S.js} +1 -1
  96. package/dist/web/assets/{upload-jVxCW0dO.js → upload-vaAKFfxi.js} +1 -1
  97. package/dist/web/assets/{useLocalAgentSchedules-DNpnOBA8.js → useLocalAgentSchedules-Ccenbqf6.js} +1 -1
  98. package/dist/web/assets/{wifi-off-IzGGiOX_.js → wifi-off-DJA9KReb.js} +1 -1
  99. package/dist/web/assets/{workers-Crdnk6Zy.js → workers-CFG-afha.js} +1 -1
  100. package/dist/web/assets/{yaml-CF3tmjgW.js → yaml-Cs8iZKVC.js} +1 -1
  101. package/dist/web/index.html +2 -2
  102. package/docs/command-reference.md +2 -0
  103. package/package.json +1 -1
  104. package/dist/web/assets/MainPane-B2kcZpM0.js +0 -6
  105. package/dist/web/assets/SettingsView-BZkrIOc0.css +0 -1
  106. package/dist/web/assets/SettingsView-DWWs9gel.js +0 -6
  107. package/dist/web/assets/TeamChatView-C4RWAO8c.js +0 -3
  108. package/dist/web/assets/index-C9-OtZl8.js +0 -1
@@ -143,7 +143,7 @@ import {
143
143
  workspaceHasHead,
144
144
  workspaceToolExperienceBlocker,
145
145
  writeWorkspaceFile
146
- } from "./chunk-BQQS5RRI.js";
146
+ } from "./chunk-V2CTXKS2.js";
147
147
  import {
148
148
  appWorkspacePaths,
149
149
  checkWorkspaceGitAvailability,
@@ -169,10 +169,10 @@ import {
169
169
  runCommand,
170
170
  startMacOSCommandLineToolsInstall,
171
171
  workspaceImageContentType
172
- } from "./chunk-NPEWMLRH.js";
172
+ } from "./chunk-66KQLYSH.js";
173
173
  import {
174
174
  runOpenPondServerCli
175
- } from "./chunk-5HMXXGWZ.js";
175
+ } from "./chunk-7UVEB2AZ.js";
176
176
  import {
177
177
  createAppServer,
178
178
  runAgentCompaction
@@ -188,7 +188,7 @@ import {
188
188
  isCliEntrypoint,
189
189
  now,
190
190
  textFromUnknown
191
- } from "./chunk-6RMGHEFF.js";
191
+ } from "./chunk-7IFPXSSJ.js";
192
192
  import {
193
193
  createOpenPondRepoApp,
194
194
  getBundledRuntimeVersion,
@@ -202,7 +202,7 @@ import {
202
202
  streamOpenPondHostedChatTurn,
203
203
  switchOpenPondAccount,
204
204
  updateOpenPondAccountConfig
205
- } from "./chunk-32R4GQD3.js";
205
+ } from "./chunk-IXA5PMXC.js";
206
206
  import {
207
207
  AccountStateSchema,
208
208
  AdapterValidationReceiptSchema,
@@ -435,7 +435,7 @@ import {
435
435
  workFormatCapabilityForContentType,
436
436
  workspacePathFromLocalPathWorkspaceId,
437
437
  writeSourceUploadCache
438
- } from "./chunk-L5JTI6LQ.js";
438
+ } from "./chunk-KGU437HZ.js";
439
439
  import "./chunk-QETF6ILG.js";
440
440
  import {
441
441
  ArtifactManifestSchema,
@@ -481,14 +481,14 @@ import {
481
481
  workEvidenceReceiptRef,
482
482
  workSourceOpaqueRef,
483
483
  workWorkspaceOpaqueRef
484
- } from "./chunk-TOMMZN6V.js";
484
+ } from "./chunk-JTFDOA2P.js";
485
485
  import {
486
486
  external_exports,
487
487
  yaml
488
488
  } from "./chunk-WYDVQOBL.js";
489
489
  import {
490
490
  withVercelProtectionBypass
491
- } from "./chunk-XSHMPOQV.js";
491
+ } from "./chunk-JGOP4GCK.js";
492
492
  import {
493
493
  __commonJS,
494
494
  __require,
@@ -20792,7 +20792,7 @@ async function buildAgentSdkMaterializedDependency(projectPath, packageJson) {
20792
20792
  return null;
20793
20793
  const tempDir = await fs9.mkdtemp(path15.join(tmpdir(), "openpond-agent-sdk-pack-"));
20794
20794
  try {
20795
- const sdkContents = sdkSource.kind === "package_root" ? await packOpenPondAgentSdkPackageRoot(sdkSource.packageRoot, tempDir) : sdkSource.tarballContents;
20795
+ const sdkContents = sdkSource.kind === "package_root" ? await packOpenPondAgentSdkPackageRoot(sdkSource.packageRoot, tempDir) : sdkSource.kind === "registry" ? await packOpenPondAgentSdkRegistryPackage(sdkSource.versionSpec, tempDir) : sdkSource.tarballContents;
20796
20796
  const sdkDependencyTarballs = await packAgentSdkRuntimeDependencyTarballs({
20797
20797
  sdkPackageJson: sdkSource.packageJson,
20798
20798
  dependencyBaseDir: sdkSource.dependencyBaseDir,
@@ -20860,7 +20860,9 @@ ${details}` : ""}`);
20860
20860
  async function packAgentSdkRuntimeDependencyTarballs(params) {
20861
20861
  const sdkDependencies = recordStringMap(params.sdkPackageJson.dependencies);
20862
20862
  const projectDependencies = recordStringMap(params.projectPackageJson.dependencies);
20863
+ const projectDevDependencies = recordStringMap(params.projectPackageJson.devDependencies);
20863
20864
  delete projectDependencies["openpond-agent-sdk"];
20865
+ delete projectDevDependencies["openpond-agent-sdk"];
20864
20866
  const pending = [
20865
20867
  ...Object.entries(sdkDependencies).map(([packageName, versionSpec]) => ({
20866
20868
  packageName,
@@ -20871,6 +20873,11 @@ async function packAgentSdkRuntimeDependencyTarballs(params) {
20871
20873
  packageName,
20872
20874
  versionSpec,
20873
20875
  dependencyBaseDir: params.projectPath
20876
+ })),
20877
+ ...Object.entries(projectDevDependencies).map(([packageName, versionSpec]) => ({
20878
+ packageName,
20879
+ versionSpec,
20880
+ dependencyBaseDir: params.projectPath
20874
20881
  }))
20875
20882
  ].sort((left, right) => left.packageName.localeCompare(right.packageName));
20876
20883
  const seen = /* @__PURE__ */ new Set();
@@ -20896,7 +20903,12 @@ ${details}` : ""}`);
20896
20903
  throw new Error(`failed to pack openpond-agent-sdk dependency ${packageName}: npm pack did not return a tarball name`);
20897
20904
  }
20898
20905
  const contents = await fs9.readFile(path15.join(params.tempDir, tarballName));
20899
- const packedPackageJson = readPackageJsonFromNpmTarball(contents);
20906
+ let packedPackageJson;
20907
+ try {
20908
+ packedPackageJson = readPackageJsonFromNpmTarball(contents);
20909
+ } catch (error) {
20910
+ throw new Error(`failed to inspect packed dependency ${packageName}: ${error instanceof Error ? error.message : String(error)}`);
20911
+ }
20900
20912
  tarballs.push({
20901
20913
  packageName,
20902
20914
  source: "npm_dependency_tarball",
@@ -20942,6 +20954,25 @@ function npmPackTargetForDependency(params) {
20942
20954
  function sanitizeNpmPackageNameForVendor(packageName) {
20943
20955
  return packageName.replace(/^@/, "").replace(/[\/\\]/g, "__").replace(/[^a-zA-Z0-9._-]/g, "_");
20944
20956
  }
20957
+ async function packOpenPondAgentSdkRegistryPackage(versionSpec, tempDir) {
20958
+ const pack = await runCommand2("npm", [
20959
+ "pack",
20960
+ "--silent",
20961
+ "--pack-destination",
20962
+ tempDir,
20963
+ `openpond-agent-sdk@${versionSpec}`
20964
+ ], { cwd: tempDir });
20965
+ if (pack.code !== 0) {
20966
+ const details = [pack.stderr.trim(), pack.stdout.trim()].filter(Boolean).join("\n");
20967
+ throw new Error(`failed to pack openpond-agent-sdk for source upload${details ? `:
20968
+ ${details}` : ""}`);
20969
+ }
20970
+ const tarballName = pack.stdout.trim().split(/\r?\n/).filter(Boolean).pop();
20971
+ if (!tarballName) {
20972
+ throw new Error("failed to pack openpond-agent-sdk for source upload: npm pack did not return a tarball name");
20973
+ }
20974
+ return fs9.readFile(path15.join(tempDir, tarballName));
20975
+ }
20945
20976
  function resolveLocalOpenPondAgentSdkMaterializationSource(projectPath, packageJson) {
20946
20977
  const versionSpec = readOpenPondAgentSdkVersionSpec(packageJson);
20947
20978
  if (versionSpec?.startsWith("file:")) {
@@ -20979,6 +21010,17 @@ function resolveLocalOpenPondAgentSdkMaterializationSource(projectPath, packageJ
20979
21010
  };
20980
21011
  }
20981
21012
  }
21013
+ const installedPackageRoot = path15.join(projectPath, "node_modules", "openpond-agent-sdk");
21014
+ if (isOpenPondAgentSdkPackageRoot(installedPackageRoot)) {
21015
+ const installedPackageJson = JSON.parse(readFileSyncUtf8(path15.join(installedPackageRoot, "package.json")));
21016
+ const installedVersion = text(installedPackageJson.version);
21017
+ return {
21018
+ kind: "registry",
21019
+ versionSpec: installedVersion ?? versionSpec ?? "latest",
21020
+ dependencyBaseDir: installedPackageRoot,
21021
+ packageJson: installedPackageJson
21022
+ };
21023
+ }
20982
21024
  return null;
20983
21025
  }
20984
21026
  function findOpenPondAgentSdkPackageRootInAncestors(projectPath) {
@@ -21029,12 +21071,12 @@ function readPackageJsonFromNpmTarball(tarballContents) {
21029
21071
  }
21030
21072
  const dataStart = offset + 512;
21031
21073
  const dataEnd = dataStart + size;
21032
- if (entryPath === "package/package.json") {
21074
+ if (entryPath === "package/package.json" || entryPath.endsWith("/package.json")) {
21033
21075
  return JSON.parse(tarContents.subarray(dataStart, dataEnd).toString("utf8"));
21034
21076
  }
21035
21077
  offset = dataStart + Math.ceil(size / 512) * 512;
21036
21078
  }
21037
- throw new Error("failed to read openpond-agent-sdk tarball: missing package.json");
21079
+ throw new Error("failed to read npm package tarball: missing package.json");
21038
21080
  }
21039
21081
  function readTarString(header, start, length) {
21040
21082
  const field = header.subarray(start, start + length);
@@ -21679,6 +21721,10 @@ async function materializeHostedProfileAgentSource(input) {
21679
21721
  });
21680
21722
  const sourceCommitSha = sandboxProjectSourceCommitSha(syncedProject) ?? sandboxProjectSourceCommitSha(uploadedProject);
21681
21723
  const sourceRef = sandboxProjectSourceRef(syncedProject) ?? sandboxProjectSourceRef(uploadedProject) ?? input.sourceRef;
21724
+ const runtimeAgentExternalId = `openpond-profile-agent:${input.profileProjectId}:${input.profileName}:${input.agentId}`;
21725
+ const existingRuntimeAgent = (await input.client.agents.list({
21726
+ teamId: input.teamId
21727
+ })).find((candidate2) => candidate2.externalId === runtimeAgentExternalId);
21682
21728
  const runtimeAgent = await input.client.agents.upsert({
21683
21729
  teamId: input.teamId,
21684
21730
  projectId: syncedProject.id,
@@ -21692,6 +21738,7 @@ async function materializeHostedProfileAgentSource(input) {
21692
21738
  ...sourceCommitSha ? { sourceCommitSha } : {}
21693
21739
  },
21694
21740
  metadata: {
21741
+ ...existingRuntimeAgent?.metadata ?? {},
21695
21742
  source: "openpond_profile_agent_materialization",
21696
21743
  profileProjectId: input.profileProjectId,
21697
21744
  profileName: input.profileName,
@@ -21700,7 +21747,7 @@ async function materializeHostedProfileAgentSource(input) {
21700
21747
  localHead: input.localHead,
21701
21748
  hostedHead: input.hostedHead
21702
21749
  },
21703
- externalId: `openpond-profile-agent:${input.profileProjectId}:${input.profileName}:${input.agentId}`
21750
+ externalId: runtimeAgentExternalId
21704
21751
  });
21705
21752
  const uploadMetadata = record(agentSdk.uploadMetadata);
21706
21753
  const commands = record(uploadMetadata?.commands);
@@ -1,12 +1,12 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
2
  import {
3
3
  resolveSandboxClient
4
- } from "./chunk-XIUCBUUQ.js";
5
- import "./chunk-ZAX7MLQJ.js";
4
+ } from "./chunk-J2REM7LE.js";
5
+ import "./chunk-LEL5AQJU.js";
6
6
  import "./chunk-SMNFI2FU.js";
7
- import "./chunk-LBIVEX6V.js";
8
- import "./chunk-IZ3XGRAG.js";
9
- import "./chunk-XSHMPOQV.js";
7
+ import "./chunk-YDH34BGG.js";
8
+ import "./chunk-K4JEWEJQ.js";
9
+ import "./chunk-JGOP4GCK.js";
10
10
  import "./chunk-DBHSOTYZ.js";
11
11
  import "./chunk-KSRWKXRB.js";
12
12
  import {
@@ -45,8 +45,8 @@ import {
45
45
  truncatePatch,
46
46
  uniqueSortedPaths,
47
47
  workspaceImageContentType
48
- } from "./chunk-NPEWMLRH.js";
49
- import "./chunk-6RMGHEFF.js";
48
+ } from "./chunk-66KQLYSH.js";
49
+ import "./chunk-7IFPXSSJ.js";
50
50
  import "./chunk-UACZUFIA.js";
51
51
  export {
52
52
  MACOS_GIT_MISSING_DEVELOPER_TOOLS_ERROR,
package/dist/cli.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
3
3
  import {
4
4
  parseArgs
5
- } from "./chunks/chunk-ZAX7MLQJ.js";
5
+ } from "./chunks/chunk-LEL5AQJU.js";
6
6
  import {
7
7
  resolveAccountOption,
8
8
  resolveBaseUrlOption
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  getInstalledCliVersion,
12
12
  runCliCommand
13
- } from "./chunks/chunk-LBIVEX6V.js";
13
+ } from "./chunks/chunk-YDH34BGG.js";
14
14
  import "./chunks/chunk-KSRWKXRB.js";
15
15
  import {
16
16
  parseBooleanOption
@@ -37,11 +37,11 @@ async function runOpenPondCli(argv = process.argv.slice(2)) {
37
37
  return;
38
38
  }
39
39
  if (action === "check-update") {
40
- await (await import("./chunks/core-commands-KCFU7U5Y.js")).runCheckUpdate();
40
+ await (await import("./chunks/core-commands-OEOBYFIW.js")).runCheckUpdate();
41
41
  return;
42
42
  }
43
43
  if (action === "help") {
44
- (await import("./chunks/help-ZUIE4EPY.js")).printHelp();
44
+ (await import("./chunks/help-MT6VPW4X.js")).printHelp();
45
45
  return;
46
46
  }
47
47
  const selectedAccount = resolveAccountOption(options);
@@ -53,25 +53,25 @@ async function runOpenPondCli(argv = process.argv.slice(2)) {
53
53
  process.env.OPENPOND_BASE_URL = selectedBaseUrl;
54
54
  }
55
55
  if (action === "tui") {
56
- await (await import("./chunks/app-layer-GCNXR4F3.js")).runOpenPondTerminalCommand(options, rest);
56
+ await (await import("./chunks/app-layer-TUAFALOE.js")).runOpenPondTerminalCommand(options, rest);
57
57
  return;
58
58
  }
59
59
  if (action === "ui") {
60
- await (await import("./chunks/app-layer-GCNXR4F3.js")).runOpenPondServerCommand("web", options, rest);
60
+ await (await import("./chunks/app-layer-TUAFALOE.js")).runOpenPondServerCommand("web", options, rest);
61
61
  return;
62
62
  }
63
63
  if (await runCliCommand({ command, options, rest })) {
64
64
  return;
65
65
  }
66
- (await import("./chunks/help-ZUIE4EPY.js")).printHelp();
66
+ (await import("./chunks/help-MT6VPW4X.js")).printHelp();
67
67
  process.exit(1);
68
68
  }
69
69
  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-737DBOSH.js"),
74
- import("./chunks/cli-MFFCFH3P.js")
73
+ import("./chunks/app-server-runtime-O26LVUYH.js"),
74
+ import("./chunks/cli-LPFU4ULD.js")
75
75
  ]);
76
76
  await runOpenPondAppServerCli(createOpenPondAppServer);
77
77
  return true;
@@ -79,15 +79,15 @@ 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-O5QXOQ5H.js"),
83
- import("./chunks/cli-MFFCFH3P.js")
82
+ import("./chunks/src-M37V6NVU.js"),
83
+ import("./chunks/cli-LPFU4ULD.js")
84
84
  ]);
85
- const { createOpenPondAppServer } = await import("./chunks/app-server-runtime-737DBOSH.js");
85
+ const { createOpenPondAppServer } = await import("./chunks/app-server-runtime-O26LVUYH.js");
86
86
  await runOpenPondServerCli({ createOpenPondServer, createOpenPondAppServer });
87
87
  return true;
88
88
  }
89
89
  if (argv[0] === "__terminal") {
90
- await (await import("./chunks/src-YUIJKNIC.js")).runOpenPondTerminalCli(argv.slice(1));
90
+ await (await import("./chunks/src-CPM5Q7T5.js")).runOpenPondTerminalCli(argv.slice(1));
91
91
  return true;
92
92
  }
93
93
  return false;
package/dist/index.js CHANGED
@@ -3202,6 +3202,7 @@ function createSandboxAgentNamespace(client) {
3202
3202
  sourceDeployPlan: (agentId, input) => client.getAgentSourceDeployPlan(agentId, input),
3203
3203
  manifestSnapshots: (agentId, input) => client.listAgentManifestSnapshots(agentId, input),
3204
3204
  requestSourceChecks: (agentId, input) => client.requestAgentSourceChecks(agentId, input),
3205
+ configureSourceSetup: (agentId, input) => client.configureAgentSourceSetup(agentId, input),
3205
3206
  publishSource: (agentId, input) => client.publishAgentSource(agentId, input)
3206
3207
  };
3207
3208
  }
@@ -4452,6 +4453,11 @@ var OpenPondSandboxClient = class extends OpenPondSandboxInstanceClient {
4452
4453
  timeoutMs: 15 * 60 * 1e3
4453
4454
  });
4454
4455
  }
4456
+ configureAgentSourceSetup(agentId, input) {
4457
+ const query = new URLSearchParams({ teamId: input.teamId });
4458
+ const { teamId: _teamId, ...body } = input;
4459
+ return this.requestApiRoot(`/agents/${encodeURIComponent(agentId)}/source/setup?${query.toString()}`, { method: "POST", body: JSON.stringify(body) });
4460
+ }
4455
4461
  publishAgentSource(agentId, input) {
4456
4462
  const query = new URLSearchParams({ teamId: input.teamId });
4457
4463
  const { teamId: _teamId, ...body } = input;
@@ -1,5 +1,5 @@
1
1
  import type { OpenPondSandboxClient } from "./client.js";
2
- import type { SandboxAgentRunInput, SandboxAgentSourceChecksRequestInput, SandboxAgentSourcePublishInput, SandboxAgentUpdateInput, SandboxAgentUpsertInput, SandboxCreateInput, SandboxAsyncRequestOptions, SandboxProjectUpdateInput, SandboxProjectUpsertInput, SandboxProjectSourceUploadInput, SandboxRuntime, SandboxRuntimeCheckpointInput, SandboxRuntimeCreateInput, SandboxRuntimeEventInput, SandboxRuntimePromoteInput, SandboxRuntimeSourcePreserveInput, SandboxRuntimeSandboxCreateInput, SandboxRuntimeTransitionInput, OpenPondHostedProfilePushInput, OpenPondHostedProfilePushResponse, OpenPondHostedProfileSummary } from "./types/index.js";
2
+ import type { SandboxAgentRunInput, SandboxAgentSourceChecksRequestInput, SandboxAgentSourcePublishInput, SandboxAgentSourceSetupConfigureInput, SandboxAgentUpdateInput, SandboxAgentUpsertInput, SandboxCreateInput, SandboxAsyncRequestOptions, SandboxProjectUpdateInput, SandboxProjectUpsertInput, SandboxProjectSourceUploadInput, SandboxRuntime, SandboxRuntimeCheckpointInput, SandboxRuntimeCreateInput, SandboxRuntimeEventInput, SandboxRuntimePromoteInput, SandboxRuntimeSourcePreserveInput, SandboxRuntimeSandboxCreateInput, SandboxRuntimeTransitionInput, OpenPondHostedProfilePushInput, OpenPondHostedProfilePushResponse, OpenPondHostedProfileSummary } from "./types/index.js";
3
3
  export declare function createSandboxRuntimeNamespace(client: OpenPondSandboxClient): {
4
4
  list: (input?: {
5
5
  teamId?: string;
@@ -96,5 +96,6 @@ export declare function createSandboxAgentNamespace(client: OpenPondSandboxClien
96
96
  limit?: number;
97
97
  }) => Promise<import("openpond-sdk").SandboxAgentManifestSnapshot[]>;
98
98
  requestSourceChecks: (agentId: string, input: SandboxAgentSourceChecksRequestInput) => Promise<import("openpond-sdk").SandboxAgentSourceChecksRequestResult>;
99
+ configureSourceSetup: (agentId: string, input: SandboxAgentSourceSetupConfigureInput) => Promise<import("openpond-sdk").SandboxAgentSourceSetupConfigureResult>;
99
100
  publishSource: (agentId: string, input: SandboxAgentSourcePublishInput) => Promise<import("openpond-sdk").SandboxAgentSourcePublishResult>;
100
101
  };
@@ -1,5 +1,5 @@
1
1
  import { OpenPondSandboxInstanceClient } from "./sandbox-instance-client.js";
2
- import type { SandboxIntegrationConnectionStatusFilter, SandboxAsyncRequestOptions, SandboxScheduleCreateInput, SandboxScheduleUpdateInput, SandboxForkInput, SandboxForkOptions, SandboxTemplateLaunchInput, SandboxPublishedSnapshotBuildCreateInput, SandboxPublishedSnapshotBuildRecord, SandboxSecretMetadata, SandboxSecretCreateInput, SandboxSecretRotateInput, SandboxSecretAttachInput, SandboxSnapshotTemplateVisibility, SandboxTemplateBuildCreateInput, SandboxTemplateBuildRecord, OpenPondOrganization, OpenPondOrganizationCreateInput, OpenPondOrganizationUpdateInput, OpenPondOrganizationMember, OpenPondOrganizationMemberUpsertInput, OpenPondOrganizationMcpServer, OpenPondOrganizationMcpGenerateInput, SandboxProject, OpenPondHostedProfilePushInput, OpenPondHostedProfilePushResponse, OpenPondHostedProfileSummary, SandboxAgent, SandboxProjectUpsertInput, SandboxProjectUpdateInput, SandboxProjectSourceUploadInput, SandboxProjectGitRemoteResponse, SandboxAgentUpsertInput, SandboxAgentUpdateInput, SandboxAgentRunInput, SandboxAgentSourceChecksRequestInput, SandboxAgentSourceChecksRequestResult, SandboxAgentSourceDeployPlan, SandboxAgentSourcePublishInput, SandboxAgentSourcePublishResult, SandboxAgentManifestSnapshot, SandboxAgentRunResponse, MicrosoftTeamsBotOverview, MicrosoftTeamsBotBindingTargetInput, MicrosoftTeamsBotBindingResponse, MicrosoftTeamsBotDiagnosticRunInput, MicrosoftTeamsBotDiagnosticRunResponse, SandboxRecord, SandboxSnapshotCatalogResponse, SandboxPublishedSnapshotCatalogResponse, SandboxTemplateCatalogResponse, SandboxRuntime, SandboxRuntimeCreateInput, SandboxRuntimeSandboxCreateInput, SandboxRuntimeEventInput, SandboxRuntimeCheckpointInput, SandboxRuntimePromoteInput, SandboxRuntimeSourcePreserveInput, SandboxRuntimeTransitionInput, SandboxRuntimeSandboxResponse, SandboxRuntimeEventResponse, SandboxRuntimeEventsResponse, SandboxRuntimePromoteResponse, SandboxRuntimeSourcePreserveResponse, SandboxIntegrationConnectionsResponse, SandboxForkResponse, SandboxPublishedSnapshotLaunchResponse, SandboxTemplateLaunchResponse, SandboxScheduleListResponse, SandboxScheduleResponse, SandboxScheduleRunListResponse, SandboxScheduleRunResponse, SandboxReplayInput, SandboxReplayResponse, SandboxReplayListResponse, SandboxReplayLogsResponse, SandboxReplayArtifactsResponse, SandboxPublishedSnapshotBuildLogsResponse, SandboxTemplateBuildLogsResponse, SandboxSmokeOptions, SandboxSmokeSummary, OpenPondSandboxClientOptions, OpenPondSandboxMcpServerConfig, OpenPondSandboxRuntimeHandle } from "./types/index.js";
2
+ import type { SandboxIntegrationConnectionStatusFilter, SandboxAsyncRequestOptions, SandboxScheduleCreateInput, SandboxScheduleUpdateInput, SandboxForkInput, SandboxForkOptions, SandboxTemplateLaunchInput, SandboxPublishedSnapshotBuildCreateInput, SandboxPublishedSnapshotBuildRecord, SandboxSecretMetadata, SandboxSecretCreateInput, SandboxSecretRotateInput, SandboxSecretAttachInput, SandboxSnapshotTemplateVisibility, SandboxTemplateBuildCreateInput, SandboxTemplateBuildRecord, OpenPondOrganization, OpenPondOrganizationCreateInput, OpenPondOrganizationUpdateInput, OpenPondOrganizationMember, OpenPondOrganizationMemberUpsertInput, OpenPondOrganizationMcpServer, OpenPondOrganizationMcpGenerateInput, SandboxProject, OpenPondHostedProfilePushInput, OpenPondHostedProfilePushResponse, OpenPondHostedProfileSummary, SandboxAgent, SandboxProjectUpsertInput, SandboxProjectUpdateInput, SandboxProjectSourceUploadInput, SandboxProjectGitRemoteResponse, SandboxAgentUpsertInput, SandboxAgentUpdateInput, SandboxAgentRunInput, SandboxAgentSourceChecksRequestInput, SandboxAgentSourceChecksRequestResult, SandboxAgentSourceDeployPlan, SandboxAgentSourcePublishInput, SandboxAgentSourcePublishResult, SandboxAgentSourceSetupConfigureInput, SandboxAgentSourceSetupConfigureResult, SandboxAgentManifestSnapshot, SandboxAgentRunResponse, MicrosoftTeamsBotOverview, MicrosoftTeamsBotBindingTargetInput, MicrosoftTeamsBotBindingResponse, MicrosoftTeamsBotDiagnosticRunInput, MicrosoftTeamsBotDiagnosticRunResponse, SandboxRecord, SandboxSnapshotCatalogResponse, SandboxPublishedSnapshotCatalogResponse, SandboxTemplateCatalogResponse, SandboxRuntime, SandboxRuntimeCreateInput, SandboxRuntimeSandboxCreateInput, SandboxRuntimeEventInput, SandboxRuntimeCheckpointInput, SandboxRuntimePromoteInput, SandboxRuntimeSourcePreserveInput, SandboxRuntimeTransitionInput, SandboxRuntimeSandboxResponse, SandboxRuntimeEventResponse, SandboxRuntimeEventsResponse, SandboxRuntimePromoteResponse, SandboxRuntimeSourcePreserveResponse, SandboxIntegrationConnectionsResponse, SandboxForkResponse, SandboxPublishedSnapshotLaunchResponse, SandboxTemplateLaunchResponse, SandboxScheduleListResponse, SandboxScheduleResponse, SandboxScheduleRunListResponse, SandboxScheduleRunResponse, SandboxReplayInput, SandboxReplayResponse, SandboxReplayListResponse, SandboxReplayLogsResponse, SandboxReplayArtifactsResponse, SandboxPublishedSnapshotBuildLogsResponse, SandboxTemplateBuildLogsResponse, SandboxSmokeOptions, SandboxSmokeSummary, OpenPondSandboxClientOptions, OpenPondSandboxMcpServerConfig, OpenPondSandboxRuntimeHandle } from "./types/index.js";
3
3
  export declare class OpenPondSandboxClient extends OpenPondSandboxInstanceClient {
4
4
  readonly runtimes: {
5
5
  list: (input?: {
@@ -97,6 +97,7 @@ export declare class OpenPondSandboxClient extends OpenPondSandboxInstanceClient
97
97
  limit?: number;
98
98
  }) => Promise<SandboxAgentManifestSnapshot[]>;
99
99
  requestSourceChecks: (agentId: string, input: SandboxAgentSourceChecksRequestInput) => Promise<SandboxAgentSourceChecksRequestResult>;
100
+ configureSourceSetup: (agentId: string, input: SandboxAgentSourceSetupConfigureInput) => Promise<SandboxAgentSourceSetupConfigureResult>;
100
101
  publishSource: (agentId: string, input: SandboxAgentSourcePublishInput) => Promise<SandboxAgentSourcePublishResult>;
101
102
  };
102
103
  list(input?: {
@@ -182,6 +183,7 @@ export declare class OpenPondSandboxClient extends OpenPondSandboxInstanceClient
182
183
  limit?: number;
183
184
  }): Promise<SandboxAgentManifestSnapshot[]>;
184
185
  requestAgentSourceChecks(agentId: string, input: SandboxAgentSourceChecksRequestInput): Promise<SandboxAgentSourceChecksRequestResult>;
186
+ configureAgentSourceSetup(agentId: string, input: SandboxAgentSourceSetupConfigureInput): Promise<SandboxAgentSourceSetupConfigureResult>;
185
187
  publishAgentSource(agentId: string, input: SandboxAgentSourcePublishInput): Promise<SandboxAgentSourcePublishResult>;
186
188
  getMicrosoftTeamsBotOverview(input: {
187
189
  teamId: string;
@@ -343,6 +343,19 @@ export type SandboxAgentSourceChecksRequestResult = Record<string, unknown> & {
343
343
  error: string | null;
344
344
  };
345
345
  };
346
+ export type SandboxAgentSourceSetupConfigureInput = {
347
+ teamId: string;
348
+ integrationBindings?: Array<{
349
+ provider: string;
350
+ ref?: string | null;
351
+ mode?: "connected" | "connect_later";
352
+ connectionMode?: "member_connection" | "workspace_connection";
353
+ grantPolicy?: "read_only" | "ask_before_write" | "allow_write_for_action";
354
+ allowedActions?: string[];
355
+ enabled?: boolean;
356
+ }>;
357
+ };
358
+ export type SandboxAgentSourceSetupConfigureResult = Record<string, unknown>;
346
359
  export type SandboxAgentSourcePublishInput = {
347
360
  teamId: string;
348
361
  expectedManifestHash?: string | null;
@@ -1 +1 @@
1
- import{r as s,j as w}from"./index--lwjVZXT.js";const d=[],v=["button:not([disabled])","[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","[tabindex]:not([tabindex='-1'])","[contenteditable='true']"].join(",");function T({ariaLabel:r,backdropClassName:o="training-dialog-backdrop",children:a,className:i,contained:t=!1,dismissDisabled:e=!1,initialFocusKey:u,inertExclusionSelector:p,onClose:m}){const f=s.useRef(null),A=s.useRef(Symbol("app-dialog")),b=s.useRef(null),h=s.useRef(e),g=s.useRef(m);h.current=e,g.current=m,s.useEffect(()=>{const n=A.current;b.current=document.activeElement instanceof HTMLElement?document.activeElement:null,d.push(n);const l=t?f.current?.closest(".main-pane")??null:null,E=I(f.current,l,p);function y(c){if(d.at(-1)===n){if(c.key==="Escape"){c.preventDefault(),c.stopPropagation(),h.current||g.current();return}c.key!=="Tab"||t||F(c,f.current)}}return document.addEventListener("keydown",y,!0),()=>{document.removeEventListener("keydown",y,!0);const c=d.lastIndexOf(n);c>=0&&d.splice(c,1),E();const x=b.current;x?.isConnected&&x.focus()}},[t,p]),s.useEffect(()=>{const n=window.requestAnimationFrame(()=>{const l=f.current;(l?.querySelector("[data-autofocus]")??l)?.focus()});return()=>window.cancelAnimationFrame(n)},[u]);function R(n){n.target===n.currentTarget&&!e&&m()}function k(n){n.key==="Escape"&&n.stopPropagation()}return w.jsx("div",{className:o,role:"presentation",onMouseDown:R,children:w.jsx("section",{ref:f,"aria-busy":e||void 0,"aria-label":r,"aria-modal":t?void 0:"true",className:i,role:"dialog",tabIndex:-1,onKeyDown:k,onMouseDown:n=>n.stopPropagation(),children:a})})}function D(r){return r?Array.from(r.querySelectorAll(v)).filter(o=>!o.hidden&&o.getAttribute("aria-hidden")!=="true"):[]}function F(r,o){if(!o)return;const a=D(o);if(a.length===0){r.preventDefault(),o.focus();return}const i=a.indexOf(document.activeElement),t=r.shiftKey?i<=0?a.length-1:i-1:i<0||i===a.length-1?0:i+1;r.preventDefault(),a[t]?.focus()}function I(r,o=null,a){if(!r)return()=>{};const i=[];let t=r.parentElement??r;for(;t.parentElement&&t!==document.body;){const e=t.parentElement;for(const u of Array.from(e.children))u===t||!(u instanceof HTMLElement)||a&&u.matches(a)||(i.push({element:u,ariaHidden:u.getAttribute("aria-hidden"),inert:u.inert}),u.inert=!0,u.setAttribute("aria-hidden","true"));if(t=e,o&&t===o)break}return()=>{for(const e of i.reverse())e.element.inert=e.inert,e.ariaHidden===null?e.element.removeAttribute("aria-hidden"):e.element.setAttribute("aria-hidden",e.ariaHidden)}}export{T as A};
1
+ import{r as s,j as w}from"./index-BO2W2U23.js";const d=[],v=["button:not([disabled])","[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","[tabindex]:not([tabindex='-1'])","[contenteditable='true']"].join(",");function T({ariaLabel:r,backdropClassName:o="training-dialog-backdrop",children:a,className:i,contained:t=!1,dismissDisabled:e=!1,initialFocusKey:u,inertExclusionSelector:p,onClose:m}){const f=s.useRef(null),A=s.useRef(Symbol("app-dialog")),b=s.useRef(null),h=s.useRef(e),g=s.useRef(m);h.current=e,g.current=m,s.useEffect(()=>{const n=A.current;b.current=document.activeElement instanceof HTMLElement?document.activeElement:null,d.push(n);const l=t?f.current?.closest(".main-pane")??null:null,E=I(f.current,l,p);function y(c){if(d.at(-1)===n){if(c.key==="Escape"){c.preventDefault(),c.stopPropagation(),h.current||g.current();return}c.key!=="Tab"||t||F(c,f.current)}}return document.addEventListener("keydown",y,!0),()=>{document.removeEventListener("keydown",y,!0);const c=d.lastIndexOf(n);c>=0&&d.splice(c,1),E();const x=b.current;x?.isConnected&&x.focus()}},[t,p]),s.useEffect(()=>{const n=window.requestAnimationFrame(()=>{const l=f.current;(l?.querySelector("[data-autofocus]")??l)?.focus()});return()=>window.cancelAnimationFrame(n)},[u]);function R(n){n.target===n.currentTarget&&!e&&m()}function k(n){n.key==="Escape"&&n.stopPropagation()}return w.jsx("div",{className:o,role:"presentation",onMouseDown:R,children:w.jsx("section",{ref:f,"aria-busy":e||void 0,"aria-label":r,"aria-modal":t?void 0:"true",className:i,role:"dialog",tabIndex:-1,onKeyDown:k,onMouseDown:n=>n.stopPropagation(),children:a})})}function D(r){return r?Array.from(r.querySelectorAll(v)).filter(o=>!o.hidden&&o.getAttribute("aria-hidden")!=="true"):[]}function F(r,o){if(!o)return;const a=D(o);if(a.length===0){r.preventDefault(),o.focus();return}const i=a.indexOf(document.activeElement),t=r.shiftKey?i<=0?a.length-1:i-1:i<0||i===a.length-1?0:i+1;r.preventDefault(),a[t]?.focus()}function I(r,o=null,a){if(!r)return()=>{};const i=[];let t=r.parentElement??r;for(;t.parentElement&&t!==document.body;){const e=t.parentElement;for(const u of Array.from(e.children))u===t||!(u instanceof HTMLElement)||a&&u.matches(a)||(i.push({element:u,ariaHidden:u.getAttribute("aria-hidden"),inert:u.inert}),u.inert=!0,u.setAttribute("aria-hidden","true"));if(t=e,o&&t===o)break}return()=>{for(const e of i.reverse())e.element.inert=e.inert,e.ariaHidden===null?e.element.removeAttribute("aria-hidden"):e.element.setAttribute("aria-hidden",e.ariaHidden)}}export{T as A};
@@ -1 +1 @@
1
- import{r,bF as b,p as L,j as e,ar as I,a as k,X as P,O as F,a4 as E,ba as U,bG as T,h as R}from"./index--lwjVZXT.js";const O=["For agents","Featured","Productivity","Developer tools"],D=new Set(["slack","google","github","mcp"]);function J({account:s,connection:n,defaultTeamId:a,onToast:o}){const[c,f]=r.useState(null),[p,v]=r.useState(""),[i,y]=r.useState("For agents"),[u,h]=r.useState(()=>b()),[g,d]=r.useState("idle"),[w,x]=r.useState(null),S=s?.baseUrl??s?.activeProfile?.baseUrl??null,C=M(a,w),N=r.useMemo(()=>u.filter(t=>z(t,i)).filter(t=>q(t,p)),[i,p,u]);r.useEffect(()=>{let t=!0;return n?(d("loading"),L.connectedAppStatus(n,{status:"all"}).then(l=>{t&&(h(l.apps),x(l.teamId?.trim()||null),d("ready"))}).catch(l=>{t&&(console.warn("Unable to load connected app status.",l),h(b()),x(null),d("error"))}),()=>{t=!1}):(h(b()),d("idle"),x(null),()=>{t=!1})},[n]);function A(t){const l=T({appId:t.id,baseUrl:S,teamId:C});G(l).catch(j=>{o?.(j instanceof Error?j.message:String(j),"error")})}return e.jsxs("section",{className:"connected-apps-view","aria-label":"Apps",children:[e.jsxs("div",{className:"connected-apps-header",children:[e.jsxs("div",{children:[e.jsx("h1",{children:"Apps"}),e.jsx("p",{children:"Connect apps that agents can use for chat, knowledge, files, and workflow actions."})]}),e.jsxs("label",{className:"connected-apps-search",children:[e.jsx(I,{size:15}),e.jsx("input",{"aria-label":"Search apps",onChange:t=>v(t.target.value),placeholder:"Search apps",type:"search",value:p})]})]}),e.jsxs("div",{className:`connected-apps-status-strip ${g}`,children:[e.jsx("span",{children:V(g)}),e.jsxs("span",{children:[W(u)," connected"]})]}),e.jsxs("section",{className:"connected-apps-hero","aria-label":"App context",children:[e.jsxs("div",{className:"connected-apps-hero-copy",children:[e.jsx("span",{className:"connected-apps-hero-icon",children:e.jsx(m,{appId:"github"})}),e.jsx("h2",{children:"Work with your apps"}),e.jsx("p",{children:"Bring repositories, documents, chat, calendars, and custom MCP tools into OpenPond."})]}),e.jsxs("div",{className:"connected-apps-context-card","aria-hidden":"true",children:[e.jsx("strong",{children:"Agent context"}),e.jsxs("div",{children:[e.jsx("span",{className:"files",children:"Files"}),e.jsx("span",{className:"chat",children:"Chat"}),e.jsx("span",{className:"oauth",children:"OAuth"}),e.jsx("span",{className:"mcp",children:"MCP"})]})]})]}),e.jsx("div",{className:"connected-apps-filters",role:"tablist","aria-label":"App categories",children:O.map(t=>e.jsx("button",{"aria-selected":i===t,className:i===t?"active":"",onClick:()=>y(t),role:"tab",type:"button",children:t},t))}),e.jsxs("div",{className:"connected-apps-list",children:[N.map(t=>e.jsx(_,{app:t,onSelect:()=>f(t)},t.id)),N.length===0?e.jsx("div",{className:"connected-apps-empty",children:"No apps match the current search."}):null]}),c?e.jsx($,{app:c,onClose:()=>f(null),onInstall:()=>A(c)}):null]})}function M(s,n){const a=s?.trim();return a||n?.trim()||null}function _({app:s,onSelect:n}){return e.jsxs("button",{className:"connected-app-row",onClick:n,type:"button",children:[e.jsxs("span",{className:"connected-app-row-main",children:[e.jsx(m,{appId:s.id}),e.jsxs("span",{className:"connected-app-copy",children:[e.jsxs("span",{className:"connected-app-title",children:[e.jsx("strong",{children:s.label}),e.jsxs("span",{children:[s.shortLabel!==s.label?s.shortLabel:s.category," / ",s.setupSurfaceLabel]})]}),e.jsx("span",{children:s.description}),e.jsxs("span",{className:"connected-app-capability-row",children:[s.capabilityLabels.slice(0,2).map(a=>e.jsx("span",{children:a},a)),s.capabilityLabels.length>2?e.jsxs("span",{children:["+",s.capabilityLabels.length-2]}):null]})]})]}),e.jsx("span",{className:`connected-app-status-pill ${s.status}`,children:s.statusLabel}),e.jsx(k,{size:16})]})}function $({app:s,onClose:n,onInstall:a}){const o=s.connections.filter(c=>c.status==="active");return e.jsx("div",{className:"connected-app-dialog-backdrop",role:"presentation",onMouseDown:c=>{c.target===c.currentTarget&&n()},children:e.jsxs("section",{className:"connected-app-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"connected-app-dialog-title",children:[e.jsx("button",{className:"connected-app-dialog-close",type:"button","aria-label":"Close app details",onClick:n,children:e.jsx(P,{size:17})}),e.jsxs("div",{className:"connected-app-dialog-identity",children:[e.jsx("span",{className:"openpond-mark",children:e.jsx("img",{alt:"",src:F})}),e.jsxs("span",{className:"connection-dots","aria-hidden":"true",children:[e.jsx("span",{}),e.jsx("span",{}),e.jsx("span",{})]}),e.jsx(m,{appId:s.id})]}),e.jsxs("h2",{id:"connected-app-dialog-title",children:["Connect ",s.label]}),e.jsxs("div",{className:"connected-app-approval",children:[e.jsx(E,{size:16}),e.jsx("span",{children:s.statusLabel})]}),e.jsxs("div",{className:"connected-app-dialog-body",children:[e.jsxs("section",{children:[e.jsx("h3",{children:s.setupSurfaceLabel}),e.jsx("p",{children:"The web flow shows the provider account, workspace, and requested access before anything is connected."})]}),e.jsxs("section",{children:[e.jsx("h3",{children:"Connected account"}),e.jsx("p",{children:X(o)})]}),e.jsxs("section",{children:[e.jsx("h3",{children:"Available capabilities"}),e.jsx("div",{className:"connected-app-dialog-capabilities",children:s.capabilities.map(c=>e.jsx("span",{children:c.label},c.id))})]}),e.jsxs("section",{children:[e.jsx("h3",{children:"Sandbox lease policy"}),e.jsx("p",{children:s.leasePolicy.leaseable?`Leaseable for ${s.leasePolicy.defaultTtlSeconds??0} seconds with scoped proxy access.`:"Managed as setup or tool discovery; no OAuth lease is required."})]})]}),e.jsxs("button",{className:"connected-app-dialog-primary",type:"button",onClick:a,children:[e.jsx("span",{children:s.installLabel}),e.jsx(U,{size:15})]})]})})}function m({appId:s}){return e.jsx("span",{className:`connected-app-icon app-${s}`,children:e.jsx("img",{alt:"",src:B(s)})})}function z(s,n){return n==="For agents"?!0:n==="Featured"?D.has(s.id):n==="Productivity"?s.category==="Productivity"||s.category==="Chat":s.category==="Developer tools"||s.id==="mcp"}function q(s,n){const a=n.trim().toLowerCase();return a?[s.id,s.label,s.shortLabel,s.category,s.description,s.providerFamily,s.setupSurface].some(o=>o.toLowerCase().includes(a)):!0}function B(s){return R(s)}async function G(s){const n=window.openpond?.browser;if(n){const a=await n.openExternal({conversationId:"connected-apps",url:s});if(!a.ok)throw new Error(a.error??"Unable to open app setup.");return}window.open(s,"_blank","noopener,noreferrer")}function V(s){return s==="loading"?"Checking connections":s==="ready"?"Connection status current":s==="error"?"Connection status unavailable":"Connection status pending"}function W(s){return s.filter(n=>n.connected).length}function X(s){return s.length===0?"No active OAuth connection for this setup surface.":s.map(n=>{const a=n.accountLabel??"Connected account";return n.workspaceLabel?`${a} / ${n.workspaceLabel}`:a}).join(", ")}export{J as AppsView,_ as ConnectedAppRow,M as connectedAppSetupTeamId};
1
+ import{r,bF as b,p as L,j as e,ar as I,a as k,X as P,O as F,a4 as E,ba as U,bG as T,h as R}from"./index-BO2W2U23.js";const O=["For agents","Featured","Productivity","Developer tools"],D=new Set(["slack","google","github","mcp"]);function J({account:s,connection:n,defaultTeamId:a,onToast:o}){const[c,f]=r.useState(null),[p,v]=r.useState(""),[i,y]=r.useState("For agents"),[u,h]=r.useState(()=>b()),[g,d]=r.useState("idle"),[w,x]=r.useState(null),S=s?.baseUrl??s?.activeProfile?.baseUrl??null,C=M(a,w),N=r.useMemo(()=>u.filter(t=>z(t,i)).filter(t=>q(t,p)),[i,p,u]);r.useEffect(()=>{let t=!0;return n?(d("loading"),L.connectedAppStatus(n,{status:"all"}).then(l=>{t&&(h(l.apps),x(l.teamId?.trim()||null),d("ready"))}).catch(l=>{t&&(console.warn("Unable to load connected app status.",l),h(b()),x(null),d("error"))}),()=>{t=!1}):(h(b()),d("idle"),x(null),()=>{t=!1})},[n]);function A(t){const l=T({appId:t.id,baseUrl:S,teamId:C});G(l).catch(j=>{o?.(j instanceof Error?j.message:String(j),"error")})}return e.jsxs("section",{className:"connected-apps-view","aria-label":"Apps",children:[e.jsxs("div",{className:"connected-apps-header",children:[e.jsxs("div",{children:[e.jsx("h1",{children:"Apps"}),e.jsx("p",{children:"Connect apps that agents can use for chat, knowledge, files, and workflow actions."})]}),e.jsxs("label",{className:"connected-apps-search",children:[e.jsx(I,{size:15}),e.jsx("input",{"aria-label":"Search apps",onChange:t=>v(t.target.value),placeholder:"Search apps",type:"search",value:p})]})]}),e.jsxs("div",{className:`connected-apps-status-strip ${g}`,children:[e.jsx("span",{children:V(g)}),e.jsxs("span",{children:[W(u)," connected"]})]}),e.jsxs("section",{className:"connected-apps-hero","aria-label":"App context",children:[e.jsxs("div",{className:"connected-apps-hero-copy",children:[e.jsx("span",{className:"connected-apps-hero-icon",children:e.jsx(m,{appId:"github"})}),e.jsx("h2",{children:"Work with your apps"}),e.jsx("p",{children:"Bring repositories, documents, chat, calendars, and custom MCP tools into OpenPond."})]}),e.jsxs("div",{className:"connected-apps-context-card","aria-hidden":"true",children:[e.jsx("strong",{children:"Agent context"}),e.jsxs("div",{children:[e.jsx("span",{className:"files",children:"Files"}),e.jsx("span",{className:"chat",children:"Chat"}),e.jsx("span",{className:"oauth",children:"OAuth"}),e.jsx("span",{className:"mcp",children:"MCP"})]})]})]}),e.jsx("div",{className:"connected-apps-filters",role:"tablist","aria-label":"App categories",children:O.map(t=>e.jsx("button",{"aria-selected":i===t,className:i===t?"active":"",onClick:()=>y(t),role:"tab",type:"button",children:t},t))}),e.jsxs("div",{className:"connected-apps-list",children:[N.map(t=>e.jsx(_,{app:t,onSelect:()=>f(t)},t.id)),N.length===0?e.jsx("div",{className:"connected-apps-empty",children:"No apps match the current search."}):null]}),c?e.jsx($,{app:c,onClose:()=>f(null),onInstall:()=>A(c)}):null]})}function M(s,n){const a=s?.trim();return a||n?.trim()||null}function _({app:s,onSelect:n}){return e.jsxs("button",{className:"connected-app-row",onClick:n,type:"button",children:[e.jsxs("span",{className:"connected-app-row-main",children:[e.jsx(m,{appId:s.id}),e.jsxs("span",{className:"connected-app-copy",children:[e.jsxs("span",{className:"connected-app-title",children:[e.jsx("strong",{children:s.label}),e.jsxs("span",{children:[s.shortLabel!==s.label?s.shortLabel:s.category," / ",s.setupSurfaceLabel]})]}),e.jsx("span",{children:s.description}),e.jsxs("span",{className:"connected-app-capability-row",children:[s.capabilityLabels.slice(0,2).map(a=>e.jsx("span",{children:a},a)),s.capabilityLabels.length>2?e.jsxs("span",{children:["+",s.capabilityLabels.length-2]}):null]})]})]}),e.jsx("span",{className:`connected-app-status-pill ${s.status}`,children:s.statusLabel}),e.jsx(k,{size:16})]})}function $({app:s,onClose:n,onInstall:a}){const o=s.connections.filter(c=>c.status==="active");return e.jsx("div",{className:"connected-app-dialog-backdrop",role:"presentation",onMouseDown:c=>{c.target===c.currentTarget&&n()},children:e.jsxs("section",{className:"connected-app-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"connected-app-dialog-title",children:[e.jsx("button",{className:"connected-app-dialog-close",type:"button","aria-label":"Close app details",onClick:n,children:e.jsx(P,{size:17})}),e.jsxs("div",{className:"connected-app-dialog-identity",children:[e.jsx("span",{className:"openpond-mark",children:e.jsx("img",{alt:"",src:F})}),e.jsxs("span",{className:"connection-dots","aria-hidden":"true",children:[e.jsx("span",{}),e.jsx("span",{}),e.jsx("span",{})]}),e.jsx(m,{appId:s.id})]}),e.jsxs("h2",{id:"connected-app-dialog-title",children:["Connect ",s.label]}),e.jsxs("div",{className:"connected-app-approval",children:[e.jsx(E,{size:16}),e.jsx("span",{children:s.statusLabel})]}),e.jsxs("div",{className:"connected-app-dialog-body",children:[e.jsxs("section",{children:[e.jsx("h3",{children:s.setupSurfaceLabel}),e.jsx("p",{children:"The web flow shows the provider account, workspace, and requested access before anything is connected."})]}),e.jsxs("section",{children:[e.jsx("h3",{children:"Connected account"}),e.jsx("p",{children:X(o)})]}),e.jsxs("section",{children:[e.jsx("h3",{children:"Available capabilities"}),e.jsx("div",{className:"connected-app-dialog-capabilities",children:s.capabilities.map(c=>e.jsx("span",{children:c.label},c.id))})]}),e.jsxs("section",{children:[e.jsx("h3",{children:"Sandbox lease policy"}),e.jsx("p",{children:s.leasePolicy.leaseable?`Leaseable for ${s.leasePolicy.defaultTtlSeconds??0} seconds with scoped proxy access.`:"Managed as setup or tool discovery; no OAuth lease is required."})]})]}),e.jsxs("button",{className:"connected-app-dialog-primary",type:"button",onClick:a,children:[e.jsx("span",{children:s.installLabel}),e.jsx(U,{size:15})]})]})})}function m({appId:s}){return e.jsx("span",{className:`connected-app-icon app-${s}`,children:e.jsx("img",{alt:"",src:B(s)})})}function z(s,n){return n==="For agents"?!0:n==="Featured"?D.has(s.id):n==="Productivity"?s.category==="Productivity"||s.category==="Chat":s.category==="Developer tools"||s.id==="mcp"}function q(s,n){const a=n.trim().toLowerCase();return a?[s.id,s.label,s.shortLabel,s.category,s.description,s.providerFamily,s.setupSurface].some(o=>o.toLowerCase().includes(a)):!0}function B(s){return R(s)}async function G(s){const n=window.openpond?.browser;if(n){const a=await n.openExternal({conversationId:"connected-apps",url:s});if(!a.ok)throw new Error(a.error??"Unable to open app setup.");return}window.open(s,"_blank","noopener,noreferrer")}function V(s){return s==="loading"?"Checking connections":s==="ready"?"Connection status current":s==="error"?"Connection status unavailable":"Connection status pending"}function W(s){return s.filter(n=>n.connected).length}function X(s){return s.length===0?"No active OAuth connection for this setup surface.":s.map(n=>{const a=n.accountLabel??"Connected account";return n.workspaceLabel?`${a} / ${n.workspaceLabel}`:a}).join(", ")}export{J as AppsView,_ as ConnectedAppRow,M as connectedAppSetupTeamId};
@@ -1 +1 @@
1
- import{r as c,c2 as v,j as a,a1 as f,X as k,P as j,A as C,ba as g,bp as B}from"./index--lwjVZXT.js";import{A as y}from"./MarkdownText-C4Ixpl-i.js";import{R as N}from"./refresh-cw-DRJJ-X1U.js";import{S as T}from"./square-BV-Vgh5a.js";const x=[];function P(r){const e=window.openpond?.browser,[b,l]=c.useState(()=>({conversationId:r,activeTabId:null,tabs:x}));c.useEffect(()=>{if(l({conversationId:r,activeTabId:null,tabs:x}),!e)return;let s=!1;e.getState({conversationId:r}).then(o=>{s||l(o)});const i=e.onState(o=>{o.conversationId===r&&l(o)});return()=>{s=!0,i()}},[e,r]);const u=c.useMemo(()=>b.tabs.find(s=>s.id===b.activeTabId)??null,[b.activeTabId,b.tabs]),t=c.useCallback(async(s,i={})=>{if(!e)return!1;const o=v(s,{explicitFile:i.explicitFile});return o?(i.newTab?await e.newTab({conversationId:r,url:o,explicitFile:i.explicitFile}):await e.open({conversationId:r,url:o,explicitFile:i.explicitFile}),!0):!1},[e,r]),n=u?{conversationId:r,tabId:u.id}:null;return{activeTab:u,available:!!e,bridge:e,state:b,back:()=>e&&n?e.back(n):Promise.resolve({ok:!1}),clearData:()=>e?e.clearData({conversationId:r}):Promise.resolve({ok:!1}),closeTab:s=>e?e.closeTab({conversationId:r,tabId:s}):Promise.resolve({ok:!1}),forward:()=>e&&n?e.forward(n):Promise.resolve({ok:!1}),newTab:s=>e?e.newTab({conversationId:r,url:s}):Promise.resolve({ok:!1}),open:t,openExternal:()=>e&&n?e.openExternal(n):Promise.resolve({ok:!1}),reload:()=>e&&n?e.reload(n):Promise.resolve({ok:!1}),snapshot:(s={})=>e?e.snapshot({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),moveCursor:s=>e?e.moveCursor({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),click:s=>e?e.click({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),typeText:s=>e?e.typeText({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),key:s=>e?e.key({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),scroll:s=>e?e.scroll({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),selectTab:s=>e?e.selectTab({conversationId:r,tabId:s}):Promise.resolve({ok:!1}),setBounds:s=>e?e.setBounds({conversationId:r,bounds:s}):Promise.resolve({ok:!1}),stop:()=>e&&n?e.stop(n):Promise.resolve({ok:!1})}}function R({activeTabId:r,tabs:e,onCloseTab:b,onNewTab:l,onSelectTab:u}){return a.jsxs("div",{className:"browser-tabs",role:"tablist","aria-label":"Browser tabs",children:[e.map(t=>a.jsxs("div",{className:`browser-tab ${t.id===r?"active":""}`,children:[a.jsx("span",{className:"browser-tab-favicon","aria-hidden":"true",children:t.faviconUrl?a.jsx("img",{alt:"",referrerPolicy:"no-referrer",src:t.faviconUrl}):a.jsx(f,{size:13})}),a.jsx("button",{type:"button",className:"browser-tab-main",role:"tab","aria-selected":t.id===r,title:t.url,onClick:()=>u(t.id),children:E(t)}),a.jsx("button",{type:"button",className:"browser-tab-close",title:"Close tab","aria-label":"Close tab",onClick:()=>b(t.id),children:a.jsx(k,{size:12})})]},t.id)),a.jsx("button",{type:"button",className:"browser-tab-add",title:"New tab","aria-label":"New tab",onClick:l,children:a.jsx(j,{size:14})})]})}function E(r){if(r.title?.trim())return r.title.trim();try{return new URL(r.url).host||r.url}catch{return r.url||"New tab"}}function z({activeTab:r,available:e,onBack:b,onClearData:l,onForward:u,onNavigate:t,onOpenExternal:n,onReload:s,onStop:i}){const[o,d]=c.useState(""),[p,m]=c.useState(!1);c.useEffect(()=>{d(r?.url??"")},[r?.url]);function h(w){w.preventDefault(),t(o)}return a.jsxs("div",{className:"browser-toolbar",children:[a.jsxs("div",{className:"browser-nav-actions",children:[a.jsx("button",{type:"button",title:"Back","aria-label":"Back",disabled:!r?.canGoBack,onClick:b,children:a.jsx(C,{size:15})}),a.jsx("button",{type:"button",title:"Forward","aria-label":"Forward",disabled:!r?.canGoForward,onClick:u,children:a.jsx(y,{size:15})}),a.jsx("button",{type:"button",title:r?.loading?"Stop":"Reload","aria-label":r?.loading?"Stop":"Reload",disabled:!r,onClick:r?.loading?i:s,children:r?.loading?a.jsx(T,{size:13}):a.jsx(N,{size:14})})]}),a.jsx("form",{className:"browser-address-form",onSubmit:h,children:a.jsx("input",{"aria-label":"Browser address",disabled:!e,placeholder:e?"Search or enter address":"Desktop browser unavailable",spellCheck:!1,value:o,onChange:w=>d(w.target.value)})}),a.jsxs("div",{className:"browser-panel-actions",children:[a.jsx("button",{type:"button",title:"Open external","aria-label":"Open external",disabled:!r,onClick:n,children:a.jsx(g,{size:14})}),a.jsxs("div",{className:"browser-menu-anchor",children:[a.jsx("button",{type:"button",title:"Browser actions","aria-label":"Browser actions",onClick:()=>m(w=>!w),children:a.jsx(B,{size:15})}),p&&a.jsx("div",{className:"browser-options-menu",role:"menu",children:a.jsx("button",{type:"button",role:"menuitem",onClick:()=>{m(!1),l()},children:"Clear Browser Data..."})})]})]})]})}function D({active:r,onBounds:e}){const b=c.useRef(null),l=c.useRef(null),u=c.useRef(null),t=c.useCallback(i=>{const o=i?`${i.x}:${i.y}:${i.width}:${i.height}`:"null";l.current!==o&&(l.current=o,e(i))},[e]),n=c.useCallback(()=>{const i=b.current;if(!r||!i){t(null);return}const o=i.getBoundingClientRect(),d=Math.max(0,Math.round(o.width)),p=Math.max(0,Math.round(o.height));if(d===0||p===0){t(null);return}t({x:Math.round(o.left),y:Math.round(o.top),width:d,height:p})},[r,t]),s=c.useCallback(()=>{u.current===null&&(u.current=window.requestAnimationFrame(()=>{u.current=null,n()}))},[n]);return c.useLayoutEffect(()=>{l.current=null,n();const i=b.current;if(!r||!i)return t(null),()=>t(null);const o=new ResizeObserver(s);return o.observe(i),window.addEventListener("resize",s),window.addEventListener("scroll",s,!0),()=>{u.current!==null&&(window.cancelAnimationFrame(u.current),u.current=null),o.disconnect(),window.removeEventListener("resize",s),window.removeEventListener("scroll",s,!0),t(null)}},[r,t,n,s]),a.jsx("div",{className:"browser-viewport",ref:b})}function A({conversationId:r,expanded:e,onResizeStart:b}){const l=P(r),u=c.useCallback(s=>{window.openpond?.browser?.setBounds({conversationId:r,bounds:s})},[r]),t=c.useCallback(s=>{l.open(s,{explicitFile:!0})},[l]),n=c.useCallback(()=>{window.confirm("Clear browser data for this conversation? Tabs, cookies, cache, and local storage for this conversation will be removed.")&&l.clearData()},[l]);return a.jsxs("aside",{className:`workspace-diff-panel browser-sidebar-panel ${e?"expanded":""}`,"aria-label":"Browser",children:[!e&&a.jsx("div",{className:"workspace-diff-resize-handle",role:"separator","aria-orientation":"vertical","aria-label":"Resize browser panel",onPointerDown:b}),a.jsx(R,{activeTabId:l.state.activeTabId,tabs:l.state.tabs,onCloseTab:s=>{l.closeTab(s)},onNewTab:()=>{l.newTab()},onSelectTab:s=>{l.selectTab(s)}}),a.jsx(z,{activeTab:l.activeTab,available:l.available,onBack:()=>{l.back()},onClearData:n,onForward:()=>{l.forward()},onNavigate:t,onOpenExternal:()=>{l.openExternal()},onReload:()=>{l.reload()},onStop:()=>{l.stop()}}),a.jsxs("div",{className:"browser-content",children:[l.available?l.state.tabs.length===0?a.jsxs("div",{className:"browser-empty-state",children:[a.jsx(f,{size:18}),a.jsx("span",{children:"Enter a URL to open a browser tab for this conversation."})]}):null:a.jsxs("div",{className:"browser-empty-state",children:[a.jsx(f,{size:18}),a.jsx("span",{children:"Desktop browser bridge unavailable."})]}),a.jsx(D,{active:l.available&&l.state.tabs.length>0,onBounds:u})]})]})}export{A as BrowserSidebar};
1
+ import{r as c,c2 as v,j as a,a1 as f,X as k,P as j,A as C,ba as g,bp as B}from"./index-BO2W2U23.js";import{A as y}from"./MarkdownText-gwAue4u5.js";import{R as N}from"./refresh-cw-Bn28jIl0.js";import{S as T}from"./square-DAGpFfSr.js";const x=[];function P(r){const e=window.openpond?.browser,[b,l]=c.useState(()=>({conversationId:r,activeTabId:null,tabs:x}));c.useEffect(()=>{if(l({conversationId:r,activeTabId:null,tabs:x}),!e)return;let s=!1;e.getState({conversationId:r}).then(o=>{s||l(o)});const i=e.onState(o=>{o.conversationId===r&&l(o)});return()=>{s=!0,i()}},[e,r]);const u=c.useMemo(()=>b.tabs.find(s=>s.id===b.activeTabId)??null,[b.activeTabId,b.tabs]),t=c.useCallback(async(s,i={})=>{if(!e)return!1;const o=v(s,{explicitFile:i.explicitFile});return o?(i.newTab?await e.newTab({conversationId:r,url:o,explicitFile:i.explicitFile}):await e.open({conversationId:r,url:o,explicitFile:i.explicitFile}),!0):!1},[e,r]),n=u?{conversationId:r,tabId:u.id}:null;return{activeTab:u,available:!!e,bridge:e,state:b,back:()=>e&&n?e.back(n):Promise.resolve({ok:!1}),clearData:()=>e?e.clearData({conversationId:r}):Promise.resolve({ok:!1}),closeTab:s=>e?e.closeTab({conversationId:r,tabId:s}):Promise.resolve({ok:!1}),forward:()=>e&&n?e.forward(n):Promise.resolve({ok:!1}),newTab:s=>e?e.newTab({conversationId:r,url:s}):Promise.resolve({ok:!1}),open:t,openExternal:()=>e&&n?e.openExternal(n):Promise.resolve({ok:!1}),reload:()=>e&&n?e.reload(n):Promise.resolve({ok:!1}),snapshot:(s={})=>e?e.snapshot({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),moveCursor:s=>e?e.moveCursor({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),click:s=>e?e.click({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),typeText:s=>e?e.typeText({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),key:s=>e?e.key({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),scroll:s=>e?e.scroll({conversationId:r,...s}):Promise.resolve({ok:!1,output:"Desktop browser bridge unavailable."}),selectTab:s=>e?e.selectTab({conversationId:r,tabId:s}):Promise.resolve({ok:!1}),setBounds:s=>e?e.setBounds({conversationId:r,bounds:s}):Promise.resolve({ok:!1}),stop:()=>e&&n?e.stop(n):Promise.resolve({ok:!1})}}function R({activeTabId:r,tabs:e,onCloseTab:b,onNewTab:l,onSelectTab:u}){return a.jsxs("div",{className:"browser-tabs",role:"tablist","aria-label":"Browser tabs",children:[e.map(t=>a.jsxs("div",{className:`browser-tab ${t.id===r?"active":""}`,children:[a.jsx("span",{className:"browser-tab-favicon","aria-hidden":"true",children:t.faviconUrl?a.jsx("img",{alt:"",referrerPolicy:"no-referrer",src:t.faviconUrl}):a.jsx(f,{size:13})}),a.jsx("button",{type:"button",className:"browser-tab-main",role:"tab","aria-selected":t.id===r,title:t.url,onClick:()=>u(t.id),children:E(t)}),a.jsx("button",{type:"button",className:"browser-tab-close",title:"Close tab","aria-label":"Close tab",onClick:()=>b(t.id),children:a.jsx(k,{size:12})})]},t.id)),a.jsx("button",{type:"button",className:"browser-tab-add",title:"New tab","aria-label":"New tab",onClick:l,children:a.jsx(j,{size:14})})]})}function E(r){if(r.title?.trim())return r.title.trim();try{return new URL(r.url).host||r.url}catch{return r.url||"New tab"}}function z({activeTab:r,available:e,onBack:b,onClearData:l,onForward:u,onNavigate:t,onOpenExternal:n,onReload:s,onStop:i}){const[o,d]=c.useState(""),[p,m]=c.useState(!1);c.useEffect(()=>{d(r?.url??"")},[r?.url]);function h(w){w.preventDefault(),t(o)}return a.jsxs("div",{className:"browser-toolbar",children:[a.jsxs("div",{className:"browser-nav-actions",children:[a.jsx("button",{type:"button",title:"Back","aria-label":"Back",disabled:!r?.canGoBack,onClick:b,children:a.jsx(C,{size:15})}),a.jsx("button",{type:"button",title:"Forward","aria-label":"Forward",disabled:!r?.canGoForward,onClick:u,children:a.jsx(y,{size:15})}),a.jsx("button",{type:"button",title:r?.loading?"Stop":"Reload","aria-label":r?.loading?"Stop":"Reload",disabled:!r,onClick:r?.loading?i:s,children:r?.loading?a.jsx(T,{size:13}):a.jsx(N,{size:14})})]}),a.jsx("form",{className:"browser-address-form",onSubmit:h,children:a.jsx("input",{"aria-label":"Browser address",disabled:!e,placeholder:e?"Search or enter address":"Desktop browser unavailable",spellCheck:!1,value:o,onChange:w=>d(w.target.value)})}),a.jsxs("div",{className:"browser-panel-actions",children:[a.jsx("button",{type:"button",title:"Open external","aria-label":"Open external",disabled:!r,onClick:n,children:a.jsx(g,{size:14})}),a.jsxs("div",{className:"browser-menu-anchor",children:[a.jsx("button",{type:"button",title:"Browser actions","aria-label":"Browser actions",onClick:()=>m(w=>!w),children:a.jsx(B,{size:15})}),p&&a.jsx("div",{className:"browser-options-menu",role:"menu",children:a.jsx("button",{type:"button",role:"menuitem",onClick:()=>{m(!1),l()},children:"Clear Browser Data..."})})]})]})]})}function D({active:r,onBounds:e}){const b=c.useRef(null),l=c.useRef(null),u=c.useRef(null),t=c.useCallback(i=>{const o=i?`${i.x}:${i.y}:${i.width}:${i.height}`:"null";l.current!==o&&(l.current=o,e(i))},[e]),n=c.useCallback(()=>{const i=b.current;if(!r||!i){t(null);return}const o=i.getBoundingClientRect(),d=Math.max(0,Math.round(o.width)),p=Math.max(0,Math.round(o.height));if(d===0||p===0){t(null);return}t({x:Math.round(o.left),y:Math.round(o.top),width:d,height:p})},[r,t]),s=c.useCallback(()=>{u.current===null&&(u.current=window.requestAnimationFrame(()=>{u.current=null,n()}))},[n]);return c.useLayoutEffect(()=>{l.current=null,n();const i=b.current;if(!r||!i)return t(null),()=>t(null);const o=new ResizeObserver(s);return o.observe(i),window.addEventListener("resize",s),window.addEventListener("scroll",s,!0),()=>{u.current!==null&&(window.cancelAnimationFrame(u.current),u.current=null),o.disconnect(),window.removeEventListener("resize",s),window.removeEventListener("scroll",s,!0),t(null)}},[r,t,n,s]),a.jsx("div",{className:"browser-viewport",ref:b})}function A({conversationId:r,expanded:e,onResizeStart:b}){const l=P(r),u=c.useCallback(s=>{window.openpond?.browser?.setBounds({conversationId:r,bounds:s})},[r]),t=c.useCallback(s=>{l.open(s,{explicitFile:!0})},[l]),n=c.useCallback(()=>{window.confirm("Clear browser data for this conversation? Tabs, cookies, cache, and local storage for this conversation will be removed.")&&l.clearData()},[l]);return a.jsxs("aside",{className:`workspace-diff-panel browser-sidebar-panel ${e?"expanded":""}`,"aria-label":"Browser",children:[!e&&a.jsx("div",{className:"workspace-diff-resize-handle",role:"separator","aria-orientation":"vertical","aria-label":"Resize browser panel",onPointerDown:b}),a.jsx(R,{activeTabId:l.state.activeTabId,tabs:l.state.tabs,onCloseTab:s=>{l.closeTab(s)},onNewTab:()=>{l.newTab()},onSelectTab:s=>{l.selectTab(s)}}),a.jsx(z,{activeTab:l.activeTab,available:l.available,onBack:()=>{l.back()},onClearData:n,onForward:()=>{l.forward()},onNavigate:t,onOpenExternal:()=>{l.openExternal()},onReload:()=>{l.reload()},onStop:()=>{l.stop()}}),a.jsxs("div",{className:"browser-content",children:[l.available?l.state.tabs.length===0?a.jsxs("div",{className:"browser-empty-state",children:[a.jsx(f,{size:18}),a.jsx("span",{children:"Enter a URL to open a browser tab for this conversation."})]}):null:a.jsxs("div",{className:"browser-empty-state",children:[a.jsx(f,{size:18}),a.jsx("span",{children:"Desktop browser bridge unavailable."})]}),a.jsx(D,{active:l.available&&l.state.tabs.length>0,onBounds:u})]})]})}export{A as BrowserSidebar};
@@ -1 +1 @@
1
- import{r as j,j as e,ar as g,as as b,at as x,e as k,F as v,au as C,av as P,a2 as w,aw as M,ax as L}from"./index--lwjVZXT.js";function F({open:s,query:r,projects:n,sessions:o,onQueryChange:t,onClose:d,onNewChat:f,onOpenProject:u,onOpenSession:m}){const c=r.trim().toLowerCase(),l=j.useMemo(()=>S(o,c,10),[c,o]),i=j.useMemo(()=>z(n,c,8),[c,n]);if(!s)return null;const N=()=>{const a=i[0];if(a){u(a);return}const p=l[0];p&&m(p)};return e.jsx("div",{className:"command-overlay",role:"presentation",onMouseDown:d,children:e.jsxs("section",{className:"command-menu",role:"dialog","aria-modal":"true","aria-label":"Search chats and projects",onMouseDown:a=>a.stopPropagation(),children:[e.jsxs("div",{className:"command-input-row",children:[e.jsx(g,{size:17}),e.jsx("input",{autoFocus:!0,value:r,onChange:a=>t(a.target.value),onKeyDown:a=>{a.key==="Enter"&&(a.preventDefault(),N()),a.key==="Escape"&&(a.preventDefault(),d())},placeholder:"Search chats and projects"}),e.jsx("kbd",{children:"Esc"})]}),e.jsxs("div",{className:"command-results",children:[e.jsxs("button",{className:"command-result command-create",onClick:f,children:[e.jsx(b,{size:15}),e.jsx("span",{children:"New local task"}),e.jsx("small",{children:"General"})]}),e.jsxs(h,{label:"Projects",children:[i.map(a=>e.jsxs("button",{className:"command-result",onClick:()=>u(a),children:[x(a)?e.jsx(k,{size:15}):e.jsx(v,{size:15}),e.jsx("span",{children:a.project.name}),e.jsx("small",{children:D(a)})]},a.project.id)),i.length===0&&e.jsx("div",{className:"command-empty",children:"No projects found"})]}),e.jsxs(h,{label:"Chats",children:[l.map(a=>e.jsxs("button",{className:"command-result",onClick:()=>m(a),children:[a.pinned?e.jsx(C,{size:15}):a.savedForLater?e.jsx(P,{size:15}):e.jsx(w,{size:15}),e.jsx("span",{children:a.title}),e.jsx("small",{children:a.appName??M(a.updatedAt)})]},a.id)),l.length===0&&e.jsx("div",{className:"command-empty",children:"No chats found"})]})]})]})})}function S(s,r,n){const o=[];for(const t of s)if((!r||`${t.title} ${t.appName??""}`.toLowerCase().includes(r))&&(o.push(t),o.length>=n))break;return o}function z(s,r,n){const o=[];for(const t of s)if((!r||$(t).toLowerCase().includes(r))&&(o.push(t),o.length>=n))break;return o}function $(s){return L(s)?`${s.project.name} ${s.project.path} ${s.project.workspacePath}`:`${s.project.name} ${s.project.sourceLabel??""} ${s.project.organizationName??""}`}function D(s){return x(s)?s.project.organizationName??"Cloud Project":s.project.linkedOpenPondApp?"OpenPond project":s.project.source==="git"?"Local Git":"Local folder"}function h({label:s,children:r}){return e.jsxs("div",{className:"command-group",children:[e.jsx("div",{className:"command-group-label",children:s}),r]})}export{F as CommandMenu};
1
+ import{r as j,j as e,ar as g,as as b,at as x,e as k,F as v,au as C,av as P,a2 as w,aw as M,ax as L}from"./index-BO2W2U23.js";function F({open:s,query:r,projects:n,sessions:o,onQueryChange:t,onClose:d,onNewChat:f,onOpenProject:u,onOpenSession:m}){const c=r.trim().toLowerCase(),l=j.useMemo(()=>S(o,c,10),[c,o]),i=j.useMemo(()=>z(n,c,8),[c,n]);if(!s)return null;const N=()=>{const a=i[0];if(a){u(a);return}const p=l[0];p&&m(p)};return e.jsx("div",{className:"command-overlay",role:"presentation",onMouseDown:d,children:e.jsxs("section",{className:"command-menu",role:"dialog","aria-modal":"true","aria-label":"Search chats and projects",onMouseDown:a=>a.stopPropagation(),children:[e.jsxs("div",{className:"command-input-row",children:[e.jsx(g,{size:17}),e.jsx("input",{autoFocus:!0,value:r,onChange:a=>t(a.target.value),onKeyDown:a=>{a.key==="Enter"&&(a.preventDefault(),N()),a.key==="Escape"&&(a.preventDefault(),d())},placeholder:"Search chats and projects"}),e.jsx("kbd",{children:"Esc"})]}),e.jsxs("div",{className:"command-results",children:[e.jsxs("button",{className:"command-result command-create",onClick:f,children:[e.jsx(b,{size:15}),e.jsx("span",{children:"New local task"}),e.jsx("small",{children:"General"})]}),e.jsxs(h,{label:"Projects",children:[i.map(a=>e.jsxs("button",{className:"command-result",onClick:()=>u(a),children:[x(a)?e.jsx(k,{size:15}):e.jsx(v,{size:15}),e.jsx("span",{children:a.project.name}),e.jsx("small",{children:D(a)})]},a.project.id)),i.length===0&&e.jsx("div",{className:"command-empty",children:"No projects found"})]}),e.jsxs(h,{label:"Chats",children:[l.map(a=>e.jsxs("button",{className:"command-result",onClick:()=>m(a),children:[a.pinned?e.jsx(C,{size:15}):a.savedForLater?e.jsx(P,{size:15}):e.jsx(w,{size:15}),e.jsx("span",{children:a.title}),e.jsx("small",{children:a.appName??M(a.updatedAt)})]},a.id)),l.length===0&&e.jsx("div",{className:"command-empty",children:"No chats found"})]})]})]})})}function S(s,r,n){const o=[];for(const t of s)if((!r||`${t.title} ${t.appName??""}`.toLowerCase().includes(r))&&(o.push(t),o.length>=n))break;return o}function z(s,r,n){const o=[];for(const t of s)if((!r||$(t).toLowerCase().includes(r))&&(o.push(t),o.length>=n))break;return o}function $(s){return L(s)?`${s.project.name} ${s.project.path} ${s.project.workspacePath}`:`${s.project.name} ${s.project.sourceLabel??""} ${s.project.organizationName??""}`}function D(s){return x(s)?s.project.organizationName??"Cloud Project":s.project.linkedOpenPondApp?"OpenPond project":s.project.source==="git"?"Local Git":"Local folder"}function h({label:s,children:r}){return e.jsxs("div",{className:"command-group",children:[e.jsx("div",{className:"command-group-label",children:s}),r]})}export{F as CommandMenu};