@holdyourvoice/hyv 2.9.18 → 2.9.20

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/LICENSE ADDED
@@ -0,0 +1,26 @@
1
+ License
2
+ Copyright © 2025 Hold Your Voice (holdyourvoice.com)
3
+
4
+ All Rights Reserved.
5
+
6
+ This software ("@holdyourvoice/hyv") is proprietary and confidential.
7
+ It is provided for use solely by authorized licensees of Hold Your Voice.
8
+
9
+ 1. **Grant of License**: A non-exclusive, non-transferable, revocable license
10
+ is granted to use this software for its intended purpose as a writing
11
+ analysis tool.
12
+
13
+ 2. **Restrictions**: You may not:
14
+ a) Redistribute, sublicense, sell, or lease this software or any
15
+ derivative works.
16
+ b) Modify, reverse engineer, decompile, or disassemble this software.
17
+ c) Remove or alter any proprietary notices.
18
+ d) Use this software in violation of applicable law.
19
+
20
+ 3. **No Warranty**: This software is provided "as is" without warranty of
21
+ any kind, express or implied.
22
+
23
+ 4. **Limitation of Liability**: Hold Your Voice shall not be liable for any
24
+ damages arising from the use of this software.
25
+
26
+ For licensing inquiries: hello@holdyourvoice.com
package/agents/chatgpt.md CHANGED
@@ -25,9 +25,16 @@ The user has a voice profile. All writing must match their personal style.
25
25
  ## MCP setup (no terminal)
26
26
  - `hyv_mcp_setup` with `action=status` — see what's integrated and onboarding progress
27
27
  - `hyv_mcp_setup` with `action=integrate` — refresh Cursor/Claude configs (`force=true` after hyv upgrade)
28
- - `hyv_mcp_setup` with `action=chatgpt` — desktop connector steps (command: hyv, arguments: mcp)
28
+ - `hyv_mcp_setup` with `action=chatgpt` — **recommended:** remote OAuth (developer mode → new app → https://holdyourvoice.com/mcp + OAuth). Free fallback: local connector (command: hyv, arguments: mcp)
29
29
  - `hyv_welcome` — finish voice onboarding inside this chat
30
30
 
31
+ ## ChatGPT connection (recommended — paid users)
32
+ 1. Settings → Developer mode ON
33
+ 2. Settings → Apps → New App
34
+ 3. Server URL: `https://holdyourvoice.com/mcp` · Authentication: OAuth
35
+ 4. Save → sign in to holdyourvoice.com
36
+ 5. OAuth runs in ChatGPT's browser — no Windows firewall issues, no local install
37
+
31
38
  ## Available tools
32
39
  - `hyv_mcp_setup` / `hyv_welcome` / `hyv_demo` — setup and onboarding
33
40
  - `hyv_scan` / `hyv_analyze` — check for AI patterns (+ hybrid when paid)
package/dist/index.js CHANGED
@@ -19277,12 +19277,34 @@ function formatChatGptConnectorGuide() {
19277
19277
  const mcpCmd = lib.resolveHyvMcpCommand(resolveCliRoot());
19278
19278
  const guidePath = path24.join(os12.homedir(), ".chatgpt", "hyv-mcp-connector.txt");
19279
19279
  const lines = [
19280
- "### ChatGPT Desktop connector (manual \u2014 no auto-config file)",
19280
+ "### ChatGPT Desktop \u2014 RECOMMENDED: Path A (remote OAuth)",
19281
19281
  "",
19282
- "1. Open ChatGPT **desktop** app (browser chat cannot use local MCP)",
19282
+ "For paid HYV users. No local install. OAuth runs in ChatGPT's browser \u2014 no Windows firewall issues.",
19283
+ "",
19284
+ "1. Open ChatGPT **desktop** app (browser chat cannot use MCP)",
19285
+ "2. Settings \u2192 turn **Developer mode** ON (accept elevated risk warning \u2014 expected, not a HYV bug)",
19286
+ "3. Settings \u2192 Apps \u2192 **New App**",
19287
+ "4. Fill in:",
19288
+ " - Name: **hold your voice**",
19289
+ " - Description: scans writing for AI patterns and voice drift",
19290
+ " - Connection: Server URL \u2192 **https://holdyourvoice.com/mcp**",
19291
+ " - Authentication: **OAuth**",
19292
+ ' - Checkbox: "I understand and want to continue"',
19293
+ "5. Save \u2192 complete OAuth sign-in to holdyourvoice.com",
19294
+ '6. Test: "scan this with hold your voice"',
19295
+ "",
19296
+ "Do NOT use https://example.com/sse \u2014 that is a ChatGPT placeholder, not a real URL.",
19297
+ "Cloud app setup: https://holdyourvoice.com/app/api/mcp",
19298
+ "Wiki guide: https://holdyourvoice.com/wiki/use-hyv-in-chatgpt",
19299
+ "",
19300
+ "### FALLBACK: Path B (local connector \u2014 free users only)",
19301
+ "",
19302
+ "Only if you do not have a paid HYV plan. Requires Node.js 18+.",
19303
+ "",
19304
+ "1. Install: npm i -g @holdyourvoice/hyv@latest && hyv welcome",
19283
19305
  "2. Settings \u2192 Connectors \u2192 Add connector",
19284
19306
  "3. Name: **hold your voice**",
19285
- "4. Command: **hyv**",
19307
+ "4. Command: **hyv** (or absolute path below if connector fails)",
19286
19308
  "5. Arguments: **mcp**",
19287
19309
  "",
19288
19310
  "If the connector fails to start, use absolute paths:",
@@ -19290,13 +19312,12 @@ function formatChatGptConnectorGuide() {
19290
19312
  ` arguments: ${mcpCmd.args.join(" ")}`,
19291
19313
  "",
19292
19314
  "6. Save, restart ChatGPT Desktop",
19293
- '7. Ask: "run hyv_welcome" or "scan this draft with hold your voice"',
19294
19315
  ""
19295
19316
  ];
19296
19317
  if (fs26.existsSync(guidePath)) {
19297
19318
  lines.push(`Full guide on disk: ${guidePath}`);
19298
19319
  } else {
19299
- lines.push("Run `hyv mcp` or `hyv doctor --fix-agents` to write the guide file.");
19320
+ lines.push("Run `hyv mcp --setup-chatgpt` or `hyv doctor --fix-agents` to write the guide file.");
19300
19321
  }
19301
19322
  return lines.join("\n");
19302
19323
  }
@@ -19336,7 +19357,7 @@ function buildMcpAgentStatus() {
19336
19357
  lines.push("- Which profile is active \u2192 hyv_profiles");
19337
19358
  lines.push("- New or partial setup \u2192 hyv_welcome (steps 1\u20134, or mode=extract_prompt for voice from chat)");
19338
19359
  lines.push("- Refresh app configs \u2192 hyv_mcp_setup with action=integrate (force=true after hyv upgrade)");
19339
- lines.push("- ChatGPT connector steps \u2192 hyv_mcp_setup with action=chatgpt");
19360
+ lines.push("- ChatGPT remote OAuth setup (recommended) \u2192 hyv_mcp_setup with action=chatgpt");
19340
19361
  lines.push("- Test free scan \u2192 hyv_demo or hyv_scan on any draft");
19341
19362
  return lines.join("\n");
19342
19363
  }
@@ -19752,7 +19773,7 @@ var TOOLS = [
19752
19773
  properties: {
19753
19774
  action: {
19754
19775
  type: "string",
19755
- description: "status (default) | integrate (wire hyv into Cursor/Claude/etc.) | chatgpt (desktop connector steps)"
19776
+ description: "status (default) | integrate (wire hyv into Cursor/Claude/etc.) | chatgpt (remote OAuth setup \u2014 recommended for paid users)"
19756
19777
  },
19757
19778
  force: {
19758
19779
  type: "boolean",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@holdyourvoice/hyv",
3
- "version": "2.9.18",
3
+ "version": "2.9.20",
4
4
  "description": "Free local AI writing scan for cursor & claude. MCP server, 220+ pattern detection, voice profiles. npx @holdyourvoice/hyv welcome",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -66,7 +66,8 @@
66
66
  "skills/",
67
67
  "agents/",
68
68
  "README.md",
69
- "CHANGELOG.md"
69
+ "CHANGELOG.md",
70
+ "LICENSE"
70
71
  ],
71
72
  "repository": {
72
73
  "type": "git",
@@ -5,12 +5,7 @@
5
5
  const path = require('path');
6
6
  const pkgDir = path.resolve(__dirname, '..');
7
7
  const quiet = process.env.HYV_POSTINSTALL_QUIET === '1' || process.argv.includes('--quiet');
8
- const hyvDir = require('path').join(require('os').homedir(), '.hyv');
9
- const {
10
- setupAgents,
11
- hasCompletedOnboarding,
12
- markOnboardingComplete,
13
- } = require('./postinstall-lib');
8
+ const { setupAgents } = require('./postinstall-lib');
14
9
 
15
10
  function print(msg) {
16
11
  if (!quiet) console.log(msg);
@@ -37,24 +32,4 @@ if (configured.length > 0) {
37
32
  if (warnings.length > 0 && !quiet) {
38
33
  print(' ! setup notes: ' + warnings.join('; '));
39
34
  print('');
40
- }
41
-
42
- const canShowOnboarding =
43
- process.stdout.isTTY || process.env.npm_config_foreground_scripts === 'true';
44
-
45
- if (!quiet && !hasCompletedOnboarding(hyvDir) && canShowOnboarding) {
46
- print('');
47
- print(' starting onboarding...');
48
- print('');
49
- try {
50
- const { execSync } = require('child_process');
51
- execSync('node "' + path.join(pkgDir, 'dist', 'index.js') + '" welcome', {
52
- stdio: 'inherit',
53
- env: { ...process.env, HYV_POSTINSTALL_ONBOARDING: '1' },
54
- });
55
- markOnboardingComplete(hyvDir, require('./postinstall-lib').readPkgVersion(pkgDir));
56
- } catch {
57
- print(' finish setup: hyv welcome');
58
- print('');
59
- }
60
35
  }