openpond 0.0.36 → 0.0.38

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 (137) hide show
  1. package/README.md +4 -3
  2. package/dist/api/types.d.ts +0 -50
  3. package/dist/api.d.ts +2 -8
  4. package/dist/chunks/{app-layer-4AA4YYGK.js → app-layer-DPUJRNO2.js} +6 -3
  5. package/dist/chunks/{apps-V2JTB5MD.js → apps-AKBI6AS7.js} +16 -132
  6. package/dist/chunks/chunk-275WCETC.js +668 -0
  7. package/dist/chunks/{chunk-3DOOLZZM.js → chunk-43YI36NA.js} +1 -1
  8. package/dist/chunks/{chunk-NWQTF6O4.js → chunk-AHNFNWUN.js} +28 -3
  9. package/dist/chunks/{chunk-3JJBNVNX.js → chunk-AHPQTEIJ.js} +23 -19
  10. package/dist/chunks/chunk-FWLOFUPU.js +864 -0
  11. package/dist/chunks/{chunk-JAS6QZ2W.js → chunk-GB6VUZUA.js} +1 -1
  12. package/dist/chunks/{chunk-NVTC3XOA.js → chunk-GDZYDLEL.js} +8 -10
  13. package/dist/chunks/{chunk-G6WW2656.js → chunk-HLCTINEP.js} +1 -1
  14. package/dist/chunks/{chunk-MJT7EW5Q.js → chunk-HS2AGRDV.js} +1 -1
  15. package/dist/chunks/{chunk-CJSD5ADV.js → chunk-JWF37O5E.js} +2 -2
  16. package/dist/chunks/chunk-KSRWKXRB.js +12 -0
  17. package/dist/chunks/{chunk-7IPF4X3K.js → chunk-LZZM3IHS.js} +1004 -89
  18. package/dist/chunks/{chunk-TYYR7KWY.js → chunk-MPGSHXGF.js} +7 -5
  19. package/dist/chunks/chunk-MUMPWI4O.js +92 -0
  20. package/dist/chunks/{chunk-MSX2J653.js → chunk-QRM7XMAO.js} +5 -36
  21. package/dist/chunks/{chunk-65BVQIHR.js → chunk-SLMP353Q.js} +6 -6
  22. package/dist/chunks/chunk-T4QXKU5Y.js +1 -0
  23. package/dist/chunks/{chunk-GALAW74P.js → chunk-V35STJF4.js} +30 -11
  24. package/dist/chunks/{chunk-YLULZMWE.js → chunk-XCATKTK3.js} +51 -139
  25. package/dist/chunks/{chunk-LHYK6QO2.js → chunk-XEJ7XXUQ.js} +1 -0
  26. package/dist/chunks/{chunk-YRFQKUZD.js → chunk-XERQHYBO.js} +89 -27
  27. package/dist/chunks/{chunk-6L5WJF7T.js → chunk-YTJL6XPU.js} +2 -2
  28. package/dist/chunks/{chunk-NWVIUBJ3.js → chunk-ZI4GDAUB.js} +573 -1217
  29. package/dist/chunks/cli-2KBVNDRY.js +23 -0
  30. package/dist/chunks/{cli-RJHEE4FA.js → cli-7BKDWFNU.js} +5 -5
  31. package/dist/chunks/{core-commands-CQSPCVC4.js → core-commands-YN4RMWA3.js} +7 -4
  32. package/dist/chunks/{extend-4MZ75SHV.js → extend-REGNTBK3.js} +18 -13
  33. package/dist/chunks/extension-7K77DAVL.js +121 -0
  34. package/dist/chunks/{harness-YVZU42S7.js → harness-BHQRMXJR.js} +6 -3
  35. package/dist/chunks/{help-6SULYXVS.js → help-VREQNA4I.js} +2 -1
  36. package/dist/chunks/{opchat-XGS4AXHA.js → opchat-D63YTNSX.js} +12 -7
  37. package/dist/chunks/{organizations-4GFQ3NT2.js → organizations-I46KG7TC.js} +8 -5
  38. package/dist/chunks/{profile-VWMBIHIE.js → profile-WKZJHEPG.js} +11 -8
  39. package/dist/chunks/{project-agent-SQ6ODALG.js → project-agent-ZUC3YMCT.js} +10 -7
  40. package/dist/chunks/{sandbox-command-34S2V7BN.js → sandbox-command-AAOPFTI5.js} +7 -4
  41. package/dist/chunks/{sandbox-template-VP5HMGQI.js → sandbox-template-GKNVR4C5.js} +11 -7
  42. package/dist/chunks/{src-X3R3XIJT.js → src-MWDIK56B.js} +1997 -1247
  43. package/dist/chunks/{src-YHUMH6W6.js → src-RPW5TOPI.js} +3 -3
  44. package/dist/chunks/{teams-bot-EIVRNO5S.js → teams-bot-PSL3ZO6Z.js} +6 -3
  45. package/dist/chunks/{workspaces-2N52V3BI.js → workspaces-BPXC2DHT.js} +6 -2
  46. package/dist/cli.js +14 -11
  47. package/dist/client-types.d.ts +1 -9
  48. package/dist/client.d.ts +3 -3
  49. package/dist/index.js +27 -55
  50. package/dist/profile/local-profile-types.d.ts +1 -0
  51. package/dist/profile/profile-skills.d.ts +2 -0
  52. package/dist/web/assets/{AppDialog-j4N-gIi3.js → AppDialog-DrwJb_wG.js} +1 -1
  53. package/dist/web/assets/{AppsView-YiK3pqNb.js → AppsView-DPagLMsc.js} +1 -1
  54. package/dist/web/assets/{BrowserSidebar-BWFLEQ8j.js → BrowserSidebar-DMn2V8RV.js} +1 -1
  55. package/dist/web/assets/{CloudWorkView-3sS_1bhN.js → CloudWorkView-Cl_7mM3c.js} +1 -1
  56. package/dist/web/assets/{CommandMenu-B11OrTCq.js → CommandMenu-CHMQLez_.js} +1 -1
  57. package/dist/web/assets/{CommunityView-DXyXTWhP.js → CommunityView-DcHVDUk0.js} +1 -1
  58. package/dist/web/assets/{ComposerCreateImproveStrip-3NoRiJJq.js → ComposerCreateImproveStrip-BZ3Dgzmo.js} +1 -1
  59. package/dist/web/assets/{GetStartedView-CPV5lgVH.js → GetStartedView-DTRotFqz.js} +1 -1
  60. package/dist/web/assets/LabSkillSidebar-CVxtS9pd.css +1 -0
  61. package/dist/web/assets/LabSkillSidebar-D-PqFe1T.js +1 -0
  62. package/dist/web/assets/LabsRoute-BrJkBNig.css +1 -0
  63. package/dist/web/assets/LabsRoute-Dew1BwK5.js +3 -0
  64. package/dist/web/assets/MainChatThread-BaPxxzrw.js +2 -0
  65. package/dist/web/assets/{MakeAgentTutorialLearningPanel-C6F-kJQd.js → MakeAgentTutorialLearningPanel-CBsfnONQ.js} +2 -2
  66. package/dist/web/assets/{MarkdownText-CkVkr3P1.js → MarkdownText-DGLfAM_Z.js} +4 -4
  67. package/dist/web/assets/Messages-CIX9uTjX.js +10 -0
  68. package/dist/web/assets/NativeSkillSidebar-AP_uHn6g.js +1 -0
  69. package/dist/web/assets/{NewProjectDialog-DBMhkTvD.js → NewProjectDialog-C6lHkafU.js} +1 -1
  70. package/dist/web/assets/{PostTrainingLearningPanel-B1Rp7iIL.js → PostTrainingLearningPanel-CZEgPc8O.js} +2 -2
  71. package/dist/web/assets/{PostTrainingStatusPill-BGZ9h5eW.js → PostTrainingStatusPill-CeEpwUDB.js} +1 -1
  72. package/dist/web/assets/{ProfileSettingsSection-2NOHEz2b.js → ProfileSettingsSection-EumMLlEp.js} +1 -1
  73. package/dist/web/assets/RightChatPanelStack-MXBcx3zO.js +1 -0
  74. package/dist/web/assets/{SettingsView-uHhQnazW.css → SettingsView-Caljbns2.css} +1 -1
  75. package/dist/web/assets/SettingsView-DyURG_Uh.js +6 -0
  76. package/dist/web/assets/{TeamChatView-qVscSedQ.js → TeamChatView-D3v6aqJ3.js} +1 -1
  77. package/dist/web/assets/{TerminalOverlay-Bkw7XqMy.js → TerminalOverlay-BKl0p8pa.js} +1 -1
  78. package/dist/web/assets/{TrainingCreationPanel-COg1wvw8.js → TrainingCreationPanel-CfZQTuT5.js} +1 -1
  79. package/dist/web/assets/{TrainingDraftPanel-BNK2znmI.js → TrainingDraftPanel-DslRPSDW.js} +1 -1
  80. package/dist/web/assets/{UsageSettingsSection-CUxBaohC.js → UsageSettingsSection-zDAwzTGl.js} +1 -1
  81. package/dist/web/assets/WorkspaceDiffPanel-C_MZPPlL.js +14 -0
  82. package/dist/web/assets/{WorkspaceEnvironmentMenu-C0-mH7oF.js → WorkspaceEnvironmentMenu-BUAnn80j.js} +1 -1
  83. package/dist/web/assets/{WorkspaceGitDialogs-VvC2px0X.js → WorkspaceGitDialogs-Drbf4ujA.js} +1 -1
  84. package/dist/web/assets/{WorkspaceMonacoEditor-CUIwoHv1.js → WorkspaceMonacoEditor-DPGcG8fy.js} +3 -3
  85. package/dist/web/assets/{activity-BhqHgkfJ.js → activity-Dnr3jqb3.js} +1 -1
  86. package/dist/web/assets/{boxes-BpqUKFIm.js → boxes-BinC8UPn.js} +1 -1
  87. package/dist/web/assets/{chevron-up-BTn9DVRP.js → chevron-up-Bjp_-_Cb.js} +1 -1
  88. package/dist/web/assets/{circle-x-B9Qa8o5a.js → circle-x-ubnvEYuE.js} +1 -1
  89. package/dist/web/assets/{copy-BsYs6wBI.js → copy-B_ZCCUMz.js} +1 -1
  90. package/dist/web/assets/{create-pipeline-request-vxgKoAvv.js → create-pipeline-request-D6uLUxe9.js} +3 -3
  91. package/dist/web/assets/{cssMode-mw8RI2fR.js → cssMode-CKN9CcfG.js} +1 -1
  92. package/dist/web/assets/file-8HAMlTmQ.js +1 -0
  93. package/dist/web/assets/{git-branch-C7qQYFIs.js → git-branch-l2Zih3Bv.js} +1 -1
  94. package/dist/web/assets/{git-commit-horizontal-CbX4pTOA.js → git-commit-horizontal-Bxi8YPep.js} +1 -1
  95. package/dist/web/assets/{htmlMode-Cc4Czh_M.js → htmlMode-CeUcNhBZ.js} +1 -1
  96. package/dist/web/assets/index-BMFyOFRU.css +1 -0
  97. package/dist/web/assets/index-BzwcDzbT.js +1 -0
  98. package/dist/web/assets/index-KoQSSt_f.js +177 -0
  99. package/dist/web/assets/{info-BNGbwgtq.js → info-JTbDQxHx.js} +1 -1
  100. package/dist/web/assets/{jsonMode-CbqbqGVz.js → jsonMode-97z0Yz9u.js} +1 -1
  101. package/dist/web/assets/{lspLanguageFeatures-DKiKr5tH.js → lspLanguageFeatures-D4Tp-JmI.js} +1 -1
  102. package/dist/web/assets/{make-agent-tutorial-KKauJpB9.js → make-agent-tutorial-D6nBCgv-.js} +1 -1
  103. package/dist/web/assets/{monaco.contribution-Dxc4IxFM.js → monaco.contribution-B3j6oown.js} +2 -2
  104. package/dist/web/assets/{monaco.contribution-CNgwz_pw.js → monaco.contribution-BXHxPPWL.js} +2 -2
  105. package/dist/web/assets/{monaco.contribution-D_-wu578.js → monaco.contribution-C2P5zIzh.js} +2 -2
  106. package/dist/web/assets/{monaco.contribution-CdUAX47Q.js → monaco.contribution-C8c6OtGi.js} +2 -2
  107. package/dist/web/assets/{monitor-CNdx_GTg.js → monitor-kzHtxHnA.js} +1 -1
  108. package/dist/web/assets/{play-BLRANWaV.js → play-C-37dnR1.js} +1 -1
  109. package/dist/web/assets/{python-DYgDMu2R.js → python-CGpDXY7_.js} +1 -1
  110. package/dist/web/assets/{refresh-cw-BFjjwYNf.js → refresh-cw-BAaaPCXl.js} +1 -1
  111. package/dist/web/assets/{reply-D012cuZl.js → reply-9rehU13k.js} +1 -1
  112. package/dist/web/assets/{rotate-cw-CTfjlR4G.js → rotate-cw-C1Z_Xs23.js} +1 -1
  113. package/dist/web/assets/{save-B1zYlRyN.js → save-Cvxs3XyC.js} +1 -1
  114. package/dist/web/assets/{toggleHighContrast-D9XFH7EA.js → toggleHighContrast-CD42jH4g.js} +1 -1
  115. package/dist/web/assets/{tsMode-BU-tuKsY.js → tsMode-ZROIxEjv.js} +1 -1
  116. package/dist/web/assets/{upload-DU_81jvL.js → upload-DvCSGERK.js} +1 -1
  117. package/dist/web/assets/{wifi-off-TPsBnbGW.js → wifi-off-BIb94PkS.js} +1 -1
  118. package/dist/web/assets/{workers-NhWySRdT.js → workers-oYqbrVYG.js} +1 -1
  119. package/dist/web/assets/{yaml-DWXa_3ZL.js → yaml-WqBjNgOO.js} +1 -1
  120. package/dist/web/index.html +2 -2
  121. package/docs/command-reference.md +16 -1
  122. package/package.json +1 -1
  123. package/dist/chunks/cli-4JA3SIDE.js +0 -19
  124. package/dist/web/assets/LabsRoute-B_nsEZXy.js +0 -3
  125. package/dist/web/assets/LabsRoute-dNN-odU0.css +0 -1
  126. package/dist/web/assets/MainChatThread-Dg7p3R2O.js +0 -2
  127. package/dist/web/assets/Messages-C7uHGoFw.js +0 -10
  128. package/dist/web/assets/NativeSkillSidebar-BPpoHjEW.js +0 -1
  129. package/dist/web/assets/RightChatPanelStack-CLK7_zKe.js +0 -1
  130. package/dist/web/assets/SettingsView-BAqea_KX.js +0 -6
  131. package/dist/web/assets/WorkspaceDiffPanel-qfFj8IRq.js +0 -14
  132. package/dist/web/assets/credit-card-BCePAwMI.js +0 -1
  133. package/dist/web/assets/index-9tbdqUau.css +0 -1
  134. package/dist/web/assets/index-B_3z_lxq.js +0 -1
  135. package/dist/web/assets/index-Cr_RZ7GD.js +0 -177
  136. package/dist/web/tokens/eth.svg +0 -1
  137. package/dist/web/tokens/usdc.svg +0 -1
@@ -2,7 +2,7 @@ import { createRequire as __openpondCreateRequire } from "node:module"; var requ
2
2
  import {
3
3
  resolveOpChatApiBaseUrl,
4
4
  sendHostedChatTurn
5
- } from "./chunk-G6WW2656.js";
5
+ } from "./chunk-HLCTINEP.js";
6
6
  import {
7
7
  CreateImprovePlanSchema,
8
8
  CreateImproveRunSchema,
@@ -10,16 +10,18 @@ import {
10
10
  createImproveActionShapeFromMetadata,
11
11
  inferCreateImproveActionShape,
12
12
  nextCreateImproveRunRevision
13
- } from "./chunk-YRFQKUZD.js";
13
+ } from "./chunk-XERQHYBO.js";
14
14
  import {
15
15
  external_exports
16
16
  } from "./chunk-WYDVQOBL.js";
17
+ import {
18
+ runShellCommand
19
+ } from "./chunk-275WCETC.js";
17
20
  import {
18
21
  apiFetch,
19
22
  loadGlobalConfig,
20
- readApiJson,
21
- runShellCommand
22
- } from "./chunk-NWVIUBJ3.js";
23
+ readApiJson
24
+ } from "./chunk-ZI4GDAUB.js";
23
25
 
24
26
  // src/goal/cli.ts
25
27
  import { randomUUID as randomUUID9 } from "node:crypto";
@@ -0,0 +1,92 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
+
3
+ // src/cli/common/options.ts
4
+ function parseJsonOption(value, label) {
5
+ try {
6
+ return JSON.parse(value);
7
+ } catch {
8
+ throw new Error(`${label} must be valid JSON`);
9
+ }
10
+ }
11
+ function parseJsonObjectOption(value, label) {
12
+ const parsed = parseJsonOption(value, label);
13
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
14
+ throw new Error(`${label} must be a JSON object`);
15
+ }
16
+ return parsed;
17
+ }
18
+ function optionString(options, key) {
19
+ const value = options[key];
20
+ return typeof value === "string" ? value.trim() : "";
21
+ }
22
+ function requiredTeamId(options, usage) {
23
+ const teamId = optionString(options, "teamId");
24
+ if (!teamId) {
25
+ throw new Error(`${usage} --team-id <id>`);
26
+ }
27
+ return teamId;
28
+ }
29
+ function optionalJsonObject(options, key, label) {
30
+ const value = optionString(options, key);
31
+ return value ? parseJsonObjectOption(value, label) : void 0;
32
+ }
33
+ function parseBooleanOption(value) {
34
+ if (value === true) return true;
35
+ if (typeof value === "string") {
36
+ return value.toLowerCase() === "true";
37
+ }
38
+ return false;
39
+ }
40
+ function parseNumberOption(value, label) {
41
+ if (typeof value !== "string") return void 0;
42
+ const parsed = Number(value);
43
+ if (!Number.isFinite(parsed)) {
44
+ throw new Error(`${label} must be a number`);
45
+ }
46
+ return parsed;
47
+ }
48
+ function parseIntegerOption(value, label) {
49
+ const parsed = parseNumberOption(value, label);
50
+ if (parsed === void 0) return void 0;
51
+ if (!Number.isInteger(parsed)) {
52
+ throw new Error(`${label} must be an integer`);
53
+ }
54
+ return parsed;
55
+ }
56
+ function parseCsvOption(value) {
57
+ if (typeof value !== "string") return [];
58
+ return value.split(",").map((item) => item.trim()).filter(Boolean);
59
+ }
60
+ function parseTimeOption(value, label) {
61
+ if (typeof value !== "string") return void 0;
62
+ const trimmed = value.trim();
63
+ if (!trimmed) return void 0;
64
+ if (/^\d+$/.test(trimmed)) return trimmed;
65
+ const parsed = Date.parse(trimmed);
66
+ if (!Number.isNaN(parsed)) {
67
+ return String(parsed);
68
+ }
69
+ throw new Error(`${label} must be a unix ms timestamp or ISO date`);
70
+ }
71
+ function resolveTemplateEnvironment(value) {
72
+ if (!value) return "production";
73
+ const normalized = value.toLowerCase();
74
+ if (normalized === "preview" || normalized === "production") {
75
+ return normalized;
76
+ }
77
+ throw new Error("env must be preview or production");
78
+ }
79
+
80
+ export {
81
+ parseJsonOption,
82
+ parseJsonObjectOption,
83
+ optionString,
84
+ requiredTeamId,
85
+ optionalJsonObject,
86
+ parseBooleanOption,
87
+ parseNumberOption,
88
+ parseIntegerOption,
89
+ parseCsvOption,
90
+ parseTimeOption,
91
+ resolveTemplateEnvironment
92
+ };
@@ -9,14 +9,13 @@ import {
9
9
  createRepo,
10
10
  getAppEnvironment,
11
11
  getOpenPondAccount,
12
- getOpenPondAccountBalance,
13
12
  listApps,
14
13
  listConfiguredProfiles,
15
14
  loadGlobalConfig,
16
15
  saveConfig,
17
16
  saveProfileApiKey,
18
17
  setActiveProfile
19
- } from "./chunk-7IPF4X3K.js";
18
+ } from "./chunk-LZZM3IHS.js";
20
19
 
21
20
  // ../../packages/runtime/dist/chat.js
22
21
  import { randomUUID } from "node:crypto";
@@ -253,9 +252,7 @@ function normalizeProfile(response) {
253
252
  isVerified: account.isVerified ?? null,
254
253
  dailyAgentAppId: account.dailyAgentAppId ?? null,
255
254
  dailyAgentDeploymentId: account.dailyAgentDeploymentId ?? null,
256
- credits: account.credits ?? null,
257
- turnkeyWalletAddress: account.turnkeyWalletAddress ?? null,
258
- turnkeyOperatingWalletAddress: account.turnkeyOperatingWalletAddress ?? null
255
+ credits: account.credits ?? null
259
256
  };
260
257
  }
261
258
  function normalizeProducts(products) {
@@ -271,35 +268,13 @@ function normalizeProducts(products) {
271
268
  credits: product.credits ?? null
272
269
  }));
273
270
  }
274
- function normalizeBalance(response, error) {
275
- if (!response)
276
- return null;
277
- return {
278
- balanceKind: response.balanceKind,
279
- balanceUsd: response.balanceUsd ?? null,
280
- balanceUsdCents: response.balanceUsdCents ?? null,
281
- currency: response.currency,
282
- asOf: response.asOf,
283
- stale: response.stale ?? Boolean(error),
284
- error: error ?? null,
285
- breakdown: (response.breakdown ?? []).map((item) => ({
286
- wallet: item.wallet,
287
- chain: item.chain,
288
- chainId: item.chainId ?? null,
289
- asset: item.asset,
290
- amount: item.amount ?? null,
291
- usdValue: item.usdValue ?? null
292
- }))
293
- };
294
- }
295
271
  function isEmptyDefaultProfile(profile) {
296
272
  return profile.handle.trim().toLowerCase() === "default" && !normalizeBaseUrl(profile.baseUrl) && !profile.hasApiKey && !profile.hasSessionToken;
297
273
  }
298
274
  function toAccountState(input) {
299
- const { config, profiles, account, token, apiBaseUrl, accountResponse, balanceResponse, accountProfiles, health, authFailed, error, balanceError } = input;
275
+ const { config, profiles, account, token, apiBaseUrl, accountResponse, accountProfiles, health, authFailed, error } = input;
300
276
  const chatApiBaseUrl = resolveHostedChatApiBaseUrl(account, config, apiBaseUrl);
301
277
  const profile = normalizeProfile(accountResponse ?? null);
302
- const balance = normalizeBalance(balanceResponse, balanceError);
303
278
  const configActiveProfile = normalizeActiveProfile(config.activeProfile);
304
279
  const accountSelector = account ? selectorFromAccount(account) : null;
305
280
  const activeSelector = accountSelector ?? configActiveProfile;
@@ -335,8 +310,6 @@ function toAccountState(input) {
335
310
  baseUrl,
336
311
  apiBaseUrl,
337
312
  chatApiBaseUrl,
338
- balanceLabel: balanceResponse?.balanceLabel ?? "$0.00",
339
- balance,
340
313
  creditsLabel: profile?.credits ?? null,
341
314
  profile,
342
315
  products: normalizeProducts(accountResponse?.products),
@@ -890,10 +863,9 @@ async function loadOpenPondApps(options = {}) {
890
863
  error: "No OpenPond API key or session token is configured."
891
864
  };
892
865
  }
893
- const [healthResult, accountResult, balanceResult, appsResult, accountProfilesResult] = await Promise.allSettled([
866
+ const [healthResult, accountResult, appsResult, accountProfilesResult] = await Promise.allSettled([
894
867
  checkOpenPondApiHealth(context.apiBaseUrl, context.token),
895
868
  getOpenPondAccount(context.apiBaseUrl, context.token),
896
- getOpenPondAccountBalance(context.apiBaseUrl, context.token),
897
869
  listApps(context.apiBaseUrl, context.token, {
898
870
  handle: context.account?.handle,
899
871
  limit: options.limit ?? 20,
@@ -904,7 +876,6 @@ async function loadOpenPondApps(options = {}) {
904
876
  ]);
905
877
  const health = healthResult.status === "fulfilled" ? healthResult.value : null;
906
878
  const accountResponse = accountResult.status === "fulfilled" ? accountResult.value : null;
907
- const balanceResponse = balanceResult.status === "fulfilled" ? balanceResult.value : null;
908
879
  const accountProfiles = accountProfilesResult.status === "fulfilled" ? accountProfilesResult.value : {};
909
880
  if (accountResult.status === "fulfilled" && context.account) {
910
881
  accountProfiles[profileKey(context.account.handle, context.account.baseUrl)] = {
@@ -924,12 +895,10 @@ async function loadOpenPondApps(options = {}) {
924
895
  account: toAccountState({
925
896
  ...context,
926
897
  accountResponse,
927
- balanceResponse,
928
898
  accountProfiles,
929
899
  health: effectiveHealth,
930
900
  authFailed: Boolean(authError),
931
- error: authError ?? profileError,
932
- balanceError: balanceResult.status === "rejected" ? errorMessage(balanceResult.reason) : null
901
+ error: authError ?? profileError
933
902
  }),
934
903
  apps: appsResult.status === "fulfilled" ? appsResult.value.map(normalizeApp).filter((value) => Boolean(value)) : [],
935
904
  error: appsError
@@ -3,14 +3,14 @@ import {
3
3
  materializeSourceUploadFile,
4
4
  readSourceUploadCache,
5
5
  writeSourceUploadCache
6
- } from "./chunk-JAS6QZ2W.js";
7
- import {
8
- CreateImproveRunSchema
9
- } from "./chunk-YRFQKUZD.js";
6
+ } from "./chunk-GB6VUZUA.js";
10
7
  import {
11
8
  formatSandboxTemplateDiagnostics,
12
9
  validateSandboxTemplateYaml
13
10
  } from "./chunk-BYAPLT37.js";
11
+ import {
12
+ CreateImproveRunSchema
13
+ } from "./chunk-XERQHYBO.js";
14
14
  import {
15
15
  yaml
16
16
  } from "./chunk-WYDVQOBL.js";
@@ -18,7 +18,7 @@ import {
18
18
  parseSandboxRuntimePromotionPolicyOption,
19
19
  parseSandboxWorkflowModeOption,
20
20
  runProcessCommand
21
- } from "./chunk-NWVIUBJ3.js";
21
+ } from "./chunk-275WCETC.js";
22
22
  import {
23
23
  optionString,
24
24
  optionalJsonObject,
@@ -26,7 +26,7 @@ import {
26
26
  parseCsvOption,
27
27
  parseIntegerOption,
28
28
  requiredTeamId
29
- } from "./chunk-YLULZMWE.js";
29
+ } from "./chunk-MUMPWI4O.js";
30
30
 
31
31
  // ../../packages/cloud/src/profile/agent-sdk-command.ts
32
32
  import { existsSync, readFileSync } from "node:fs";
@@ -0,0 +1 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
@@ -4,7 +4,7 @@ import {
4
4
  materializeSourceUploadFile,
5
5
  readSourceUploadCache,
6
6
  writeSourceUploadCache
7
- } from "./chunk-JAS6QZ2W.js";
7
+ } from "./chunk-GB6VUZUA.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-NWVIUBJ3.js";
15
+ } from "./chunk-ZI4GDAUB.js";
16
16
 
17
17
  // ../../packages/cloud/src/profile/profile-setup-gate.ts
18
18
  var OpenPondProfileSetupRequiredError = class extends Error {
@@ -988,11 +988,8 @@ async function loadProfileSkillDirectory(profileSourcePath2, directoryName) {
988
988
  const relativePath = path4.join(PROFILE_SKILLS_DIR, directoryName, PROFILE_SKILL_FILE).replace(/\\/g, "/");
989
989
  const absolutePath = path4.join(profileSourcePath2, relativePath);
990
990
  const messages = [];
991
- const entries = await readdir(path4.join(profileSourcePath2, PROFILE_SKILLS_DIR, directoryName), { withFileTypes: true });
992
- for (const entry of entries) {
993
- if (entry.name === PROFILE_SKILL_FILE && entry.isFile()) continue;
994
- messages.push(`Profile skills only support ${PROFILE_SKILL_FILE}; unsupported entry: ${entry.name}`);
995
- }
991
+ const packageRoot = path4.join(profileSourcePath2, PROFILE_SKILLS_DIR, directoryName);
992
+ const packageFiles = await listPackageFiles(packageRoot);
996
993
  let contents = "";
997
994
  if (!existsSync3(absolutePath)) {
998
995
  messages.push(`Missing ${PROFILE_SKILL_FILE}.`);
@@ -1022,9 +1019,26 @@ async function loadProfileSkillDirectory(profileSourcePath2, directoryName) {
1022
1019
  charCount: contents.length,
1023
1020
  sourceHash: sha256Hex(contents),
1024
1021
  validationStatus: messages.length > 0 ? "error" : "valid",
1025
- validationMessages: messages
1022
+ validationMessages: messages,
1023
+ resourceFiles: packageFiles.filter((file) => file !== PROFILE_SKILL_FILE)
1026
1024
  };
1027
1025
  }
1026
+ async function listPackageFiles(root) {
1027
+ const files = [];
1028
+ async function visit(directory, prefix) {
1029
+ const entries = await readdir(directory, { withFileTypes: true });
1030
+ await Promise.all(entries.map(async (entry) => {
1031
+ const relativePath = prefix ? `${prefix}/${entry.name}` : entry.name;
1032
+ if (entry.isDirectory()) {
1033
+ await visit(path4.join(directory, entry.name), relativePath);
1034
+ } else if (entry.isFile()) {
1035
+ files.push(relativePath);
1036
+ }
1037
+ }));
1038
+ }
1039
+ await visit(root, "");
1040
+ return files.sort();
1041
+ }
1028
1042
  function markDuplicateSkillNames(skills) {
1029
1043
  const counts = /* @__PURE__ */ new Map();
1030
1044
  for (const skill of skills) {
@@ -1043,9 +1057,13 @@ function markDuplicateSkillNames(skills) {
1043
1057
  async function latestSkillMtime(profileSourcePath2, skills) {
1044
1058
  let latest = 0;
1045
1059
  for (const skill of skills) {
1046
- const fileStat = await stat3(path4.join(profileSourcePath2, skill.path)).catch(() => null);
1047
- if (!fileStat?.isFile()) continue;
1048
- latest = Math.max(latest, fileStat.mtimeMs);
1060
+ const packageRoot = path4.dirname(path4.join(profileSourcePath2, skill.path));
1061
+ const packageFiles = [PROFILE_SKILL_FILE, ...skill.resourceFiles];
1062
+ for (const file of packageFiles) {
1063
+ const fileStat = await stat3(path4.join(packageRoot, file)).catch(() => null);
1064
+ if (!fileStat?.isFile()) continue;
1065
+ latest = Math.max(latest, fileStat.mtimeMs);
1066
+ }
1049
1067
  }
1050
1068
  return latest > 0 ? new Date(latest).toISOString() : null;
1051
1069
  }
@@ -1996,6 +2014,7 @@ function stableJsonStringify(value) {
1996
2014
  }
1997
2015
 
1998
2016
  export {
2017
+ parseProfileSkillMarkdown,
1999
2018
  formatOpenPondProfileSetupRequirement,
2000
2019
  collectProfileSourceUploadEntries,
2001
2020
  hostedSourceCheckStatusFromPayload,