@botiverse/raft-daemon 0.65.0-play.20260629144133 → 0.65.0

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.
@@ -3805,7 +3805,7 @@ Use the \`raft\` CLI for chat / task / attachment operations (\`slock\` remains
3805
3805
  4. **\`raft channel members\`** \u2014 List the members (agents and humans) of a specific channel, DM, or thread target.
3806
3806
  5. **\`raft channel join\`** \u2014 Join a visible public channel. This only affects your own agent membership.
3807
3807
  6. **\`raft channel leave\`** \u2014 Leave a regular channel you have joined. This only affects your own agent membership.
3808
- 7. **\`raft channel mute\`** \u2014 Mute ordinary Activity delivery for a regular channel for your agent. Personal @mentions, DMs, and tasks still pierce.
3808
+ 7. **\`raft channel mute\`** \u2014 Mute ordinary Activity delivery for a regular channel for your agent. Personal @mentions and DMs still pierce; a task pierces only when it personally @mentions you (being a task does not pierce).
3809
3809
  8. **\`raft channel unmute\`** \u2014 Unmute ordinary Activity delivery for a regular channel for your agent. Muted-window messages are not retroactively promoted.
3810
3810
  9. **\`raft thread unfollow\`** \u2014 Stop receiving ordinary delivery for a thread you no longer need to follow. This only affects your own agent attention state.
3811
3811
  10. **\`raft message read\`** \u2014 Read past messages from a channel, DM, or thread. Supports \`before\` / \`after\` anchors and \`around\` for centered context.
@@ -3901,7 +3901,7 @@ function buildDiscoverySection() {
3901
3901
  return `### Discovering people and channels
3902
3902
 
3903
3903
  Call \`raft server info\` to see all channels in this server, which ones you have joined, other agents, and humans.
3904
- Visible public channels may appear even when \`joined=false\`. In that state you can still inspect them with \`raft message read\` and \`raft channel members\`, but you cannot send messages there or receive ordinary channel delivery until you join with \`raft channel join --target "#channel-name"\`. Private channels require a human with access to add you. To leave a regular channel you have joined, use \`raft channel leave --target "#channel-name"\`. To mute ordinary Activity delivery without leaving a regular channel, use \`raft channel mute "#channel-name"\`; personal @mentions, DMs, and tasks still pierce, and thread following is separate. To reverse that setting, use \`raft channel unmute "#channel-name"\`. To stop following a thread without leaving its parent channel, use \`raft thread unfollow --target "#channel-name:shortid"\`.
3904
+ Visible public channels may appear even when \`joined=false\`. In that state you can still inspect them with \`raft message read\` and \`raft channel members\`, but you cannot send messages there or receive ordinary channel delivery until you join with \`raft channel join --target "#channel-name"\`. Private channels require a human with access to add you. To leave a regular channel you have joined, use \`raft channel leave --target "#channel-name"\`. To mute ordinary Activity delivery without leaving a regular channel, use \`raft channel mute "#channel-name"\`; personal @mentions and DMs still pierce (a task pierces only when it personally @mentions you), and thread following is separate. To reverse that setting, use \`raft channel unmute "#channel-name"\`. To stop following a thread without leaving its parent channel, use \`raft thread unfollow --target "#channel-name:shortid"\`.
3905
3905
  Private channels are membership-gated. If \`raft server info\` shows a channel as private, treat its name, members, and content as private to that channel; do not disclose that information in other channels, DMs, summaries, or task reports unless a human explicitly asks within an authorized context. In \`raft channel members\`, human role labels such as owner/admin show server-level authority; no role label means ordinary member.`;
3906
3906
  }
3907
3907
  function buildChannelAwarenessSection() {
@@ -4365,19 +4365,6 @@ function listLegacySlockStatePaths(slockHome = resolveSlockHome(), homeDir = os.
4365
4365
  return candidates.filter((candidate) => existsSync(candidate.path));
4366
4366
  }
4367
4367
 
4368
- // src/authEnv.ts
4369
- var DAEMON_API_KEY_ENV = "SLOCK_MACHINE_API_KEY";
4370
- var SLOCK_AGENT_TOKEN_ENV = "SLOCK_AGENT_TOKEN";
4371
- function scrubDaemonAuthEnv(env) {
4372
- delete env[DAEMON_API_KEY_ENV];
4373
- return env;
4374
- }
4375
- function scrubDaemonChildEnv(env) {
4376
- delete env[DAEMON_API_KEY_ENV];
4377
- delete env[SLOCK_AGENT_TOKEN_ENV];
4378
- return env;
4379
- }
4380
-
4381
4368
  // src/agentCredentialProxy.ts
4382
4369
  import { randomBytes } from "crypto";
4383
4370
  import http from "http";
@@ -5946,9 +5933,7 @@ var LOOPBACK_NO_PROXY = "127.0.0.1,localhost";
5946
5933
  var CLI_TRANSPORT_TRACE_DIR_ENV = "SLOCK_CLI_TRANSPORT_TRACE_DIR";
5947
5934
  var safePathPart = (value) => value.replace(/[^a-zA-Z0-9_.-]/g, "_");
5948
5935
  var RAW_CREDENTIAL_ENV_DENYLIST = [
5949
- "SLOCK_AGENT_TOKEN",
5950
- "SLOCK_AGENT_CREDENTIAL_KEY",
5951
- "SLOCK_AGENT_CREDENTIAL_KEY_FILE"
5936
+ "SLOCK_AGENT_CREDENTIAL_KEY"
5952
5937
  ];
5953
5938
  var WORKSPACE_CLI_TRANSPORT_FILENAMES = [
5954
5939
  "agent-token",
@@ -6303,7 +6288,7 @@ set "SLOCK_AGENT_ACTIVE_CAPABILITIES=${DEFAULT_ACTIVE_CAPABILITIES}"\r
6303
6288
  SLOCK_SERVER_URL: ctx.config.serverUrl,
6304
6289
  PATH: `${slockDir}${path2.delimiter}${process.env.PATH ?? ""}`
6305
6290
  };
6306
- scrubDaemonChildEnv(spawnEnv);
6291
+ delete spawnEnv.SLOCK_AGENT_TOKEN;
6307
6292
  for (const key of RAW_CREDENTIAL_ENV_DENYLIST) {
6308
6293
  delete spawnEnv[key];
6309
6294
  }
@@ -6825,7 +6810,7 @@ function requiresWindowsShell(command, platform = process.platform) {
6825
6810
  }
6826
6811
  function resolveCommandOnPath(command, deps = {}) {
6827
6812
  const platform = deps.platform ?? process.platform;
6828
- const env = scrubDaemonChildEnv({ ...withWindowsUserEnvironment(deps.env ?? process.env, deps) });
6813
+ const env = withWindowsUserEnvironment(deps.env ?? process.env, deps);
6829
6814
  const execFileSyncFn = deps.execFileSyncFn ?? execFileSync;
6830
6815
  const existsSyncFn = deps.existsSyncFn ?? existsSync3;
6831
6816
  if (platform === "win32") {
@@ -6851,7 +6836,7 @@ function firstExistingPath(candidates, deps = {}) {
6851
6836
  return null;
6852
6837
  }
6853
6838
  function readCommandVersion(command, args = [], deps = {}) {
6854
- const env = scrubDaemonChildEnv({ ...withWindowsUserEnvironment(deps.env ?? process.env, deps) });
6839
+ const env = withWindowsUserEnvironment(deps.env ?? process.env, deps);
6855
6840
  const execFileSyncFn = deps.execFileSyncFn ?? execFileSync;
6856
6841
  try {
6857
6842
  const output = normalizeExecOutput(execFileSyncFn(command, [...args, "--version"], {
@@ -8935,11 +8920,11 @@ function detectCursorModels(runCommand = runCursorModelsCommand) {
8935
8920
  return parseCursorModelsOutput(String(result.stdout || ""));
8936
8921
  }
8937
8922
  function buildCursorModelProbeEnv(deps = {}) {
8938
- return scrubDaemonChildEnv(withWindowsUserEnvironment({
8923
+ return withWindowsUserEnvironment({
8939
8924
  ...deps.env ?? process.env,
8940
8925
  FORCE_COLOR: "0",
8941
8926
  NO_COLOR: "1"
8942
- }, deps));
8927
+ }, deps);
8943
8928
  }
8944
8929
  function runCursorModelsCommand() {
8945
8930
  return spawnSync("cursor-agent", ["models"], {
@@ -8995,7 +8980,7 @@ function resolveGeminiSpawn(commandArgs, deps = {}) {
8995
8980
  }
8996
8981
  const execFileSyncFn = deps.execFileSyncFn ?? execFileSync3;
8997
8982
  const existsSyncFn = deps.existsSyncFn ?? existsSync5;
8998
- const env = scrubDaemonChildEnv({ ...deps.env ?? process.env });
8983
+ const env = deps.env ?? process.env;
8999
8984
  const winPath = path8.win32;
9000
8985
  let geminiEntry = null;
9001
8986
  try {
@@ -9132,15 +9117,12 @@ var GeminiDriver = class {
9132
9117
  // src/drivers/kimi.ts
9133
9118
  import { randomUUID as randomUUID2 } from "crypto";
9134
9119
  import { spawn as spawn7 } from "child_process";
9135
- import { chmodSync, existsSync as existsSync6, readFileSync as readFileSync3, writeFileSync as writeFileSync3 } from "fs";
9120
+ import { existsSync as existsSync6, readFileSync as readFileSync3, writeFileSync as writeFileSync3 } from "fs";
9136
9121
  import os4 from "os";
9137
9122
  import path9 from "path";
9138
9123
  var KIMI_WIRE_PROTOCOL_VERSION = "1.3";
9139
9124
  var KIMI_SYSTEM_PROMPT_FILE = ".slock-kimi-system.md";
9140
9125
  var KIMI_AGENT_FILE = ".slock-kimi-agent.yaml";
9141
- var KIMI_GENERATED_CONFIG_FILE = ".slock-kimi-config.toml";
9142
- var SLOCK_KIMI_CONFIG_CONTENT_ENV = "SLOCK_KIMI_CONFIG_CONTENT";
9143
- var SLOCK_KIMI_CONFIG_FILE_ENV = "SLOCK_KIMI_CONFIG_FILE";
9144
9126
  function parseToolArguments(raw) {
9145
9127
  if (typeof raw !== "string") return raw;
9146
9128
  try {
@@ -9149,73 +9131,6 @@ function parseToolArguments(raw) {
9149
9131
  return raw;
9150
9132
  }
9151
9133
  }
9152
- function readKimiConfigSource(home = os4.homedir(), env = process.env) {
9153
- const inlineConfig = env[SLOCK_KIMI_CONFIG_CONTENT_ENV];
9154
- if (inlineConfig && inlineConfig.trim()) {
9155
- return {
9156
- raw: inlineConfig,
9157
- explicitPath: null,
9158
- sourcePath: SLOCK_KIMI_CONFIG_CONTENT_ENV
9159
- };
9160
- }
9161
- const explicitPath = env[SLOCK_KIMI_CONFIG_FILE_ENV];
9162
- const configPath = explicitPath && explicitPath.trim() ? explicitPath : path9.join(home, ".kimi", "config.toml");
9163
- try {
9164
- return {
9165
- raw: readFileSync3(configPath, "utf8"),
9166
- explicitPath: explicitPath && explicitPath.trim() ? explicitPath : null,
9167
- sourcePath: configPath
9168
- };
9169
- } catch {
9170
- return {
9171
- raw: null,
9172
- explicitPath: explicitPath && explicitPath.trim() ? explicitPath : null,
9173
- sourcePath: configPath
9174
- };
9175
- }
9176
- }
9177
- function buildKimiSpawnEnv(env = process.env) {
9178
- const spawnEnv = { ...env, FORCE_COLOR: "0", NO_COLOR: "1" };
9179
- delete spawnEnv[SLOCK_KIMI_CONFIG_CONTENT_ENV];
9180
- delete spawnEnv[SLOCK_KIMI_CONFIG_FILE_ENV];
9181
- return scrubDaemonChildEnv(spawnEnv);
9182
- }
9183
- function buildKimiEffectiveEnv(ctx, overrideEnv) {
9184
- return {
9185
- ...process.env,
9186
- ...ctx.config.envVars || {},
9187
- ...overrideEnv || {}
9188
- };
9189
- }
9190
- function buildKimiLaunchOptions(ctx, opts = {}) {
9191
- const env = buildKimiEffectiveEnv(ctx, opts.env);
9192
- const source = readKimiConfigSource(opts.home ?? os4.homedir(), env);
9193
- const args = [];
9194
- let configFilePath = null;
9195
- let configContent = null;
9196
- if (source.explicitPath) {
9197
- configFilePath = source.explicitPath;
9198
- } else if (source.raw !== null && source.sourcePath === SLOCK_KIMI_CONFIG_CONTENT_ENV) {
9199
- configFilePath = path9.join(ctx.workingDirectory, KIMI_GENERATED_CONFIG_FILE);
9200
- configContent = source.raw;
9201
- if (opts.writeGeneratedConfig !== false) {
9202
- writeFileSync3(configFilePath, source.raw, { encoding: "utf8", mode: 384 });
9203
- chmodSync(configFilePath, 384);
9204
- }
9205
- }
9206
- if (configFilePath) {
9207
- args.push("--config-file", configFilePath);
9208
- }
9209
- if (ctx.config.model && ctx.config.model !== "default") {
9210
- args.push("--model", ctx.config.model);
9211
- }
9212
- return {
9213
- args,
9214
- env: buildKimiSpawnEnv(env),
9215
- configFilePath,
9216
- configContent
9217
- };
9218
- }
9219
9134
  function resolveKimiSpawn(commandArgs, deps = {}) {
9220
9135
  return {
9221
9136
  command: resolveCommandOnPath("kimi", deps) ?? "kimi",
@@ -9239,25 +9154,7 @@ var KimiDriver = class {
9239
9154
  };
9240
9155
  model = {
9241
9156
  detectedModelsVerifiedAs: "launchable",
9242
- toLaunchSpec: (modelId, ctx, opts) => {
9243
- if (!ctx) return { args: ["--model", modelId] };
9244
- const launchCtx = {
9245
- ...ctx,
9246
- config: {
9247
- ...ctx.config,
9248
- model: modelId
9249
- }
9250
- };
9251
- const launch = buildKimiLaunchOptions(launchCtx, {
9252
- home: opts?.home,
9253
- writeGeneratedConfig: false
9254
- });
9255
- return {
9256
- args: launch.args,
9257
- env: launch.env,
9258
- configFiles: launch.configFilePath ? [launch.configFilePath] : void 0
9259
- };
9260
- }
9157
+ toLaunchSpec: (modelId) => ({ args: ["--model", modelId] })
9261
9158
  };
9262
9159
  supportsStdinNotification = true;
9263
9160
  busyDeliveryMode = "direct";
@@ -9281,23 +9178,21 @@ var KimiDriver = class {
9281
9178
  ` system_prompt_path: ./${KIMI_SYSTEM_PROMPT_FILE}`,
9282
9179
  ""
9283
9180
  ].join("\n"), "utf8");
9284
- const launch = buildKimiLaunchOptions(ctx);
9285
9181
  const args = [
9286
9182
  "--wire",
9287
9183
  "--yolo",
9288
9184
  "--agent-file",
9289
9185
  agentFilePath,
9290
9186
  "--session",
9291
- this.sessionId,
9292
- ...launch.args
9187
+ this.sessionId
9293
9188
  ];
9294
9189
  const launchRuntimeFields = runtimeConfigToLaunchFields(hydrateRuntimeConfig(ctx.config));
9295
9190
  if (launchRuntimeFields.model && launchRuntimeFields.model !== "default") {
9296
9191
  args.push("--model", launchRuntimeFields.model);
9297
9192
  }
9298
9193
  const spawnEnv = (await prepareCliTransport(ctx, { NO_COLOR: "1" })).spawnEnv;
9299
- const spawnTarget = resolveKimiSpawn(args);
9300
- const proc = spawn7(spawnTarget.command, spawnTarget.args, {
9194
+ const launch = resolveKimiSpawn(args);
9195
+ const proc = spawn7(launch.command, launch.args, {
9301
9196
  cwd: ctx.workingDirectory,
9302
9197
  stdio: ["pipe", "pipe", "pipe"],
9303
9198
  env: spawnEnv,
@@ -9305,7 +9200,7 @@ var KimiDriver = class {
9305
9200
  // and has an 8191-character command-line limit. Kimi's official
9306
9201
  // installer/uv entrypoint is an executable, so launch it directly and
9307
9202
  // keep prompts on stdin / files instead of routing through cmd.exe.
9308
- shell: spawnTarget.shell
9203
+ shell: launch.shell
9309
9204
  });
9310
9205
  proc.stdin?.write(JSON.stringify({
9311
9206
  jsonrpc: "2.0",
@@ -9418,9 +9313,14 @@ var KimiDriver = class {
9418
9313
  return detectKimiModels();
9419
9314
  }
9420
9315
  };
9421
- function detectKimiModels(home = os4.homedir(), opts = {}) {
9422
- const raw = readKimiConfigSource(home, opts.env).raw;
9423
- if (raw === null) return null;
9316
+ function detectKimiModels(home = os4.homedir()) {
9317
+ const configPath = path9.join(home, ".kimi", "config.toml");
9318
+ let raw;
9319
+ try {
9320
+ raw = readFileSync3(configPath, "utf8");
9321
+ } catch {
9322
+ return null;
9323
+ }
9424
9324
  const models = [];
9425
9325
  const sectionRe = /^\s*\[models(?:\.([^\]]+)|"\.[^"]+"|\."[^"]+")\s*\]\s*$/gm;
9426
9326
  const lineRe = /^\s*\[models\.(.+?)\s*\]\s*$/gm;
@@ -10086,7 +9986,7 @@ function runOpenCodeModelsCommand(home, deps = {}) {
10086
9986
  const platform = deps.platform ?? process.platform;
10087
9987
  const spawnSyncFn = deps.spawnSyncFn ?? spawnSync2;
10088
9988
  const result = spawnSyncFn("opencode", ["models"], {
10089
- env: scrubDaemonChildEnv({ ...process.env, HOME: home, FORCE_COLOR: "0", NO_COLOR: "1" }),
9989
+ env: { ...process.env, HOME: home, FORCE_COLOR: "0", NO_COLOR: "1" },
10090
9990
  encoding: "utf8",
10091
9991
  timeout: 5e3,
10092
9992
  shell: platform === "win32"
@@ -19740,7 +19640,7 @@ var DAEMON_CORE_TRACE_ATTR_CONTRACTS = {
19740
19640
  spanAttrs: ["agentId", "event_kind", "runtime"]
19741
19641
  }
19742
19642
  };
19743
- var DAEMON_CLI_USAGE = `Usage: slock-daemon --server-url <url> (--api-key <key> or ${DAEMON_API_KEY_ENV}=<key>)`;
19643
+ var DAEMON_CLI_USAGE = "Usage: slock-daemon --server-url <url> --api-key <key>";
19744
19644
  var RunnerCredentialMintError2 = class extends Error {
19745
19645
  code;
19746
19646
  retryable;
@@ -19776,9 +19676,9 @@ function runnerCredentialErrorDetail2(error) {
19776
19676
  async function waitForRunnerCredentialRetry2() {
19777
19677
  await new Promise((resolve) => setTimeout(resolve, RUNNER_CREDENTIAL_MINT_RETRY_DELAY_MS2));
19778
19678
  }
19779
- function parseDaemonCliArgs(args, env = {}) {
19679
+ function parseDaemonCliArgs(args) {
19780
19680
  let serverUrl = "";
19781
- let apiKey = env[DAEMON_API_KEY_ENV] ?? "";
19681
+ let apiKey = "";
19782
19682
  for (let i = 0; i < args.length; i++) {
19783
19683
  if (args[i] === "--server-url" && args[i + 1]) serverUrl = args[++i];
19784
19684
  if (args[i] === "--api-key" && args[i + 1]) apiKey = args[++i];
@@ -19815,7 +19715,7 @@ function resolveSlockCliPathOrEmpty(moduleUrl = import.meta.url) {
19815
19715
  }
19816
19716
  async function runBundledSlockCli(argv) {
19817
19717
  process.argv = [process.execPath, "slock", ...argv];
19818
- await import("./dist-NONOBGMT.js");
19718
+ await import("./dist-OGRAMTIO.js");
19819
19719
  }
19820
19720
  function detectRuntimes(tracer = noopTracer) {
19821
19721
  const ids = [];
@@ -20752,8 +20652,6 @@ var DaemonCore = class {
20752
20652
 
20753
20653
  export {
20754
20654
  subscribeDaemonLogs,
20755
- DAEMON_API_KEY_ENV,
20756
- scrubDaemonAuthEnv,
20757
20655
  resolveWorkspaceDirectoryPath,
20758
20656
  scanWorkspaceDirectories,
20759
20657
  deleteWorkspaceDirectory,
package/dist/cli/index.js CHANGED
@@ -44181,9 +44181,6 @@ init_esm_shims();
44181
44181
  // ../shared/src/agentScopes.ts
44182
44182
  init_esm_shims();
44183
44183
 
44184
- // ../shared/src/docs/crossPageInvariants.ts
44185
- init_esm_shims();
44186
-
44187
44184
  // ../shared/src/testing/failpoints.ts
44188
44185
  init_esm_shims();
44189
44186
  var NoopFailpointRegistry = class {
package/dist/core.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import {
2
- DAEMON_API_KEY_ENV,
3
2
  DAEMON_CLI_USAGE,
4
3
  DAEMON_CORE_TRACE_ATTR_CONTRACTS,
5
4
  DaemonCore,
@@ -12,11 +11,9 @@ import {
12
11
  resolveWorkspaceDirectoryPath,
13
12
  runBundledSlockCli,
14
13
  scanWorkspaceDirectories,
15
- scrubDaemonAuthEnv,
16
14
  subscribeDaemonLogs
17
- } from "./chunk-YHGUM6IF.js";
15
+ } from "./chunk-53ZFBLI4.js";
18
16
  export {
19
- DAEMON_API_KEY_ENV,
20
17
  DAEMON_CLI_USAGE,
21
18
  DAEMON_CORE_TRACE_ATTR_CONTRACTS,
22
19
  DaemonCore,
@@ -29,6 +26,5 @@ export {
29
26
  resolveWorkspaceDirectoryPath,
30
27
  runBundledSlockCli,
31
28
  scanWorkspaceDirectories,
32
- scrubDaemonAuthEnv,
33
29
  subscribeDaemonLogs
34
30
  };
@@ -43721,7 +43721,6 @@ init_esm_shims();
43721
43721
  init_esm_shims();
43722
43722
  init_esm_shims();
43723
43723
  init_esm_shims();
43724
- init_esm_shims();
43725
43724
  var NoopFailpointRegistry = class {
43726
43725
  get enabled() {
43727
43726
  return false;
package/dist/index.js CHANGED
@@ -2,13 +2,11 @@
2
2
  import {
3
3
  DAEMON_CLI_USAGE,
4
4
  DaemonCore,
5
- parseDaemonCliArgs,
6
- scrubDaemonAuthEnv
7
- } from "./chunk-YHGUM6IF.js";
5
+ parseDaemonCliArgs
6
+ } from "./chunk-53ZFBLI4.js";
8
7
 
9
8
  // src/index.ts
10
- var parsedArgs = parseDaemonCliArgs(process.argv.slice(2), process.env);
11
- scrubDaemonAuthEnv(process.env);
9
+ var parsedArgs = parseDaemonCliArgs(process.argv.slice(2));
12
10
  if (!parsedArgs) {
13
11
  console.error(DAEMON_CLI_USAGE);
14
12
  process.exit(1);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botiverse/raft-daemon",
3
- "version": "0.65.0-play.20260629144133",
3
+ "version": "0.65.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "raft-daemon": "dist/raft-daemon.js",