@cabane/companion 0.6.222 → 0.6.224

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
@@ -2572,7 +2572,7 @@ var init_transcript_sink = __esm({
2572
2572
  });
2573
2573
 
2574
2574
  // packages/agent-runtime/src/turn-control/descriptions.ts
2575
- var MAX_ASK_QUESTION_BYTES, MAX_ASK_HEADLINE_BYTES, MAX_ASK_ITEMS, EXCHANGE_KINDS, APPROVAL_OPTIONS, REQUEST_OPTIONS, EXCHANGE_EXPECTS, REQUEST_RESULT_OPTIONS, MAX_EXCHANGE_FILES, MAX_REQUEST_BODY_BYTES, MAX_ASK_OPTION_BYTES, ASK_OPTION_NOT_A_STRING, MIN_ASK_OPTIONS, MAX_ASK_OPTIONS, ASK_TARGET_PATTERN, ASK_TARGET_INVALID, MAX_WAKE_NOTE_BYTES, MAX_WITHDRAW_REASON_BYTES, MAX_SKIP_REASON_BYTES, TURN_CONTROL_MCP_SERVER, TURN_CONTROL_TOOLS, TURN_CONTROL_TOOL_DESCRIPTIONS, TURN_CONTROL_FIELD_DESCRIPTIONS;
2575
+ var MAX_ASK_QUESTION_BYTES, MAX_ASK_HEADLINE_BYTES, MAX_ASK_ITEMS, EXCHANGE_KINDS, APPROVAL_OPTIONS, REQUEST_OPTIONS, EXCHANGE_EXPECTS, MAX_EXCHANGE_FILES, MAX_REQUEST_BODY_BYTES, MAX_ASK_OPTION_BYTES, ASK_OPTION_NOT_A_STRING, MIN_ASK_OPTIONS, MAX_ASK_OPTIONS, ASK_TARGET_PATTERN, ASK_TARGET_INVALID, MAX_WAKE_NOTE_BYTES, MAX_WITHDRAW_REASON_BYTES, MAX_SKIP_REASON_BYTES, TURN_CONTROL_MCP_SERVER, TURN_CONTROL_TOOLS, TURN_CONTROL_TOOL_DESCRIPTIONS, TURN_CONTROL_FIELD_DESCRIPTIONS;
2576
2576
  var init_descriptions = __esm({
2577
2577
  "packages/agent-runtime/src/turn-control/descriptions.ts"() {
2578
2578
  "use strict";
@@ -2581,9 +2581,8 @@ var init_descriptions = __esm({
2581
2581
  MAX_ASK_ITEMS = 20;
2582
2582
  EXCHANGE_KINDS = ["question", "approval", "request"];
2583
2583
  APPROVAL_OPTIONS = ["Yes", "No"];
2584
- REQUEST_OPTIONS = ["Done", "Couldn't"];
2584
+ REQUEST_OPTIONS = ["Done"];
2585
2585
  EXCHANGE_EXPECTS = ["confirmation", "result"];
2586
- REQUEST_RESULT_OPTIONS = ["Couldn't"];
2587
2586
  MAX_EXCHANGE_FILES = 5;
2588
2587
  MAX_REQUEST_BODY_BYTES = 2e3;
2589
2588
  MAX_ASK_OPTION_BYTES = 200;
@@ -2607,7 +2606,7 @@ var init_descriptions = __esm({
2607
2606
  TURN_CONTROL_TOOL_DESCRIPTIONS = {
2608
2607
  answer: `Call this just before you write your answer: the text you write next is what the conversation keeps as your message. Call it once.`,
2609
2608
  open_exchange: `Put something in front of one person that comes back with a recorded outcome, then end your turn; don't wait for it. Not for delivering finished work, and never for acknowledgement or feedback on it; the reply delivers. Open one only when the work can't continue without the answer. \`targetUserId\` is a person on your roster, by their \`@handle\`; to bring in an agent, name them with \`@handle\` in your reply.
2610
- - A question is one item (\`headline\`, optional \`question\` body, \`options\`) or \`questions\`, 1\u2013${MAX_ASK_ITEMS} items; never both. An approval or request is \`headline\` and an optional \`question\` body only: its answers are fixed (${APPROVAL_OPTIONS.join(" / ")}; a request's set by \`expects\`). A request's body carries the steps and may hold a list and code blocks; every other body is a sentence or two of framing, inline Markdown only.
2609
+ - A question is one item (\`headline\`, optional \`question\` body, \`options\`) or \`questions\`, 1\u2013${MAX_ASK_ITEMS} items; never both. An approval or request is \`headline\` and an optional \`question\` body only. An approval is answered ${APPROVAL_OPTIONS.join(" / ")}; a request ${REQUEST_OPTIONS.join("")}, or the typed result when \`expects\` is \`result\`, or a note saying the person couldn't. A request's body carries the steps and may hold a list and code blocks; every other body is a sentence or two of framing, inline Markdown only.
2611
2610
  - Decisions that arise together go in ONE call, in the order you want them answered. A second call is a separate exchange, never an edit.
2612
2611
  - Voice, in headline, body and options: "I" for yourself, never your own name; name everyone else who decides or acts, as on your roster. Never "you", "your", "we", "us", "our" or their contractions, nor "he", "she" or "they" for a named actor. A quotation stays accurate: say who said it.
2613
2612
  - It must stand alone, since it can arrive first: the reply carries the findings, the exchange the question; don't repeat the reply in it.
@@ -2623,8 +2622,8 @@ var init_descriptions = __esm({
2623
2622
  answer: {},
2624
2623
  open_exchange: {
2625
2624
  targetUserId: "The person: their `@handle` from your turn context's roster (preferred), or their user id.",
2626
- kind: `What the exchange is for; default \`question\`. \`question\`: the person picks among courses of action or types an answer. \`approval\`: a yes/no on one proposed action \u2014 the person answers ${APPROVAL_OPTIONS.join(" or ")}. \`request\`: something only the person can do; set \`expects\`.`,
2627
- expects: `A request only, and set it every time: \`confirmation\` when you only need to hear it's done (they answer ${REQUEST_OPTIONS.join(" or ")}), \`result\` when you need something back (they type it, or answer ${REQUEST_RESULT_OPTIONS.join("")}). Default \`result\`. Refused on a question or approval.`,
2625
+ kind: `What the exchange is for; default \`question\`. \`question\`: the person picks among courses of action or types an answer. \`approval\`: a yes/no on one proposed action \u2014 the person answers ${APPROVAL_OPTIONS.join(" or ")}. \`request\`: something only the person can do \u2014 they answer ${REQUEST_OPTIONS.join("")}, or type the result when \`expects\` is \`result\`, or send a note saying they couldn't.`,
2626
+ expects: "A request only: `confirmation` (default) when you only need to hear it's done, `result` when you need something back. Either way the person may send only a note saying they couldn't. Refused on a question or approval.",
2628
2627
  question: `The body beneath the headline \u2014 for a question or approval one or two sentences of framing, NOT a report (up to ${MAX_ASK_QUESTION_BYTES} characters, inline markdown only); for a request the steps, with lists and code blocks allowed (up to ${MAX_REQUEST_BODY_BYTES} characters). With \`questions\`, leave it out.`,
2629
2628
  headline: `ONE clear, capitalized sentence, up to ${MAX_ASK_HEADLINE_BYTES} characters: for a question or approval, the question ending in \`?\` ("Should Ledger deploy once Mia approves?"); for a request, what to do ("Run these and send me the output"). What the person reads first in For you. Required for an approval or request.`,
2630
2629
  files: `1\u2013${MAX_EXCHANGE_FILES} workspace paths, drawn as file chips above the body; the person must be able to read each.`,
package/dist/runtime.js CHANGED
@@ -2938,8 +2938,7 @@ var MAX_ASK_QUESTION_BYTES = 400;
2938
2938
  var MAX_ASK_HEADLINE_BYTES = 120;
2939
2939
  var MAX_ASK_ITEMS = 20;
2940
2940
  var APPROVAL_OPTIONS = ["Yes", "No"];
2941
- var REQUEST_OPTIONS = ["Done", "Couldn't"];
2942
- var REQUEST_RESULT_OPTIONS = ["Couldn't"];
2941
+ var REQUEST_OPTIONS = ["Done"];
2943
2942
  var MAX_EXCHANGE_FILES = 5;
2944
2943
  var MAX_REQUEST_BODY_BYTES = 2e3;
2945
2944
  var MAX_ASK_OPTION_BYTES = 200;
@@ -2960,7 +2959,7 @@ var TURN_CONTROL_TOOLS = [
2960
2959
  var TURN_CONTROL_TOOL_DESCRIPTIONS = {
2961
2960
  answer: `Call this just before you write your answer: the text you write next is what the conversation keeps as your message. Call it once.`,
2962
2961
  open_exchange: `Put something in front of one person that comes back with a recorded outcome, then end your turn; don't wait for it. Not for delivering finished work, and never for acknowledgement or feedback on it; the reply delivers. Open one only when the work can't continue without the answer. \`targetUserId\` is a person on your roster, by their \`@handle\`; to bring in an agent, name them with \`@handle\` in your reply.
2963
- - A question is one item (\`headline\`, optional \`question\` body, \`options\`) or \`questions\`, 1\u2013${MAX_ASK_ITEMS} items; never both. An approval or request is \`headline\` and an optional \`question\` body only: its answers are fixed (${APPROVAL_OPTIONS.join(" / ")}; a request's set by \`expects\`). A request's body carries the steps and may hold a list and code blocks; every other body is a sentence or two of framing, inline Markdown only.
2962
+ - A question is one item (\`headline\`, optional \`question\` body, \`options\`) or \`questions\`, 1\u2013${MAX_ASK_ITEMS} items; never both. An approval or request is \`headline\` and an optional \`question\` body only. An approval is answered ${APPROVAL_OPTIONS.join(" / ")}; a request ${REQUEST_OPTIONS.join("")}, or the typed result when \`expects\` is \`result\`, or a note saying the person couldn't. A request's body carries the steps and may hold a list and code blocks; every other body is a sentence or two of framing, inline Markdown only.
2964
2963
  - Decisions that arise together go in ONE call, in the order you want them answered. A second call is a separate exchange, never an edit.
2965
2964
  - Voice, in headline, body and options: "I" for yourself, never your own name; name everyone else who decides or acts, as on your roster. Never "you", "your", "we", "us", "our" or their contractions, nor "he", "she" or "they" for a named actor. A quotation stays accurate: say who said it.
2966
2965
  - It must stand alone, since it can arrive first: the reply carries the findings, the exchange the question; don't repeat the reply in it.
@@ -2976,8 +2975,8 @@ var TURN_CONTROL_FIELD_DESCRIPTIONS = {
2976
2975
  answer: {},
2977
2976
  open_exchange: {
2978
2977
  targetUserId: "The person: their `@handle` from your turn context's roster (preferred), or their user id.",
2979
- kind: `What the exchange is for; default \`question\`. \`question\`: the person picks among courses of action or types an answer. \`approval\`: a yes/no on one proposed action \u2014 the person answers ${APPROVAL_OPTIONS.join(" or ")}. \`request\`: something only the person can do; set \`expects\`.`,
2980
- expects: `A request only, and set it every time: \`confirmation\` when you only need to hear it's done (they answer ${REQUEST_OPTIONS.join(" or ")}), \`result\` when you need something back (they type it, or answer ${REQUEST_RESULT_OPTIONS.join("")}). Default \`result\`. Refused on a question or approval.`,
2978
+ kind: `What the exchange is for; default \`question\`. \`question\`: the person picks among courses of action or types an answer. \`approval\`: a yes/no on one proposed action \u2014 the person answers ${APPROVAL_OPTIONS.join(" or ")}. \`request\`: something only the person can do \u2014 they answer ${REQUEST_OPTIONS.join("")}, or type the result when \`expects\` is \`result\`, or send a note saying they couldn't.`,
2979
+ expects: "A request only: `confirmation` (default) when you only need to hear it's done, `result` when you need something back. Either way the person may send only a note saying they couldn't. Refused on a question or approval.",
2981
2980
  question: `The body beneath the headline \u2014 for a question or approval one or two sentences of framing, NOT a report (up to ${MAX_ASK_QUESTION_BYTES} characters, inline markdown only); for a request the steps, with lists and code blocks allowed (up to ${MAX_REQUEST_BODY_BYTES} characters). With \`questions\`, leave it out.`,
2982
2981
  headline: `ONE clear, capitalized sentence, up to ${MAX_ASK_HEADLINE_BYTES} characters: for a question or approval, the question ending in \`?\` ("Should Ledger deploy once Mia approves?"); for a request, what to do ("Run these and send me the output"). What the person reads first in For you. Required for an approval or request.`,
2983
2982
  files: `1\u2013${MAX_EXCHANGE_FILES} workspace paths, drawn as file chips above the body; the person must be able to read each.`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cabane/companion",
3
- "version": "0.6.222",
3
+ "version": "0.6.224",
4
4
  "type": "module",
5
5
  "description": "The Cabane Companion (headless): connect an 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",
@@ -38,9 +38,9 @@
38
38
  "prepublishOnly": "pnpm build"
39
39
  },
40
40
  "dependencies": {
41
- "@anthropic-ai/claude-agent-sdk": "0.3.310",
41
+ "@anthropic-ai/claude-agent-sdk": "0.3.316",
42
42
  "@clack/prompts": "1.8.1",
43
- "@openai/codex-sdk": "0.164.0",
43
+ "@openai/codex-sdk": "0.166.0",
44
44
  "commander": "12.1.0",
45
45
  "eventsource-parser": "3.0.8",
46
46
  "graphql": "16.11.0",