@stoneforge/smithy 1.0.0 → 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.
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/interactive.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EAExB,MAAM,aAAa,CAAC;AA6DrB;;GAEG;AACH,qBAAa,yBAA0B,YAAW,mBAAmB;IACnE,QAAQ,CAAC,IAAI,wBAAwB;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAE5B,cAAc,SAAW;IAI/B,KAAK,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA0DpE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAUrC,OAAO,CAAC,SAAS;CAkBlB"}
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/interactive.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EAExB,MAAM,aAAa,CAAC;AAuFrB;;GAEG;AACH,qBAAa,yBAA0B,YAAW,mBAAmB;IACnE,QAAQ,CAAC,IAAI,wBAAwB;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAE5B,cAAc,SAAW;IAI/B,KAAK,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA4DpE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAUrC,OAAO,CAAC,SAAS;CAkBlB"}
@@ -7,6 +7,9 @@
7
7
  * @module
8
8
  */
9
9
  import { randomUUID } from 'node:crypto';
10
+ import { chmodSync, existsSync, readdirSync } from 'node:fs';
11
+ import { dirname, join } from 'node:path';
12
+ import { createRequire } from 'node:module';
10
13
  import * as pty from 'node-pty';
11
14
  // ============================================================================
12
15
  // Helpers
@@ -17,6 +20,36 @@ import * as pty from 'node-pty';
17
20
  function shellQuote(s) {
18
21
  return "'" + s.replace(/'/g, "'\\''") + "'";
19
22
  }
23
+ /**
24
+ * Ensures node-pty's spawn-helper binary has execute permissions.
25
+ * Package managers (especially bun) can strip the execute bit from native
26
+ * binaries, and bun doesn't run postinstall scripts by default.
27
+ * Only runs once per process.
28
+ */
29
+ let spawnHelperFixed = false;
30
+ function ensureSpawnHelperPermissions() {
31
+ if (spawnHelperFixed || process.platform === 'win32')
32
+ return;
33
+ spawnHelperFixed = true;
34
+ try {
35
+ const require = createRequire(import.meta.url);
36
+ const nodePtyDir = dirname(require.resolve('node-pty/package.json'));
37
+ const prebuildsDir = join(nodePtyDir, 'prebuilds');
38
+ if (!existsSync(prebuildsDir))
39
+ return;
40
+ for (const entry of readdirSync(prebuildsDir, { withFileTypes: true })) {
41
+ if (!entry.isDirectory())
42
+ continue;
43
+ const helper = join(prebuildsDir, entry.name, 'spawn-helper');
44
+ if (existsSync(helper))
45
+ chmodSync(helper, 0o755);
46
+ }
47
+ }
48
+ catch {
49
+ // Best-effort — if we can't fix permissions, pty.spawn() will throw
50
+ // a clear error anyway.
51
+ }
52
+ }
20
53
  // ============================================================================
21
54
  // Claude Interactive Session
22
55
  // ============================================================================
@@ -93,6 +126,7 @@ export class ClaudeInteractiveProvider {
93
126
  : options.initialPrompt
94
127
  ? ['-l', '-c', claudeCommand + ' "$1"', '_', options.initialPrompt]
95
128
  : ['-l', '-c', claudeCommand];
129
+ ensureSpawnHelperPermissions();
96
130
  const ptyProcess = pty.spawn(shell, shellArgs, {
97
131
  name: 'xterm-256color',
98
132
  cols,
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../../src/providers/claude/interactive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../../src/providers/claude/interactive.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stoneforge/smithy",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "type": "module",
5
5
  "description": "Orchestrator SDK for Stoneforge - AI agent orchestration library extending the core SDK",
6
6
  "main": "dist/index.js",
@@ -66,6 +66,7 @@
66
66
  "files": [
67
67
  "dist",
68
68
  "web",
69
+ "scripts",
69
70
  "README.md"
70
71
  ],
71
72
  "repository": {
@@ -92,10 +93,10 @@
92
93
  "hono": "^4.7.0",
93
94
  "node-pty": "^1.1.0",
94
95
  "ws": "^8.18.0",
95
- "@stoneforge/core": "1.0.0",
96
- "@stoneforge/quarry": "1.0.0",
97
- "@stoneforge/shared-routes": "1.0.0",
98
- "@stoneforge/storage": "1.0.0"
96
+ "@stoneforge/core": "1.0.2",
97
+ "@stoneforge/quarry": "1.0.2",
98
+ "@stoneforge/shared-routes": "1.0.2",
99
+ "@stoneforge/storage": "1.0.2"
99
100
  },
100
101
  "optionalDependencies": {
101
102
  "@opencode-ai/sdk": "^1.1.64"
@@ -115,6 +116,7 @@
115
116
  "test:orchestration": "bun run src/cli/commands/test-orchestration.ts",
116
117
  "lint": "tsc --noEmit",
117
118
  "typecheck": "tsc --noEmit",
118
- "clean": "rm -rf dist"
119
+ "clean": "rm -rf dist",
120
+ "postinstall": "node scripts/fix-node-pty-permissions.cjs"
119
121
  }
120
122
  }
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Fix node-pty spawn-helper permissions
4
+ *
5
+ * Package managers sometimes lose execute permissions on native binaries.
6
+ * The spawn-helper binary in node-pty needs execute permission for PTY
7
+ * spawning to work on macOS/Linux.
8
+ *
9
+ * Uses require.resolve to find node-pty regardless of package manager
10
+ * (npm, pnpm, yarn, bun).
11
+ *
12
+ * Runs as a postinstall hook from both the smithy package (for NPM consumers)
13
+ * and the monorepo root (for local development).
14
+ */
15
+
16
+ const { chmodSync, existsSync } = require('node:fs');
17
+ const { join, dirname } = require('node:path');
18
+
19
+ if (process.platform === 'win32') {
20
+ process.exit(0);
21
+ }
22
+
23
+ let nodePtyDir;
24
+ try {
25
+ const pkgPath = require.resolve('node-pty/package.json');
26
+ nodePtyDir = dirname(pkgPath);
27
+ } catch {
28
+ // node-pty not installed — nothing to fix
29
+ process.exit(0);
30
+ }
31
+
32
+ const prebuildsDir = join(nodePtyDir, 'prebuilds');
33
+ if (!existsSync(prebuildsDir)) {
34
+ process.exit(0);
35
+ }
36
+
37
+ const { readdirSync } = require('node:fs');
38
+ let fixed = 0;
39
+
40
+ for (const platformDir of readdirSync(prebuildsDir, { withFileTypes: true })) {
41
+ if (!platformDir.isDirectory()) continue;
42
+ const helperPath = join(prebuildsDir, platformDir.name, 'spawn-helper');
43
+ if (existsSync(helperPath)) {
44
+ try {
45
+ chmodSync(helperPath, 0o755);
46
+ fixed++;
47
+ console.log(`[postinstall] Fixed permissions: node-pty/prebuilds/${platformDir.name}/spawn-helper`);
48
+ } catch (err) {
49
+ console.warn(`[postinstall] Could not fix permissions for ${helperPath}: ${err.message}`);
50
+ }
51
+ }
52
+ }
53
+
54
+ if (fixed === 0) {
55
+ console.log('[postinstall] No spawn-helper binaries found to fix');
56
+ }