replicas-engine 0.1.997 → 0.1.1000

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.
@@ -5,12 +5,12 @@ import {
5
5
  getCodexAspHost,
6
6
  restartCodexAspHost,
7
7
  restartCodexAspHostIfRunning
8
- } from "./chunk-UQ5AMTBR.js";
9
- import "./chunk-MTPAWHJM.js";
10
- import "./chunk-ZYK7CP64.js";
11
- import "./chunk-VLPKJ3N5.js";
8
+ } from "./chunk-TNXGHUDA.js";
9
+ import "./chunk-7CQ5HPG5.js";
10
+ import "./chunk-T77RBLRL.js";
11
+ import "./chunk-IIJ5KKS3.js";
12
12
  import "./chunk-UZSNFLDQ.js";
13
- import "./chunk-M6SMVAFF.js";
13
+ import "./chunk-NOZZLX6A.js";
14
14
  import "./chunk-VEQXQN22.js";
15
15
  export {
16
16
  getCodexAspHost,
@@ -14,7 +14,7 @@ import {
14
14
  isValidAgentProvider,
15
15
  parsePosixEnvFile,
16
16
  readReplicasRuntimeEnv
17
- } from "./chunk-M6SMVAFF.js";
17
+ } from "./chunk-NOZZLX6A.js";
18
18
 
19
19
  // src/runtime-env-loader.ts
20
20
  import { readFileSync } from "fs";
@@ -3,7 +3,7 @@ import { createRequire as __createRequire } from 'node:module';
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  HOOK_EXEC_MAX_BUFFER_BYTES
6
- } from "./chunk-M6SMVAFF.js";
6
+ } from "./chunk-NOZZLX6A.js";
7
7
 
8
8
  // src/utils/exec.ts
9
9
  import { exec, execFile } from "child_process";
@@ -5,7 +5,7 @@ import {
5
5
  extractCommandProtectionCommandText,
6
6
  isRecord,
7
7
  parseCodeHostPrUrl
8
- } from "./chunk-M6SMVAFF.js";
8
+ } from "./chunk-NOZZLX6A.js";
9
9
 
10
10
  // src/services/published-pull-request-urls.ts
11
11
  function publishedPullRequestUrls(result) {
@@ -2714,6 +2714,9 @@ var REPLICAS_MCP_TOOLS = {
2714
2714
  relay: "relay_to_workspace",
2715
2715
  linearStart: "start_linear_session",
2716
2716
  linearSessionIntent: "register_linear_session_intent",
2717
+ listChannelSettings: "list_channel_settings",
2718
+ saveChannelPreset: "save_channel_preset",
2719
+ updateChannelSettings: "update_channel_settings",
2717
2720
  spawnSubagent: "spawn_subagent",
2718
2721
  messageSubagent: "message_subagent",
2719
2722
  listSubagents: "list_subagents",
@@ -4559,7 +4562,7 @@ replicas automation create "Re-check PR #142 CI" \\
4559
4562
  - \`--in <duration>\` (\`30m\`, \`2h\`, \`3d\`, \`1w\`, \`1d12h\`) or \`--at <ISO-8601 with offset>\` (e.g. "tomorrow at 9am" \u2192 \`--at 2026-10-08T09:00:00-07:00\`, using the user's timezone if you know it; otherwise say which timezone you assumed).
4560
4563
  - Inside a workspace, one-time follow-ups default to \`--workspace current\`, so you resume with this conversation's context. Inside a workspace, \`--environment\` defaults to this workspace's environment (same repositories), including for \`--workspace new\` and \`reuse\`.
4561
4564
  - Write \`--prompt\` as instructions to your future self: the links, what to check, what "done" looks like, and how to report back (e.g. reply in the original Slack thread). It runs with no memory of why it was scheduled beyond what you write.
4562
- - \`--background\` keeps offhand reminders out of the user's main automations list (they are still visible under **Background**). Omit it for things the user should see and manage, such as ongoing monitoring they asked for.
4565
+ - \`--background\` keeps follow-ups out of the user's main automations list (they are still visible under **Background**). Use it for every one-time follow-up that reports back into this conversation, even one that leads to a big decision. Omit it only for recurring automations the user wants to see and manage, such as ongoing monitoring.
4563
4566
  - \`--personal\` makes the automation the user's own. Omit it only when the follow-up belongs to the organization.
4564
4567
  - Recurring with an end: \`--trigger-cron "0 9 * * *" --max-runs 5 --workspace current\` runs daily five times, then deletes itself. \`--workspace reuse\` creates one new workspace on the first run and sends every later run to it; \`--workspace new\` (the default for non-one-time automations) creates a fresh workspace per run.
4565
4568
  - Only schedule when the user asked for a follow-up or clearly agreed to one; not for "maybe I'll look at this later".
@@ -7569,6 +7572,36 @@ function getGoalCommandObjectiveValidationError(message, goalMode) {
7569
7572
  return `Goal objective must be at most ${MAX_CODEX_GOAL_OBJECTIVE_CHARS} characters (${length} provided). Shorten the /goal objective, or send the extra details as a regular message after setting the goal.`;
7570
7573
  }
7571
7574
 
7575
+ // ../shared/src/mothership.ts
7576
+ var MOTHERSHIP_SOURCE_TYPES = ["slack", "linear"];
7577
+ var MOTHERSHIP_PRESET_NAME_MAX_LENGTH = 50;
7578
+ var MOTHERSHIP_PRESET_ICONS = [
7579
+ "users",
7580
+ "user",
7581
+ "inbox",
7582
+ "building",
7583
+ "bug",
7584
+ "message-circle",
7585
+ "headphones",
7586
+ "heart",
7587
+ "star",
7588
+ "flag",
7589
+ "zap",
7590
+ "shield",
7591
+ "code",
7592
+ "terminal",
7593
+ "rocket",
7594
+ "wrench",
7595
+ "briefcase",
7596
+ "globe",
7597
+ "book-open",
7598
+ "lightbulb",
7599
+ "target",
7600
+ "bell",
7601
+ "layers",
7602
+ "tag"
7603
+ ];
7604
+
7572
7605
  // ../shared/src/replicas-config.ts
7573
7606
  import { parse as parseYaml } from "yaml";
7574
7607
 
@@ -8282,12 +8315,26 @@ var mothershipSlackRelayRequestSchema = z16.object({
8282
8315
  user_id: z16.string().optional().describe("Slack user id of the follow-up's author (the envelope's `user_id`), so it is attributed to them. Defaults to the thread's original requester."),
8283
8316
  queue: z16.boolean().optional().describe("Set true only when the person explicitly asked for this to happen after the current task finishes. Delivers behind the active turn instead of interrupting it.")
8284
8317
  });
8285
- var mothershipAutomationToolInputSchema = automationToolInputSchema.extend({
8286
- confirmation_channel_id: z16.string().describe("`channel_id` from the envelope of the Slack message that accepted the offer."),
8318
+ var mothershipSlackConfirmationSchema = z16.object({
8319
+ confirmation_channel_id: z16.string().describe("`channel_id` from the envelope of the Slack message that asked for or accepted this."),
8287
8320
  confirmation_thread_ts: z16.string().describe("`thread_ts` from that message's envelope."),
8288
8321
  confirmation_message_ts: z16.string().describe("`message_ts` from that message's envelope."),
8289
8322
  confirmation_user_id: z16.string().describe("`user_id` from that message's envelope.")
8290
8323
  });
8324
+ var mothershipAutomationToolInputSchema = automationToolInputSchema.extend(mothershipSlackConfirmationSchema.shape);
8325
+ var mothershipSaveChannelPresetToolInputSchema = mothershipSlackConfirmationSchema.extend({
8326
+ preset_id: z16.string().optional().describe(`Id of the preset to update, from \`${REPLICAS_MCP_TOOLS.listChannelSettings}\`. Omit to create a new preset.`),
8327
+ name: z16.string().trim().min(1).max(MOTHERSHIP_PRESET_NAME_MAX_LENGTH).optional().describe("Preset name. Required when creating."),
8328
+ description: z16.string().optional().describe("One-line summary shown in settings."),
8329
+ icon: z16.enum(MOTHERSHIP_PRESET_ICONS).optional(),
8330
+ instructions: z16.string().optional().describe("Complete preset instructions; replaces the existing text. Required when creating.")
8331
+ });
8332
+ var mothershipUpdateChannelSettingsToolInputSchema = mothershipSlackConfirmationSchema.extend({
8333
+ source: z16.enum(MOTHERSHIP_SOURCE_TYPES).optional().describe("Defaults to `slack`."),
8334
+ external_id: z16.string().describe(`Slack channel id or Linear team id of an already monitored source, from \`${REPLICAS_MCP_TOOLS.listChannelSettings}\`.`),
8335
+ preset_id: z16.string().nullable().optional().describe("Preset to assign; `null` removes the preset. Omit to keep it."),
8336
+ instructions: z16.string().nullable().optional().describe("Complete channel-specific instructions, applied after the preset; replaces the existing text. `null` clears them. Omit to keep them.")
8337
+ });
8291
8338
 
8292
8339
  // ../shared/src/routes/plugin-catalog.ts
8293
8340
  var EXPLICIT_PLUGIN_CATALOG = [
@@ -3,10 +3,10 @@ import { createRequire as __createRequire } from 'node:module';
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  execFileAsync
6
- } from "./chunk-VLPKJ3N5.js";
6
+ } from "./chunk-IIJ5KKS3.js";
7
7
  import {
8
8
  isVersionBelow
9
- } from "./chunk-M6SMVAFF.js";
9
+ } from "./chunk-NOZZLX6A.js";
10
10
 
11
11
  // src/utils/codex-agent-env.ts
12
12
  function buildCodexAgentEnv(source = process.env) {
@@ -240,7 +240,7 @@ function getCodexModelProvider(method) {
240
240
  if (method === "foundry") return "azure";
241
241
  return method === "ollama" || method === "openai-compatible" ? "replicas_openai_compatible" : "openai";
242
242
  }
243
- var ENGINE_PACKAGE_VERSION = "0.1.997";
243
+ var ENGINE_PACKAGE_VERSION = "0.1.1000";
244
244
  var INITIALIZE_METHOD = "initialize";
245
245
  var INITIALIZED_NOTIFICATION = "initialized";
246
246
  var ACCOUNT_LOGIN_START_METHOD = "account/login/start";
@@ -5,15 +5,15 @@ import {
5
5
  ENGINE_ENV,
6
6
  monolithRequest,
7
7
  setAgentCredentialSnapshot
8
- } from "./chunk-MTPAWHJM.js";
8
+ } from "./chunk-7CQ5HPG5.js";
9
9
  import {
10
10
  AppServerProcess,
11
11
  buildCodexAgentEnv
12
- } from "./chunk-ZYK7CP64.js";
12
+ } from "./chunk-T77RBLRL.js";
13
13
  import {
14
14
  SUBPROCESS_MAX_BUFFER,
15
15
  execFileAsync
16
- } from "./chunk-VLPKJ3N5.js";
16
+ } from "./chunk-IIJ5KKS3.js";
17
17
  import {
18
18
  isRecord
19
19
  } from "./chunk-UZSNFLDQ.js";
@@ -28,7 +28,7 @@ import {
28
28
  listOpenAICompatibleModels,
29
29
  readOllamaAuthEnv,
30
30
  resolveOpenAICompatibleModelsUrl
31
- } from "./chunk-M6SMVAFF.js";
31
+ } from "./chunk-NOZZLX6A.js";
32
32
 
33
33
  // src/managers/codex-token-manager.ts
34
34
  import { promises as fs } from "fs";
@@ -264,7 +264,7 @@ var CodexTokenManager = class extends BaseRefreshManager {
264
264
  await this.applyCredentialUpdate(++this.credentialGeneration, async () => {
265
265
  await this.applyCredentialsResponse(data);
266
266
  setAgentCredentialSnapshot("codex", data);
267
- const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-TAFNI3SI.js");
267
+ const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-4IXWDHJV.js");
268
268
  await restartCodexAspHostIfRunning2();
269
269
  });
270
270
  await this.start(true);
@@ -285,7 +285,7 @@ var CodexTokenManager = class extends BaseRefreshManager {
285
285
  const accountChanged = ENGINE_ENV.REPLICAS_AGENT_CREDENTIALS.codex?.credentialId !== data.credentialId;
286
286
  await this.applyCredentialsResponse(data);
287
287
  if (restartOnChange && (accountChanged || CODEX_AUTH_ENV_KEYS.some((key, index) => process.env[key] !== previousEnv[index]))) {
288
- const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-TAFNI3SI.js");
288
+ const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-4IXWDHJV.js");
289
289
  await restartCodexAspHostIfRunning2();
290
290
  }
291
291
  setAgentCredentialSnapshot("codex", data);
@@ -3,18 +3,18 @@ import { createRequire as __createRequire } from 'node:module';
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  monolithRequest
6
- } from "./chunk-MTPAWHJM.js";
6
+ } from "./chunk-7CQ5HPG5.js";
7
7
  import {
8
8
  SUBPROCESS_MAX_BUFFER,
9
9
  execFileAsync
10
- } from "./chunk-VLPKJ3N5.js";
10
+ } from "./chunk-IIJ5KKS3.js";
11
11
  import {
12
12
  extractCommandProtectionCommandText,
13
13
  findCommandProtectionGitLookups,
14
14
  findGitCommitSignals,
15
15
  findPrMergeSignals,
16
16
  parseCommandProtectionRequest
17
- } from "./chunk-M6SMVAFF.js";
17
+ } from "./chunk-NOZZLX6A.js";
18
18
 
19
19
  // src/services/command-protection-service.ts
20
20
  import { readFile, stat } from "fs/promises";
@@ -3,13 +3,13 @@ import { createRequire as __createRequire } from 'node:module';
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  evaluateCommandProtection
6
- } from "./chunk-5VRW4J5P.js";
7
- import "./chunk-MTPAWHJM.js";
8
- import "./chunk-VLPKJ3N5.js";
6
+ } from "./chunk-ZNAZMTD2.js";
7
+ import "./chunk-7CQ5HPG5.js";
8
+ import "./chunk-IIJ5KKS3.js";
9
9
  import {
10
10
  isRecord
11
11
  } from "./chunk-UZSNFLDQ.js";
12
- import "./chunk-M6SMVAFF.js";
12
+ import "./chunk-NOZZLX6A.js";
13
13
  import "./chunk-VEQXQN22.js";
14
14
 
15
15
  // src/command-protection-hook.ts
@@ -7,12 +7,12 @@ import {
7
7
  import {
8
8
  AppServerProcess,
9
9
  buildCodexAgentEnv
10
- } from "./chunk-ZYK7CP64.js";
11
- import "./chunk-VLPKJ3N5.js";
10
+ } from "./chunk-T77RBLRL.js";
11
+ import "./chunk-IIJ5KKS3.js";
12
12
  import {
13
13
  AGENT,
14
14
  headlessAgentRequestSchema
15
- } from "./chunk-M6SMVAFF.js";
15
+ } from "./chunk-NOZZLX6A.js";
16
16
  import "./chunk-VEQXQN22.js";
17
17
 
18
18
  // src/headless-agent.ts
package/dist/src/index.js CHANGED
@@ -32,7 +32,7 @@ import {
32
32
  reportCommandProtectionBlock,
33
33
  resolveDiffBase,
34
34
  runGitCommand
35
- } from "./chunk-5VRW4J5P.js";
35
+ } from "./chunk-ZNAZMTD2.js";
36
36
  import {
37
37
  ACCOUNT_RATE_LIMITS_UPDATED_METHOD,
38
38
  AGENT_MESSAGE_DELTA_METHOD,
@@ -57,7 +57,7 @@ import {
57
57
  } from "./chunk-P73LGPQO.js";
58
58
  import {
59
59
  publishedPullRequestUrls
60
- } from "./chunk-T4CMSGMR.js";
60
+ } from "./chunk-MHXGZIJQ.js";
61
61
  import {
62
62
  BaseRefreshManager,
63
63
  CodexAspAuthMethodChangedError,
@@ -71,7 +71,7 @@ import {
71
71
  refreshDelayMs,
72
72
  restartCodexAspHost,
73
73
  routineRefreshRequest
74
- } from "./chunk-UQ5AMTBR.js";
74
+ } from "./chunk-TNXGHUDA.js";
75
75
  import {
76
76
  ENGINE_ENV,
77
77
  monolithRequest,
@@ -79,16 +79,16 @@ import {
79
79
  readRuntimeEnvFile,
80
80
  reloadEngineEnv,
81
81
  setAgentCredentialSnapshot
82
- } from "./chunk-MTPAWHJM.js";
82
+ } from "./chunk-7CQ5HPG5.js";
83
83
  import {
84
84
  AspClient,
85
85
  getCodexModelProvider
86
- } from "./chunk-ZYK7CP64.js";
86
+ } from "./chunk-T77RBLRL.js";
87
87
  import {
88
88
  SUBPROCESS_MAX_BUFFER,
89
89
  execAsync,
90
90
  execFileAsync
91
- } from "./chunk-VLPKJ3N5.js";
91
+ } from "./chunk-IIJ5KKS3.js";
92
92
  import {
93
93
  isRecord as isRecord2
94
94
  } from "./chunk-UZSNFLDQ.js";
@@ -316,7 +316,7 @@ import {
316
316
  workspaceCredentialProviderSchema,
317
317
  workspaceTokenRequestSchema,
318
318
  workspaceTokenResponseSchema
319
- } from "./chunk-M6SMVAFF.js";
319
+ } from "./chunk-NOZZLX6A.js";
320
320
  import {
321
321
  cloneMcpConfig,
322
322
  ensureCompatibilityImports,
@@ -3,13 +3,13 @@ import { createRequire as __createRequire } from 'node:module';
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  publishedPullRequestUrls
6
- } from "./chunk-T4CMSGMR.js";
6
+ } from "./chunk-MHXGZIJQ.js";
7
7
  import {
8
8
  isRecord
9
9
  } from "./chunk-UZSNFLDQ.js";
10
10
  import {
11
11
  shouldRefreshPullRequests
12
- } from "./chunk-M6SMVAFF.js";
12
+ } from "./chunk-NOZZLX6A.js";
13
13
  import "./chunk-VEQXQN22.js";
14
14
 
15
15
  // src/services/post-tool-pr-notifier.ts
@@ -9,7 +9,7 @@ import {
9
9
  spawnSubagentRequestSchema,
10
10
  subagentResponseSchema,
11
11
  waitSubagentRequestSchema
12
- } from "./chunk-M6SMVAFF.js";
12
+ } from "./chunk-NOZZLX6A.js";
13
13
  import "./chunk-VEQXQN22.js";
14
14
 
15
15
  // src/subagent-mcp.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replicas-engine",
3
- "version": "0.1.997",
3
+ "version": "0.1.1000",
4
4
  "description": "Lightweight API server for Replicas workspaces",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",