@aryacode/dsh-plugin-arya-computer-use 1.0.1 → 1.0.2

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 (3) hide show
  1. package/README.md +11 -0
  2. package/index.js +38 -0
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -97,6 +97,17 @@ node mcp/browser-launcher.mjs # → agent-browser mcp --tools core [--p
97
97
 
98
98
  So sign-in reuse and attaching to your own Chrome are settings, not hand-edited rows. Web-lane changes land on the next MCP restart; the settings page says so.
99
99
 
100
+ ## Plugin market
101
+
102
+ Installing from Plugins -> Arya Plugin Market needs no manual source: on first run the plugin registers
103
+ `https://cdn.jsdelivr.net/gh/KonnectSuite/dsh-arya-computer-use@main/index.json`
104
+ with the market (existing sources are kept) and every npm release shows up there as an update. Releases go
105
+ through npm staged publishing, so a publish is visible in the market once the version is approved on npmjs.com.
106
+
107
+ The plugin manager blocks dependency build scripts by default. The engines (`agent-desktop`, `agent-browser`)
108
+ fetch their native binary in a postinstall script; approve those two builds when installing, or let 1.0.1+
109
+ repair them itself at start-up - the status route reports the outcome under `mcp.engines`.
110
+
100
111
  ## Tool presets
101
112
 
102
113
  - `lite` (default) — all 16 desktop tools listed up front.
package/index.js CHANGED
@@ -36,6 +36,11 @@ const SKILL_FILE = join(SKILL_DIR, 'SKILL.md');
36
36
  const PROVIDER_NAME = 'arya-computer-use';
37
37
  const RANK = 350;
38
38
  const STATUS_PATH = '/plugins/arya/status';
39
+ // Market index that lists this plugin. The market ships no default source, so the
40
+ // plugin registers its own on first apply: users then see "Arya Computer Use" in
41
+ // Plugins -> Arya Plugin Market without pasting a URL, and every release published
42
+ // to npm shows up there as an update.
43
+ const MARKET_INDEX_URL = 'https://cdn.jsdelivr.net/gh/KonnectSuite/dsh-arya-computer-use@main/index.json';
39
44
  const PLUGIN_VERSION = (() => {
40
45
  try { return JSON.parse(readFileSync(join(HERE, 'package.json'), 'utf8')).version ?? '0.0.0'; }
41
46
  catch { return '0.0.0'; }
@@ -256,10 +261,43 @@ Object.defineProperty(Config, '~standard', { value: { ...validation, validate(in
256
261
  return result;
257
262
  } } });
258
263
 
264
+ // Register this plugin's market index with the plugin market, once, so the
265
+ // market lists Arya Computer Use without the user adding a source by hand.
266
+ // setIndexes keeps any source the user already configured.
267
+ function ensureMarketSource(ctx) {
268
+ const canonical = (url) => {
269
+ try { return new URL(url).href; }
270
+ catch { return url; }
271
+ };
272
+ try {
273
+ ctx.inject(['pluginMarket'], (scope) => {
274
+ void (async () => {
275
+ try {
276
+ const market = scope.pluginMarket ?? scope.get('pluginMarket');
277
+ if (!market || typeof market.listIndexes !== 'function' || typeof market.setIndexes !== 'function') return;
278
+ const sources = market.listIndexes() ?? [];
279
+ const urls = sources.map(entry => entry?.url).filter(url => typeof url === 'string');
280
+ if (urls.some(url => canonical(url) === canonical(MARKET_INDEX_URL))) return;
281
+ await market.setIndexes([...urls, MARKET_INDEX_URL]);
282
+ ctx.logger.info('dsh-arya-computer-use: registered its market index source');
283
+ } catch (error) {
284
+ ctx.logger.warn('dsh-arya-computer-use: could not register the market index source: %s', error?.message ?? String(error));
285
+ }
286
+ })();
287
+ });
288
+ } catch (error) {
289
+ ctx.logger?.warn?.('dsh-arya-computer-use: plugin market is unavailable: %s', error?.message ?? String(error));
290
+ }
291
+ }
292
+
293
+ // Internal hook so a diagnostic can exercise the market registration.
294
+ export { ensureMarketSource as __ensureMarketSource };
295
+
259
296
  /* -------------------------------------------------------------------- main */
260
297
 
261
298
  export async function apply(ctx, config) {
262
299
  registerSkillProvider(ctx);
300
+ ensureMarketSource(ctx);
263
301
  void (async () => {
264
302
  try {
265
303
  const engines = await ensureEngines();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aryacode/dsh-plugin-arya-computer-use",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Computer use for DSH/AryaCode: agent-desktop UIA engine, agent-browser web lane, takeover UI with a ghost cursor",
5
5
  "license": "MIT",
6
6
  "type": "module",