This commit is contained in:
ZacharyZhang-NY committed 2026-03-22 21:11:44 -04:00
1 parent 7e0f62afc9
commit 9928efed81
10 files changed
+84 -27

No files matched your search

+3 -9
View File
@@ -1,15 +1,9 @@
{
"extends": "/Users/zacharyzhang/Documents/Github/AgentCompany/electron-builder.yml",
"extends": "C:\\Users\\zhang\\Documents\\GitHub\\AgentCompany\\electron-builder.yml",
"directories": {
"output": "/Users/zacharyzhang/Documents/Github/AgentCompany/build/release"
"output": "C:\\Users\\zhang\\Documents\\GitHub\\AgentCompany\\build\\release"
},
"extraMetadata": {
"version": "0.4.55"
},
"mac": {
"hardenedRuntime": false,
"target": [
"zip"
]
"version": "0.4.59"
}
}
+3 -1
View File
@@ -1,4 +1,4 @@
arm64:
x64:
firstOrDefaultFilePatterns:
- '!**/node_modules/**'
- '!assets{,/**/*}'
@@ -16,3 +16,5 @@ arm64:
- '**/*'
- out/**
- package.json
nsis:
script: "!include \"C:\\Users\\zhang\\Documents\\GitHub\\AgentCompany\\node_modules\\.pnpm\\app-builder-lib@26.8.1_dmg-_62d31da0b96a3ea7b7d51a6bbe3b3b6e\\node_modules\\app-builder-lib\\templates\\nsis\\include\\StdUtils.nsh\"\n!addincludedir \"C:\\Users\\zhang\\Documents\\GitHub\\AgentCompany\\node_modules\\.pnpm\\app-builder-lib@26.8.1_dmg-_62d31da0b96a3ea7b7d51a6bbe3b3b6e\\node_modules\\app-builder-lib\\templates\\nsis\\include\"\n!macro _isUpdated _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"updated\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isUpdated `\"\" isUpdated \"\"`\n\n!macro _isForceRun _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"force-run\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isForceRun `\"\" isForceRun \"\"`\n\n!macro _isKeepShortcuts _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"keep-shortcuts\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isKeepShortcuts `\"\" isKeepShortcuts \"\"`\n\n!macro _isNoDesktopShortcut _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"no-desktop-shortcut\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isNoDesktopShortcut `\"\" isNoDesktopShortcut \"\"`\n\n!macro _isDeleteAppData _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"delete-app-data\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isDeleteAppData `\"\" isDeleteAppData \"\"`\n\n!macro _isForAllUsers _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"allusers\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isForAllUsers `\"\" isForAllUsers \"\"`\n\n!macro _isForCurrentUser _a _b _t _f\n ${StdUtils.TestParameter} $R9 \"currentuser\"\n StrCmp \"$R9\" \"true\" `${_t}` `${_f}`\n!macroend\n!define isForCurrentUser `\"\" isForCurrentUser \"\"`\n\n!macro addLangs\n !insertmacro MUI_LANGUAGE \"English\"\n !insertmacro MUI_LANGUAGE \"German\"\n !insertmacro MUI_LANGUAGE \"French\"\n !insertmacro MUI_LANGUAGE \"SpanishInternational\"\n !insertmacro MUI_LANGUAGE \"SimpChinese\"\n !insertmacro MUI_LANGUAGE \"TradChinese\"\n !insertmacro MUI_LANGUAGE \"Japanese\"\n !insertmacro MUI_LANGUAGE \"Korean\"\n !insertmacro MUI_LANGUAGE \"Italian\"\n !insertmacro MUI_LANGUAGE \"Dutch\"\n !insertmacro MUI_LANGUAGE \"Danish\"\n !insertmacro MUI_LANGUAGE \"Swedish\"\n !insertmacro MUI_LANGUAGE \"Norwegian\"\n !insertmacro MUI_LANGUAGE \"Finnish\"\n !insertmacro MUI_LANGUAGE \"Russian\"\n !insertmacro MUI_LANGUAGE \"Portuguese\"\n !insertmacro MUI_LANGUAGE \"PortugueseBR\"\n !insertmacro MUI_LANGUAGE \"Polish\"\n !insertmacro MUI_LANGUAGE \"Ukrainian\"\n !insertmacro MUI_LANGUAGE \"Czech\"\n !insertmacro MUI_LANGUAGE \"Slovak\"\n !insertmacro MUI_LANGUAGE \"Hungarian\"\n !insertmacro MUI_LANGUAGE \"Arabic\"\n !insertmacro MUI_LANGUAGE \"Turkish\"\n !insertmacro MUI_LANGUAGE \"Thai\"\n !insertmacro MUI_LANGUAGE \"Vietnamese\"\n!macroend\n\n!addplugindir /x86-unicode \"C:\\Users\\zhang\\AppData\\Local\\electron-builder\\Cache\\nsis\\nsis-resources-3.4.1-nsis-resources-3.4.1\\plugins\\x86-unicode\"\n!include \"C:\\Users\\zhang\\AppData\\Local\\Temp\\t-5kGIBZ\\4-messages.nsh\"\n\n!include \"common.nsh\"\n!include \"extractAppPackage.nsh\"\n\n# https://github.com/electron-userland/electron-builder/issues/3972#issuecomment-505171582\nCRCCheck off\nWindowIcon Off\nAutoCloseWindow True\nRequestExecutionLevel ${REQUEST_EXECUTION_LEVEL}\n\nFunction .onInit\n !ifndef SPLASH_IMAGE\n SetSilent silent\n !endif\n\n !insertmacro check64BitAndSetRegView\nFunctionEnd\n\nFunction .onGUIInit\n InitPluginsDir\n\n !ifdef SPLASH_IMAGE\n File /oname=$PLUGINSDIR\\splash.bmp \"${SPLASH_IMAGE}\"\n BgImage::SetBg $PLUGINSDIR\\splash.bmp\n BgImage::Redraw\n !endif\nFunctionEnd\n\nSection\n !ifdef SPLASH_IMAGE\n HideWindow\n !endif\n\n StrCpy $INSTDIR \"$PLUGINSDIR\\app\"\n !ifdef UNPACK_DIR_NAME\n StrCpy $INSTDIR \"$TEMP\\${UNPACK_DIR_NAME}\"\n !endif\n\n RMDir /r $INSTDIR\n SetOutPath $INSTDIR\n\n !ifdef APP_DIR_64\n !ifdef APP_DIR_ARM64\n !ifdef APP_DIR_32\n ${if} ${IsNativeARM64}\n File /r \"${APP_DIR_ARM64}\\*.*\"\n ${elseif} ${RunningX64}\n File /r \"${APP_DIR_64}\\*.*\"\n ${else}\n File /r \"${APP_DIR_32}\\*.*\"\n ${endIf}\n !else\n ${if} ${IsNativeARM64}\n File /r \"${APP_DIR_ARM64}\\*.*\"\n ${else}\n File /r \"${APP_DIR_64}\\*.*\"\n {endIf}\n !endif\n !else\n !ifdef APP_DIR_32\n ${if} ${RunningX64}\n File /r \"${APP_DIR_64}\\*.*\"\n ${else}\n File /r \"${APP_DIR_32}\\*.*\"\n ${endIf}\n !else\n File /r \"${APP_DIR_64}\\*.*\"\n !endif\n !endif\n !else\n !ifdef APP_DIR_32\n File /r \"${APP_DIR_32}\\*.*\"\n !else\n !insertmacro extractEmbeddedAppPackage\n !endif\n !endif\n\n System::Call 'Kernel32::SetEnvironmentVariable(t, t)i (\"PORTABLE_EXECUTABLE_DIR\", \"$EXEDIR\").r0'\n System::CLine truncated
-11
View File
@@ -1,11 +0,0 @@
version: 0.4.55
files:
- url: AgentCompany-0.4.55-arm64-mac.zip
sha512: V5zGwFGYOaKO7+2DLPNXurPrfv6VcRerX7meMAzL5gTMwgf4fWDH3NAyPI9x4Nrz17e8hB9ZrpI9uwC5F1vXPQ==
size: 113651351
- url: AgentCompany-0.4.55-arm64.dmg
sha512: iY7gmCoW8M5gZadJgCxjnTGyX3a8PyDjDheJ4+6JeHCXkmeX87StBBoJh4Bfet3cofmFKecJrkjAPCUA5bo3CA==
size: 118410424
path: AgentCompany-0.4.55-arm64-mac.zip
sha512: V5zGwFGYOaKO7+2DLPNXurPrfv6VcRerX7meMAzL5gTMwgf4fWDH3NAyPI9x4Nrz17e8hB9ZrpI9uwC5F1vXPQ==
releaseDate: '2026-03-22T21:24:08.906Z'
+8
View File
@@ -0,0 +1,8 @@
version: 0.4.59
files:
- url: AgentCompany-Setup-0.4.59.exe
sha512: RwvoCeaMxyA1BmEFzWNPijdg2D92+t0Cr/4AeIuii8Xm9UkJ5KJoBN7q4FhxM/TmJ1OGzXQMHmZPAhRNxtVESA==
size: 101724077
path: AgentCompany-Setup-0.4.59.exe
sha512: RwvoCeaMxyA1BmEFzWNPijdg2D92+t0Cr/4AeIuii8Xm9UkJ5KJoBN7q4FhxM/TmJ1OGzXQMHmZPAhRNxtVESA==
releaseDate: '2026-03-23T00:38:06.163Z'
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "agent-company",
"version": "0.4.55",
"version": "0.4.59",
"private": true,
"type": "module",
"description": "Cross-platform Electron desktop control plane for local-first AI agent companies.",
@@ -16,6 +16,7 @@ import {
ensureAbsoluteDirectory,
ensureCommandResolvable,
ensurePathInEnv,
filterConflictingArgs,
renderTemplate,
runChildProcess,
} from "@agentcompany/adapter-utils/server-utils";
@@ -385,7 +386,22 @@ export async function execute(ctx: AdapterExecutionContext): Promise<AdapterExec
args.push("--append-system-prompt-file", effectiveInstructionsFilePath);
}
args.push("--add-dir", skillsDir);
if (extraArgs.length > 0) args.push(...extraArgs);
if (extraArgs.length > 0) {
// Filter out flags the adapter already manages to prevent duplicates
// (e.g. user shell aliases that inject --dangerously-skip-permissions)
const managedFlags = [
"--dangerously-skip-permissions",
"--output-format",
"--model",
"--effort",
"--max-turns",
"--add-dir",
"--append-system-prompt-file",
"--teammate-mode",
];
const cleaned = filterConflictingArgs(extraArgs, managedFlags);
if (cleaned.length > 0) args.push(...cleaned);
}
return args;
};
@@ -14,6 +14,7 @@ import {
ensureAbsoluteDirectory,
ensureCommandResolvable,
ensurePathInEnv,
filterConflictingArgs,
renderTemplate,
runChildProcess,
} from "@agentcompany/adapter-utils/server-utils";
@@ -318,7 +319,20 @@ export async function execute(ctx: AdapterExecutionContext): Promise<AdapterExec
if (bypass) args.push("--dangerously-bypass-approvals-and-sandbox");
if (model) args.push("--model", model);
if (modelReasoningEffort) args.push("-c", `model_reasoning_effort=${JSON.stringify(modelReasoningEffort)}`);
if (extraArgs.length > 0) args.push(...extraArgs);
if (extraArgs.length > 0) {
// Filter out flags the adapter already manages to prevent duplicates
// (e.g. user shell aliases that inject --dangerously-bypass-approvals-and-sandbox)
const managedFlags = [
"--dangerously-bypass-approvals-and-sandbox",
"--json",
"--model",
"--sandbox",
"--skip-git-repo-check",
"--ask-for-approval",
];
const cleaned = filterConflictingArgs(extraArgs, managedFlags);
if (cleaned.length > 0) args.push(...cleaned);
}
if (resumeSessionId) args.push("resume", resumeSessionId, "-");
else args.push("-");
return args;
@@ -14,6 +14,7 @@ import {
ensureCommandResolvable,
ensurePathInEnv,
parseObject,
filterConflictingArgs,
redactEnvForLogs,
renderTemplate,
runChildProcess,
@@ -301,7 +302,18 @@ export async function execute(ctx: AdapterExecutionContext): Promise<AdapterExec
} else {
args.push("--sandbox=none");
}
if (extraArgs.length > 0) args.push(...extraArgs);
if (extraArgs.length > 0) {
// Filter out flags the adapter already manages to prevent duplicates
// (e.g. user shell aliases that inject --approval-mode or --sandbox)
const managedFlags = [
"--approval-mode",
"--output-format",
"--model",
"--sandbox",
];
const cleaned = filterConflictingArgs(extraArgs, managedFlags);
if (cleaned.length > 0) args.push(...cleaned);
}
args.push(prompt);
return args;
};
@@ -109,6 +109,30 @@ export function renderTemplate(template: string, data: Record<string, unknown>)
return template.replace(/{{\s*([a-zA-Z0-9_.-]+)\s*}}/g, (_, path) => resolvePathValue(data, path));
}
/**
* Remove flags from `extraArgs` that the adapter will already add itself.
* Handles both `--flag value` pairs and `--flag=value` forms.
* This prevents duplicate/conflicting CLI arguments when users have shell
* aliases or wrapper functions that inject the same flags.
*/
export function filterConflictingArgs(extraArgs: string[], adapterFlags: string[]): string[] {
const flagSet = new Set(adapterFlags.map((f) => f.replace(/=.*$/, "")));
const filtered: string[] = [];
for (let i = 0; i < extraArgs.length; i++) {
const arg = extraArgs[i];
const bareFlag = arg.replace(/=.*$/, "");
if (flagSet.has(bareFlag)) {
// Skip this flag and its value if the value is a separate argument
if (!arg.includes("=") && i + 1 < extraArgs.length && !extraArgs[i + 1].startsWith("-")) {
i++; // skip the value argument too
}
continue;
}
filtered.push(arg);
}
return filtered;
}
export function redactEnvForLogs(env: Record<string, string>): Record<string, string> {
const redacted: Record<string, string> = {};
for (const [key, value] of Object.entries(env)) {
-2
View File
@@ -107,8 +107,6 @@ function buildConnectorExecutionConfig(job: RunJob, sanitizedEnv: Record<string,
"--skip-git-repo-check",
"--sandbox",
allowUnsafeConnectorBypass ? "danger-full-access" : "workspace-write",
"--ask-for-approval",
"never",
],
};
case "claude_local":