@aspectlylabs/mikka 0.0.27 → 0.0.46

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.
@@ -0,0 +1,71 @@
1
+ # Third-party notices
2
+
3
+ ## codeburn
4
+
5
+ The subscription-quota readers under `packages/daemon/src/quota/`
6
+ (`claude.ts`, `codex.ts`, `cursor.ts`, `files.ts`, and the usage-response
7
+ parsing in `parse.ts`) are adapted from
8
+ [codeburn](https://github.com/getagentseal/codeburn), Copyright (c) 2026
9
+ AgentSeal, licensed under the MIT License below.
10
+
11
+ The port is read-only. codeburn can refresh a Codex token and write
12
+ `~/.codex/auth.json`; Mikka does not. See `docs/adr/0027-local-credential-quota.md`.
13
+
14
+ ```
15
+ MIT License
16
+
17
+ Copyright (c) 2026 AgentSeal
18
+
19
+ Permission is hereby granted, free of charge, to any person obtaining a copy
20
+ of this software and associated documentation files (the "Software"), to deal
21
+ in the Software without restriction, including without limitation the rights
22
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
23
+ copies of the Software, and to permit persons to whom the Software is
24
+ furnished to do so, subject to the following conditions:
25
+
26
+ The above copyright notice and this permission notice shall be included in all
27
+ copies or substantial portions of the Software.
28
+
29
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
32
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
33
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
34
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
35
+ SOFTWARE.
36
+ ```
37
+
38
+ ## CUA standalone driver
39
+
40
+ Mikka's optional local/isolated computer adapter invokes the standalone
41
+ [cua-driver-rs 0.38.0](https://github.com/trycua/cua/releases/tag/cua-driver-rs-v0.38.0)
42
+ from CUA. Its Rust workspace declares MIT at upstream revision
43
+ `85e2b1318bd77ccf3cfa88ccdf875a4bb7eaed19`; the copyright and license below
44
+ are reproduced from that revision's `LICENSE.md`. Mikka does not install
45
+ `cua-perception`, OmniParser, Cua Spaces or `cua-spacesd`. The daemon npm
46
+ package contains the adapter and this notice; users/isolated CI supply the
47
+ separate driver binary. No CUA source is represented as Mikka-owned code.
48
+
49
+ ```text
50
+ MIT License
51
+
52
+ Copyright (c) 2025 Cua AI, Inc.
53
+
54
+ Permission is hereby granted, free of charge, to any person obtaining a copy
55
+ of this software and associated documentation files (the "Software"), to deal
56
+ in the Software without restriction, including without limitation the rights
57
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
58
+ copies of the Software, and to permit persons to whom the Software is
59
+ furnished to do so, subject to the following conditions:
60
+
61
+ The above copyright notice and this permission notice shall be included in all
62
+ copies or substantial portions of the Software.
63
+
64
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
65
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
66
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
67
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
68
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
69
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
70
+ SOFTWARE.
71
+ ```
package/cli.js CHANGED
@@ -2449,8 +2449,8 @@ var READ_ONLY_DENIED = [
2449
2449
  "git_push",
2450
2450
  "computer_use"
2451
2451
  ];
2452
- var runPolicySchema = z2.object({
2453
- permissions: z2.object({
2452
+ var runPolicySchema = z2.strictObject({
2453
+ permissions: z2.strictObject({
2454
2454
  install_dependency: z2.enum(PERMISSION_DECISIONS),
2455
2455
  write_outside_repo: z2.enum(PERMISSION_DECISIONS),
2456
2456
  git_push: z2.enum(PERMISSION_DECISIONS),
@@ -2728,6 +2728,14 @@ var harnessInfoSchema = z6.object({
2728
2728
  harness: harnessSchema,
2729
2729
  installed: z6.boolean(),
2730
2730
  models: z6.array(z6.string().trim().min(1).max(128)).max(500).optional(),
2731
+ modelSlots: z6.array(
2732
+ z6.object({
2733
+ slot: z6.string().trim().min(1).max(128).refine((v2) => v2 !== "auto"),
2734
+ model: z6.string().trim().min(1).max(128),
2735
+ name: z6.string().trim().min(1).max(200)
2736
+ })
2737
+ ).max(500).optional(),
2738
+ defaultModelSlot: z6.string().trim().min(1).max(128).optional(),
2731
2739
  /** Deprecated (#312, 2026-10-27): could host the native Coordinator. The server keeps that runtime switched off. */
2732
2740
  coordinator: z6.boolean().optional(),
2733
2741
  /** Set only by a runner with an isolated, owner-bound subscription broker. */
@@ -3209,9 +3217,10 @@ import { z as z12 } from "zod";
3209
3217
  // ../protocol/src/skill-artifact.ts
3210
3218
  import { z as z11 } from "zod";
3211
3219
  var SKILL_ARTIFACT_HEADER = "x-mikka-skill-artifacts";
3220
+ var TEAM_SKILL_HEADER = "x-mikka-team-skills";
3212
3221
  var skillArtifactRefSchema = z11.object({
3213
3222
  schemaVersion: z11.literal(1),
3214
- registryId: z11.literal("mikka-builtin"),
3223
+ registryId: z11.enum(["mikka-builtin", "mikka-team"]),
3215
3224
  skillId: z11.uuid(),
3216
3225
  versionId: z11.uuid(),
3217
3226
  format: z11.literal("single-skill-md-v1"),
@@ -4299,7 +4308,7 @@ import { join as join3 } from "node:path";
4299
4308
  // package.json
4300
4309
  var package_default = {
4301
4310
  name: "@mikka/daemon",
4302
- version: "0.0.27",
4311
+ version: "0.0.46",
4303
4312
  description: "Local Mikka daemon: runs agents through the user's own CLIs",
4304
4313
  type: "module",
4305
4314
  private: true,
@@ -4358,7 +4367,7 @@ var package_default = {
4358
4367
  engines: {
4359
4368
  node: ">=24"
4360
4369
  },
4361
- gitHead: "a703b0efc59761627d740012d1c2f762bf218b25"
4370
+ gitHead: "f8a9004cc92c7cec4e822e0463123212b9b53025"
4362
4371
  };
4363
4372
 
4364
4373
  // src/paths.ts
@@ -5119,6 +5128,7 @@ var HttpServerLink = class {
5119
5128
  "content-type": "application/json",
5120
5129
  [CLIENT_VERSION_HEADER]: this.clientVersion,
5121
5130
  [SKILL_ARTIFACT_HEADER]: "1",
5131
+ [TEAM_SKILL_HEADER]: "1",
5122
5132
  [REPO_ORIGIN_HEADER]: "1",
5123
5133
  [RECOVERY_WORKTREE_HEADER]: "1",
5124
5134
  ...token ? { authorization: `Bearer ${token}` } : {},
@@ -9841,7 +9851,54 @@ import { execa as execa9 } from "execa";
9841
9851
 
9842
9852
  // src/harness-models.ts
9843
9853
  import { execa as execa8 } from "execa";
9844
- async function detectHarnessModels(harness, binary) {
9854
+ function claudeDiscoveryEnv(host = process.env) {
9855
+ const env = buildChildEnv({ host });
9856
+ for (const slot of ["OPUS", "SONNET", "HAIKU"]) {
9857
+ const key2 = `ANTHROPIC_DEFAULT_${slot}_MODEL`;
9858
+ const value = host[key2];
9859
+ if (value && /^[a-zA-Z0-9._:/-]{1,128}$/.test(value)) env[key2] = value;
9860
+ }
9861
+ return env;
9862
+ }
9863
+ function claudeModelCatalogue(rows) {
9864
+ const modelSlots = rows.filter((r) => r.resolvedModel && r.value !== "auto").map((r) => ({
9865
+ slot: r.value,
9866
+ model: r.resolvedModel,
9867
+ name: r.resolvedModel
9868
+ }));
9869
+ return {
9870
+ models: modelSlots.map((r) => r.slot),
9871
+ modelSlots,
9872
+ ...modelSlots.some((r) => r.slot === "opus") ? { defaultModelSlot: "opus" } : {}
9873
+ };
9874
+ }
9875
+ async function detectHarnessCatalogue(harness, binary) {
9876
+ if (harness === "claude_code") {
9877
+ const { query: query3 } = await import("@anthropic-ai/claude-agent-sdk");
9878
+ const controller = new AbortController();
9879
+ const timer = setTimeout(() => controller.abort(), 5e3);
9880
+ const session = query3({
9881
+ prompt: (async function* () {
9882
+ })(),
9883
+ options: {
9884
+ pathToClaudeCodeExecutable: binary,
9885
+ env: claudeDiscoveryEnv(),
9886
+ abortController: controller,
9887
+ settingSources: ["user", "project", "local"]
9888
+ }
9889
+ });
9890
+ try {
9891
+ return claudeModelCatalogue(await session.supportedModels());
9892
+ } catch {
9893
+ return {};
9894
+ } finally {
9895
+ clearTimeout(timer);
9896
+ session.close();
9897
+ }
9898
+ }
9899
+ return await discover(harness, binary);
9900
+ }
9901
+ async function discover(harness, binary) {
9845
9902
  const options = {
9846
9903
  env: buildChildEnv(),
9847
9904
  extendEnv: false,
@@ -9857,9 +9914,9 @@ async function detectHarnessModels(harness, binary) {
9857
9914
  );
9858
9915
  return match ? [match[1]] : [];
9859
9916
  });
9860
- return models.length ? [...new Set(models)].slice(0, 500) : void 0;
9917
+ return { models: [...new Set(models)].slice(0, 500) };
9861
9918
  }
9862
- if (harness !== "codex") return void 0;
9919
+ if (harness !== "codex") return {};
9863
9920
  const child = execa8(binary, ["app-server"], { ...options, stdin: "pipe" });
9864
9921
  const completion = child.catch(() => void 0);
9865
9922
  child.stdin.write(
@@ -9873,7 +9930,7 @@ async function detectHarnessModels(harness, binary) {
9873
9930
  try {
9874
9931
  for await (const chunk of child.stdout) {
9875
9932
  pending += chunk.toString();
9876
- if (pending.length > 1e6) return void 0;
9933
+ if (pending.length > 1e6) return {};
9877
9934
  let newline;
9878
9935
  while ((newline = pending.indexOf("\n")) >= 0) {
9879
9936
  const line = pending.slice(0, newline);
@@ -9898,14 +9955,31 @@ async function detectHarnessModels(harness, binary) {
9898
9955
  }
9899
9956
  if (reply.id === 2) {
9900
9957
  const rows = reply.result?.data;
9901
- if (!Array.isArray(rows)) return void 0;
9902
- return [
9903
- ...new Set(
9904
- rows.flatMap(
9905
- (row) => typeof row.model === "string" && row.model.length <= 128 ? [row.model] : []
9906
- )
9907
- )
9908
- ];
9958
+ if (!Array.isArray(rows)) return {};
9959
+ const models = rows.filter(
9960
+ (r) => typeof r.model === "string" && r.model.length <= 128
9961
+ );
9962
+ const modelSlots = models.map(
9963
+ (r) => ({
9964
+ slot: r.model,
9965
+ model: r.model,
9966
+ name: r.displayName ?? r.model
9967
+ })
9968
+ );
9969
+ const selected = models.find(
9970
+ (r) => r.isDefault
9971
+ );
9972
+ if (selected)
9973
+ modelSlots.push({
9974
+ slot: "default",
9975
+ model: selected.model,
9976
+ name: selected.displayName ?? selected.model
9977
+ });
9978
+ return {
9979
+ models: models.map((r) => r.model),
9980
+ modelSlots,
9981
+ ...selected ? { defaultModelSlot: "default" } : {}
9982
+ };
9909
9983
  }
9910
9984
  }
9911
9985
  }
@@ -9915,7 +9989,7 @@ async function detectHarnessModels(harness, binary) {
9915
9989
  }
9916
9990
  } catch {
9917
9991
  }
9918
- return void 0;
9992
+ return {};
9919
9993
  }
9920
9994
 
9921
9995
  // src/harnesses.ts
@@ -9945,8 +10019,8 @@ async function detectHarnesses() {
9945
10019
  for (const binary of HARNESS_BINARIES[harness]) {
9946
10020
  const version = await versionOf(binary);
9947
10021
  if (version) {
9948
- const models = await detectHarnessModels(harness, binary);
9949
- return { harness, installed: true, version, ...models?.length ? { models } : {} };
10022
+ const catalogue = await detectHarnessCatalogue(harness, binary);
10023
+ return { harness, installed: true, version, ...catalogue };
9950
10024
  }
9951
10025
  }
9952
10026
  return { harness, installed: false, version: null };
@@ -12471,6 +12545,11 @@ var RunSupervisor = class {
12471
12545
  verifySkillAssignment(assignment);
12472
12546
  if (assignment.skillReceipt && (this.leases.get(runId) ?? 0) <= Date.now())
12473
12547
  throw new Error("Receipted Skill assignment requires a current server lease");
12548
+ if (assignment.skillReceipt?.artifact.registryId === "mikka-team") {
12549
+ if (!this.deps.revalidateSkillAssignment) throw new Error("Current team Skill authorization unavailable");
12550
+ const current = await this.deps.revalidateSkillAssignment(assignment);
12551
+ this.leases.set(runId, Date.parse(verifySkillResume(assignment, current)));
12552
+ }
12474
12553
  const adapter = this.adapterFor(runId);
12475
12554
  if (assignment.requireSessionResume && entry.questionResumeState === "starting")
12476
12555
  throw new Error(
@@ -12948,7 +13027,7 @@ var RepositoryCache = class {
12948
13027
  "-c",
12949
13028
  `protocol.file.allow=${this.allowFile ? "always" : "never"}`,
12950
13029
  ...args
12951
- ], { cwd, env: { ...process.env, GIT_TERMINAL_PROMPT: "0" }, stdin: "ignore", timeout: FETCH_TIMEOUT_MS, cancelSignal: signal });
13030
+ ], { cwd, env: { ...process.env, GIT_TERMINAL_PROMPT: "0" }, stdin: "ignore", timeout: FETCH_TIMEOUT_MS, cancelSignal: signal, killDescendants: true });
12952
13031
  if (!existsSync5(path)) {
12953
13032
  const temporary = `${path}.clone-${randomUUID7()}`;
12954
13033
  try {
@@ -13991,7 +14070,7 @@ function driverArguments(input, platform3 = process.platform) {
13991
14070
  scope: "desktop",
13992
14071
  ...platform3 === "darwin" ? {} : { coordinate_frame: "desktop" },
13993
14072
  delivery_mode: "foreground"
13994
- } : call.name === "press_key" ? { ...call.arguments, scope: "desktop", delivery_mode: "foreground" } : call.name === "scroll" ? { ...call.arguments, scope: "desktop", ...platform3 === "darwin" ? {} : { coordinate_frame: "desktop" }, delivery_mode: "foreground" } : call.arguments;
14073
+ } : ["type_text", "press_key"].includes(call.name) ? { ...call.arguments, scope: "desktop", delivery_mode: "foreground" } : call.name === "scroll" ? { ...call.arguments, scope: "desktop", ...platform3 === "darwin" ? {} : { coordinate_frame: "desktop" }, delivery_mode: "foreground" } : call.arguments;
13995
14074
  }
13996
14075
  async function executeDriver(driver, input, display, leaseGuard, assertLive = () => {
13997
14076
  }, beforeAction) {
package/client.js CHANGED
@@ -2095,8 +2095,8 @@ var storedPermissionsSchema = z2.strictObject({
2095
2095
  computer_use: z2.enum(CONFIGURABLE_PERMISSIONS.computer_use)
2096
2096
  }).partial();
2097
2097
  var guidanceSchema = z2.string().max(MAX_GUIDANCE_LENGTH);
2098
- var runPolicySchema = z2.object({
2099
- permissions: z2.object({
2098
+ var runPolicySchema = z2.strictObject({
2099
+ permissions: z2.strictObject({
2100
2100
  install_dependency: z2.enum(PERMISSION_DECISIONS),
2101
2101
  write_outside_repo: z2.enum(PERMISSION_DECISIONS),
2102
2102
  git_push: z2.enum(PERMISSION_DECISIONS),
@@ -2335,6 +2335,14 @@ var harnessInfoSchema = z6.object({
2335
2335
  harness: harnessSchema,
2336
2336
  installed: z6.boolean(),
2337
2337
  models: z6.array(z6.string().trim().min(1).max(128)).max(500).optional(),
2338
+ modelSlots: z6.array(
2339
+ z6.object({
2340
+ slot: z6.string().trim().min(1).max(128).refine((v2) => v2 !== "auto"),
2341
+ model: z6.string().trim().min(1).max(128),
2342
+ name: z6.string().trim().min(1).max(200)
2343
+ })
2344
+ ).max(500).optional(),
2345
+ defaultModelSlot: z6.string().trim().min(1).max(128).optional(),
2338
2346
  /** Deprecated (#312, 2026-10-27): could host the native Coordinator. The server keeps that runtime switched off. */
2339
2347
  coordinator: z6.boolean().optional(),
2340
2348
  /** Set only by a runner with an isolated, owner-bound subscription broker. */
@@ -2727,7 +2735,7 @@ import { z as z12 } from "zod";
2727
2735
  import { z as z11 } from "zod";
2728
2736
  var skillArtifactRefSchema = z11.object({
2729
2737
  schemaVersion: z11.literal(1),
2730
- registryId: z11.literal("mikka-builtin"),
2738
+ registryId: z11.enum(["mikka-builtin", "mikka-team"]),
2731
2739
  skillId: z11.uuid(),
2732
2740
  versionId: z11.uuid(),
2733
2741
  format: z11.literal("single-skill-md-v1"),
@@ -3633,7 +3641,7 @@ import { join } from "node:path";
3633
3641
  // package.json
3634
3642
  var package_default = {
3635
3643
  name: "@mikka/daemon",
3636
- version: "0.0.27",
3644
+ version: "0.0.46",
3637
3645
  description: "Local Mikka daemon: runs agents through the user's own CLIs",
3638
3646
  type: "module",
3639
3647
  private: true,
@@ -3692,7 +3700,7 @@ var package_default = {
3692
3700
  engines: {
3693
3701
  node: ">=24"
3694
3702
  },
3695
- gitHead: "a703b0efc59761627d740012d1c2f762bf218b25"
3703
+ gitHead: "f8a9004cc92c7cec4e822e0463123212b9b53025"
3696
3704
  };
3697
3705
 
3698
3706
  // src/paths.ts
@@ -1,3 +1,5 @@
1
+ // Invokes the optional standalone cua-driver 0.38.0 (MIT), Copyright (c) 2025 Cua AI, Inc.
2
+ // See packages/daemon/THIRD_PARTY_NOTICES.md. No perception or Spaces extension is installed here.
1
3
  import { spawn } from "node:child_process";
2
4
  import { execFile } from "node:child_process";
3
5
  import { promisify } from "node:util";
@@ -161,7 +163,7 @@ export function driverArguments(input, platform = process.platform) {
161
163
  ? { ...call.arguments, scope: "desktop",
162
164
  ...(platform === "darwin" ? {} : { coordinate_frame: "desktop" }),
163
165
  delivery_mode: "foreground" }
164
- : call.name === "press_key" ? { ...call.arguments, scope: "desktop", delivery_mode: "foreground" }
166
+ : ["type_text", "press_key"].includes(call.name) ? { ...call.arguments, scope: "desktop", delivery_mode: "foreground" }
165
167
  : call.name === "scroll" ? { ...call.arguments, scope: "desktop", ...(platform === "darwin" ? {} : { coordinate_frame: "desktop" }), delivery_mode: "foreground" }
166
168
  : call.arguments;
167
169
  }
package/http-link.js CHANGED
@@ -2219,8 +2219,8 @@ var storedPermissionsSchema = z2.strictObject({
2219
2219
  computer_use: z2.enum(CONFIGURABLE_PERMISSIONS.computer_use)
2220
2220
  }).partial();
2221
2221
  var guidanceSchema = z2.string().max(MAX_GUIDANCE_LENGTH);
2222
- var runPolicySchema = z2.object({
2223
- permissions: z2.object({
2222
+ var runPolicySchema = z2.strictObject({
2223
+ permissions: z2.strictObject({
2224
2224
  install_dependency: z2.enum(PERMISSION_DECISIONS),
2225
2225
  write_outside_repo: z2.enum(PERMISSION_DECISIONS),
2226
2226
  git_push: z2.enum(PERMISSION_DECISIONS),
@@ -2323,9 +2323,10 @@ import { z as z4 } from "zod";
2323
2323
  // ../protocol/src/skill-artifact.ts
2324
2324
  import { z as z3 } from "zod";
2325
2325
  var SKILL_ARTIFACT_HEADER = "x-mikka-skill-artifacts";
2326
+ var TEAM_SKILL_HEADER = "x-mikka-team-skills";
2326
2327
  var skillArtifactRefSchema = z3.object({
2327
2328
  schemaVersion: z3.literal(1),
2328
- registryId: z3.literal("mikka-builtin"),
2329
+ registryId: z3.enum(["mikka-builtin", "mikka-team"]),
2329
2330
  skillId: z3.uuid(),
2330
2331
  versionId: z3.uuid(),
2331
2332
  format: z3.literal("single-skill-md-v1"),
@@ -2828,6 +2829,14 @@ var harnessInfoSchema = z13.object({
2828
2829
  harness: harnessSchema,
2829
2830
  installed: z13.boolean(),
2830
2831
  models: z13.array(z13.string().trim().min(1).max(128)).max(500).optional(),
2832
+ modelSlots: z13.array(
2833
+ z13.object({
2834
+ slot: z13.string().trim().min(1).max(128).refine((v2) => v2 !== "auto"),
2835
+ model: z13.string().trim().min(1).max(128),
2836
+ name: z13.string().trim().min(1).max(200)
2837
+ })
2838
+ ).max(500).optional(),
2839
+ defaultModelSlot: z13.string().trim().min(1).max(128).optional(),
2831
2840
  /** Deprecated (#312, 2026-10-27): could host the native Coordinator. The server keeps that runtime switched off. */
2832
2841
  coordinator: z13.boolean().optional(),
2833
2842
  /** Set only by a runner with an isolated, owner-bound subscription broker. */
@@ -3934,7 +3943,7 @@ var InvalidIdError = class extends DaemonError {
3934
3943
  // package.json
3935
3944
  var package_default = {
3936
3945
  name: "@mikka/daemon",
3937
- version: "0.0.27",
3946
+ version: "0.0.46",
3938
3947
  description: "Local Mikka daemon: runs agents through the user's own CLIs",
3939
3948
  type: "module",
3940
3949
  private: true,
@@ -3993,7 +4002,7 @@ var package_default = {
3993
4002
  engines: {
3994
4003
  node: ">=24"
3995
4004
  },
3996
- gitHead: "a703b0efc59761627d740012d1c2f762bf218b25"
4005
+ gitHead: "f8a9004cc92c7cec4e822e0463123212b9b53025"
3997
4006
  };
3998
4007
 
3999
4008
  // src/paths.ts
@@ -4312,6 +4321,7 @@ var HttpServerLink = class {
4312
4321
  "content-type": "application/json",
4313
4322
  [CLIENT_VERSION_HEADER]: this.clientVersion,
4314
4323
  [SKILL_ARTIFACT_HEADER]: "1",
4324
+ [TEAM_SKILL_HEADER]: "1",
4315
4325
  [REPO_ORIGIN_HEADER]: "1",
4316
4326
  [RECOVERY_WORKTREE_HEADER]: "1",
4317
4327
  ...token ? { authorization: `Bearer ${token}` } : {},
package/login.js CHANGED
@@ -2091,8 +2091,8 @@ var storedPermissionsSchema = z2.strictObject({
2091
2091
  computer_use: z2.enum(CONFIGURABLE_PERMISSIONS.computer_use)
2092
2092
  }).partial();
2093
2093
  var guidanceSchema = z2.string().max(MAX_GUIDANCE_LENGTH);
2094
- var runPolicySchema = z2.object({
2095
- permissions: z2.object({
2094
+ var runPolicySchema = z2.strictObject({
2095
+ permissions: z2.strictObject({
2096
2096
  install_dependency: z2.enum(PERMISSION_DECISIONS),
2097
2097
  write_outside_repo: z2.enum(PERMISSION_DECISIONS),
2098
2098
  git_push: z2.enum(PERMISSION_DECISIONS),
@@ -2332,6 +2332,14 @@ var harnessInfoSchema = z6.object({
2332
2332
  harness: harnessSchema,
2333
2333
  installed: z6.boolean(),
2334
2334
  models: z6.array(z6.string().trim().min(1).max(128)).max(500).optional(),
2335
+ modelSlots: z6.array(
2336
+ z6.object({
2337
+ slot: z6.string().trim().min(1).max(128).refine((v2) => v2 !== "auto"),
2338
+ model: z6.string().trim().min(1).max(128),
2339
+ name: z6.string().trim().min(1).max(200)
2340
+ })
2341
+ ).max(500).optional(),
2342
+ defaultModelSlot: z6.string().trim().min(1).max(128).optional(),
2335
2343
  /** Deprecated (#312, 2026-10-27): could host the native Coordinator. The server keeps that runtime switched off. */
2336
2344
  coordinator: z6.boolean().optional(),
2337
2345
  /** Set only by a runner with an isolated, owner-bound subscription broker. */
@@ -2723,7 +2731,7 @@ import { z as z12 } from "zod";
2723
2731
  import { z as z11 } from "zod";
2724
2732
  var skillArtifactRefSchema = z11.object({
2725
2733
  schemaVersion: z11.literal(1),
2726
- registryId: z11.literal("mikka-builtin"),
2734
+ registryId: z11.enum(["mikka-builtin", "mikka-team"]),
2727
2735
  skillId: z11.uuid(),
2728
2736
  versionId: z11.uuid(),
2729
2737
  format: z11.literal("single-skill-md-v1"),
@@ -3640,7 +3648,7 @@ var ServerUnreachableError = class extends DaemonError {
3640
3648
  // package.json
3641
3649
  var package_default = {
3642
3650
  name: "@mikka/daemon",
3643
- version: "0.0.27",
3651
+ version: "0.0.46",
3644
3652
  description: "Local Mikka daemon: runs agents through the user's own CLIs",
3645
3653
  type: "module",
3646
3654
  private: true,
@@ -3699,7 +3707,7 @@ var package_default = {
3699
3707
  engines: {
3700
3708
  node: ">=24"
3701
3709
  },
3702
- gitHead: "a703b0efc59761627d740012d1c2f762bf218b25"
3710
+ gitHead: "f8a9004cc92c7cec4e822e0463123212b9b53025"
3703
3711
  };
3704
3712
 
3705
3713
  // src/paths.ts