@agentrhq/webcmd 0.3.1 → 0.3.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.
package/cli-manifest.json CHANGED
@@ -21317,7 +21317,7 @@
21317
21317
  "name": "auth",
21318
21318
  "description": "Authenticate with Spotify (OAuth — run once)",
21319
21319
  "access": "write",
21320
- "strategy": "public",
21320
+ "strategy": "local",
21321
21321
  "browser": false,
21322
21322
  "args": [],
21323
21323
  "columns": [
@@ -21332,7 +21332,7 @@
21332
21332
  "name": "next",
21333
21333
  "description": "Skip to next track",
21334
21334
  "access": "write",
21335
- "strategy": "public",
21335
+ "strategy": "local",
21336
21336
  "browser": false,
21337
21337
  "args": [],
21338
21338
  "columns": [
@@ -21347,7 +21347,7 @@
21347
21347
  "name": "pause",
21348
21348
  "description": "Pause playback",
21349
21349
  "access": "write",
21350
- "strategy": "public",
21350
+ "strategy": "local",
21351
21351
  "browser": false,
21352
21352
  "args": [],
21353
21353
  "columns": [
@@ -21362,7 +21362,7 @@
21362
21362
  "name": "play",
21363
21363
  "description": "Resume playback or search and play a track/artist",
21364
21364
  "access": "write",
21365
- "strategy": "public",
21365
+ "strategy": "local",
21366
21366
  "browser": false,
21367
21367
  "args": [
21368
21368
  {
@@ -21388,7 +21388,7 @@
21388
21388
  "name": "prev",
21389
21389
  "description": "Skip to previous track",
21390
21390
  "access": "write",
21391
- "strategy": "public",
21391
+ "strategy": "local",
21392
21392
  "browser": false,
21393
21393
  "args": [],
21394
21394
  "columns": [
@@ -21403,7 +21403,7 @@
21403
21403
  "name": "queue",
21404
21404
  "description": "Add a track to the playback queue",
21405
21405
  "access": "write",
21406
- "strategy": "public",
21406
+ "strategy": "local",
21407
21407
  "browser": false,
21408
21408
  "args": [
21409
21409
  {
@@ -21428,7 +21428,7 @@
21428
21428
  "name": "repeat",
21429
21429
  "description": "Set repeat mode (off / track / context)",
21430
21430
  "access": "write",
21431
- "strategy": "public",
21431
+ "strategy": "local",
21432
21432
  "browser": false,
21433
21433
  "args": [
21434
21434
  {
@@ -21457,7 +21457,7 @@
21457
21457
  "name": "search",
21458
21458
  "description": "Search for tracks",
21459
21459
  "access": "read",
21460
- "strategy": "public",
21460
+ "strategy": "local",
21461
21461
  "browser": false,
21462
21462
  "args": [
21463
21463
  {
@@ -21490,7 +21490,7 @@
21490
21490
  "name": "shuffle",
21491
21491
  "description": "Toggle shuffle on/off",
21492
21492
  "access": "write",
21493
- "strategy": "public",
21493
+ "strategy": "local",
21494
21494
  "browser": false,
21495
21495
  "args": [
21496
21496
  {
@@ -21518,7 +21518,7 @@
21518
21518
  "name": "status",
21519
21519
  "description": "Show current playback status",
21520
21520
  "access": "read",
21521
- "strategy": "public",
21521
+ "strategy": "local",
21522
21522
  "browser": false,
21523
21523
  "args": [],
21524
21524
  "columns": [
@@ -21537,7 +21537,7 @@
21537
21537
  "name": "volume",
21538
21538
  "description": "Set playback volume (0-100)",
21539
21539
  "access": "write",
21540
- "strategy": "public",
21540
+ "strategy": "local",
21541
21541
  "browser": false,
21542
21542
  "args": [
21543
21543
  {
@@ -19,9 +19,8 @@ cli({
19
19
  columns: ['rank', 'name', 'votes', 'url'],
20
20
  func: async (page, args) => {
21
21
  const count = Math.min(Number(args.limit) || 20, 50);
22
- await page.installInterceptor('producthunt.com');
23
22
  await page.goto('https://www.producthunt.com');
24
- await page.waitForCapture(5);
23
+ await page.wait(2);
25
24
  const domItems = await page.evaluate(`
26
25
  (() => {
27
26
  const seen = new Set();
@@ -108,7 +108,7 @@ cli({
108
108
  name: 'auth',
109
109
  access: 'write',
110
110
  description: 'Authenticate with Spotify (OAuth — run once)',
111
- strategy: Strategy.PUBLIC,
111
+ strategy: Strategy.LOCAL,
112
112
  browser: false,
113
113
  args: [],
114
114
  columns: ['status'],
@@ -175,7 +175,7 @@ cli({
175
175
  name: 'status',
176
176
  access: 'read',
177
177
  description: 'Show current playback status',
178
- strategy: Strategy.PUBLIC,
178
+ strategy: Strategy.LOCAL,
179
179
  browser: false,
180
180
  args: [],
181
181
  columns: ['track', 'artist', 'album', 'status', 'progress'],
@@ -197,7 +197,7 @@ cli({
197
197
  name: 'play',
198
198
  access: 'write',
199
199
  description: 'Resume playback or search and play a track/artist',
200
- strategy: Strategy.PUBLIC,
200
+ strategy: Strategy.LOCAL,
201
201
  browser: false,
202
202
  args: [{ name: 'query', type: 'str', default: '', positional: true, help: 'Track or artist to play (optional)' }],
203
203
  columns: ['track', 'artist', 'status'],
@@ -216,7 +216,7 @@ cli({
216
216
  name: 'pause',
217
217
  access: 'write',
218
218
  description: 'Pause playback',
219
- strategy: Strategy.PUBLIC,
219
+ strategy: Strategy.LOCAL,
220
220
  browser: false,
221
221
  args: [],
222
222
  columns: ['status'],
@@ -227,7 +227,7 @@ cli({
227
227
  name: 'next',
228
228
  access: 'write',
229
229
  description: 'Skip to next track',
230
- strategy: Strategy.PUBLIC,
230
+ strategy: Strategy.LOCAL,
231
231
  browser: false,
232
232
  args: [],
233
233
  columns: ['status'],
@@ -238,7 +238,7 @@ cli({
238
238
  name: 'prev',
239
239
  access: 'write',
240
240
  description: 'Skip to previous track',
241
- strategy: Strategy.PUBLIC,
241
+ strategy: Strategy.LOCAL,
242
242
  browser: false,
243
243
  args: [],
244
244
  columns: ['status'],
@@ -249,7 +249,7 @@ cli({
249
249
  name: 'volume',
250
250
  access: 'write',
251
251
  description: 'Set playback volume (0-100)',
252
- strategy: Strategy.PUBLIC,
252
+ strategy: Strategy.LOCAL,
253
253
  browser: false,
254
254
  args: [{ name: 'level', type: 'int', default: 50, positional: true, required: true, help: 'Volume 0–100' }],
255
255
  columns: ['volume'],
@@ -266,7 +266,7 @@ cli({
266
266
  name: 'search',
267
267
  access: 'read',
268
268
  description: 'Search for tracks',
269
- strategy: Strategy.PUBLIC,
269
+ strategy: Strategy.LOCAL,
270
270
  browser: false,
271
271
  args: [
272
272
  { name: 'query', type: 'str', required: true, positional: true, help: 'Search query' },
@@ -287,7 +287,7 @@ cli({
287
287
  name: 'queue',
288
288
  access: 'write',
289
289
  description: 'Add a track to the playback queue',
290
- strategy: Strategy.PUBLIC,
290
+ strategy: Strategy.LOCAL,
291
291
  browser: false,
292
292
  args: [{ name: 'query', type: 'str', required: true, positional: true, help: 'Track to add to queue' }],
293
293
  columns: ['track', 'artist', 'status'],
@@ -302,7 +302,7 @@ cli({
302
302
  name: 'shuffle',
303
303
  access: 'write',
304
304
  description: 'Toggle shuffle on/off',
305
- strategy: Strategy.PUBLIC,
305
+ strategy: Strategy.LOCAL,
306
306
  browser: false,
307
307
  args: [{ name: 'state', type: 'str', default: 'on', positional: true, choices: ['on', 'off'], help: 'on or off' }],
308
308
  columns: ['shuffle'],
@@ -316,7 +316,7 @@ cli({
316
316
  name: 'repeat',
317
317
  access: 'write',
318
318
  description: 'Set repeat mode (off / track / context)',
319
- strategy: Strategy.PUBLIC,
319
+ strategy: Strategy.LOCAL,
320
320
  browser: false,
321
321
  args: [{ name: 'mode', type: 'str', default: 'context', positional: true, choices: ['off', 'track', 'context'], help: 'off / track / context' }],
322
322
  columns: ['repeat'],
@@ -10,6 +10,17 @@ const EXPECTED_LOCAL_TOOLS = [
10
10
  'antigravity/state-keys',
11
11
  'antigravity/workspaces-list',
12
12
  'mercury/reimbursement-plan',
13
+ 'spotify/auth',
14
+ 'spotify/next',
15
+ 'spotify/pause',
16
+ 'spotify/play',
17
+ 'spotify/prev',
18
+ 'spotify/queue',
19
+ 'spotify/repeat',
20
+ 'spotify/search',
21
+ 'spotify/shuffle',
22
+ 'spotify/status',
23
+ 'spotify/volume',
13
24
  'trae-solo/extensions-list',
14
25
  'trae-solo/recent-workspaces',
15
26
  'trae-solo/settings-read',
@@ -174,7 +185,7 @@ describe('hosted availability', () => {
174
185
  const desktopApps = (byReason.get('desktop-app') ?? []).sort();
175
186
  expect(exceptionDiff(localTools, EXPECTED_LOCAL_TOOLS)).toEqual({ added: [], missing: [] });
176
187
  expect(exceptionDiff(desktopApps, EXPECTED_DESKTOP_APPS)).toEqual({ added: [], missing: [] });
177
- expect(localTools).toHaveLength(19);
188
+ expect(localTools).toHaveLength(30);
178
189
  expect(desktopApps).toHaveLength(111);
179
190
  });
180
191
  });
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "webcmdVersion": "0.3.1",
3
+ "webcmdVersion": "0.3.2",
4
4
  "outputFormats": [
5
5
  "table",
6
6
  "plain",
@@ -26634,7 +26634,7 @@
26634
26634
  "name": "auth",
26635
26635
  "description": "Authenticate with Spotify (OAuth — run once)",
26636
26636
  "access": "write",
26637
- "strategy": "PUBLIC",
26637
+ "strategy": "LOCAL",
26638
26638
  "browser": false,
26639
26639
  "positionals": [],
26640
26640
  "options": [],
@@ -26644,9 +26644,10 @@
26644
26644
  "aliases": [],
26645
26645
  "defaultFormat": "table",
26646
26646
  "fileArguments": [],
26647
- "sessionPolicy": "create-or-reuse",
26647
+ "sessionPolicy": "local-only",
26648
26648
  "availability": {
26649
- "mode": "hosted"
26649
+ "mode": "local-only",
26650
+ "reason": "local-tool"
26650
26651
  }
26651
26652
  },
26652
26653
  {
@@ -26655,7 +26656,7 @@
26655
26656
  "name": "next",
26656
26657
  "description": "Skip to next track",
26657
26658
  "access": "write",
26658
- "strategy": "PUBLIC",
26659
+ "strategy": "LOCAL",
26659
26660
  "browser": false,
26660
26661
  "positionals": [],
26661
26662
  "options": [],
@@ -26665,9 +26666,10 @@
26665
26666
  "aliases": [],
26666
26667
  "defaultFormat": "table",
26667
26668
  "fileArguments": [],
26668
- "sessionPolicy": "create-or-reuse",
26669
+ "sessionPolicy": "local-only",
26669
26670
  "availability": {
26670
- "mode": "hosted"
26671
+ "mode": "local-only",
26672
+ "reason": "local-tool"
26671
26673
  }
26672
26674
  },
26673
26675
  {
@@ -26676,7 +26678,7 @@
26676
26678
  "name": "pause",
26677
26679
  "description": "Pause playback",
26678
26680
  "access": "write",
26679
- "strategy": "PUBLIC",
26681
+ "strategy": "LOCAL",
26680
26682
  "browser": false,
26681
26683
  "positionals": [],
26682
26684
  "options": [],
@@ -26686,9 +26688,10 @@
26686
26688
  "aliases": [],
26687
26689
  "defaultFormat": "table",
26688
26690
  "fileArguments": [],
26689
- "sessionPolicy": "create-or-reuse",
26691
+ "sessionPolicy": "local-only",
26690
26692
  "availability": {
26691
- "mode": "hosted"
26693
+ "mode": "local-only",
26694
+ "reason": "local-tool"
26692
26695
  }
26693
26696
  },
26694
26697
  {
@@ -26697,7 +26700,7 @@
26697
26700
  "name": "play",
26698
26701
  "description": "Resume playback or search and play a track/artist",
26699
26702
  "access": "write",
26700
- "strategy": "PUBLIC",
26703
+ "strategy": "LOCAL",
26701
26704
  "browser": false,
26702
26705
  "positionals": [
26703
26706
  {
@@ -26719,9 +26722,10 @@
26719
26722
  "aliases": [],
26720
26723
  "defaultFormat": "table",
26721
26724
  "fileArguments": [],
26722
- "sessionPolicy": "create-or-reuse",
26725
+ "sessionPolicy": "local-only",
26723
26726
  "availability": {
26724
- "mode": "hosted"
26727
+ "mode": "local-only",
26728
+ "reason": "local-tool"
26725
26729
  }
26726
26730
  },
26727
26731
  {
@@ -26730,7 +26734,7 @@
26730
26734
  "name": "prev",
26731
26735
  "description": "Skip to previous track",
26732
26736
  "access": "write",
26733
- "strategy": "PUBLIC",
26737
+ "strategy": "LOCAL",
26734
26738
  "browser": false,
26735
26739
  "positionals": [],
26736
26740
  "options": [],
@@ -26740,9 +26744,10 @@
26740
26744
  "aliases": [],
26741
26745
  "defaultFormat": "table",
26742
26746
  "fileArguments": [],
26743
- "sessionPolicy": "create-or-reuse",
26747
+ "sessionPolicy": "local-only",
26744
26748
  "availability": {
26745
- "mode": "hosted"
26749
+ "mode": "local-only",
26750
+ "reason": "local-tool"
26746
26751
  }
26747
26752
  },
26748
26753
  {
@@ -26751,7 +26756,7 @@
26751
26756
  "name": "queue",
26752
26757
  "description": "Add a track to the playback queue",
26753
26758
  "access": "write",
26754
- "strategy": "PUBLIC",
26759
+ "strategy": "LOCAL",
26755
26760
  "browser": false,
26756
26761
  "positionals": [
26757
26762
  {
@@ -26772,9 +26777,10 @@
26772
26777
  "aliases": [],
26773
26778
  "defaultFormat": "table",
26774
26779
  "fileArguments": [],
26775
- "sessionPolicy": "create-or-reuse",
26780
+ "sessionPolicy": "local-only",
26776
26781
  "availability": {
26777
- "mode": "hosted"
26782
+ "mode": "local-only",
26783
+ "reason": "local-tool"
26778
26784
  }
26779
26785
  },
26780
26786
  {
@@ -26783,7 +26789,7 @@
26783
26789
  "name": "repeat",
26784
26790
  "description": "Set repeat mode (off / track / context)",
26785
26791
  "access": "write",
26786
- "strategy": "PUBLIC",
26792
+ "strategy": "LOCAL",
26787
26793
  "browser": false,
26788
26794
  "positionals": [
26789
26795
  {
@@ -26808,9 +26814,10 @@
26808
26814
  "aliases": [],
26809
26815
  "defaultFormat": "table",
26810
26816
  "fileArguments": [],
26811
- "sessionPolicy": "create-or-reuse",
26817
+ "sessionPolicy": "local-only",
26812
26818
  "availability": {
26813
- "mode": "hosted"
26819
+ "mode": "local-only",
26820
+ "reason": "local-tool"
26814
26821
  }
26815
26822
  },
26816
26823
  {
@@ -26819,7 +26826,7 @@
26819
26826
  "name": "search",
26820
26827
  "description": "Search for tracks",
26821
26828
  "access": "read",
26822
- "strategy": "PUBLIC",
26829
+ "strategy": "LOCAL",
26823
26830
  "browser": false,
26824
26831
  "positionals": [
26825
26832
  {
@@ -26851,9 +26858,10 @@
26851
26858
  "aliases": [],
26852
26859
  "defaultFormat": "table",
26853
26860
  "fileArguments": [],
26854
- "sessionPolicy": "create-or-reuse",
26861
+ "sessionPolicy": "local-only",
26855
26862
  "availability": {
26856
- "mode": "hosted"
26863
+ "mode": "local-only",
26864
+ "reason": "local-tool"
26857
26865
  }
26858
26866
  },
26859
26867
  {
@@ -26862,7 +26870,7 @@
26862
26870
  "name": "shuffle",
26863
26871
  "description": "Toggle shuffle on/off",
26864
26872
  "access": "write",
26865
- "strategy": "PUBLIC",
26873
+ "strategy": "LOCAL",
26866
26874
  "browser": false,
26867
26875
  "positionals": [
26868
26876
  {
@@ -26886,9 +26894,10 @@
26886
26894
  "aliases": [],
26887
26895
  "defaultFormat": "table",
26888
26896
  "fileArguments": [],
26889
- "sessionPolicy": "create-or-reuse",
26897
+ "sessionPolicy": "local-only",
26890
26898
  "availability": {
26891
- "mode": "hosted"
26899
+ "mode": "local-only",
26900
+ "reason": "local-tool"
26892
26901
  }
26893
26902
  },
26894
26903
  {
@@ -26897,7 +26906,7 @@
26897
26906
  "name": "status",
26898
26907
  "description": "Show current playback status",
26899
26908
  "access": "read",
26900
- "strategy": "PUBLIC",
26909
+ "strategy": "LOCAL",
26901
26910
  "browser": false,
26902
26911
  "positionals": [],
26903
26912
  "options": [],
@@ -26911,9 +26920,10 @@
26911
26920
  "aliases": [],
26912
26921
  "defaultFormat": "table",
26913
26922
  "fileArguments": [],
26914
- "sessionPolicy": "create-or-reuse",
26923
+ "sessionPolicy": "local-only",
26915
26924
  "availability": {
26916
- "mode": "hosted"
26925
+ "mode": "local-only",
26926
+ "reason": "local-tool"
26917
26927
  }
26918
26928
  },
26919
26929
  {
@@ -26922,7 +26932,7 @@
26922
26932
  "name": "volume",
26923
26933
  "description": "Set playback volume (0-100)",
26924
26934
  "access": "write",
26925
- "strategy": "PUBLIC",
26935
+ "strategy": "LOCAL",
26926
26936
  "browser": false,
26927
26937
  "positionals": [
26928
26938
  {
@@ -26942,9 +26952,10 @@
26942
26952
  "aliases": [],
26943
26953
  "defaultFormat": "table",
26944
26954
  "fileArguments": [],
26945
- "sessionPolicy": "create-or-reuse",
26955
+ "sessionPolicy": "local-only",
26946
26956
  "availability": {
26947
- "mode": "hosted"
26957
+ "mode": "local-only",
26958
+ "reason": "local-tool"
26948
26959
  }
26949
26960
  },
26950
26961
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentrhq/webcmd",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Turn websites, browser sessions, desktop apps, and local tools into deterministic CLI surfaces for humans and AI agents.",
5
5
  "engines": {
6
6
  "node": ">=20.0.0"