@cabane/companion 0.6.76 → 0.6.78

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/dist/cli.js CHANGED
@@ -5463,8 +5463,8 @@ function createOpencodeAdapter(deps = {}) {
5463
5463
  const transport = deps.transport ?? (deps.serverUrl ? createHttpOpencodeTransport({ baseUrl: deps.serverUrl }) : null);
5464
5464
  return {
5465
5465
  name: "opencode",
5466
- // CT614: surface-aware a code-mode turn (only `code` mounted) is taught
5467
- // `code`, not the granular cabane names it no longer has.
5466
+ // CT829: one surface, so one addendum and no parameter CT614's `codeMode`
5467
+ // argument went with the named tool surface it selected against.
5468
5468
  promptAddendum: () => OPENCODE_ADDENDUM,
5469
5469
  dialectSchema: opencodeDialectSchema,
5470
5470
  async *runTurn(req, signal) {
@@ -6411,8 +6411,8 @@ function createCodexAdapter(deps = {}) {
6411
6411
  const transport = deps.transport ?? (deps.enabled ? createSdkCodexTransport({ ...deps.apiKey ? { apiKey: deps.apiKey } : {} }) : null);
6412
6412
  return {
6413
6413
  name: "codex",
6414
- // CT614: surface-aware a code-mode turn (only `code` mounted) is taught
6415
- // `code`, not the granular names it no longer has.
6414
+ // CT829: one surface, so one addendum and no parameter CT614's `codeMode`
6415
+ // argument went with the named tool surface it selected against.
6416
6416
  promptAddendum: () => CODEX_ADDENDUM,
6417
6417
  dialectSchema: codexDialectSchema,
6418
6418
  async *runTurn(req, signal) {
@@ -7467,7 +7467,7 @@ function createTurnControlMcpServer(sendState, skipState, askState, wakeState, r
7467
7467
  tools: [
7468
7468
  tool(
7469
7469
  SEND_TOOL,
7470
- "Send one addressed message to another agent in THIS conversation. Pass the peer's `agentId` and the complete `message` they should act on; the server writes it separately from your terminal reply. Writing `@handle` in prose dispatches nobody. Single target \u2014 the last call wins. Sending to yourself is a no-op. A handoff to a DIFFERENT conversation is `cabane.conversations.create` / `cabane.conversations.post` with their `dispatch` field instead. Never use send to hand an answer back to the requester \u2014 declare that with reply_to.",
7470
+ "Send one addressed message to another agent in THIS conversation. Pass the peer's `agentId` and the complete `message` they should act on; the server writes it separately from your terminal reply. Writing `@handle` in prose dispatches nobody. Single target \u2014 the last call wins. Sending to yourself is a no-op. A handoff to a DIFFERENT conversation is `conversations.create` / `conversations.post` with their `dispatch` field instead. Never use send to hand an answer back to the requester \u2014 declare that with reply_to.",
7471
7471
  {
7472
7472
  agentId: z13.string().uuid().describe(
7473
7473
  "The peer agent to address \u2014 a workspace agent id, from your turn context's roster."
@@ -7653,7 +7653,7 @@ function createTurnControlMcpServer(sendState, skipState, askState, wakeState, r
7653
7653
  // caller's own wake in the conversation it's holding a turn in.
7654
7654
  tool(
7655
7655
  CANCEL_WAKE_TOOL,
7656
- 'Stand down your own wake \u2014 the inverse of `wake_me`. No arguments: it means "when this turn settles, leave no wake armed for me in this conversation." Reach for it when the thing you armed a wake to check has already happened, or the work it was watching is over \u2014 an armed wake you no longer need fires into a turn with nothing to do, and a supervision loop with no off switch is one you can only end by leaving it running. Whether you have one armed is printed in your turn context ("Wake armed: \u2026"); calling this with nothing armed is a clean no-op, no error. It writes the same per-turn slot as `wake_me`, so the two are last-call-wins against each other: `cancel_wake` then `wake_me` leaves the NEW wake armed, `wake_me` then `cancel_wake` leaves nothing armed. Like `wake_me` it takes effect when the turn SETTLES, not now. It reaches only your own wake in this conversation \u2014 never a peer\'s, and never a recurring schedule (those are `cabane.schedules.*`).',
7656
+ 'Stand down your own wake \u2014 the inverse of `wake_me`. No arguments: it means "when this turn settles, leave no wake armed for me in this conversation." Reach for it when the thing you armed a wake to check has already happened, or the work it was watching is over \u2014 an armed wake you no longer need fires into a turn with nothing to do, and a supervision loop with no off switch is one you can only end by leaving it running. Whether you have one armed is printed in your turn context ("Wake armed: \u2026"); calling this with nothing armed is a clean no-op, no error. It writes the same per-turn slot as `wake_me`, so the two are last-call-wins against each other: `cancel_wake` then `wake_me` leaves the NEW wake armed, `wake_me` then `cancel_wake` leaves nothing armed. Like `wake_me` it takes effect when the turn SETTLES, not now. It reaches only your own wake in this conversation \u2014 never a peer\'s, and never a recurring schedule (those are `schedules.*`).',
7657
7657
  {},
7658
7658
  async () => {
7659
7659
  wakeState.cancelled = true;
package/dist/runtime.js CHANGED
@@ -4962,8 +4962,8 @@ function createOpencodeAdapter(deps = {}) {
4962
4962
  const transport = deps.transport ?? (deps.serverUrl ? createHttpOpencodeTransport({ baseUrl: deps.serverUrl }) : null);
4963
4963
  return {
4964
4964
  name: "opencode",
4965
- // CT614: surface-aware a code-mode turn (only `code` mounted) is taught
4966
- // `code`, not the granular cabane names it no longer has.
4965
+ // CT829: one surface, so one addendum and no parameter CT614's `codeMode`
4966
+ // argument went with the named tool surface it selected against.
4967
4967
  promptAddendum: () => OPENCODE_ADDENDUM,
4968
4968
  dialectSchema: opencodeDialectSchema,
4969
4969
  async *runTurn(req, signal) {
@@ -5910,8 +5910,8 @@ function createCodexAdapter(deps = {}) {
5910
5910
  const transport = deps.transport ?? (deps.enabled ? createSdkCodexTransport({ ...deps.apiKey ? { apiKey: deps.apiKey } : {} }) : null);
5911
5911
  return {
5912
5912
  name: "codex",
5913
- // CT614: surface-aware a code-mode turn (only `code` mounted) is taught
5914
- // `code`, not the granular names it no longer has.
5913
+ // CT829: one surface, so one addendum and no parameter CT614's `codeMode`
5914
+ // argument went with the named tool surface it selected against.
5915
5915
  promptAddendum: () => CODEX_ADDENDUM,
5916
5916
  dialectSchema: codexDialectSchema,
5917
5917
  async *runTurn(req, signal) {
@@ -6966,7 +6966,7 @@ function createTurnControlMcpServer(sendState, skipState, askState, wakeState, r
6966
6966
  tools: [
6967
6967
  tool(
6968
6968
  SEND_TOOL,
6969
- "Send one addressed message to another agent in THIS conversation. Pass the peer's `agentId` and the complete `message` they should act on; the server writes it separately from your terminal reply. Writing `@handle` in prose dispatches nobody. Single target \u2014 the last call wins. Sending to yourself is a no-op. A handoff to a DIFFERENT conversation is `cabane.conversations.create` / `cabane.conversations.post` with their `dispatch` field instead. Never use send to hand an answer back to the requester \u2014 declare that with reply_to.",
6969
+ "Send one addressed message to another agent in THIS conversation. Pass the peer's `agentId` and the complete `message` they should act on; the server writes it separately from your terminal reply. Writing `@handle` in prose dispatches nobody. Single target \u2014 the last call wins. Sending to yourself is a no-op. A handoff to a DIFFERENT conversation is `conversations.create` / `conversations.post` with their `dispatch` field instead. Never use send to hand an answer back to the requester \u2014 declare that with reply_to.",
6970
6970
  {
6971
6971
  agentId: z13.string().uuid().describe(
6972
6972
  "The peer agent to address \u2014 a workspace agent id, from your turn context's roster."
@@ -7152,7 +7152,7 @@ function createTurnControlMcpServer(sendState, skipState, askState, wakeState, r
7152
7152
  // caller's own wake in the conversation it's holding a turn in.
7153
7153
  tool(
7154
7154
  CANCEL_WAKE_TOOL,
7155
- 'Stand down your own wake \u2014 the inverse of `wake_me`. No arguments: it means "when this turn settles, leave no wake armed for me in this conversation." Reach for it when the thing you armed a wake to check has already happened, or the work it was watching is over \u2014 an armed wake you no longer need fires into a turn with nothing to do, and a supervision loop with no off switch is one you can only end by leaving it running. Whether you have one armed is printed in your turn context ("Wake armed: \u2026"); calling this with nothing armed is a clean no-op, no error. It writes the same per-turn slot as `wake_me`, so the two are last-call-wins against each other: `cancel_wake` then `wake_me` leaves the NEW wake armed, `wake_me` then `cancel_wake` leaves nothing armed. Like `wake_me` it takes effect when the turn SETTLES, not now. It reaches only your own wake in this conversation \u2014 never a peer\'s, and never a recurring schedule (those are `cabane.schedules.*`).',
7155
+ 'Stand down your own wake \u2014 the inverse of `wake_me`. No arguments: it means "when this turn settles, leave no wake armed for me in this conversation." Reach for it when the thing you armed a wake to check has already happened, or the work it was watching is over \u2014 an armed wake you no longer need fires into a turn with nothing to do, and a supervision loop with no off switch is one you can only end by leaving it running. Whether you have one armed is printed in your turn context ("Wake armed: \u2026"); calling this with nothing armed is a clean no-op, no error. It writes the same per-turn slot as `wake_me`, so the two are last-call-wins against each other: `cancel_wake` then `wake_me` leaves the NEW wake armed, `wake_me` then `cancel_wake` leaves nothing armed. Like `wake_me` it takes effect when the turn SETTLES, not now. It reaches only your own wake in this conversation \u2014 never a peer\'s, and never a recurring schedule (those are `schedules.*`).',
7156
7156
  {},
7157
7157
  async () => {
7158
7158
  wakeState.cancelled = true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cabane/companion",
3
- "version": "0.6.76",
3
+ "version": "0.6.78",
4
4
  "type": "module",
5
5
  "description": "The Cabane Companion (headless): connect a coding agent on your machine to your Cabane workspace as a responder — drive work against your own codebase, files, and MCP servers without putting any of it in Cabane.",
6
6
  "license": "UNLICENSED",