instar 0.7.37 → 0.7.39

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/dist/cli.js CHANGED
File without changes
@@ -6,8 +6,9 @@
6
6
  *
7
7
  * Ported from Dawn's dawn-server equivalent for general Instar use.
8
8
  */
9
- import { execSync } from 'node:child_process';
9
+ import { execFileSync } from 'node:child_process';
10
10
  import fs from 'node:fs';
11
+ import os from 'node:os';
11
12
  import path from 'node:path';
12
13
  const KEYCHAIN_SERVICE = 'Claude Code-credentials';
13
14
  export class AccountSwitcher {
@@ -16,12 +17,7 @@ export class AccountSwitcher {
16
17
  constructor(registryPath) {
17
18
  this.registryPath = registryPath || path.join(process.env.HOME || '', '.dawn-server/account-registry.json');
18
19
  // Get the macOS username for Keychain access
19
- try {
20
- this.keychainAccount = execSync('whoami', { encoding: 'utf-8' }).trim();
21
- }
22
- catch {
23
- this.keychainAccount = 'justin';
24
- }
20
+ this.keychainAccount = os.userInfo().username;
25
21
  }
26
22
  /**
27
23
  * Switch to a target account. Supports fuzzy matching:
@@ -160,13 +156,19 @@ export class AccountSwitcher {
160
156
  return null;
161
157
  }
162
158
  readFromKeychain() {
163
- const result = execSync(`security find-generic-password -s "${KEYCHAIN_SERVICE}" -w 2>/dev/null`, { encoding: 'utf-8', timeout: 10000 });
159
+ const result = execFileSync('security', ['find-generic-password', '-s', KEYCHAIN_SERVICE, '-w'], { encoding: 'utf-8', timeout: 10000, stdio: ['pipe', 'pipe', 'pipe'] });
164
160
  return JSON.parse(result.trim());
165
161
  }
166
162
  writeToKeychain(data) {
167
163
  const jsonStr = JSON.stringify(data);
168
164
  const hexStr = Buffer.from(jsonStr).toString('hex');
169
- execSync(`security -i <<< 'add-generic-password -U -a "${this.keychainAccount}" -s "${KEYCHAIN_SERVICE}" -X "${hexStr}"'`, { timeout: 10000, shell: '/bin/bash' });
165
+ // Use execFileSync with stdin input instead of shell heredoc
166
+ execFileSync('security', ['-i'], {
167
+ input: `add-generic-password -U -a "${this.keychainAccount}" -s "${KEYCHAIN_SERVICE}" -X "${hexStr}"\n`,
168
+ encoding: 'utf-8',
169
+ timeout: 10000,
170
+ stdio: ['pipe', 'pipe', 'pipe'],
171
+ });
170
172
  }
171
173
  loadRegistry() {
172
174
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instar",
3
- "version": "0.7.37",
3
+ "version": "0.7.39",
4
4
  "description": "Persistent autonomy infrastructure for AI agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,11 +0,0 @@
1
- > Why do I have a folder named ".vercel" in my project?
2
- The ".vercel" folder is created when you link a directory to a Vercel project.
3
-
4
- > What does the "project.json" file contain?
5
- The "project.json" file contains:
6
- - The ID of the Vercel project that you linked ("projectId")
7
- - The ID of the user or team your Vercel project is owned by ("orgId")
8
-
9
- > Should I commit the ".vercel" folder?
10
- No, you should not share the ".vercel" folder with anyone.
11
- Upon creation, it will be automatically added to your ".gitignore" file.
@@ -1 +0,0 @@
1
- {"projectId":"prj_evM5LcItYL3IAmw8zNvEPGrHeaya","orgId":"team_dHctwIDcV3X9ydapQlCPHFGI","projectName":"claude-agent-kit"}