trantor 0.18.103 → 0.18.104

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trantor",
3
- "version": "0.18.103",
3
+ "version": "0.18.104",
4
4
  "description": "Trantor — the hub-world for AI agent crews: live message bus, presence, project Kanban/flow board + crew orchestration for independent AI coding agents (Claude, Codex, Gemini, Kimi, DeepSeek)",
5
5
  "mcpServers": {
6
6
  "relay": {
package/bin/crew/core.mjs CHANGED
@@ -4,6 +4,9 @@ import { spawnSync } from "node:child_process";
4
4
  import { fileURLToPath } from "node:url";
5
5
  import { STATE_FLAGS } from "../../lib/state/flags.mjs";
6
6
 
7
+ // the card limits the runner reads (#11559 budget, #11855 context cap), tunable at `trantor up`
8
+ export const RUNNER_LIMIT_FLAGS = ["TRANTOR_CARD_TOKEN_BUDGET", "TRANTOR_CARD_CONTEXT_CAP", "TRANTOR_CARD_CAP_MIN_STEPS", "TRANTOR_CARD_CAP_MAX_HANDOFFS"];
9
+
7
10
  export const ROOT = dirname(dirname(dirname(fileURLToPath(import.meta.url))));
8
11
 
9
12
  export function commandExists(name, env = process.env) {
@@ -149,7 +152,7 @@ export function gridColumns(size) {
149
152
  // in lib/state/flags.mjs beside the resolver: the launcher env stays the forwarder (the runner boots
150
153
  // before any file is sourced), and #7159 lets the runner fall back to ~/.agent-bus/.env itself, so a
151
154
  // flag documented there finally arms the seat that reads it.
152
- const FORWARDED_ENV = STATE_FLAGS;
155
+ const FORWARDED_ENV = [...STATE_FLAGS, ...RUNNER_LIMIT_FLAGS];
153
156
 
154
157
  export function runnerCommand(ctx, agent, model = "", effort = null, persona = agent) {
155
158
  const forwarded = FORWARDED_ENV
@@ -250,7 +250,9 @@ const CLI = {
250
250
  // kimi-code (successor to kimi-cli) has no --print (-p alone is non-interactive), REJECTS
251
251
  // --yolo in prompt mode (prompt mode auto-approves tools), and emits session_-prefixed ids.
252
252
  kimi: { first: `kimi{M} -p "$(cat {P})" < /dev/null`,
253
- next: `kimi{M} -r {SID} -p "$(cat {P})" < /dev/null`, mflag: " --model ", sid: /To resume this session: kimi -r (\S+)/ },
253
+ // -S resumes; kimi-code 0.34 silently ignores -r (its own exit hint still prints -r) and
254
+ // opens a new session, so every kimi turn ran cold with no history
255
+ next: `kimi{M} -S {SID} -p "$(cat {P})" < /dev/null`, mflag: " --model ", sid: /To resume this session:\s*kimi (?:-r|-S|--session) (\S+)/ },
254
256
  // #6154: `run -c` resumes the globally last session on this machine, any project's, and its stored
255
257
  // directory becomes the path root. So every spawn pins --dir and a resume pins -s (ocSid below).
256
258
  deepseek: { first: `opencode run --dir {DIR}{M} "$(cat {P})"`,
@@ -1051,7 +1053,8 @@ exit $turn_exit`;
1051
1053
  if (env.turn) log(`state step: ${describeTurn(env.turn)} · ${costLine(env.cost)}`);
1052
1054
  else log(`\x1b[33mstate step: no TurnResult — ${env.error}\x1b[0m`);
1053
1055
  }
1054
- if (cli.sid && r.stdout) { const m = r.stdout.match(cli.sid); if (m) sid = m[1]; }
1056
+ // kimi prints its resume hint on stderr, so a stdout-only match never captured its sid
1057
+ if (cli.sid) { const all = [...`${r.stdout || ""}\n${ownOut}`.matchAll(new RegExp(cli.sid.source, "g"))]; if (all.length) sid = all.at(-1)[1]; }
1055
1058
  // #6154: the opencode family prints no sid on stdout — the id comes from opencode's own DB,
1056
1059
  // keyed by the worktree the session was created in. Fail-open: nothing found leaves sid empty,
1057
1060
  // and the next turn starts fresh rather than resuming whatever other project ran last.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trantor",
3
- "version": "0.18.103",
3
+ "version": "0.18.104",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "trantor": "bin/cli.mjs"