@aspectlylabs/mikka 0.0.134 → 0.0.137

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.js CHANGED
@@ -4457,7 +4457,7 @@ import { join as join4 } from "node:path";
4457
4457
  // package.json
4458
4458
  var package_default = {
4459
4459
  name: "@mikka/daemon",
4460
- version: "0.0.134",
4460
+ version: "0.0.137",
4461
4461
  description: "Local Mikka daemon: runs agents through the user's own CLIs",
4462
4462
  type: "module",
4463
4463
  private: true,
@@ -4517,7 +4517,7 @@ var package_default = {
4517
4517
  engines: {
4518
4518
  node: ">=24"
4519
4519
  },
4520
- gitHead: "6801dda136789ca969e5efaf57fb8f89ca194c09"
4520
+ gitHead: "686bcc2d8211e09c9ef0ff941fa58bc7fb1eefe6"
4521
4521
  };
4522
4522
 
4523
4523
  // src/paths.ts
@@ -5677,7 +5677,7 @@ async function registrationLogin(options) {
5677
5677
 
5678
5678
  // src/coordinator/runner.ts
5679
5679
  import { mkdirSync as mkdirSync9, mkdtempSync as mkdtempSync3, rmSync as rmSync9, writeFileSync as writeFileSync5 } from "node:fs";
5680
- import { dirname as dirname8, join as join12 } from "node:path";
5680
+ import { dirname as dirname9, join as join12 } from "node:path";
5681
5681
  import { setTimeout as delay } from "node:timers/promises";
5682
5682
  import { z as z30 } from "zod";
5683
5683
 
@@ -6091,7 +6091,7 @@ import {
6091
6091
  rmSync as rmSync5
6092
6092
  } from "node:fs";
6093
6093
  import { tmpdir } from "node:os";
6094
- import { join as join8, resolve as resolve5 } from "node:path";
6094
+ import { dirname as dirname7, join as join8, resolve as resolve5 } from "node:path";
6095
6095
 
6096
6096
  // src/ids.ts
6097
6097
  var SAFE_ID = /^[A-Za-z0-9_-]{1,64}$/;
@@ -6512,7 +6512,8 @@ async function worktreeGitWritePaths(repoPath, worktree, runId) {
6512
6512
  const common = resolve5(gitDir, "..", "..");
6513
6513
  const branch = `mikka/run-${assertSafeId("run id", runId)}`;
6514
6514
  const ref = join8(common, "refs", "heads", branch);
6515
- return [gitDir, join8(common, "objects"), ref, `${ref}.lock`, join8(common, "logs", "refs", "heads", branch)];
6515
+ const logsRef = join8(common, "logs", "refs", "heads", branch);
6516
+ return [gitDir, join8(common, "objects"), dirname7(ref), ref, `${ref}.lock`, dirname7(logsRef), logsRef];
6516
6517
  }
6517
6518
  function safeRealpath(path) {
6518
6519
  try {
@@ -6726,14 +6727,20 @@ exec env NODE_USE_ENV_PROXY=1 ${process.versions.electron ? "ELECTRON_RUN_AS_NOD
6726
6727
  PATH: `${bin}${delimiter}${path}`,
6727
6728
  GH_HOST: "github.com",
6728
6729
  GH_REPO: github.repository,
6730
+ // The agent commits inside the sandbox, where a signing program or agent
6731
+ // configured outside it (gpg, ssh-agent, a signing helper) is unreachable.
6729
6732
  GIT_TERMINAL_PROMPT: "0",
6730
- GIT_CONFIG_COUNT: "3",
6733
+ GIT_CONFIG_COUNT: "5",
6731
6734
  GIT_CONFIG_KEY_0: "credential.helper",
6732
6735
  GIT_CONFIG_VALUE_0: "",
6733
6736
  GIT_CONFIG_KEY_1: "credential.https://github.com.helper",
6734
6737
  GIT_CONFIG_VALUE_1: `!env NODE_USE_ENV_PROXY=1 ${process.versions.electron ? "ELECTRON_RUN_AS_NODE=1 " : ""}${quote(node)} ${quote(helper)} git ${quote(config)}`,
6735
6738
  GIT_CONFIG_KEY_2: "credential.useHttpPath",
6736
6739
  GIT_CONFIG_VALUE_2: "true",
6740
+ GIT_CONFIG_KEY_3: "commit.gpgSign",
6741
+ GIT_CONFIG_VALUE_3: "false",
6742
+ GIT_CONFIG_KEY_4: "tag.gpgSign",
6743
+ GIT_CONFIG_VALUE_4: "false",
6737
6744
  GIT_AUTHOR_NAME: "Mikka Agent",
6738
6745
  GIT_AUTHOR_EMAIL: "agent@mikka.invalid",
6739
6746
  GIT_COMMITTER_NAME: "Mikka Agent",
@@ -6797,7 +6804,7 @@ import {
6797
6804
  writeFileSync as writeFileSync4
6798
6805
  } from "node:fs";
6799
6806
  import { homedir as homedir4 } from "node:os";
6800
- import { dirname as dirname7, join as join11, resolve as resolve7 } from "node:path";
6807
+ import { dirname as dirname8, join as join11, resolve as resolve7 } from "node:path";
6801
6808
 
6802
6809
  // src/agents/skill-artifact.ts
6803
6810
  import { createHash as createHash2 } from "node:crypto";
@@ -7100,7 +7107,7 @@ var RunContext = class {
7100
7107
  for (const file of skill.files) {
7101
7108
  const target = resolve7(dir, file.path);
7102
7109
  if (!target.startsWith(`${dir}/`)) continue;
7103
- mkdirSync8(dirname7(target), { recursive: true });
7110
+ mkdirSync8(dirname8(target), { recursive: true });
7104
7111
  writeFileSync4(target, file.content, "utf8");
7105
7112
  }
7106
7113
  }
@@ -7620,7 +7627,7 @@ sandbox_mode = "read-only"
7620
7627
  env: { ...buildChildEnv(process.env), CODEX_HOME: home.home },
7621
7628
  policy: {
7622
7629
  allowWrite: [dir],
7623
- denyRead: [...credentialDenyRead("codex"), ...daemonSecrets(dirname8(options.stateDir))],
7630
+ denyRead: [...credentialDenyRead("codex"), ...daemonSecrets(dirname9(options.stateDir))],
7624
7631
  allowDomains: HARNESS_DOMAINS.codex
7625
7632
  },
7626
7633
  pidFile: join12(dir, "private", "codex.pid"),
@@ -9691,7 +9698,7 @@ ${firstMessage}` : firstMessage
9691
9698
  // src/adapters/mock.ts
9692
9699
  import { randomUUID as randomUUID4 } from "node:crypto";
9693
9700
  import { mkdirSync as mkdirSync11, readFileSync as readFileSync8, writeFileSync as writeFileSync6 } from "node:fs";
9694
- import { dirname as dirname9, join as join17, resolve as resolve8 } from "node:path";
9701
+ import { dirname as dirname10, join as join17, resolve as resolve8 } from "node:path";
9695
9702
  import { setTimeout as sleep2 } from "node:timers/promises";
9696
9703
  import { execa as execa5 } from "execa";
9697
9704
 
@@ -9842,7 +9849,7 @@ var MockAdapter = class {
9842
9849
  );
9843
9850
  }
9844
9851
  const target = resolve8(options.cwd, line.write.path);
9845
- mkdirSync11(dirname9(target), { recursive: true });
9852
+ mkdirSync11(dirname10(target), { recursive: true });
9846
9853
  writeFileSync6(target, line.write.content);
9847
9854
  }
9848
9855
  if (line.chunk) yield { type: "chunk", chunk: line.chunk };
@@ -10104,7 +10111,7 @@ import { SandboxManager as SandboxManager2 } from "@anthropic-ai/sandbox-runtime
10104
10111
  import { execFile as execFile3 } from "node:child_process";
10105
10112
  import { readdir as readdir2, realpath, stat } from "node:fs/promises";
10106
10113
  import { homedir as homedir5, platform } from "node:os";
10107
- import { basename as basename2, dirname as dirname10, isAbsolute as isAbsolute5, join as join19, resolve as resolve9 } from "node:path";
10114
+ import { basename as basename2, dirname as dirname11, isAbsolute as isAbsolute5, join as join19, resolve as resolve9 } from "node:path";
10108
10115
  import { promisify as promisify3 } from "node:util";
10109
10116
  var run = promisify3(execFile3);
10110
10117
  async function git(cwd, args) {
@@ -10186,7 +10193,7 @@ async function browseFolder(request) {
10186
10193
  isRepo: await exists(join19(full, ".git"))
10187
10194
  });
10188
10195
  }
10189
- const parent = dirname10(path);
10196
+ const parent = dirname11(path);
10190
10197
  return {
10191
10198
  ok: true,
10192
10199
  path,
@@ -10413,7 +10420,7 @@ function harnessFingerprint(store) {
10413
10420
  import { spawn as spawn4 } from "node:child_process";
10414
10421
  import { createHash as createHash5 } from "node:crypto";
10415
10422
  import { existsSync as existsSync5, readFileSync as readFileSync10 } from "node:fs";
10416
- import { dirname as dirname11, join as join22, resolve as resolve10 } from "node:path";
10423
+ import { dirname as dirname12, join as join22, resolve as resolve10 } from "node:path";
10417
10424
  import { fileURLToPath as fileURLToPath2 } from "node:url";
10418
10425
  import { execa as execa9 } from "execa";
10419
10426
 
@@ -10672,7 +10679,7 @@ function containerMounts(policy, gitCommonDir2) {
10672
10679
  if (gitCommonDir2) mounts.set(gitCommonDir2, "ro");
10673
10680
  for (const path of policy.allowWrite) mounts.set(path, "rw");
10674
10681
  for (const path of policy.denyWrite ?? []) if (existsSync5(path)) mounts.set(path, "ro");
10675
- for (const path of [MCP_SERVER_SCRIPT, join22(dirname11(MCP_SERVER_SCRIPT), "capture-copy.mjs")]) mounts.set(path, "ro");
10682
+ for (const path of [MCP_SERVER_SCRIPT, join22(dirname12(MCP_SERVER_SCRIPT), "capture-copy.mjs")]) mounts.set(path, "ro");
10676
10683
  return [...mounts].flatMap(([path, mode]) => ["-v", `${path}:${path}:${mode}`]);
10677
10684
  }
10678
10685
  function containerArgs(options) {
@@ -10871,7 +10878,7 @@ function createLocalSubscriptionRunner(host) {
10871
10878
 
10872
10879
  // src/sandbox-tools.ts
10873
10880
  import { chmodSync as chmodSync2, existsSync as existsSync6, lstatSync as lstatSync8, mkdirSync as mkdirSync14, mkdtempSync as mkdtempSync6, readdirSync as readdirSync6, readlinkSync as readlinkSync2, renameSync as renameSync3, rmSync as rmSync14, writeFileSync as writeFileSync8 } from "node:fs";
10874
- import { dirname as dirname12, isAbsolute as isAbsolute7, join as join25 } from "node:path";
10881
+ import { dirname as dirname13, isAbsolute as isAbsolute7, join as join25 } from "node:path";
10875
10882
  import { execa as execa10 } from "execa";
10876
10883
 
10877
10884
  // src/path-search.ts
@@ -10952,7 +10959,7 @@ function resolveUnpackedBinary(root, command) {
10952
10959
  for (let hops = 0; hops < 10; hops++) {
10953
10960
  if (!lstatSync8(path).isSymbolicLink()) return path;
10954
10961
  const target = readlinkSync2(path);
10955
- path = isAbsolute7(target) ? join25(root, `.${target}`) : join25(dirname12(path), target);
10962
+ path = isAbsolute7(target) ? join25(root, `.${target}`) : join25(dirname13(path), target);
10956
10963
  }
10957
10964
  throw new Error(`${command} resolves through too many symlinks`);
10958
10965
  }
@@ -13228,7 +13235,7 @@ function fixedCandidateCheck(assignment) {
13228
13235
  // src/repositories.ts
13229
13236
  import { createHash as createHash7, randomUUID as randomUUID7 } from "node:crypto";
13230
13237
  import { existsSync as existsSync7, lstatSync as lstatSync9, mkdirSync as mkdirSync16, readdirSync as readdirSync8, realpathSync as realpathSync10, renameSync as renameSync4, rmSync as rmSync18 } from "node:fs";
13231
- import { dirname as dirname13, join as join29, resolve as resolve12 } from "node:path";
13238
+ import { dirname as dirname14, join as join29, resolve as resolve12 } from "node:path";
13232
13239
  import { setTimeout as delay2 } from "node:timers/promises";
13233
13240
  import { execa as execa14 } from "execa";
13234
13241
  import lockfile2 from "proper-lockfile";
@@ -13252,7 +13259,7 @@ var RepositoryCache = class {
13252
13259
  signal?.throwIfAborted();
13253
13260
  const { remoteUrl: remote } = normalizeRepository(remoteUrl, { allowFile: this.allowFile });
13254
13261
  const path = this.pathFor(remote);
13255
- this.ensureParents(dirname13(path));
13262
+ this.ensureParents(dirname14(path));
13256
13263
  const release = await this.lock(path, signal);
13257
13264
  try {
13258
13265
  return await withRepoConfig(path, () => this.update(path, remote, signal));
@@ -13350,7 +13357,7 @@ import {
13350
13357
  rmSync as rmSync19
13351
13358
  } from "node:fs";
13352
13359
  import { createRequire } from "node:module";
13353
- import { delimiter as delimiter3, dirname as dirname14, join as join30 } from "node:path";
13360
+ import { delimiter as delimiter3, dirname as dirname15, join as join30 } from "node:path";
13354
13361
  import { fileURLToPath as fileURLToPath3 } from "node:url";
13355
13362
  import { promisify as promisify6 } from "node:util";
13356
13363
  var exec3 = promisify6(execFile6);
@@ -13427,7 +13434,7 @@ async function createHostedBotRunner(host) {
13427
13434
  require2.resolve("@anthropic-ai/claude-agent-sdk")
13428
13435
  );
13429
13436
  claude ??= join30(
13430
- dirname14(
13437
+ dirname15(
13431
13438
  bundled.resolve(
13432
13439
  "@anthropic-ai/claude-agent-sdk-linux-x64/package.json"
13433
13440
  )
@@ -13718,7 +13725,7 @@ async function createHostedBotRunner(host) {
13718
13725
  const previous = readJson(ledger);
13719
13726
  if (existsSync8(ledger) && (!previous || JSON.stringify(previous.scope) !== JSON.stringify(scope) || typeof previous.sessionId !== "string"))
13720
13727
  throw unavailable3();
13721
- mkdirSync17(dirname14(ledger), { recursive: true, mode: 448 });
13728
+ mkdirSync17(dirname15(ledger), { recursive: true, mode: 448 });
13722
13729
  const record = async (sessionId) => {
13723
13730
  assertOpen();
13724
13731
  writeJsonAtomic(ledger, { scope, sessionId });
@@ -13822,7 +13829,7 @@ async function createHostedBotRunner(host) {
13822
13829
  `${MCP_SERVER_SCRIPT}:${MCP_SERVER_SCRIPT}:ro`,
13823
13830
  ...githubCli ? ["-v", `${githubCli}:/usr/local/bin/mikka-gh:ro`, "-v", `${GITHUB_CREDENTIAL_SCRIPT}:${GITHUB_CREDENTIAL_SCRIPT}:ro`] : [],
13824
13831
  "-v",
13825
- `${join30(dirname14(MCP_SERVER_SCRIPT), "capture-copy.mjs")}:${join30(dirname14(MCP_SERVER_SCRIPT), "capture-copy.mjs")}:ro`,
13832
+ `${join30(dirname15(MCP_SERVER_SCRIPT), "capture-copy.mjs")}:${join30(dirname15(MCP_SERVER_SCRIPT), "capture-copy.mjs")}:ro`,
13826
13833
  "-v",
13827
13834
  `${readyBroker.socket}:/run/mikka-native.sock:ro`,
13828
13835
  ...computerGrant ? [
package/client.js CHANGED
@@ -3719,7 +3719,7 @@ import { join } from "node:path";
3719
3719
  // package.json
3720
3720
  var package_default = {
3721
3721
  name: "@mikka/daemon",
3722
- version: "0.0.134",
3722
+ version: "0.0.137",
3723
3723
  description: "Local Mikka daemon: runs agents through the user's own CLIs",
3724
3724
  type: "module",
3725
3725
  private: true,
@@ -3779,7 +3779,7 @@ var package_default = {
3779
3779
  engines: {
3780
3780
  node: ">=24"
3781
3781
  },
3782
- gitHead: "6801dda136789ca969e5efaf57fb8f89ca194c09"
3782
+ gitHead: "686bcc2d8211e09c9ef0ff941fa58bc7fb1eefe6"
3783
3783
  };
3784
3784
 
3785
3785
  // src/paths.ts
package/http-link.js CHANGED
@@ -4121,7 +4121,7 @@ var InvalidIdError = class extends DaemonError {
4121
4121
  // package.json
4122
4122
  var package_default = {
4123
4123
  name: "@mikka/daemon",
4124
- version: "0.0.134",
4124
+ version: "0.0.137",
4125
4125
  description: "Local Mikka daemon: runs agents through the user's own CLIs",
4126
4126
  type: "module",
4127
4127
  private: true,
@@ -4181,7 +4181,7 @@ var package_default = {
4181
4181
  engines: {
4182
4182
  node: ">=24"
4183
4183
  },
4184
- gitHead: "6801dda136789ca969e5efaf57fb8f89ca194c09"
4184
+ gitHead: "686bcc2d8211e09c9ef0ff941fa58bc7fb1eefe6"
4185
4185
  };
4186
4186
 
4187
4187
  // src/paths.ts
package/login.js CHANGED
@@ -3726,7 +3726,7 @@ var ServerUnreachableError = class extends DaemonError {
3726
3726
  // package.json
3727
3727
  var package_default = {
3728
3728
  name: "@mikka/daemon",
3729
- version: "0.0.134",
3729
+ version: "0.0.137",
3730
3730
  description: "Local Mikka daemon: runs agents through the user's own CLIs",
3731
3731
  type: "module",
3732
3732
  private: true,
@@ -3786,7 +3786,7 @@ var package_default = {
3786
3786
  engines: {
3787
3787
  node: ">=24"
3788
3788
  },
3789
- gitHead: "6801dda136789ca969e5efaf57fb8f89ca194c09"
3789
+ gitHead: "686bcc2d8211e09c9ef0ff941fa58bc7fb1eefe6"
3790
3790
  };
3791
3791
 
3792
3792
  // src/paths.ts
package/main.js CHANGED
@@ -2024,7 +2024,7 @@ var require_semver2 = __commonJS({
2024
2024
 
2025
2025
  // src/coordinator/runner.ts
2026
2026
  import { mkdirSync as mkdirSync8, mkdtempSync as mkdtempSync3, rmSync as rmSync8, writeFileSync as writeFileSync5 } from "node:fs";
2027
- import { dirname as dirname6, join as join9 } from "node:path";
2027
+ import { dirname as dirname7, join as join9 } from "node:path";
2028
2028
  import { setTimeout as delay } from "node:timers/promises";
2029
2029
  import { z as z26 } from "zod";
2030
2030
 
@@ -2665,7 +2665,7 @@ import {
2665
2665
  rmSync as rmSync4
2666
2666
  } from "node:fs";
2667
2667
  import { tmpdir } from "node:os";
2668
- import { join as join3, resolve as resolve2 } from "node:path";
2668
+ import { dirname as dirname3, join as join3, resolve as resolve2 } from "node:path";
2669
2669
 
2670
2670
  // src/ids.ts
2671
2671
  var SAFE_ID = /^[A-Za-z0-9_-]{1,64}$/;
@@ -3086,7 +3086,8 @@ async function worktreeGitWritePaths(repoPath, worktree, runId) {
3086
3086
  const common = resolve2(gitDir, "..", "..");
3087
3087
  const branch = `mikka/run-${assertSafeId("run id", runId)}`;
3088
3088
  const ref = join3(common, "refs", "heads", branch);
3089
- return [gitDir, join3(common, "objects"), ref, `${ref}.lock`, join3(common, "logs", "refs", "heads", branch)];
3089
+ const logsRef = join3(common, "logs", "refs", "heads", branch);
3090
+ return [gitDir, join3(common, "objects"), dirname3(ref), ref, `${ref}.lock`, dirname3(logsRef), logsRef];
3090
3091
  }
3091
3092
  function safeRealpath(path) {
3092
3093
  try {
@@ -3300,14 +3301,20 @@ exec env NODE_USE_ENV_PROXY=1 ${process.versions.electron ? "ELECTRON_RUN_AS_NOD
3300
3301
  PATH: `${bin}${delimiter}${path}`,
3301
3302
  GH_HOST: "github.com",
3302
3303
  GH_REPO: github.repository,
3304
+ // The agent commits inside the sandbox, where a signing program or agent
3305
+ // configured outside it (gpg, ssh-agent, a signing helper) is unreachable.
3303
3306
  GIT_TERMINAL_PROMPT: "0",
3304
- GIT_CONFIG_COUNT: "3",
3307
+ GIT_CONFIG_COUNT: "5",
3305
3308
  GIT_CONFIG_KEY_0: "credential.helper",
3306
3309
  GIT_CONFIG_VALUE_0: "",
3307
3310
  GIT_CONFIG_KEY_1: "credential.https://github.com.helper",
3308
3311
  GIT_CONFIG_VALUE_1: `!env NODE_USE_ENV_PROXY=1 ${process.versions.electron ? "ELECTRON_RUN_AS_NODE=1 " : ""}${quote(node)} ${quote(helper)} git ${quote(config)}`,
3309
3312
  GIT_CONFIG_KEY_2: "credential.useHttpPath",
3310
3313
  GIT_CONFIG_VALUE_2: "true",
3314
+ GIT_CONFIG_KEY_3: "commit.gpgSign",
3315
+ GIT_CONFIG_VALUE_3: "false",
3316
+ GIT_CONFIG_KEY_4: "tag.gpgSign",
3317
+ GIT_CONFIG_VALUE_4: "false",
3311
3318
  GIT_AUTHOR_NAME: "Mikka Agent",
3312
3319
  GIT_AUTHOR_EMAIL: "agent@mikka.invalid",
3313
3320
  GIT_COMMITTER_NAME: "Mikka Agent",
@@ -3391,7 +3398,7 @@ import {
3391
3398
  writeFileSync as writeFileSync4
3392
3399
  } from "node:fs";
3393
3400
  import { homedir as homedir2 } from "node:os";
3394
- import { dirname as dirname5, join as join8, resolve as resolve5 } from "node:path";
3401
+ import { dirname as dirname6, join as join8, resolve as resolve5 } from "node:path";
3395
3402
 
3396
3403
  // ../protocol/src/run.ts
3397
3404
  import { z as z4 } from "zod";
@@ -3773,7 +3780,7 @@ import { join as join5 } from "node:path";
3773
3780
  // package.json
3774
3781
  var package_default = {
3775
3782
  name: "@mikka/daemon",
3776
- version: "0.0.134",
3783
+ version: "0.0.137",
3777
3784
  description: "Local Mikka daemon: runs agents through the user's own CLIs",
3778
3785
  type: "module",
3779
3786
  private: true,
@@ -3833,7 +3840,7 @@ var package_default = {
3833
3840
  engines: {
3834
3841
  node: ">=24"
3835
3842
  },
3836
- gitHead: "6801dda136789ca969e5efaf57fb8f89ca194c09"
3843
+ gitHead: "686bcc2d8211e09c9ef0ff941fa58bc7fb1eefe6"
3837
3844
  };
3838
3845
 
3839
3846
  // src/paths.ts
@@ -3877,7 +3884,7 @@ function daemonPaths(dataDir) {
3877
3884
  import { lstatSync as lstatSync5, readlinkSync, realpathSync as realpathSync5 } from "node:fs";
3878
3885
  import {
3879
3886
  basename,
3880
- dirname as dirname3,
3887
+ dirname as dirname4,
3881
3888
  isAbsolute as isAbsolute2,
3882
3889
  join as join6,
3883
3890
  relative as relative2,
@@ -4018,10 +4025,10 @@ function realTarget(path) {
4018
4025
  } catch {
4019
4026
  if (lstatSync5(current, { throwIfNoEntry: false })?.isSymbolicLink()) {
4020
4027
  if (++hops > 40) return path;
4021
- current = resolve4(dirname3(current), readlinkSync(current));
4028
+ current = resolve4(dirname4(current), readlinkSync(current));
4022
4029
  continue;
4023
4030
  }
4024
- const parent = dirname3(current);
4031
+ const parent = dirname4(current);
4025
4032
  if (parent === current) return path;
4026
4033
  missing.push(basename(current));
4027
4034
  current = parent;
@@ -5589,9 +5596,9 @@ import {
5589
5596
  renameSync,
5590
5597
  writeSync
5591
5598
  } from "node:fs";
5592
- import { dirname as dirname4 } from "node:path";
5599
+ import { dirname as dirname5 } from "node:path";
5593
5600
  function writeFileAtomic(file, data, mode = 384) {
5594
- mkdirSync5(dirname4(file), { recursive: true });
5601
+ mkdirSync5(dirname5(file), { recursive: true });
5595
5602
  const tmp = `${file}.${process.pid}.tmp`;
5596
5603
  const fd = openSync(tmp, "w", mode);
5597
5604
  try {
@@ -5887,7 +5894,7 @@ var RunContext = class {
5887
5894
  for (const file of skill.files) {
5888
5895
  const target = resolve5(dir, file.path);
5889
5896
  if (!target.startsWith(`${dir}/`)) continue;
5890
- mkdirSync7(dirname5(target), { recursive: true });
5897
+ mkdirSync7(dirname6(target), { recursive: true });
5891
5898
  writeFileSync4(target, file.content, "utf8");
5892
5899
  }
5893
5900
  }
@@ -6407,7 +6414,7 @@ sandbox_mode = "read-only"
6407
6414
  env: { ...buildChildEnv(process.env), CODEX_HOME: home.home },
6408
6415
  policy: {
6409
6416
  allowWrite: [dir],
6410
- denyRead: [...credentialDenyRead("codex"), ...daemonSecrets(dirname6(options.stateDir))],
6417
+ denyRead: [...credentialDenyRead("codex"), ...daemonSecrets(dirname7(options.stateDir))],
6411
6418
  allowDomains: HARNESS_DOMAINS.codex
6412
6419
  },
6413
6420
  pidFile: join9(dir, "private", "codex.pid"),
@@ -8513,7 +8520,7 @@ ${firstMessage}` : firstMessage
8513
8520
  // src/adapters/mock.ts
8514
8521
  import { randomUUID as randomUUID3 } from "node:crypto";
8515
8522
  import { mkdirSync as mkdirSync10, readFileSync as readFileSync7, writeFileSync as writeFileSync6 } from "node:fs";
8516
- import { dirname as dirname7, join as join14, resolve as resolve6 } from "node:path";
8523
+ import { dirname as dirname8, join as join14, resolve as resolve6 } from "node:path";
8517
8524
  import { setTimeout as sleep } from "node:timers/promises";
8518
8525
  import { execa as execa5 } from "execa";
8519
8526
 
@@ -8664,7 +8671,7 @@ var MockAdapter = class {
8664
8671
  );
8665
8672
  }
8666
8673
  const target = resolve6(options.cwd, line.write.path);
8667
- mkdirSync10(dirname7(target), { recursive: true });
8674
+ mkdirSync10(dirname8(target), { recursive: true });
8668
8675
  writeFileSync6(target, line.write.content);
8669
8676
  }
8670
8677
  if (line.chunk) yield { type: "chunk", chunk: line.chunk };
@@ -8926,7 +8933,7 @@ import { SandboxManager as SandboxManager2 } from "@anthropic-ai/sandbox-runtime
8926
8933
  import { execFile } from "node:child_process";
8927
8934
  import { readdir as readdir2, realpath, stat } from "node:fs/promises";
8928
8935
  import { homedir as homedir3, platform } from "node:os";
8929
- import { basename as basename2, dirname as dirname8, isAbsolute as isAbsolute5, join as join16, resolve as resolve7 } from "node:path";
8936
+ import { basename as basename2, dirname as dirname9, isAbsolute as isAbsolute5, join as join16, resolve as resolve7 } from "node:path";
8930
8937
  import { promisify } from "node:util";
8931
8938
  var run = promisify(execFile);
8932
8939
  async function git(cwd, args) {
@@ -9008,7 +9015,7 @@ async function browseFolder(request) {
9008
9015
  isRepo: await exists(join16(full, ".git"))
9009
9016
  });
9010
9017
  }
9011
- const parent = dirname8(path);
9018
+ const parent = dirname9(path);
9012
9019
  return {
9013
9020
  ok: true,
9014
9021
  path,
@@ -9036,7 +9043,7 @@ async function verifyExpectedOrigin(path, expected) {
9036
9043
  import { execFile as execFile2 } from "node:child_process";
9037
9044
  import { realpathSync as realpathSync9 } from "node:fs";
9038
9045
  import { homedir as homedir4 } from "node:os";
9039
- import { dirname as dirname9, join as join17, resolve as resolve8 } from "node:path";
9046
+ import { dirname as dirname10, join as join17, resolve as resolve8 } from "node:path";
9040
9047
  import { promisify as promisify2 } from "node:util";
9041
9048
  var exec = promisify2(execFile2);
9042
9049
  var DAY = 24 * 60 * 60 * 1e3;
@@ -9048,12 +9055,12 @@ function newerStableVersion(candidate, current) {
9048
9055
  return false;
9049
9056
  }
9050
9057
  async function runServiceNpm(args) {
9051
- const npm = realpathSync9(join17(dirname9(process.execPath), "npm"));
9058
+ const npm = realpathSync9(join17(dirname10(process.execPath), "npm"));
9052
9059
  const { stdout } = await exec(process.execPath, [npm, ...args], {
9053
9060
  cwd: homedir4(),
9054
9061
  timeout: 3e5,
9055
9062
  maxBuffer: 1024 * 1024,
9056
- env: { ...process.env, PATH: `${dirname9(process.execPath)}:${process.env.PATH ?? ""}` }
9063
+ env: { ...process.env, PATH: `${dirname10(process.execPath)}:${process.env.PATH ?? ""}` }
9057
9064
  });
9058
9065
  return stdout.trim();
9059
9066
  }
@@ -9070,7 +9077,7 @@ import { execFile as execFile3 } from "node:child_process";
9070
9077
  import { promisify as promisify3 } from "node:util";
9071
9078
  import { mkdir, writeFile, rm } from "node:fs/promises";
9072
9079
  import { homedir as homedir5 } from "node:os";
9073
- import { dirname as dirname10, join as join18, resolve as resolve9 } from "node:path";
9080
+ import { dirname as dirname11, join as join18, resolve as resolve9 } from "node:path";
9074
9081
  var exec2 = promisify3(execFile3);
9075
9082
  var label = "com.aspectlylabs.mikka.daemon";
9076
9083
  async function restartService(update, beforeRestart, dependencies = {
@@ -9323,7 +9330,7 @@ function harnessFingerprint(store) {
9323
9330
  import { spawn as spawn4 } from "node:child_process";
9324
9331
  import { createHash as createHash5 } from "node:crypto";
9325
9332
  import { existsSync as existsSync5, readFileSync as readFileSync9 } from "node:fs";
9326
- import { dirname as dirname11, join as join21, resolve as resolve10 } from "node:path";
9333
+ import { dirname as dirname12, join as join21, resolve as resolve10 } from "node:path";
9327
9334
  import { fileURLToPath as fileURLToPath2 } from "node:url";
9328
9335
  import { execa as execa9 } from "execa";
9329
9336
 
@@ -9582,7 +9589,7 @@ function containerMounts(policy, gitCommonDir2) {
9582
9589
  if (gitCommonDir2) mounts.set(gitCommonDir2, "ro");
9583
9590
  for (const path of policy.allowWrite) mounts.set(path, "rw");
9584
9591
  for (const path of policy.denyWrite ?? []) if (existsSync5(path)) mounts.set(path, "ro");
9585
- for (const path of [MCP_SERVER_SCRIPT, join21(dirname11(MCP_SERVER_SCRIPT), "capture-copy.mjs")]) mounts.set(path, "ro");
9592
+ for (const path of [MCP_SERVER_SCRIPT, join21(dirname12(MCP_SERVER_SCRIPT), "capture-copy.mjs")]) mounts.set(path, "ro");
9586
9593
  return [...mounts].flatMap(([path, mode]) => ["-v", `${path}:${path}:${mode}`]);
9587
9594
  }
9588
9595
  function containerArgs(options) {
@@ -9781,7 +9788,7 @@ function createLocalSubscriptionRunner(host) {
9781
9788
 
9782
9789
  // src/sandbox-tools.ts
9783
9790
  import { chmodSync as chmodSync2, existsSync as existsSync6, lstatSync as lstatSync8, mkdirSync as mkdirSync13, mkdtempSync as mkdtempSync6, readdirSync as readdirSync6, readlinkSync as readlinkSync2, renameSync as renameSync3, rmSync as rmSync13, writeFileSync as writeFileSync8 } from "node:fs";
9784
- import { dirname as dirname12, isAbsolute as isAbsolute7, join as join24 } from "node:path";
9791
+ import { dirname as dirname13, isAbsolute as isAbsolute7, join as join24 } from "node:path";
9785
9792
  import { execa as execa10 } from "execa";
9786
9793
 
9787
9794
  // src/path-search.ts
@@ -9862,7 +9869,7 @@ function resolveUnpackedBinary(root, command) {
9862
9869
  for (let hops = 0; hops < 10; hops++) {
9863
9870
  if (!lstatSync8(path).isSymbolicLink()) return path;
9864
9871
  const target = readlinkSync2(path);
9865
- path = isAbsolute7(target) ? join24(root, `.${target}`) : join24(dirname12(path), target);
9872
+ path = isAbsolute7(target) ? join24(root, `.${target}`) : join24(dirname13(path), target);
9866
9873
  }
9867
9874
  throw new Error(`${command} resolves through too many symlinks`);
9868
9875
  }
@@ -12303,7 +12310,7 @@ var SessionRejectedError = class extends DaemonError {
12303
12310
  // src/repositories.ts
12304
12311
  import { createHash as createHash7, randomUUID as randomUUID6 } from "node:crypto";
12305
12312
  import { existsSync as existsSync7, lstatSync as lstatSync9, mkdirSync as mkdirSync16, readdirSync as readdirSync8, realpathSync as realpathSync10, renameSync as renameSync4, rmSync as rmSync18 } from "node:fs";
12306
- import { dirname as dirname13, join as join29, resolve as resolve12 } from "node:path";
12313
+ import { dirname as dirname14, join as join29, resolve as resolve12 } from "node:path";
12307
12314
  import { setTimeout as delay2 } from "node:timers/promises";
12308
12315
  import { execa as execa14 } from "execa";
12309
12316
  import lockfile2 from "proper-lockfile";
@@ -12327,7 +12334,7 @@ var RepositoryCache = class {
12327
12334
  signal?.throwIfAborted();
12328
12335
  const { remoteUrl: remote } = normalizeRepository(remoteUrl, { allowFile: this.allowFile });
12329
12336
  const path = this.pathFor(remote);
12330
- this.ensureParents(dirname13(path));
12337
+ this.ensureParents(dirname14(path));
12331
12338
  const release = await this.lock(path, signal);
12332
12339
  try {
12333
12340
  return await withRepoConfig(path, () => this.update(path, remote, signal));
@@ -12425,7 +12432,7 @@ import {
12425
12432
  rmSync as rmSync19
12426
12433
  } from "node:fs";
12427
12434
  import { createRequire } from "node:module";
12428
- import { delimiter as delimiter3, dirname as dirname14, join as join30 } from "node:path";
12435
+ import { delimiter as delimiter3, dirname as dirname15, join as join30 } from "node:path";
12429
12436
  import { fileURLToPath as fileURLToPath3 } from "node:url";
12430
12437
  import { promisify as promisify6 } from "node:util";
12431
12438
  var exec3 = promisify6(execFile6);
@@ -12502,7 +12509,7 @@ async function createHostedBotRunner(host) {
12502
12509
  require2.resolve("@anthropic-ai/claude-agent-sdk")
12503
12510
  );
12504
12511
  claude ??= join30(
12505
- dirname14(
12512
+ dirname15(
12506
12513
  bundled.resolve(
12507
12514
  "@anthropic-ai/claude-agent-sdk-linux-x64/package.json"
12508
12515
  )
@@ -12793,7 +12800,7 @@ async function createHostedBotRunner(host) {
12793
12800
  const previous = readJson(ledger);
12794
12801
  if (existsSync8(ledger) && (!previous || JSON.stringify(previous.scope) !== JSON.stringify(scope) || typeof previous.sessionId !== "string"))
12795
12802
  throw unavailable3();
12796
- mkdirSync17(dirname14(ledger), { recursive: true, mode: 448 });
12803
+ mkdirSync17(dirname15(ledger), { recursive: true, mode: 448 });
12797
12804
  const record = async (sessionId) => {
12798
12805
  assertOpen();
12799
12806
  writeJsonAtomic(ledger, { scope, sessionId });
@@ -12897,7 +12904,7 @@ async function createHostedBotRunner(host) {
12897
12904
  `${MCP_SERVER_SCRIPT}:${MCP_SERVER_SCRIPT}:ro`,
12898
12905
  ...githubCli ? ["-v", `${githubCli}:/usr/local/bin/mikka-gh:ro`, "-v", `${GITHUB_CREDENTIAL_SCRIPT}:${GITHUB_CREDENTIAL_SCRIPT}:ro`] : [],
12899
12906
  "-v",
12900
- `${join30(dirname14(MCP_SERVER_SCRIPT), "capture-copy.mjs")}:${join30(dirname14(MCP_SERVER_SCRIPT), "capture-copy.mjs")}:ro`,
12907
+ `${join30(dirname15(MCP_SERVER_SCRIPT), "capture-copy.mjs")}:${join30(dirname15(MCP_SERVER_SCRIPT), "capture-copy.mjs")}:ro`,
12901
12908
  "-v",
12902
12909
  `${readyBroker.socket}:/run/mikka-native.sock:ro`,
12903
12910
  ...computerGrant ? [
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "version": 1,
3
- "sourceSha": "6801dda136789ca969e5efaf57fb8f89ca194c09",
3
+ "sourceSha": "686bcc2d8211e09c9ef0ff941fa58bc7fb1eefe6",
4
4
  "repository": "alexj11324/Mikka",
5
- "buildRunId": "41272628095",
5
+ "buildRunId": "41273318229",
6
6
  "buildKind": "github-actions-main",
7
7
  "sourceLockSha256": "c99f1e4f641d8e004cfe807653478e10f91e53fcf47102add5f4c154cdc1cb57",
8
- "createdAt": "2026-11-01T04:32:26.681Z",
8
+ "createdAt": "2026-11-01T04:42:18.233Z",
9
9
  "sbom": "sbom.cdx.json",
10
10
  "files": [
11
11
  {
@@ -40,13 +40,13 @@
40
40
  },
41
41
  {
42
42
  "path": "cli.js",
43
- "size": 634339,
44
- "sha256": "ede1931a6fef0739895581463c61b83794f89c9c8e688948fa9315e004cefe4f"
43
+ "size": 634724,
44
+ "sha256": "0f90daa50f571daafb4ac8d5d6e57ecff8ac481be7dedfa158fe6f31a0bb43e7"
45
45
  },
46
46
  {
47
47
  "path": "client.js",
48
48
  "size": 139865,
49
- "sha256": "89ca5511e7b1b9cc6d9934f14f581389eeab870cf2b4dadcf47fed908f4256ec"
49
+ "sha256": "4d0e7b8763db3d42380d14e7db123fc21290b80a06612f85f86173e1d7422629"
50
50
  },
51
51
  {
52
52
  "path": "computer/driver.mjs",
@@ -171,7 +171,7 @@
171
171
  {
172
172
  "path": "http-link.js",
173
173
  "size": 181108,
174
- "sha256": "22d722fc1daf1ad387d06f368779b214668749cfb40347a5f6f9b20f5db58917"
174
+ "sha256": "798c9754b2dbcc028ec4c42595ee47c2503ef82fd8ad23ec826eb4b9565d9cc5"
175
175
  },
176
176
  {
177
177
  "path": "log.js",
@@ -181,12 +181,12 @@
181
181
  {
182
182
  "path": "login.js",
183
183
  "size": 144600,
184
- "sha256": "1bc118a613ffe194ad7b3e0272beff5d89a6d4bff8feae8388f375480e5ce601"
184
+ "sha256": "e122a2a3686942abbbe36d785985e0f8ddde07cbc86a279f9761f0dd90c6bab1"
185
185
  },
186
186
  {
187
187
  "path": "main.js",
188
- "size": 579964,
189
- "sha256": "67979b1e57ee491e441e6f8357cf3103a247e3cca456d0c797a54f14ee02caee"
188
+ "size": 580350,
189
+ "sha256": "e17154083cd17b156ab56f4d6ab256d2d95ec325e8ee7ee37255740251f7cc04"
190
190
  },
191
191
  {
192
192
  "path": "mikka-mcp.mjs",
@@ -195,23 +195,23 @@
195
195
  },
196
196
  {
197
197
  "path": "mikka.js",
198
- "size": 634355,
199
- "sha256": "426940e19fa90830a811335718110b06d8220215dbd2129af0c686c9cfce6144"
198
+ "size": 634740,
199
+ "sha256": "905ecad76b53df54f4268237445fa0da27e1fdc6ad1d033e360d3111f9ac6436"
200
200
  },
201
201
  {
202
202
  "path": "npm-shrinkwrap.json",
203
203
  "size": 78117,
204
- "sha256": "2ac3373dc6f77c61596d203399d087855910d09da26b6ce20988e5d1d30ed2a2"
204
+ "sha256": "29f0c09c9836b6f53ec21716fb4e662e6e843eb95b587f53239e7d938fc0225a"
205
205
  },
206
206
  {
207
207
  "path": "package.json",
208
208
  "size": 1247,
209
- "sha256": "b22f89f554d57732b2a5ca4c914da5bc65ea353dbec2a0190a6ec7ca7728be75"
209
+ "sha256": "57cc6ed74e54fa091fe16b008c4a34440e7d188aae4b752e77a7d2cdab14d342"
210
210
  },
211
211
  {
212
212
  "path": "paths.js",
213
213
  "size": 4138,
214
- "sha256": "7466f3398cf914e393f52f1f0789b934bf2a351d4021dd6f1a588308465a8820"
214
+ "sha256": "4dce5b4e25fb8d3f529db5bc4dd20c427b88ef29e8bccc8a6bf35ab445dd9969"
215
215
  },
216
216
  {
217
217
  "path": "sandbox.js",
@@ -221,7 +221,7 @@
221
221
  {
222
222
  "path": "sbom.cdx.json",
223
223
  "size": 144314,
224
- "sha256": "72f782956355dbf14a0c961d1c0e891d2112aa21406f29a141b22e7811423251"
224
+ "sha256": "21aed31e8c01b4a27def6b05a3f3087e6896bc0c5ea01178639e07ae21377894"
225
225
  }
226
226
  ]
227
227
  }
package/mikka.js CHANGED
@@ -4458,7 +4458,7 @@ import { join as join4 } from "node:path";
4458
4458
  // package.json
4459
4459
  var package_default = {
4460
4460
  name: "@mikka/daemon",
4461
- version: "0.0.134",
4461
+ version: "0.0.137",
4462
4462
  description: "Local Mikka daemon: runs agents through the user's own CLIs",
4463
4463
  type: "module",
4464
4464
  private: true,
@@ -4518,7 +4518,7 @@ var package_default = {
4518
4518
  engines: {
4519
4519
  node: ">=24"
4520
4520
  },
4521
- gitHead: "6801dda136789ca969e5efaf57fb8f89ca194c09"
4521
+ gitHead: "686bcc2d8211e09c9ef0ff941fa58bc7fb1eefe6"
4522
4522
  };
4523
4523
 
4524
4524
  // src/paths.ts
@@ -5678,7 +5678,7 @@ async function registrationLogin(options) {
5678
5678
 
5679
5679
  // src/coordinator/runner.ts
5680
5680
  import { mkdirSync as mkdirSync9, mkdtempSync as mkdtempSync3, rmSync as rmSync9, writeFileSync as writeFileSync5 } from "node:fs";
5681
- import { dirname as dirname8, join as join12 } from "node:path";
5681
+ import { dirname as dirname9, join as join12 } from "node:path";
5682
5682
  import { setTimeout as delay } from "node:timers/promises";
5683
5683
  import { z as z30 } from "zod";
5684
5684
 
@@ -6092,7 +6092,7 @@ import {
6092
6092
  rmSync as rmSync5
6093
6093
  } from "node:fs";
6094
6094
  import { tmpdir } from "node:os";
6095
- import { join as join8, resolve as resolve5 } from "node:path";
6095
+ import { dirname as dirname7, join as join8, resolve as resolve5 } from "node:path";
6096
6096
 
6097
6097
  // src/ids.ts
6098
6098
  var SAFE_ID = /^[A-Za-z0-9_-]{1,64}$/;
@@ -6513,7 +6513,8 @@ async function worktreeGitWritePaths(repoPath, worktree, runId) {
6513
6513
  const common = resolve5(gitDir, "..", "..");
6514
6514
  const branch = `mikka/run-${assertSafeId("run id", runId)}`;
6515
6515
  const ref = join8(common, "refs", "heads", branch);
6516
- return [gitDir, join8(common, "objects"), ref, `${ref}.lock`, join8(common, "logs", "refs", "heads", branch)];
6516
+ const logsRef = join8(common, "logs", "refs", "heads", branch);
6517
+ return [gitDir, join8(common, "objects"), dirname7(ref), ref, `${ref}.lock`, dirname7(logsRef), logsRef];
6517
6518
  }
6518
6519
  function safeRealpath(path) {
6519
6520
  try {
@@ -6727,14 +6728,20 @@ exec env NODE_USE_ENV_PROXY=1 ${process.versions.electron ? "ELECTRON_RUN_AS_NOD
6727
6728
  PATH: `${bin}${delimiter}${path}`,
6728
6729
  GH_HOST: "github.com",
6729
6730
  GH_REPO: github.repository,
6731
+ // The agent commits inside the sandbox, where a signing program or agent
6732
+ // configured outside it (gpg, ssh-agent, a signing helper) is unreachable.
6730
6733
  GIT_TERMINAL_PROMPT: "0",
6731
- GIT_CONFIG_COUNT: "3",
6734
+ GIT_CONFIG_COUNT: "5",
6732
6735
  GIT_CONFIG_KEY_0: "credential.helper",
6733
6736
  GIT_CONFIG_VALUE_0: "",
6734
6737
  GIT_CONFIG_KEY_1: "credential.https://github.com.helper",
6735
6738
  GIT_CONFIG_VALUE_1: `!env NODE_USE_ENV_PROXY=1 ${process.versions.electron ? "ELECTRON_RUN_AS_NODE=1 " : ""}${quote(node)} ${quote(helper)} git ${quote(config)}`,
6736
6739
  GIT_CONFIG_KEY_2: "credential.useHttpPath",
6737
6740
  GIT_CONFIG_VALUE_2: "true",
6741
+ GIT_CONFIG_KEY_3: "commit.gpgSign",
6742
+ GIT_CONFIG_VALUE_3: "false",
6743
+ GIT_CONFIG_KEY_4: "tag.gpgSign",
6744
+ GIT_CONFIG_VALUE_4: "false",
6738
6745
  GIT_AUTHOR_NAME: "Mikka Agent",
6739
6746
  GIT_AUTHOR_EMAIL: "agent@mikka.invalid",
6740
6747
  GIT_COMMITTER_NAME: "Mikka Agent",
@@ -6798,7 +6805,7 @@ import {
6798
6805
  writeFileSync as writeFileSync4
6799
6806
  } from "node:fs";
6800
6807
  import { homedir as homedir4 } from "node:os";
6801
- import { dirname as dirname7, join as join11, resolve as resolve7 } from "node:path";
6808
+ import { dirname as dirname8, join as join11, resolve as resolve7 } from "node:path";
6802
6809
 
6803
6810
  // src/agents/skill-artifact.ts
6804
6811
  import { createHash as createHash2 } from "node:crypto";
@@ -7101,7 +7108,7 @@ var RunContext = class {
7101
7108
  for (const file of skill.files) {
7102
7109
  const target = resolve7(dir, file.path);
7103
7110
  if (!target.startsWith(`${dir}/`)) continue;
7104
- mkdirSync8(dirname7(target), { recursive: true });
7111
+ mkdirSync8(dirname8(target), { recursive: true });
7105
7112
  writeFileSync4(target, file.content, "utf8");
7106
7113
  }
7107
7114
  }
@@ -7621,7 +7628,7 @@ sandbox_mode = "read-only"
7621
7628
  env: { ...buildChildEnv(process.env), CODEX_HOME: home.home },
7622
7629
  policy: {
7623
7630
  allowWrite: [dir],
7624
- denyRead: [...credentialDenyRead("codex"), ...daemonSecrets(dirname8(options.stateDir))],
7631
+ denyRead: [...credentialDenyRead("codex"), ...daemonSecrets(dirname9(options.stateDir))],
7625
7632
  allowDomains: HARNESS_DOMAINS.codex
7626
7633
  },
7627
7634
  pidFile: join12(dir, "private", "codex.pid"),
@@ -9692,7 +9699,7 @@ ${firstMessage}` : firstMessage
9692
9699
  // src/adapters/mock.ts
9693
9700
  import { randomUUID as randomUUID4 } from "node:crypto";
9694
9701
  import { mkdirSync as mkdirSync11, readFileSync as readFileSync8, writeFileSync as writeFileSync6 } from "node:fs";
9695
- import { dirname as dirname9, join as join17, resolve as resolve8 } from "node:path";
9702
+ import { dirname as dirname10, join as join17, resolve as resolve8 } from "node:path";
9696
9703
  import { setTimeout as sleep2 } from "node:timers/promises";
9697
9704
  import { execa as execa5 } from "execa";
9698
9705
 
@@ -9843,7 +9850,7 @@ var MockAdapter = class {
9843
9850
  );
9844
9851
  }
9845
9852
  const target = resolve8(options.cwd, line.write.path);
9846
- mkdirSync11(dirname9(target), { recursive: true });
9853
+ mkdirSync11(dirname10(target), { recursive: true });
9847
9854
  writeFileSync6(target, line.write.content);
9848
9855
  }
9849
9856
  if (line.chunk) yield { type: "chunk", chunk: line.chunk };
@@ -10105,7 +10112,7 @@ import { SandboxManager as SandboxManager2 } from "@anthropic-ai/sandbox-runtime
10105
10112
  import { execFile as execFile3 } from "node:child_process";
10106
10113
  import { readdir as readdir2, realpath, stat } from "node:fs/promises";
10107
10114
  import { homedir as homedir5, platform } from "node:os";
10108
- import { basename as basename2, dirname as dirname10, isAbsolute as isAbsolute5, join as join19, resolve as resolve9 } from "node:path";
10115
+ import { basename as basename2, dirname as dirname11, isAbsolute as isAbsolute5, join as join19, resolve as resolve9 } from "node:path";
10109
10116
  import { promisify as promisify3 } from "node:util";
10110
10117
  var run = promisify3(execFile3);
10111
10118
  async function git(cwd, args) {
@@ -10187,7 +10194,7 @@ async function browseFolder(request) {
10187
10194
  isRepo: await exists(join19(full, ".git"))
10188
10195
  });
10189
10196
  }
10190
- const parent = dirname10(path);
10197
+ const parent = dirname11(path);
10191
10198
  return {
10192
10199
  ok: true,
10193
10200
  path,
@@ -10414,7 +10421,7 @@ function harnessFingerprint(store) {
10414
10421
  import { spawn as spawn4 } from "node:child_process";
10415
10422
  import { createHash as createHash5 } from "node:crypto";
10416
10423
  import { existsSync as existsSync5, readFileSync as readFileSync10 } from "node:fs";
10417
- import { dirname as dirname11, join as join22, resolve as resolve10 } from "node:path";
10424
+ import { dirname as dirname12, join as join22, resolve as resolve10 } from "node:path";
10418
10425
  import { fileURLToPath as fileURLToPath2 } from "node:url";
10419
10426
  import { execa as execa9 } from "execa";
10420
10427
 
@@ -10673,7 +10680,7 @@ function containerMounts(policy, gitCommonDir2) {
10673
10680
  if (gitCommonDir2) mounts.set(gitCommonDir2, "ro");
10674
10681
  for (const path of policy.allowWrite) mounts.set(path, "rw");
10675
10682
  for (const path of policy.denyWrite ?? []) if (existsSync5(path)) mounts.set(path, "ro");
10676
- for (const path of [MCP_SERVER_SCRIPT, join22(dirname11(MCP_SERVER_SCRIPT), "capture-copy.mjs")]) mounts.set(path, "ro");
10683
+ for (const path of [MCP_SERVER_SCRIPT, join22(dirname12(MCP_SERVER_SCRIPT), "capture-copy.mjs")]) mounts.set(path, "ro");
10677
10684
  return [...mounts].flatMap(([path, mode]) => ["-v", `${path}:${path}:${mode}`]);
10678
10685
  }
10679
10686
  function containerArgs(options) {
@@ -10872,7 +10879,7 @@ function createLocalSubscriptionRunner(host) {
10872
10879
 
10873
10880
  // src/sandbox-tools.ts
10874
10881
  import { chmodSync as chmodSync2, existsSync as existsSync6, lstatSync as lstatSync8, mkdirSync as mkdirSync14, mkdtempSync as mkdtempSync6, readdirSync as readdirSync6, readlinkSync as readlinkSync2, renameSync as renameSync3, rmSync as rmSync14, writeFileSync as writeFileSync8 } from "node:fs";
10875
- import { dirname as dirname12, isAbsolute as isAbsolute7, join as join25 } from "node:path";
10882
+ import { dirname as dirname13, isAbsolute as isAbsolute7, join as join25 } from "node:path";
10876
10883
  import { execa as execa10 } from "execa";
10877
10884
 
10878
10885
  // src/path-search.ts
@@ -10953,7 +10960,7 @@ function resolveUnpackedBinary(root, command) {
10953
10960
  for (let hops = 0; hops < 10; hops++) {
10954
10961
  if (!lstatSync8(path).isSymbolicLink()) return path;
10955
10962
  const target = readlinkSync2(path);
10956
- path = isAbsolute7(target) ? join25(root, `.${target}`) : join25(dirname12(path), target);
10963
+ path = isAbsolute7(target) ? join25(root, `.${target}`) : join25(dirname13(path), target);
10957
10964
  }
10958
10965
  throw new Error(`${command} resolves through too many symlinks`);
10959
10966
  }
@@ -13229,7 +13236,7 @@ function fixedCandidateCheck(assignment) {
13229
13236
  // src/repositories.ts
13230
13237
  import { createHash as createHash7, randomUUID as randomUUID7 } from "node:crypto";
13231
13238
  import { existsSync as existsSync7, lstatSync as lstatSync9, mkdirSync as mkdirSync16, readdirSync as readdirSync8, realpathSync as realpathSync10, renameSync as renameSync4, rmSync as rmSync18 } from "node:fs";
13232
- import { dirname as dirname13, join as join29, resolve as resolve12 } from "node:path";
13239
+ import { dirname as dirname14, join as join29, resolve as resolve12 } from "node:path";
13233
13240
  import { setTimeout as delay2 } from "node:timers/promises";
13234
13241
  import { execa as execa14 } from "execa";
13235
13242
  import lockfile2 from "proper-lockfile";
@@ -13253,7 +13260,7 @@ var RepositoryCache = class {
13253
13260
  signal?.throwIfAborted();
13254
13261
  const { remoteUrl: remote } = normalizeRepository(remoteUrl, { allowFile: this.allowFile });
13255
13262
  const path = this.pathFor(remote);
13256
- this.ensureParents(dirname13(path));
13263
+ this.ensureParents(dirname14(path));
13257
13264
  const release = await this.lock(path, signal);
13258
13265
  try {
13259
13266
  return await withRepoConfig(path, () => this.update(path, remote, signal));
@@ -13351,7 +13358,7 @@ import {
13351
13358
  rmSync as rmSync19
13352
13359
  } from "node:fs";
13353
13360
  import { createRequire } from "node:module";
13354
- import { delimiter as delimiter3, dirname as dirname14, join as join30 } from "node:path";
13361
+ import { delimiter as delimiter3, dirname as dirname15, join as join30 } from "node:path";
13355
13362
  import { fileURLToPath as fileURLToPath3 } from "node:url";
13356
13363
  import { promisify as promisify6 } from "node:util";
13357
13364
  var exec3 = promisify6(execFile6);
@@ -13428,7 +13435,7 @@ async function createHostedBotRunner(host) {
13428
13435
  require2.resolve("@anthropic-ai/claude-agent-sdk")
13429
13436
  );
13430
13437
  claude ??= join30(
13431
- dirname14(
13438
+ dirname15(
13432
13439
  bundled.resolve(
13433
13440
  "@anthropic-ai/claude-agent-sdk-linux-x64/package.json"
13434
13441
  )
@@ -13719,7 +13726,7 @@ async function createHostedBotRunner(host) {
13719
13726
  const previous = readJson(ledger);
13720
13727
  if (existsSync8(ledger) && (!previous || JSON.stringify(previous.scope) !== JSON.stringify(scope) || typeof previous.sessionId !== "string"))
13721
13728
  throw unavailable3();
13722
- mkdirSync17(dirname14(ledger), { recursive: true, mode: 448 });
13729
+ mkdirSync17(dirname15(ledger), { recursive: true, mode: 448 });
13723
13730
  const record = async (sessionId) => {
13724
13731
  assertOpen();
13725
13732
  writeJsonAtomic(ledger, { scope, sessionId });
@@ -13823,7 +13830,7 @@ async function createHostedBotRunner(host) {
13823
13830
  `${MCP_SERVER_SCRIPT}:${MCP_SERVER_SCRIPT}:ro`,
13824
13831
  ...githubCli ? ["-v", `${githubCli}:/usr/local/bin/mikka-gh:ro`, "-v", `${GITHUB_CREDENTIAL_SCRIPT}:${GITHUB_CREDENTIAL_SCRIPT}:ro`] : [],
13825
13832
  "-v",
13826
- `${join30(dirname14(MCP_SERVER_SCRIPT), "capture-copy.mjs")}:${join30(dirname14(MCP_SERVER_SCRIPT), "capture-copy.mjs")}:ro`,
13833
+ `${join30(dirname15(MCP_SERVER_SCRIPT), "capture-copy.mjs")}:${join30(dirname15(MCP_SERVER_SCRIPT), "capture-copy.mjs")}:ro`,
13827
13834
  "-v",
13828
13835
  `${readyBroker.socket}:/run/mikka-native.sock:ro`,
13829
13836
  ...computerGrant ? [
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@aspectlylabs/mikka",
3
- "version": "0.0.134",
3
+ "version": "0.0.137",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@aspectlylabs/mikka",
9
- "version": "0.0.134",
9
+ "version": "0.0.137",
10
10
  "license": "AGPL-3.0-only",
11
11
  "dependencies": {
12
12
  "@agentclientprotocol/sdk": "1.9.0",
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@aspectlylabs/mikka",
3
- "version": "0.0.134",
3
+ "version": "0.0.137",
4
4
  "description": "Local Mikka daemon: runs agents through the user's own CLIs",
5
- "gitHead": "6801dda136789ca969e5efaf57fb8f89ca194c09",
5
+ "gitHead": "686bcc2d8211e09c9ef0ff941fa58bc7fb1eefe6",
6
6
  "type": "module",
7
7
  "private": false,
8
8
  "license": "AGPL-3.0-only",
package/paths.js CHANGED
@@ -6,7 +6,7 @@ import { join } from "node:path";
6
6
  // package.json
7
7
  var package_default = {
8
8
  name: "@mikka/daemon",
9
- version: "0.0.134",
9
+ version: "0.0.137",
10
10
  description: "Local Mikka daemon: runs agents through the user's own CLIs",
11
11
  type: "module",
12
12
  private: true,
@@ -66,7 +66,7 @@ var package_default = {
66
66
  engines: {
67
67
  node: ">=24"
68
68
  },
69
- gitHead: "6801dda136789ca969e5efaf57fb8f89ca194c09"
69
+ gitHead: "686bcc2d8211e09c9ef0ff941fa58bc7fb1eefe6"
70
70
  };
71
71
 
72
72
  // src/paths.ts
package/sbom.cdx.json CHANGED
@@ -2,10 +2,10 @@
2
2
  "$schema": "http://cyclonedx.org/schema/bom-1.5.schema.json",
3
3
  "bomFormat": "CycloneDX",
4
4
  "specVersion": "1.5",
5
- "serialNumber": "urn:uuid:56d62fc0-4793-4fcd-80d3-16853540ba71",
5
+ "serialNumber": "urn:uuid:0263a7a3-87ac-42e7-9814-6ac65813ffb7",
6
6
  "version": 1,
7
7
  "metadata": {
8
- "timestamp": "2026-11-01T04:32:25.754Z",
8
+ "timestamp": "2026-11-01T04:42:17.485Z",
9
9
  "lifecycles": [
10
10
  {
11
11
  "phase": "pre-build"
@@ -19,13 +19,13 @@
19
19
  }
20
20
  ],
21
21
  "component": {
22
- "bom-ref": "@aspectlylabs/mikka@0.0.134",
22
+ "bom-ref": "@aspectlylabs/mikka@0.0.137",
23
23
  "type": "library",
24
- "name": ".retained-build-ayyqrk",
25
- "version": "0.0.134",
24
+ "name": ".retained-build-DRDmmY",
25
+ "version": "0.0.137",
26
26
  "scope": "required",
27
27
  "description": "Local Mikka daemon: runs agents through the user's own CLIs",
28
- "purl": "pkg:npm/%40aspectlylabs/mikka@0.0.134",
28
+ "purl": "pkg:npm/%40aspectlylabs/mikka@0.0.137",
29
29
  "properties": [],
30
30
  "externalReferences": [
31
31
  {
@@ -4627,7 +4627,7 @@
4627
4627
  ],
4628
4628
  "dependencies": [
4629
4629
  {
4630
- "ref": "@aspectlylabs/mikka@0.0.134",
4630
+ "ref": "@aspectlylabs/mikka@0.0.137",
4631
4631
  "dependsOn": [
4632
4632
  "@agentclientprotocol/sdk@1.9.0",
4633
4633
  "@anthropic-ai/claude-agent-sdk@0.3.305",