openpond 0.0.38 → 0.0.39

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 (212) hide show
  1. package/README.md +3 -4
  2. package/dist/api/core.d.ts +6 -0
  3. package/dist/api/vercel-protection.d.ts +1 -0
  4. package/dist/chunks/{app-layer-DPUJRNO2.js → app-layer-LTBWNA2F.js} +32 -10
  5. package/dist/chunks/app-server-runtime-VYYJ2AWX.js +18 -0
  6. package/dist/chunks/{apps-AKBI6AS7.js → apps-CZAJBGE3.js} +6 -4
  7. package/dist/chunks/{chunk-LZZM3IHS.js → chunk-2SF6HLT7.js} +5899 -5939
  8. package/dist/chunks/{chunk-XCATKTK3.js → chunk-3CDPPVLE.js} +108 -66
  9. package/dist/chunks/{chunk-JWF37O5E.js → chunk-3HW6OSHP.js} +1 -3
  10. package/dist/chunks/{chunk-43YI36NA.js → chunk-3KLQ52B2.js} +228 -5
  11. package/dist/chunks/chunk-4HIWFIMN.js +37172 -0
  12. package/dist/chunks/{chunk-AHPQTEIJ.js → chunk-4N6E3OVF.js} +4 -4
  13. package/dist/chunks/{chunk-YTJL6XPU.js → chunk-6V7MJVRO.js} +56 -11
  14. package/dist/chunks/{chunk-QRM7XMAO.js → chunk-BQQZNGI6.js} +152 -161
  15. package/dist/chunks/chunk-DBHSOTYZ.js +1552 -0
  16. package/dist/chunks/{chunk-275WCETC.js → chunk-FCVVOMIP.js} +145 -5
  17. package/dist/chunks/{chunk-GB6VUZUA.js → chunk-JIEUB6OS.js} +1 -1
  18. package/dist/chunks/{chunk-HS2AGRDV.js → chunk-JJPAMKXZ.js} +1 -1
  19. package/dist/chunks/{chunk-GDZYDLEL.js → chunk-JRROTGQT.js} +1 -110
  20. package/dist/chunks/chunk-KHNHUA2H.js +1737 -0
  21. package/dist/chunks/{chunk-AHNFNWUN.js → chunk-L6XH4ZGZ.js} +1 -1
  22. package/dist/chunks/chunk-M2NXTLH2.js +4054 -0
  23. package/dist/chunks/{chunk-SLMP353Q.js → chunk-MIZHCABO.js} +2 -195
  24. package/dist/chunks/chunk-SMNFI2FU.js +113 -0
  25. package/dist/chunks/chunk-VCVQLECH.js +675 -0
  26. package/dist/chunks/{chunk-V35STJF4.js → chunk-ZJBJQCQZ.js} +179 -52
  27. package/dist/chunks/{cli-7BKDWFNU.js → cli-JS76LCW2.js} +9 -5
  28. package/dist/chunks/{core-commands-YN4RMWA3.js → core-commands-4MRJQZJV.js} +7 -5
  29. package/dist/chunks/{harness-BHQRMXJR.js → desktop-test-RNMWLOVU.js} +15 -14
  30. package/dist/chunks/{chunk-XERQHYBO.js → extension-GDRW22N3.js} +5868 -3580
  31. package/dist/chunks/{help-VREQNA4I.js → help-LWNREJ7U.js} +1 -1
  32. package/dist/chunks/{opchat-D63YTNSX.js → opchat-2K2JIGK3.js} +9 -10
  33. package/dist/chunks/{organizations-I46KG7TC.js → organizations-Z5HVD2E7.js} +11 -9
  34. package/dist/chunks/{profile-WKZJHEPG.js → profile-QNECVVGN.js} +12 -38
  35. package/dist/chunks/{project-agent-ZUC3YMCT.js → project-agent-W3V75WBR.js} +9 -411
  36. package/dist/chunks/{sandbox-command-AAOPFTI5.js → sandbox-command-X3FO74NX.js} +7 -5
  37. package/dist/chunks/{sandbox-template-GKNVR4C5.js → sandbox-template-5B4T4BGU.js} +8 -6
  38. package/dist/chunks/{src-RPW5TOPI.js → src-ESAILPUH.js} +32 -30
  39. package/dist/chunks/src-IC5RX4L6.js +63517 -0
  40. package/dist/chunks/{teams-bot-PSL3ZO6Z.js → teams-bot-NTQ6VFFL.js} +6 -4
  41. package/dist/chunks/training-BR5A7SPU.js +320 -0
  42. package/dist/chunks/{workspaces-BPXC2DHT.js → workspaces-XC3QBD2Y.js} +2 -2
  43. package/dist/cli.js +24 -12
  44. package/dist/config.d.ts +9 -3
  45. package/dist/index.js +1300 -1045
  46. package/dist/profile/local-profile-types.d.ts +16 -0
  47. package/dist/profile/local-profile.d.ts +50 -4
  48. package/dist/sandbox/client-handles.d.ts +33 -46
  49. package/dist/sandbox/client.d.ts +4 -26
  50. package/dist/sandbox/sandbox-instance-client.d.ts +5 -5
  51. package/dist/sandbox/types/client.d.ts +1 -2
  52. package/dist/sandbox/types/core.d.ts +0 -1
  53. package/dist/sandbox/types/org-project-agent.d.ts +3 -89
  54. package/dist/sandbox/types/record.d.ts +1 -2
  55. package/dist/sandbox/types/runtime-profiles.d.ts +2 -2
  56. package/dist/sandbox-template/manifest.d.ts +1 -1
  57. package/dist/skills/openpond-agent-authoring/SKILL.md +40 -0
  58. package/dist/skills/openpond-agent-authoring/references/action-and-chat-design.md +13 -0
  59. package/dist/skills/openpond-agent-authoring/references/integrations-and-setup.md +13 -0
  60. package/dist/skills/openpond-agent-authoring/references/profile-layout.md +29 -0
  61. package/dist/skills/openpond-agent-authoring/references/validation-and-repair.md +14 -0
  62. package/dist/skills/openpond-desktop-harness/SKILL.md +1 -1
  63. package/dist/skills/openpond-skill-authoring/SKILL.md +44 -0
  64. package/dist/skills/openpond-skill-authoring/references/copying-and-adaptation.md +16 -0
  65. package/dist/skills/openpond-skill-authoring/references/skill-package-layout.md +38 -0
  66. package/dist/skills/openpond-skill-authoring/references/validation-and-repair.md +24 -0
  67. package/dist/skills/openpond-skill-authoring/scripts/validate-skill.mjs +102 -0
  68. package/dist/skills/openpond-taskset-authoring/SKILL.md +64 -22
  69. package/dist/skills/openpond-taskset-authoring/artifact.json +39 -0
  70. package/dist/skills/openpond-taskset-authoring/references/graders-and-rewards.md +3 -0
  71. package/dist/skills/openpond-taskset-authoring/references/method-selection.md +1 -1
  72. package/dist/skills/openpond-taskset-authoring/references/privacy-and-provenance.md +2 -0
  73. package/dist/skills/openpond-taskset-authoring/references/task-design.md +32 -0
  74. package/dist/web/assets/{AppDialog-DrwJb_wG.js → AppDialog-Bua3f-6v.js} +1 -1
  75. package/dist/web/assets/{AppsView-DPagLMsc.js → AppsView-DrJkHeSO.js} +1 -1
  76. package/dist/web/assets/BrowserSidebar-Bf-4Vozm.js +1 -0
  77. package/dist/web/assets/CommandMenu-DDZlGQiB.js +1 -0
  78. package/dist/web/assets/CommunityView-BtcCrba7.js +1 -0
  79. package/dist/web/assets/ComposerCreateImproveStrip-DOe5Otg6.js +1 -0
  80. package/dist/web/assets/GetStartedView-CG4z0Dtw.js +1 -0
  81. package/dist/web/assets/GetStartedView-yVmnGZPw.css +1 -0
  82. package/dist/web/assets/LabModelVersionDetailPage-BEkmSKuv.js +1 -0
  83. package/dist/web/assets/LabSkillSidebar-BIotN_RB.js +1 -0
  84. package/dist/web/assets/LabsRoute-CfOe0Zt5.js +3 -0
  85. package/dist/web/assets/LabsRoute-CoSPO4HR.css +1 -0
  86. package/dist/web/assets/MainChatThread-C0-l1mHt.js +2 -0
  87. package/dist/web/assets/MainPane-Bky_Rqcx.css +1 -0
  88. package/dist/web/assets/MainPane-aOVlVyRK.js +6 -0
  89. package/dist/web/assets/MarkdownText-D7DT1k1k.js +9 -0
  90. package/dist/web/assets/Messages-CBIXruA9.js +9 -0
  91. package/dist/web/assets/NativeSkillSidebar-C4t69Y7B.js +1 -0
  92. package/dist/web/assets/NewProjectDialog-Bat65tYD.js +1 -0
  93. package/dist/web/assets/OutputsPage-C58n39Db.js +1 -0
  94. package/dist/web/assets/RightChatPanelStack-Bp7nZxQ0.js +1 -0
  95. package/dist/web/assets/ScheduledWorkPage-BXP0j_c_.js +1 -0
  96. package/dist/web/assets/SettingsView-CtWK_aQ0.css +1 -0
  97. package/dist/web/assets/SettingsView-DOOfhO9a.js +6 -0
  98. package/dist/web/assets/TeamChatView-Cgxm-pKA.css +1 -0
  99. package/dist/web/assets/TeamChatView-De2wdqyY.js +3 -0
  100. package/dist/web/assets/{TerminalOverlay-BKl0p8pa.js → TerminalOverlay-BsuCH3NX.js} +1 -1
  101. package/dist/web/assets/TrainingCreationPanel-D2OFWyQ-.js +1 -0
  102. package/dist/web/assets/TrainingDraftPanel-DBpulXTz.js +1 -0
  103. package/dist/web/assets/{UsageSettingsSection-zDAwzTGl.js → UsageSettingsSection-DzMLUXAO.js} +37 -37
  104. package/dist/web/assets/WorkspaceDiffPanel-B7yIhjNF.js +14 -0
  105. package/dist/web/assets/WorkspaceEnvironmentMenu-B6jXM9xG.js +32 -0
  106. package/dist/web/assets/WorkspaceGitDialogs-CQ0fl9Qk.js +1 -0
  107. package/dist/web/assets/{WorkspaceMonacoEditor-DPGcG8fy.js → WorkspaceMonacoEditor-C2ctzITz.js} +3 -3
  108. package/dist/web/assets/arrow-up-right-ecwcx3xt.js +1 -0
  109. package/dist/web/assets/chevron-up-DP8PPfWd.js +1 -0
  110. package/dist/web/assets/circle-alert-envg1D6O.js +1 -0
  111. package/dist/web/assets/cloud-upload-5MGPLnaA.js +1 -0
  112. package/dist/web/assets/{cssMode-CKN9CcfG.js → cssMode-CFifcEfw.js} +1 -1
  113. package/dist/web/assets/folder-open-Dq3ZjeEP.js +1 -0
  114. package/dist/web/assets/folder-plus-EiZ5wbv_.js +1 -0
  115. package/dist/web/assets/git-branch-w29jmQ-X.js +1 -0
  116. package/dist/web/assets/{git-commit-horizontal-Bxi8YPep.js → git-commit-horizontal-CGZM0PZo.js} +1 -1
  117. package/dist/web/assets/{htmlMode-CeUcNhBZ.js → htmlMode-Ct1P-_lf.js} +1 -1
  118. package/dist/web/assets/index-ByIQyiUl.js +178 -0
  119. package/dist/web/assets/index-D4uCeiep.js +1 -0
  120. package/dist/web/assets/index-D9jTe16Q.css +1 -0
  121. package/dist/web/assets/info-Cd2HkIeb.js +1 -0
  122. package/dist/web/assets/{jsonMode-97z0Yz9u.js → jsonMode-BAUNCNAX.js} +1 -1
  123. package/dist/web/assets/{lspLanguageFeatures-D4Tp-JmI.js → lspLanguageFeatures-fucFYI1A.js} +1 -1
  124. package/dist/web/assets/monaco.contribution-Ce4v5kei.js +2 -0
  125. package/dist/web/assets/monaco.contribution-DLLMi4cB.js +2 -0
  126. package/dist/web/assets/monaco.contribution-g9QiIm1d.js +2 -0
  127. package/dist/web/assets/monaco.contribution-nG-5Cyjz.js +2 -0
  128. package/dist/web/assets/monitor-DgHCnCKl.js +1 -0
  129. package/dist/web/assets/{play-C-37dnR1.js → play-Be0XDHBu.js} +1 -1
  130. package/dist/web/assets/{python-CGpDXY7_.js → python-CEhEiPo7.js} +1 -1
  131. package/dist/web/assets/{refresh-cw-BAaaPCXl.js → refresh-cw-DH0KLbdD.js} +1 -1
  132. package/dist/web/assets/reply-D1TK2yV8.js +1 -0
  133. package/dist/web/assets/{save-Cvxs3XyC.js → save-C1MSeBnQ.js} +1 -1
  134. package/dist/web/assets/square-CemI-0g5.js +1 -0
  135. package/dist/web/assets/square-pen-CqfsvR_n.js +1 -0
  136. package/dist/web/assets/{toggleHighContrast-CD42jH4g.js → toggleHighContrast-DrdQN3Rl.js} +1 -1
  137. package/dist/web/assets/training-BQVNUTZA.css +1 -0
  138. package/dist/web/assets/training-model-data-B7-1Bxil.js +1 -0
  139. package/dist/web/assets/{tsMode-ZROIxEjv.js → tsMode-CKB5oOUU.js} +1 -1
  140. package/dist/web/assets/{upload-DvCSGERK.js → upload-t751LLqP.js} +1 -1
  141. package/dist/web/assets/useLocalAgentSchedules-CzC3wfIP.js +1 -0
  142. package/dist/web/assets/{wifi-off-BIb94PkS.js → wifi-off-CxTHH3JU.js} +1 -1
  143. package/dist/web/assets/{workers-oYqbrVYG.js → workers-CqYddzCd.js} +1 -1
  144. package/dist/web/assets/{yaml-WqBjNgOO.js → yaml-e5wBkc-C.js} +1 -1
  145. package/dist/web/index.html +2 -2
  146. package/docs/command-reference.md +75 -40
  147. package/package.json +3 -1
  148. package/dist/chunks/chunk-FWLOFUPU.js +0 -864
  149. package/dist/chunks/chunk-HLCTINEP.js +0 -224
  150. package/dist/chunks/chunk-MPGSHXGF.js +0 -3896
  151. package/dist/chunks/chunk-T4QXKU5Y.js +0 -1
  152. package/dist/chunks/chunk-XEJ7XXUQ.js +0 -1301
  153. package/dist/chunks/chunk-ZI4GDAUB.js +0 -3522
  154. package/dist/chunks/cli-2KBVNDRY.js +0 -23
  155. package/dist/chunks/extend-REGNTBK3.js +0 -89
  156. package/dist/chunks/extension-7K77DAVL.js +0 -121
  157. package/dist/chunks/fileFromPath-DHCRY3BD.js +0 -2151
  158. package/dist/chunks/src-MWDIK56B.js +0 -105881
  159. package/dist/web/assets/BrowserSidebar-DMn2V8RV.js +0 -1
  160. package/dist/web/assets/CloudWorkView-Cl_7mM3c.js +0 -1
  161. package/dist/web/assets/CloudWorkView-DNoPIlMj.css +0 -1
  162. package/dist/web/assets/CommandMenu-CHMQLez_.js +0 -1
  163. package/dist/web/assets/CommunityView-DcHVDUk0.js +0 -1
  164. package/dist/web/assets/ComposerCreateImproveStrip-BZ3Dgzmo.js +0 -1
  165. package/dist/web/assets/GetStartedView-DBLdduwr.css +0 -1
  166. package/dist/web/assets/GetStartedView-DTRotFqz.js +0 -1
  167. package/dist/web/assets/LabSkillSidebar-D-PqFe1T.js +0 -1
  168. package/dist/web/assets/LabsRoute-BrJkBNig.css +0 -1
  169. package/dist/web/assets/LabsRoute-Dew1BwK5.js +0 -3
  170. package/dist/web/assets/MainChatThread-BaPxxzrw.js +0 -2
  171. package/dist/web/assets/MakeAgentTutorialLearningPanel-CBsfnONQ.js +0 -2
  172. package/dist/web/assets/MarkdownText-DGLfAM_Z.js +0 -7
  173. package/dist/web/assets/Messages-CIX9uTjX.js +0 -10
  174. package/dist/web/assets/NativeSkillSidebar-AP_uHn6g.js +0 -1
  175. package/dist/web/assets/NewProjectDialog-C6lHkafU.js +0 -1
  176. package/dist/web/assets/PostTrainingLearningPanel-CZEgPc8O.js +0 -2
  177. package/dist/web/assets/PostTrainingStatusPill-CeEpwUDB.js +0 -1
  178. package/dist/web/assets/ProfileSettingsSection-Cg4tKO-C.css +0 -1
  179. package/dist/web/assets/ProfileSettingsSection-EumMLlEp.js +0 -1
  180. package/dist/web/assets/RightChatPanelStack-MXBcx3zO.js +0 -1
  181. package/dist/web/assets/SettingsView-Caljbns2.css +0 -1
  182. package/dist/web/assets/SettingsView-DyURG_Uh.js +0 -6
  183. package/dist/web/assets/TeamChatView-Bx44q3WV.css +0 -1
  184. package/dist/web/assets/TeamChatView-D3v6aqJ3.js +0 -3
  185. package/dist/web/assets/TrainingCreationPanel-CfZQTuT5.js +0 -1
  186. package/dist/web/assets/TrainingDraftPanel-DslRPSDW.js +0 -1
  187. package/dist/web/assets/WorkspaceDiffPanel-C_MZPPlL.js +0 -14
  188. package/dist/web/assets/WorkspaceEnvironmentMenu-BUAnn80j.js +0 -32
  189. package/dist/web/assets/WorkspaceGitDialogs-Drbf4ujA.js +0 -1
  190. package/dist/web/assets/activity-Dnr3jqb3.js +0 -1
  191. package/dist/web/assets/boxes-BinC8UPn.js +0 -1
  192. package/dist/web/assets/chevron-up-Bjp_-_Cb.js +0 -1
  193. package/dist/web/assets/circle-x-ubnvEYuE.js +0 -1
  194. package/dist/web/assets/copy-B_ZCCUMz.js +0 -1
  195. package/dist/web/assets/create-pipeline-request-D6uLUxe9.js +0 -4
  196. package/dist/web/assets/file-8HAMlTmQ.js +0 -1
  197. package/dist/web/assets/git-branch-l2Zih3Bv.js +0 -1
  198. package/dist/web/assets/index-BMFyOFRU.css +0 -1
  199. package/dist/web/assets/index-BzwcDzbT.js +0 -1
  200. package/dist/web/assets/index-KoQSSt_f.js +0 -177
  201. package/dist/web/assets/info-JTbDQxHx.js +0 -1
  202. package/dist/web/assets/make-agent-tutorial-D6nBCgv-.js +0 -2
  203. package/dist/web/assets/monaco.contribution-B3j6oown.js +0 -2
  204. package/dist/web/assets/monaco.contribution-BXHxPPWL.js +0 -2
  205. package/dist/web/assets/monaco.contribution-C2P5zIzh.js +0 -2
  206. package/dist/web/assets/monaco.contribution-C8c6OtGi.js +0 -2
  207. package/dist/web/assets/monitor-kzHtxHnA.js +0 -1
  208. package/dist/web/assets/reply-9rehU13k.js +0 -1
  209. package/dist/web/assets/rotate-cw-C1Z_Xs23.js +0 -1
  210. package/dist/web/assets/training-BN8CALIc.css +0 -1
  211. package/dist/web/assets/training-model-data-BXUCzS0p.js +0 -1
  212. package/docs/agent-edit-check-status-json.md +0 -132
@@ -4,7 +4,7 @@ import {
4
4
  materializeSourceUploadFile,
5
5
  readSourceUploadCache,
6
6
  writeSourceUploadCache
7
- } from "./chunk-GB6VUZUA.js";
7
+ } from "./chunk-JIEUB6OS.js";
8
8
  import {
9
9
  yaml
10
10
  } from "./chunk-WYDVQOBL.js";
@@ -12,7 +12,7 @@ import {
12
12
  loadGlobalConfig,
13
13
  openPondConfigDirectory,
14
14
  saveGlobalConfig
15
- } from "./chunk-ZI4GDAUB.js";
15
+ } from "./chunk-DBHSOTYZ.js";
16
16
 
17
17
  // ../../packages/cloud/src/profile/profile-setup-gate.ts
18
18
  var OpenPondProfileSetupRequiredError = class extends Error {
@@ -160,7 +160,6 @@ var PROFILE_REPO_GITIGNORE = [
160
160
  "**/.bun/",
161
161
  "**/.env",
162
162
  "**/.env.*",
163
- "**/.openpond/goals/",
164
163
  "**/.openpond/traces/",
165
164
  "**/.openpond/vendor/",
166
165
  "**/.openpond/eval-results.json",
@@ -490,12 +489,10 @@ function hostedSourceCheckStatusFromPayload(input) {
490
489
  const deployPlan = record(checkResult?.deployPlan) ?? record(input.deployPlan);
491
490
  const source = record(deployPlan?.source);
492
491
  const checks = record(deployPlan?.checks);
493
- const workItem = record(checkResult?.workItem);
494
492
  const sourceCheckStatus = record(checkResult?.sourceCheckStatus);
495
493
  return {
496
494
  status: input.status,
497
495
  agentId: input.agentId,
498
- workItemId: text2(workItem?.id),
499
496
  deployPlanStatus: text2(deployPlan?.status),
500
497
  canRun: booleanValue(deployPlan?.canRun),
501
498
  canDeploy: booleanValue(deployPlan?.canDeploy),
@@ -601,6 +598,8 @@ import {
601
598
  mkdir,
602
599
  readFile as readFile4,
603
600
  readdir as readdir2,
601
+ rename,
602
+ rm,
604
603
  symlink,
605
604
  writeFile as writeFile2
606
605
  } from "node:fs/promises";
@@ -670,6 +669,7 @@ import path3 from "node:path";
670
669
  var AGENT_MANIFEST_PATH = ".openpond/agent-manifest.json";
671
670
  var ACTION_REGISTRY_PATH = ".openpond/action-registry.json";
672
671
  var SOURCE_UPLOAD_METADATA_PATH = ".openpond/source-upload-metadata.json";
672
+ var AGENT_PACKAGE_ORIGIN_PATH = ".openpond/agent-package-origin.json";
673
673
  async function loadProfileActionCatalog(sourcePath) {
674
674
  return loadProfileActionCatalogSource({
675
675
  agentId: "default",
@@ -696,7 +696,9 @@ async function loadProfileActionCatalogForSources(sources) {
696
696
  ...sources.filter((source) => source.preferred),
697
697
  ...sources.filter((source) => !source.preferred)
698
698
  ];
699
- const results = await Promise.all(sortedSources.map(loadProfileActionCatalogSource));
699
+ const results = await Promise.all(
700
+ sortedSources.map(loadProfileActionCatalogSource)
701
+ );
700
702
  const byId = /* @__PURE__ */ new Map();
701
703
  const actionCatalog = [];
702
704
  for (const result of results) {
@@ -707,7 +709,9 @@ async function loadProfileActionCatalogForSources(sources) {
707
709
  actionCatalog.push(next);
708
710
  }
709
711
  }
710
- const generatedAt = latestIso(results.map((result) => result.catalog.generatedAt));
712
+ const generatedAt = latestIso(
713
+ results.map((result) => result.catalog.generatedAt)
714
+ );
711
715
  const errors = results.map((result) => result.catalog.error).filter(Boolean);
712
716
  return {
713
717
  catalog: {
@@ -719,20 +723,37 @@ async function loadProfileActionCatalogForSources(sources) {
719
723
  error: errors.length > 0 ? errors.join("; ") : null
720
724
  },
721
725
  actionCatalog,
722
- sourceSetupRequirements: results.flatMap((result) => result.sourceSetupRequirements)
726
+ sourceSetupRequirements: results.flatMap(
727
+ (result) => result.sourceSetupRequirements
728
+ )
723
729
  };
724
730
  }
725
731
  async function loadProfileActionCatalogSource(source) {
726
732
  const sourcePath = source.sourcePath;
727
733
  const manifestPath = path3.join(sourcePath, AGENT_MANIFEST_PATH);
728
734
  const registryPath = path3.join(sourcePath, ACTION_REGISTRY_PATH);
729
- const sourceUploadMetadataPath = path3.join(sourcePath, SOURCE_UPLOAD_METADATA_PATH);
735
+ const sourceUploadMetadataPath = path3.join(
736
+ sourcePath,
737
+ SOURCE_UPLOAD_METADATA_PATH
738
+ );
739
+ const agentPackageOriginPath = path3.join(
740
+ sourcePath,
741
+ AGENT_PACKAGE_ORIGIN_PATH
742
+ );
730
743
  try {
731
744
  const manifest = await readJsonIfExists(manifestPath);
732
745
  const registry = await readJsonIfExists(registryPath);
733
- const sourceUploadMetadata = await readJsonIfExists(sourceUploadMetadataPath);
746
+ const sourceUploadMetadata = await readJsonIfExists(
747
+ sourceUploadMetadataPath
748
+ );
749
+ const agentPackageOrigin = asRecord(
750
+ await readJsonIfExists(agentPackageOriginPath)
751
+ );
752
+ const namedInputSchemas = asRecord(asRecord(manifest)?.inputSchemas);
734
753
  const sourceSetupRequirements = recordArray(asRecord(sourceUploadMetadata)?.setupRequirements) ?? [];
735
- const sourceRequirementsByAction = sourceSetupRequirementsByAction(sourceSetupRequirements);
754
+ const sourceRequirementsByAction = sourceSetupRequirementsByAction(
755
+ sourceSetupRequirements
756
+ );
736
757
  const byId = /* @__PURE__ */ new Map();
737
758
  for (const record2 of [
738
759
  ...records(asRecord(manifest)?.actionCatalog),
@@ -760,14 +781,17 @@ async function loadProfileActionCatalogSource(source) {
760
781
  label: text3(record2.label) ?? existing?.label ?? titleFromActionId(id),
761
782
  description: text3(record2.description) ?? existing?.description ?? null,
762
783
  visibility: text3(record2.visibility) ?? existing?.visibility ?? "default",
763
- inputSchema: schemaValue(record2.inputSchema) ?? existing?.inputSchema ?? null,
784
+ inputSchema: resolvedSchemaValue(record2.inputSchema, namedInputSchemas) ?? existing?.inputSchema ?? null,
764
785
  outputSchema: schemaValue(record2.outputSchema) ?? existing?.outputSchema ?? null,
765
786
  approvalPolicy: asRecord(record2.approvalPolicy) ?? existing?.approvalPolicy ?? null,
766
787
  artifactPolicy: asRecord(record2.artifactPolicy) ?? existing?.artifactPolicy ?? null,
767
788
  setupRequirements,
768
789
  mcp: asRecord(record2.mcp) ?? existing?.mcp ?? null,
769
790
  schedulePolicy: asRecord(record2.schedulePolicy) ?? existing?.schedulePolicy ?? null,
770
- trace: asRecord(record2.trace) ?? existing?.trace ?? null,
791
+ trace: mergeAgentPackageTrace(
792
+ asRecord(record2.trace) ?? existing?.trace ?? null,
793
+ agentPackageOrigin
794
+ ),
771
795
  implementation: asRecord(record2.implementation) ?? existing?.implementation ?? null,
772
796
  invokesModel: typeof record2.invokesModel === "boolean" ? record2.invokesModel : existing?.invokesModel
773
797
  };
@@ -808,6 +832,24 @@ async function loadProfileActionCatalogSource(source) {
808
832
  };
809
833
  }
810
834
  }
835
+ function mergeAgentPackageTrace(trace, origin) {
836
+ if (!origin) return trace;
837
+ const versionId = text3(origin.versionId);
838
+ const digest = text3(origin.digest);
839
+ if (!versionId || !digest) return trace;
840
+ return {
841
+ ...trace ?? {},
842
+ agentVersionId: versionId,
843
+ agentPackageDigest: digest,
844
+ validationReceiptIds: stringArray(origin.validationReceiptIds),
845
+ evalReceiptIds: stringArray(origin.evalReceiptIds)
846
+ };
847
+ }
848
+ function stringArray(value) {
849
+ return Array.isArray(value) ? value.filter(
850
+ (entry) => typeof entry === "string" && entry.trim().length > 0
851
+ ) : [];
852
+ }
811
853
  function latestIso(values) {
812
854
  let latest = 0;
813
855
  for (const value of values) {
@@ -885,11 +927,15 @@ function asRecord(value) {
885
927
  return value && typeof value === "object" && !Array.isArray(value) ? value : null;
886
928
  }
887
929
  function records(value) {
888
- return Array.isArray(value) ? value.filter((item) => Boolean(asRecord(item))) : [];
930
+ return Array.isArray(value) ? value.filter(
931
+ (item) => Boolean(asRecord(item))
932
+ ) : [];
889
933
  }
890
934
  function recordArray(value) {
891
935
  if (!Array.isArray(value)) return null;
892
- return value.filter((item) => Boolean(asRecord(item)));
936
+ return value.filter(
937
+ (item) => Boolean(asRecord(item))
938
+ );
893
939
  }
894
940
  function text3(value) {
895
941
  return typeof value === "string" && value.trim() ? value.trim() : null;
@@ -897,6 +943,11 @@ function text3(value) {
897
943
  function schemaValue(value) {
898
944
  return text3(value) ?? asRecord(value);
899
945
  }
946
+ function resolvedSchemaValue(value, namedSchemas) {
947
+ const schema = schemaValue(value);
948
+ if (typeof schema !== "string") return schema;
949
+ return asRecord(namedSchemas?.[schema]) ?? schema;
950
+ }
900
951
  function titleFromActionId(id) {
901
952
  const title = id.replace(/[._-]+/g, " ").trim();
902
953
  return title ? title.replace(/\b\w/g, (letter) => letter.toUpperCase()) : id;
@@ -1098,19 +1149,58 @@ function mergeProfileRepoManifestEntry(existing, profilePath) {
1098
1149
  };
1099
1150
  }
1100
1151
  function mergeActiveLocalProfileConfig(existing, repoPath, profile) {
1152
+ const previousEntries = profileConfigEntries(existing);
1153
+ if (existing) {
1154
+ const previousIndex = previousEntries.findIndex(
1155
+ (entry) => path5.resolve(entry.repoPath) === path5.resolve(existing.repoPath) && entry.profile === existing.profile
1156
+ );
1157
+ const previousEntry = {
1158
+ source: previousEntries[previousIndex]?.source ?? "local",
1159
+ repositoryId: previousEntries[previousIndex]?.repositoryId ?? path5.resolve(existing.repoPath),
1160
+ repoPath: path5.resolve(existing.repoPath),
1161
+ profile: existing.profile,
1162
+ ...existing.lastCheck ? { lastCheck: existing.lastCheck } : {},
1163
+ ...existing.lastPush ? { lastPush: existing.lastPush } : {}
1164
+ };
1165
+ if (previousIndex >= 0) previousEntries[previousIndex] = previousEntry;
1166
+ else previousEntries.push(previousEntry);
1167
+ }
1168
+ const targetIndex = previousEntries.findIndex(
1169
+ (entry) => path5.resolve(entry.repoPath) === path5.resolve(repoPath) && entry.profile === profile
1170
+ );
1171
+ const target = targetIndex >= 0 ? previousEntries[targetIndex] : {
1172
+ source: "local",
1173
+ repositoryId: path5.resolve(repoPath),
1174
+ repoPath: path5.resolve(repoPath),
1175
+ profile
1176
+ };
1177
+ if (targetIndex < 0) previousEntries.push(target);
1101
1178
  const next = {
1102
- repoPath,
1179
+ repoPath: path5.resolve(repoPath),
1103
1180
  profile,
1104
- mode: "local"
1181
+ mode: "local",
1182
+ profiles: previousEntries,
1183
+ ...target.lastCheck ? { lastCheck: target.lastCheck } : {},
1184
+ ...target.lastPush ? { lastPush: target.lastPush } : {}
1105
1185
  };
1106
- if (!existing) return next;
1107
- if (path5.resolve(existing.repoPath) !== path5.resolve(repoPath) || existing.profile !== profile) {
1108
- return next;
1186
+ return next;
1187
+ }
1188
+ function profileConfigEntries(config) {
1189
+ if (!config) return [];
1190
+ const configured = config.profiles?.map((entry) => ({ ...entry })) ?? [];
1191
+ if (!configured.some(
1192
+ (entry) => path5.resolve(entry.repoPath) === path5.resolve(config.repoPath) && entry.profile === config.profile
1193
+ )) {
1194
+ configured.push({
1195
+ source: "local",
1196
+ repositoryId: path5.resolve(config.repoPath),
1197
+ repoPath: path5.resolve(config.repoPath),
1198
+ profile: config.profile,
1199
+ ...config.lastCheck ? { lastCheck: config.lastCheck } : {},
1200
+ ...config.lastPush ? { lastPush: config.lastPush } : {}
1201
+ });
1109
1202
  }
1110
- return {
1111
- ...existing,
1112
- ...next
1113
- };
1203
+ return configured;
1114
1204
  }
1115
1205
  var require2 = createRequire(import.meta.url);
1116
1206
  function defaultLocalProfileRepoPath() {
@@ -1146,22 +1236,36 @@ async function initLocalProfileRepo(input = {}) {
1146
1236
  const profile = normalizeProfileName(input.profile);
1147
1237
  const profilePath = path5.join("profiles", profile);
1148
1238
  const profileSourcePath2 = path5.join(repoPath, profilePath);
1239
+ const template = input.template ?? "blank-agent";
1240
+ const blankProfile = template === "blank-profile";
1149
1241
  await mkdir(repoPath, { recursive: true });
1242
+ const manifestAlreadyExists = existsSync4(
1243
+ path5.join(repoPath, PROFILE_REPO_MANIFEST)
1244
+ );
1150
1245
  const manifest = await readProfileManifest(repoPath).catch(
1151
1246
  () => defaultProfileManifest(profile, profilePath)
1152
1247
  );
1248
+ if (blankProfile && manifestAlreadyExists && manifest.profiles[profile]) {
1249
+ throw new Error(`Profile "${profile}" already exists in ${repoPath}.`);
1250
+ }
1153
1251
  manifest.defaultProfile = manifest.defaultProfile || profile;
1154
1252
  manifest.profiles[profile] = mergeProfileRepoManifestEntry(
1155
1253
  manifest.profiles[profile],
1156
1254
  profilePath
1157
1255
  );
1158
- await ensureProfileSource(
1159
- profileSourcePath2,
1160
- input.template ?? "blank-agent",
1161
- Boolean(input.force)
1162
- );
1256
+ if (blankProfile) manifest.profiles[profile].enabledAgents = [];
1257
+ if (blankProfile) await mkdir(profileSourcePath2, { recursive: true });
1258
+ else {
1259
+ await ensureProfileSource(
1260
+ profileSourcePath2,
1261
+ template,
1262
+ Boolean(input.force)
1263
+ );
1264
+ }
1163
1265
  await ensureProfileDependencies(profileSourcePath2);
1164
- await ensureProfileScaffoldFiles(repoPath, profileSourcePath2, profile);
1266
+ await ensureProfileScaffoldFiles(repoPath, profileSourcePath2, profile, {
1267
+ includeDefaultAgent: !blankProfile
1268
+ });
1165
1269
  await writeProfileManifest(repoPath, manifest);
1166
1270
  await ensureProfileGitRepo(repoPath);
1167
1271
  const currentConfig = (await loadGlobalConfig()).openpondProfile;
@@ -1174,25 +1278,34 @@ async function initLocalProfileRepo(input = {}) {
1174
1278
  });
1175
1279
  return loadOpenPondProfileState();
1176
1280
  }
1177
- async function loadLocalProfileRepo(repoPathInput, profileInput) {
1281
+ async function loadLocalProfileRepo(repoPathInput, profileInput, identity) {
1178
1282
  const repoPath = path5.resolve(repoPathInput);
1179
1283
  const manifest = await readProfileManifest(repoPath);
1180
1284
  const profile = normalizeProfileName(profileInput ?? manifest.defaultProfile);
1181
1285
  profileSourcePath(manifest, repoPath, profile);
1182
1286
  const currentConfig = (await loadGlobalConfig()).openpondProfile;
1183
- await saveGlobalConfig({
1184
- openpondProfile: mergeActiveLocalProfileConfig(
1185
- currentConfig,
1186
- repoPath,
1187
- profile
1188
- )
1189
- });
1287
+ const next = mergeActiveLocalProfileConfig(currentConfig, repoPath, profile);
1288
+ applyProfileIdentity(next, repoPath, profile, identity);
1289
+ await saveGlobalConfig({ openpondProfile: next });
1190
1290
  return loadOpenPondProfileState();
1191
1291
  }
1292
+ function applyProfileIdentity(config, repoPath, profile, identity) {
1293
+ if (!identity) return;
1294
+ config.profiles = profileConfigEntries(config).map(
1295
+ (entry) => path5.resolve(entry.repoPath) === repoPath && entry.profile === profile ? {
1296
+ ...entry,
1297
+ source: identity.source,
1298
+ repositoryId: identity.repositoryId
1299
+ } : entry
1300
+ );
1301
+ }
1192
1302
  async function loadOpenPondProfileState() {
1193
1303
  const config = await loadGlobalConfig();
1194
1304
  const active = config.openpondProfile;
1195
1305
  if (!active) return emptyProfileState();
1306
+ return loadOpenPondProfileStateForConfig(active);
1307
+ }
1308
+ async function loadOpenPondProfileStateForConfig(active) {
1196
1309
  try {
1197
1310
  const manifest = await readProfileManifest(active.repoPath);
1198
1311
  const sourcePath = profileSourcePath(
@@ -1325,7 +1438,9 @@ async function runProfileSdkCommand(input) {
1325
1438
  inherit: input.inherit,
1326
1439
  throwOnFailure: false
1327
1440
  });
1328
- await saveProfileCheckStatus(input.command, result.code);
1441
+ if (input.command === "inspect" || input.command === "build" || input.command === "validate" || input.command === "eval") {
1442
+ await saveProfileCheckStatus(input.command, result.code);
1443
+ }
1329
1444
  if (result.code !== 0) {
1330
1445
  const detail = result.stderr.trim() || result.stdout.trim();
1331
1446
  throw new Error(
@@ -1433,10 +1548,14 @@ async function commitActiveProfileChanges(message) {
1433
1548
  async function saveProfilePushStatus(status) {
1434
1549
  const config = (await loadGlobalConfig()).openpondProfile;
1435
1550
  if (!config) return;
1551
+ const profiles = profileConfigEntries(config).map(
1552
+ (entry) => path5.resolve(entry.repoPath) === path5.resolve(config.repoPath) && entry.profile === config.profile ? { ...entry, lastPush: status } : entry
1553
+ );
1436
1554
  await saveGlobalConfig({
1437
1555
  openpondProfile: {
1438
1556
  ...config,
1439
- lastPush: status
1557
+ lastPush: status,
1558
+ profiles
1440
1559
  }
1441
1560
  });
1442
1561
  }
@@ -1444,16 +1563,21 @@ async function saveProfileCheckStatus(command, exitCode) {
1444
1563
  const config = (await loadGlobalConfig()).openpondProfile;
1445
1564
  if (!config) return;
1446
1565
  const sourceHead = await profileGitHead(config.repoPath).catch(() => null);
1566
+ const lastCheck = {
1567
+ command,
1568
+ status: exitCode === 0 ? "passed" : "failed",
1569
+ checkedAt: (/* @__PURE__ */ new Date()).toISOString(),
1570
+ exitCode,
1571
+ sourceHead
1572
+ };
1573
+ const profiles = profileConfigEntries(config).map(
1574
+ (entry) => path5.resolve(entry.repoPath) === path5.resolve(config.repoPath) && entry.profile === config.profile ? { ...entry, lastCheck } : entry
1575
+ );
1447
1576
  await saveGlobalConfig({
1448
1577
  openpondProfile: {
1449
1578
  ...config,
1450
- lastCheck: {
1451
- command,
1452
- status: exitCode === 0 ? "passed" : "failed",
1453
- checkedAt: (/* @__PURE__ */ new Date()).toISOString(),
1454
- exitCode,
1455
- sourceHead
1456
- }
1579
+ lastCheck,
1580
+ profiles
1457
1581
  }
1458
1582
  });
1459
1583
  }
@@ -1473,7 +1597,7 @@ async function ensureProfileSource(profileSourcePath2, template, force) {
1473
1597
  });
1474
1598
  await rewriteTemplateSdkDependency(profileSourcePath2, sdkRoot);
1475
1599
  }
1476
- async function ensureProfileScaffoldFiles(repoPath, profileSourcePath2, profile) {
1600
+ async function ensureProfileScaffoldFiles(repoPath, profileSourcePath2, profile, options = {}) {
1477
1601
  await mkdir(path5.join(repoPath, "profiles"), { recursive: true });
1478
1602
  for (const dir of [
1479
1603
  "agents",
@@ -1490,15 +1614,18 @@ async function ensureProfileScaffoldFiles(repoPath, profileSourcePath2, profile)
1490
1614
  }
1491
1615
  const profileManifestPath = path5.join(profileSourcePath2, PROFILE_MANIFEST);
1492
1616
  if (!existsSync4(profileManifestPath)) {
1617
+ const agentLines = options.includeDefaultAgent === false ? ["agents: []"] : [
1618
+ "agents:",
1619
+ ` - id: ${DEFAULT_PROFILE_AGENT}`,
1620
+ " path: agent/agent.ts",
1621
+ " enabled: true"
1622
+ ];
1493
1623
  await writeFile2(
1494
1624
  profileManifestPath,
1495
1625
  [
1496
1626
  "schema: openpond.profile.v1",
1497
1627
  `profile: ${profile}`,
1498
- "agents:",
1499
- ` - id: ${DEFAULT_PROFILE_AGENT}`,
1500
- " path: agent/agent.ts",
1501
- " enabled: true",
1628
+ ...agentLines,
1502
1629
  ""
1503
1630
  ].join("\n"),
1504
1631
  "utf8"
@@ -1,15 +1,19 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
2
  import {
3
3
  resolveWebLaunchMessages,
4
+ runOpenPondAppServerCli,
4
5
  runOpenPondServerCli
5
- } from "./chunk-YTJL6XPU.js";
6
- import "./chunk-HS2AGRDV.js";
7
- import "./chunk-QRM7XMAO.js";
8
- import "./chunk-LZZM3IHS.js";
9
- import "./chunk-XEJ7XXUQ.js";
6
+ } from "./chunk-6V7MJVRO.js";
7
+ import "./chunk-VCVQLECH.js";
8
+ import "./chunk-BQQZNGI6.js";
9
+ import "./chunk-JJPAMKXZ.js";
10
+ import "./chunk-2SF6HLT7.js";
11
+ import "./chunk-M2NXTLH2.js";
10
12
  import "./chunk-WYDVQOBL.js";
13
+ import "./chunk-KHNHUA2H.js";
11
14
  import "./chunk-UACZUFIA.js";
12
15
  export {
13
16
  resolveWebLaunchMessages,
17
+ runOpenPondAppServerCli,
14
18
  runOpenPondServerCli
15
19
  };
@@ -16,11 +16,13 @@ import {
16
16
  runTemplateUpdate,
17
17
  runToolList,
18
18
  runToolRun
19
- } from "./chunk-AHPQTEIJ.js";
20
- import "./chunk-275WCETC.js";
21
- import "./chunk-GDZYDLEL.js";
22
- import "./chunk-XCATKTK3.js";
23
- import "./chunk-ZI4GDAUB.js";
19
+ } from "./chunk-4N6E3OVF.js";
20
+ import "./chunk-FCVVOMIP.js";
21
+ import "./chunk-KHNHUA2H.js";
22
+ import "./chunk-JRROTGQT.js";
23
+ import "./chunk-SMNFI2FU.js";
24
+ import "./chunk-3CDPPVLE.js";
25
+ import "./chunk-DBHSOTYZ.js";
24
26
  import "./chunk-KSRWKXRB.js";
25
27
  import "./chunk-MUMPWI4O.js";
26
28
  import "./chunk-UACZUFIA.js";
@@ -1,12 +1,14 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
2
  import {
3
3
  runProcessCommand
4
- } from "./chunk-275WCETC.js";
4
+ } from "./chunk-FCVVOMIP.js";
5
+ import "./chunk-KHNHUA2H.js";
5
6
  import {
6
7
  CliUsageError
7
- } from "./chunk-GDZYDLEL.js";
8
- import "./chunk-XCATKTK3.js";
9
- import "./chunk-ZI4GDAUB.js";
8
+ } from "./chunk-JRROTGQT.js";
9
+ import "./chunk-SMNFI2FU.js";
10
+ import "./chunk-3CDPPVLE.js";
11
+ import "./chunk-DBHSOTYZ.js";
10
12
  import "./chunk-KSRWKXRB.js";
11
13
  import {
12
14
  optionString,
@@ -14,13 +16,13 @@ import {
14
16
  } from "./chunk-MUMPWI4O.js";
15
17
  import "./chunk-UACZUFIA.js";
16
18
 
17
- // src/cli/harness.ts
19
+ // src/cli/desktop-test.ts
18
20
  import path from "node:path";
19
21
  import { access } from "node:fs/promises";
20
22
  import { constants } from "node:fs";
21
23
  import { createRequire } from "node:module";
22
24
  var DESKTOP_HARNESS_SCRIPT = path.join("scripts", "desktop-harness.ts");
23
- async function runHarnessCommand(options, rest) {
25
+ async function runDesktopTestCommand(options, rest) {
24
26
  const invocation = await buildDesktopHarnessInvocation({ options, rest });
25
27
  const result = await runProcessCommand(invocation.command, invocation.args, {
26
28
  cwd: invocation.cwd,
@@ -34,14 +36,13 @@ async function runHarnessCommand(options, rest) {
34
36
  async function buildDesktopHarnessInvocation(input) {
35
37
  const options = input.options;
36
38
  const rest = input.rest;
37
- const surface = rest[0];
38
- const action = rest[1];
39
- if (surface !== "desktop" || action !== "run" && action !== "attach") {
39
+ const action = rest[0];
40
+ if (action !== "run" && action !== "attach") {
40
41
  throw new CliUsageError(desktopHarnessCliUsage());
41
42
  }
42
- const scenarios = rest.slice(2);
43
+ const scenarios = rest.slice(1);
43
44
  if (scenarios.length === 0) {
44
- throw new CliUsageError("usage: openpond harness desktop run <scenario...> [options]");
45
+ throw new CliUsageError("usage: openpond desktop-test run <scenario...> [options]");
45
46
  }
46
47
  const startCwd = optionString(options, "cwd") || input.cwd || process.cwd();
47
48
  const repoRoot = await resolveDesktopHarnessRepoRoot(startCwd);
@@ -118,8 +119,8 @@ async function fileExists(filePath) {
118
119
  }
119
120
  function desktopHarnessCliUsage() {
120
121
  return [
121
- "usage: openpond harness desktop run <scenario...> [options]",
122
- " openpond harness desktop attach <scenario...> [options]",
122
+ "usage: openpond desktop-test run <scenario...> [options]",
123
+ " openpond desktop-test attach <scenario...> [options]",
123
124
  "",
124
125
  "Options include --isolated, --attach, --packaged, --none, --app <path>,",
125
126
  "--server <url>, --token <token>, --token-file <path>, --devtools-port <port>, --artifacts-dir <path>,",
@@ -139,5 +140,5 @@ var HarnessCommandFailedError = class extends Error {
139
140
  export {
140
141
  buildDesktopHarnessInvocation,
141
142
  resolveDesktopHarnessRepoRoot,
142
- runHarnessCommand
143
+ runDesktopTestCommand
143
144
  };