agents-inc 0.158.0 → 0.160.0

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 (149) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/{chunk-P6OKOH62.js → chunk-4APXK7ZY.js} +2 -2
  3. package/dist/{chunk-QNAMXQKF.js → chunk-4VVKVOOP.js} +2 -2
  4. package/dist/{chunk-DAUY2SB3.js → chunk-5K33RJ7Z.js} +70 -25
  5. package/dist/chunk-5K33RJ7Z.js.map +1 -0
  6. package/dist/{chunk-G6G2FT2G.js → chunk-5KB4I5J7.js} +2 -5
  7. package/dist/chunk-5KB4I5J7.js.map +1 -0
  8. package/dist/{chunk-2PN4QXON.js → chunk-6CP3CLDE.js} +5 -10
  9. package/dist/chunk-6CP3CLDE.js.map +1 -0
  10. package/dist/{chunk-TUXXBEBB.js → chunk-7JQPIMKD.js} +3 -3
  11. package/dist/{chunk-KUZBMEWR.js → chunk-AU5FS3QK.js} +3 -3
  12. package/dist/{chunk-WMVOJY6V.js → chunk-C5P7RUDR.js} +4 -4
  13. package/dist/{chunk-H4CL23HG.js → chunk-CICB4AKA.js} +3 -3
  14. package/dist/{chunk-KVVXINCJ.js → chunk-CWQLRKWB.js} +3 -3
  15. package/dist/{chunk-L4FHSOL5.js → chunk-DEWI5HDF.js} +5 -5
  16. package/dist/{chunk-JG3B47P3.js → chunk-EPBUWEW4.js} +8 -8
  17. package/dist/{chunk-EEAX7E2X.js → chunk-GWPKIXBM.js} +2 -2
  18. package/dist/{chunk-DP6YQFVO.js → chunk-IJ7GWQUR.js} +5 -5
  19. package/dist/{chunk-TZRXWFF5.js → chunk-ITEJARWI.js} +3 -3
  20. package/dist/{chunk-TPQ5M3BW.js → chunk-IWUFZ6NR.js} +3 -3
  21. package/dist/{chunk-PNRLBPGS.js → chunk-J7Q5VYR7.js} +12 -12
  22. package/dist/{chunk-4ABNXKAR.js → chunk-JQDN7KAZ.js} +2 -2
  23. package/dist/{chunk-Q7CAE5NN.js → chunk-K6MQV6SK.js} +3 -3
  24. package/dist/{chunk-54QLV3OH.js → chunk-KCN5N3PB.js} +34 -6
  25. package/dist/chunk-KCN5N3PB.js.map +1 -0
  26. package/dist/{chunk-X52QUV4U.js → chunk-LJ6V54NR.js} +5 -5
  27. package/dist/{chunk-H25VRR2T.js → chunk-LX7UXZBN.js} +6 -6
  28. package/dist/{chunk-VZRO7RYT.js → chunk-OI2H6M5I.js} +1 -103
  29. package/dist/chunk-OI2H6M5I.js.map +1 -0
  30. package/dist/{chunk-VTIDLRNA.js → chunk-OJIQOVWB.js} +2 -2
  31. package/dist/{chunk-OQB2CKBT.js → chunk-OJR3ASZI.js} +7 -7
  32. package/dist/{chunk-3PJLLBUS.js → chunk-OUG6TCQ4.js} +220 -345
  33. package/dist/chunk-OUG6TCQ4.js.map +1 -0
  34. package/dist/{chunk-WCZNQECQ.js → chunk-PEHYVSJG.js} +2 -2
  35. package/dist/{chunk-6DBE562W.js → chunk-PIUCYRLP.js} +5 -15
  36. package/dist/chunk-PIUCYRLP.js.map +1 -0
  37. package/dist/{chunk-PZNXBORZ.js → chunk-PWPKZNCV.js} +4 -4
  38. package/dist/{chunk-SJ4T5YLG.js → chunk-Q2HB5SWU.js} +5 -5
  39. package/dist/{chunk-H2DHTJKW.js → chunk-RJ3JYZJ7.js} +9 -9
  40. package/dist/chunk-RJ3JYZJ7.js.map +1 -0
  41. package/dist/{chunk-DZD25NHW.js → chunk-SITF5EZM.js} +2 -2
  42. package/dist/{chunk-IK6YOXZH.js → chunk-SLB2SFTX.js} +4 -28
  43. package/dist/chunk-SLB2SFTX.js.map +1 -0
  44. package/dist/{chunk-LKI3ENGQ.js → chunk-VH6P7UGF.js} +4 -4
  45. package/dist/{chunk-3Q2N7CSY.js → chunk-VI4X5DN5.js} +6 -6
  46. package/dist/{chunk-YXI3BTQQ.js → chunk-X5PLVOJS.js} +2 -2
  47. package/dist/{chunk-XNYHMRVJ.js → chunk-XDNGMXOZ.js} +4 -4
  48. package/dist/{chunk-3NBXQSW2.js → chunk-XSULY25W.js} +6 -6
  49. package/dist/{chunk-7Z4N4JWQ.js → chunk-XX657S4U.js} +1 -103
  50. package/dist/chunk-XX657S4U.js.map +1 -0
  51. package/dist/{chunk-4DMFK67G.js → chunk-YKRPWZ3G.js} +2 -2
  52. package/dist/commands/build/marketplace.js +8 -8
  53. package/dist/commands/build/plugins.js +8 -8
  54. package/dist/commands/compile.js +11 -11
  55. package/dist/commands/doctor.js +13 -13
  56. package/dist/commands/doctor.js.map +1 -1
  57. package/dist/commands/edit.js +59 -68
  58. package/dist/commands/edit.js.map +1 -1
  59. package/dist/commands/eject.js +11 -11
  60. package/dist/commands/init.js +41 -37
  61. package/dist/commands/list.js +9 -9
  62. package/dist/commands/new/marketplace.js +8 -9
  63. package/dist/commands/new/marketplace.js.map +1 -1
  64. package/dist/commands/search.js +11 -11
  65. package/dist/commands/share.js +100 -16
  66. package/dist/commands/share.js.map +1 -1
  67. package/dist/commands/uninstall.js +12 -12
  68. package/dist/commands/update.js +7 -7
  69. package/dist/components/common/removal-plan-confirm.js +2 -2
  70. package/dist/components/common/select-list.js +2 -2
  71. package/dist/components/wizard/category-grid.js +4 -4
  72. package/dist/components/wizard/checkbox-grid.js +4 -4
  73. package/dist/components/wizard/domain-selection.js +10 -10
  74. package/dist/components/wizard/run-wizard-session.js +27 -27
  75. package/dist/components/wizard/scroll-affordance.js +2 -2
  76. package/dist/components/wizard/skill-agent-summary.js +6 -6
  77. package/dist/components/wizard/source-grid.js +5 -5
  78. package/dist/components/wizard/stack-selection.js +8 -8
  79. package/dist/components/wizard/step-agents.js +9 -9
  80. package/dist/components/wizard/step-build.js +8 -8
  81. package/dist/components/wizard/step-confirm.js +10 -10
  82. package/dist/components/wizard/step-sources.js +9 -9
  83. package/dist/components/wizard/step-stack.js +9 -9
  84. package/dist/components/wizard/summary-panel.js +9 -9
  85. package/dist/components/wizard/toast.js +2 -2
  86. package/dist/components/wizard/wizard-layout.js +13 -13
  87. package/dist/components/wizard/wizard-tabs.js +2 -2
  88. package/dist/components/wizard/wizard.js +26 -26
  89. package/dist/config-exports.js +1 -1
  90. package/dist/hooks/init.js +37 -37
  91. package/dist/load-agent-defs-KWHG7P7G.js +13 -0
  92. package/dist/recompile-project-agents-5FTDDHX7.js +17 -0
  93. package/dist/{source-loader-CO2FZ3OO.js → source-loader-CDYH2NIM.js} +5 -5
  94. package/dist/src/agents/_templates/methodologies/anti-over-engineering.liquid +14 -0
  95. package/dist/src/agents/_templates/methodologies/context-management.liquid +7 -154
  96. package/dist/src/agents/_templates/methodologies/investigation-requirements.liquid +12 -0
  97. package/dist/src/agents/_templates/methodologies/success-criteria.liquid +10 -0
  98. package/dist/stores/wizard-store.js +5 -5
  99. package/package.json +1 -1
  100. package/src/agents/_templates/methodologies/anti-over-engineering.liquid +14 -0
  101. package/src/agents/_templates/methodologies/context-management.liquid +7 -154
  102. package/src/agents/_templates/methodologies/investigation-requirements.liquid +12 -0
  103. package/src/agents/_templates/methodologies/success-criteria.liquid +10 -0
  104. package/src/schemas/project-source-config.schema.json +0 -3
  105. package/dist/chunk-2PN4QXON.js.map +0 -1
  106. package/dist/chunk-3PJLLBUS.js.map +0 -1
  107. package/dist/chunk-54QLV3OH.js.map +0 -1
  108. package/dist/chunk-6DBE562W.js.map +0 -1
  109. package/dist/chunk-7Z4N4JWQ.js.map +0 -1
  110. package/dist/chunk-DAUY2SB3.js.map +0 -1
  111. package/dist/chunk-G6G2FT2G.js.map +0 -1
  112. package/dist/chunk-H2DHTJKW.js.map +0 -1
  113. package/dist/chunk-IK6YOXZH.js.map +0 -1
  114. package/dist/chunk-VZRO7RYT.js.map +0 -1
  115. package/dist/load-agent-defs-2VYAV5GL.js +0 -13
  116. package/dist/recompile-project-agents-NG5DCPHJ.js +0 -17
  117. /package/dist/{chunk-P6OKOH62.js.map → chunk-4APXK7ZY.js.map} +0 -0
  118. /package/dist/{chunk-QNAMXQKF.js.map → chunk-4VVKVOOP.js.map} +0 -0
  119. /package/dist/{chunk-TUXXBEBB.js.map → chunk-7JQPIMKD.js.map} +0 -0
  120. /package/dist/{chunk-KUZBMEWR.js.map → chunk-AU5FS3QK.js.map} +0 -0
  121. /package/dist/{chunk-WMVOJY6V.js.map → chunk-C5P7RUDR.js.map} +0 -0
  122. /package/dist/{chunk-H4CL23HG.js.map → chunk-CICB4AKA.js.map} +0 -0
  123. /package/dist/{chunk-KVVXINCJ.js.map → chunk-CWQLRKWB.js.map} +0 -0
  124. /package/dist/{chunk-L4FHSOL5.js.map → chunk-DEWI5HDF.js.map} +0 -0
  125. /package/dist/{chunk-JG3B47P3.js.map → chunk-EPBUWEW4.js.map} +0 -0
  126. /package/dist/{chunk-EEAX7E2X.js.map → chunk-GWPKIXBM.js.map} +0 -0
  127. /package/dist/{chunk-DP6YQFVO.js.map → chunk-IJ7GWQUR.js.map} +0 -0
  128. /package/dist/{chunk-TZRXWFF5.js.map → chunk-ITEJARWI.js.map} +0 -0
  129. /package/dist/{chunk-TPQ5M3BW.js.map → chunk-IWUFZ6NR.js.map} +0 -0
  130. /package/dist/{chunk-PNRLBPGS.js.map → chunk-J7Q5VYR7.js.map} +0 -0
  131. /package/dist/{chunk-4ABNXKAR.js.map → chunk-JQDN7KAZ.js.map} +0 -0
  132. /package/dist/{chunk-Q7CAE5NN.js.map → chunk-K6MQV6SK.js.map} +0 -0
  133. /package/dist/{chunk-X52QUV4U.js.map → chunk-LJ6V54NR.js.map} +0 -0
  134. /package/dist/{chunk-H25VRR2T.js.map → chunk-LX7UXZBN.js.map} +0 -0
  135. /package/dist/{chunk-VTIDLRNA.js.map → chunk-OJIQOVWB.js.map} +0 -0
  136. /package/dist/{chunk-OQB2CKBT.js.map → chunk-OJR3ASZI.js.map} +0 -0
  137. /package/dist/{chunk-WCZNQECQ.js.map → chunk-PEHYVSJG.js.map} +0 -0
  138. /package/dist/{chunk-PZNXBORZ.js.map → chunk-PWPKZNCV.js.map} +0 -0
  139. /package/dist/{chunk-SJ4T5YLG.js.map → chunk-Q2HB5SWU.js.map} +0 -0
  140. /package/dist/{chunk-DZD25NHW.js.map → chunk-SITF5EZM.js.map} +0 -0
  141. /package/dist/{chunk-LKI3ENGQ.js.map → chunk-VH6P7UGF.js.map} +0 -0
  142. /package/dist/{chunk-3Q2N7CSY.js.map → chunk-VI4X5DN5.js.map} +0 -0
  143. /package/dist/{chunk-YXI3BTQQ.js.map → chunk-X5PLVOJS.js.map} +0 -0
  144. /package/dist/{chunk-XNYHMRVJ.js.map → chunk-XDNGMXOZ.js.map} +0 -0
  145. /package/dist/{chunk-3NBXQSW2.js.map → chunk-XSULY25W.js.map} +0 -0
  146. /package/dist/{chunk-4DMFK67G.js.map → chunk-YKRPWZ3G.js.map} +0 -0
  147. /package/dist/{load-agent-defs-2VYAV5GL.js.map → load-agent-defs-KWHG7P7G.js.map} +0 -0
  148. /package/dist/{recompile-project-agents-NG5DCPHJ.js.map → recompile-project-agents-5FTDDHX7.js.map} +0 -0
  149. /package/dist/{source-loader-CO2FZ3OO.js.map → source-loader-CDYH2NIM.js.map} +0 -0
@@ -3,48 +3,49 @@ import {
3
3
  publishSeedConfig,
4
4
  seedPayloadForInstallation,
5
5
  skillsAuthoredHere
6
- } from "../chunk-DP6YQFVO.js";
6
+ } from "../chunk-IJ7GWQUR.js";
7
7
  import {
8
8
  RemovalPlanConfirm
9
- } from "../chunk-4DMFK67G.js";
9
+ } from "../chunk-YKRPWZ3G.js";
10
10
  import "../chunk-OZXAJNLA.js";
11
11
  import {
12
+ openUrl,
12
13
  seedToWizardResult
13
- } from "../chunk-54QLV3OH.js";
14
+ } from "../chunk-KCN5N3PB.js";
14
15
  import {
15
16
  runWizardSession
16
- } from "../chunk-XNYHMRVJ.js";
17
- import "../chunk-PNRLBPGS.js";
18
- import "../chunk-4ABNXKAR.js";
19
- import "../chunk-Q7CAE5NN.js";
20
- import "../chunk-EEAX7E2X.js";
21
- import "../chunk-JG3B47P3.js";
22
- import "../chunk-3Q2N7CSY.js";
23
- import "../chunk-DZD25NHW.js";
24
- import "../chunk-P6OKOH62.js";
25
- import "../chunk-3NBXQSW2.js";
26
- import "../chunk-SJ4T5YLG.js";
27
- import "../chunk-YXI3BTQQ.js";
28
- import "../chunk-L4FHSOL5.js";
29
- import "../chunk-OQB2CKBT.js";
30
- import "../chunk-KVVXINCJ.js";
31
- import "../chunk-6DBE562W.js";
17
+ } from "../chunk-XDNGMXOZ.js";
18
+ import "../chunk-J7Q5VYR7.js";
19
+ import "../chunk-JQDN7KAZ.js";
20
+ import "../chunk-K6MQV6SK.js";
21
+ import "../chunk-GWPKIXBM.js";
22
+ import "../chunk-EPBUWEW4.js";
23
+ import "../chunk-VI4X5DN5.js";
24
+ import "../chunk-SITF5EZM.js";
25
+ import "../chunk-4APXK7ZY.js";
26
+ import "../chunk-XSULY25W.js";
27
+ import "../chunk-Q2HB5SWU.js";
28
+ import "../chunk-X5PLVOJS.js";
29
+ import "../chunk-DEWI5HDF.js";
30
+ import "../chunk-OJR3ASZI.js";
31
+ import "../chunk-CWQLRKWB.js";
32
+ import "../chunk-PIUCYRLP.js";
32
33
  import "../chunk-TSIU7DME.js";
33
34
  import "../chunk-XVAQG2CV.js";
34
35
  import {
35
36
  Spinner
36
37
  } from "../chunk-ZBPEFQ4G.js";
37
- import "../chunk-2PN4QXON.js";
38
+ import "../chunk-6CP3CLDE.js";
38
39
  import "../chunk-J27W6TXS.js";
39
- import "../chunk-KUZBMEWR.js";
40
- import "../chunk-TZRXWFF5.js";
40
+ import "../chunk-AU5FS3QK.js";
41
+ import "../chunk-ITEJARWI.js";
41
42
  import "../chunk-WTJ3AY33.js";
42
- import "../chunk-WCZNQECQ.js";
43
+ import "../chunk-PEHYVSJG.js";
43
44
  import {
44
45
  fetchSeedConfig,
45
46
  registerExternalSkills,
46
47
  writeExternalSkills
47
- } from "../chunk-LKI3ENGQ.js";
48
+ } from "../chunk-VH6P7UGF.js";
48
49
  import {
49
50
  promptConfirm
50
51
  } from "../chunk-JCPANDNR.js";
@@ -56,38 +57,37 @@ import {
56
57
  mutateGlobal,
57
58
  normalizeProjectPath,
58
59
  writeProjectConfig
59
- } from "../chunk-H2DHTJKW.js";
60
+ } from "../chunk-RJ3JYZJ7.js";
60
61
  import {
61
62
  copyLocalSkills,
62
63
  discoverInstalledSkills,
63
64
  removeCompiledAgents,
64
65
  uninstallPluginSkills
65
- } from "../chunk-H25VRR2T.js";
66
+ } from "../chunk-LX7UXZBN.js";
66
67
  import {
67
68
  loadAgentDefs
68
- } from "../chunk-H4CL23HG.js";
69
- import "../chunk-WMVOJY6V.js";
70
- import "../chunk-PZNXBORZ.js";
69
+ } from "../chunk-CICB4AKA.js";
70
+ import "../chunk-C5P7RUDR.js";
71
+ import "../chunk-PWPKZNCV.js";
71
72
  import {
72
73
  render
73
74
  } from "../chunk-JFLVEFFP.js";
74
75
  import {
75
76
  formatScopeTag,
76
77
  orderDomains
77
- } from "../chunk-IK6YOXZH.js";
78
+ } from "../chunk-SLB2SFTX.js";
78
79
  import {
79
80
  BaseCommand,
80
81
  EXIT_CODES
81
- } from "../chunk-X52QUV4U.js";
82
- import "../chunk-TPQ5M3BW.js";
83
- import "../chunk-QNAMXQKF.js";
82
+ } from "../chunk-LJ6V54NR.js";
83
+ import "../chunk-IWUFZ6NR.js";
84
+ import "../chunk-4VVKVOOP.js";
84
85
  import {
85
86
  ERROR_MESSAGES,
86
87
  INCOMPLETE_WORK_RECOVERY,
87
88
  INFO_MESSAGES,
88
89
  INSTALL_MODE_DESCRIPTIONS,
89
90
  SHARED_CONFIG_APPLY,
90
- SHARED_CONFIG_ONE_DIRECTION,
91
91
  STATUS_MESSAGES,
92
92
  activeAgentNames,
93
93
  activeAgentScopeMap,
@@ -101,7 +101,6 @@ import {
101
101
  detectMigrations,
102
102
  discoverAllPluginSkills,
103
103
  ejectCopyFailureError,
104
- execCommand,
105
104
  executeMigration,
106
105
  getErrorMessage,
107
106
  globallyInstalledRemoved,
@@ -120,7 +119,7 @@ import {
120
119
  toClaudePluginScope,
121
120
  unplaceableKept,
122
121
  unresolvedSkillRemovalReasons
123
- } from "../chunk-3PJLLBUS.js";
122
+ } from "../chunk-OUG6TCQ4.js";
124
123
  import {
125
124
  getCategoryDomain,
126
125
  getSkillById,
@@ -128,7 +127,7 @@ import {
128
127
  matrix,
129
128
  typedEntries,
130
129
  typedKeys
131
- } from "../chunk-7Z4N4JWQ.js";
130
+ } from "../chunk-XX657S4U.js";
132
131
  import {
133
132
  CLI_COLORS,
134
133
  CLI_INVOKE_COMMAND,
@@ -136,8 +135,8 @@ import {
136
135
  EJECT_SOURCE,
137
136
  editorConfigUrl,
138
137
  formatSourceDisplayName
139
- } from "../chunk-G6G2FT2G.js";
140
- import "../chunk-VZRO7RYT.js";
138
+ } from "../chunk-5KB4I5J7.js";
139
+ import "../chunk-OI2H6M5I.js";
141
140
 
142
141
  // src/cli/commands/edit.tsx
143
142
  import os from "os";
@@ -223,31 +222,6 @@ function keptRowsFor(agentStack, keptSkillIds) {
223
222
  return rows;
224
223
  }
225
224
 
226
- // src/cli/utils/open-url.ts
227
- function browserOpenerCommand(platform, url) {
228
- if (platform === "darwin") return { command: "open", args: [url] };
229
- if (platform === "win32") return { command: "cmd", args: ["/c", "start", "", url] };
230
- return { command: "xdg-open", args: [url] };
231
- }
232
- function openerRefusedMessage(command, exitCode) {
233
- return `Could not open your browser \u2014 '${command}' exited ${exitCode}.`;
234
- }
235
- function openerUnavailableMessage(command, reason) {
236
- return `Could not open your browser \u2014 '${command}' could not be run: ${reason}`;
237
- }
238
- async function openUrl(url) {
239
- const { command, args } = browserOpenerCommand(process.platform, url);
240
- try {
241
- const result = await execCommand(command, args);
242
- if (result.exitCode !== 0) {
243
- return { ok: false, error: openerRefusedMessage(command, result.exitCode) };
244
- }
245
- return { ok: true };
246
- } catch (error) {
247
- return { ok: false, error: openerUnavailableMessage(command, getErrorMessage(error)) };
248
- }
249
- }
250
-
251
225
  // src/cli/commands/edit.tsx
252
226
  import { jsx } from "react/jsx-runtime";
253
227
  var RECOMPILE_SUBJECT = "agents";
@@ -369,7 +343,7 @@ var Edit = class _Edit extends BaseCommand {
369
343
  ];
370
344
  static flags = {
371
345
  ui: Flags.boolean({
372
- description: "Edit this installation in the browser at agentsinc.sh instead of the wizard",
346
+ description: "Open agentsinc.sh instead of the wizard \u2014 the id --from names, or this installation",
373
347
  default: false
374
348
  }),
375
349
  from: Flags.string({
@@ -397,10 +371,8 @@ var Edit = class _Edit extends BaseCommand {
397
371
  async applyEdit() {
398
372
  const { flags } = await this.parse(_Edit);
399
373
  const cwd = process.cwd();
374
+ if (flags.ui && flags.from !== void 0) return this.openSharedInEditor(flags.from);
400
375
  await this.ensureConfigReadable(cwd);
401
- if (flags.ui && flags.from !== void 0) {
402
- this.error(SHARED_CONFIG_ONE_DIRECTION, { exit: EXIT_CODES.ERROR });
403
- }
404
376
  if (flags.ui) return this.openInEditor(cwd);
405
377
  const payload = flags.from === void 0 ? null : await this.fetchSharedConfigOrFail(flags.from);
406
378
  const context = await this.loadContextUnderSpinner();
@@ -663,6 +635,25 @@ var Edit = class _Edit extends BaseCommand {
663
635
  * Nothing on disk is touched. A configuration is read, not rewritten, so a run that changed
664
636
  * anything here would be editing the project on the way to offering to edit it.
665
637
  */
638
+ /**
639
+ * An id somebody shared, opened rather than applied.
640
+ *
641
+ * The counterpart of `openInEditor` above and deliberately not a variant of it: that one MINTS,
642
+ * because an installation is not yet a configuration the store holds. An id already is one, so
643
+ * there is nothing to publish, nothing to read off disk, and no way for this to fail except the
644
+ * browser refusing to launch — which is a warning beside a link that still works.
645
+ *
646
+ * `--from` without `--ui` remains the destructive apply. Looking and applying are the two
647
+ * things a recipient can do with an id, and this is the one that changes nothing.
648
+ */
649
+ async openSharedInEditor(id) {
650
+ const url = editorConfigUrl(id);
651
+ this.log(`Open it at ${url}`);
652
+ this.log(`To apply it here instead, run '${CLI_INVOKE_COMMAND} edit --from ${id}'.`);
653
+ if (!process.stdin.isTTY) return;
654
+ const opened = await openUrl(url);
655
+ if (!opened.ok) this.warn(opened.error);
656
+ }
666
657
  async openInEditor(projectDir) {
667
658
  const prepared = await seedPayloadForInstallation(projectDir);
668
659
  if (!prepared.ok) {