crewly 1.20.277 → 1.20.279

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.
Files changed (96) hide show
  1. package/config/skills/agent/core/reply/SKILL.md +2 -0
  2. package/config/skills/agent/core/reply/execute.sh +15 -1
  3. package/config/skills/agent/core/reply/execute.test.sh +7 -0
  4. package/dist/backend/backend/src/constants.d.ts +64 -0
  5. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  6. package/dist/backend/backend/src/constants.js +64 -0
  7. package/dist/backend/backend/src/constants.js.map +1 -1
  8. package/dist/backend/backend/src/controllers/chat/agent-reply.controller.d.ts +9 -0
  9. package/dist/backend/backend/src/controllers/chat/agent-reply.controller.d.ts.map +1 -1
  10. package/dist/backend/backend/src/controllers/chat/agent-reply.controller.js +23 -0
  11. package/dist/backend/backend/src/controllers/chat/agent-reply.controller.js.map +1 -1
  12. package/dist/backend/backend/src/index.d.ts.map +1 -1
  13. package/dist/backend/backend/src/index.js +121 -3
  14. package/dist/backend/backend/src/index.js.map +1 -1
  15. package/dist/backend/backend/src/services/briefing/briefing-cards.d.ts +99 -0
  16. package/dist/backend/backend/src/services/briefing/briefing-cards.d.ts.map +1 -0
  17. package/dist/backend/backend/src/services/briefing/briefing-cards.js +156 -0
  18. package/dist/backend/backend/src/services/briefing/briefing-cards.js.map +1 -0
  19. package/dist/backend/backend/src/services/briefing/briefing.service.d.ts +8 -0
  20. package/dist/backend/backend/src/services/briefing/briefing.service.d.ts.map +1 -1
  21. package/dist/backend/backend/src/services/briefing/briefing.service.js +31 -9
  22. package/dist/backend/backend/src/services/briefing/briefing.service.js.map +1 -1
  23. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +33 -1
  24. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  25. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +33 -0
  26. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  27. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +21 -0
  28. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  29. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +37 -0
  30. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  31. package/dist/backend/backend/src/services/cloud/cloud-talk-inbound.service.d.ts.map +1 -1
  32. package/dist/backend/backend/src/services/cloud/cloud-talk-inbound.service.js +4 -0
  33. package/dist/backend/backend/src/services/cloud/cloud-talk-inbound.service.js.map +1 -1
  34. package/dist/backend/backend/src/services/drive/drive-agent.service.d.ts +228 -0
  35. package/dist/backend/backend/src/services/drive/drive-agent.service.d.ts.map +1 -0
  36. package/dist/backend/backend/src/services/drive/drive-agent.service.js +412 -0
  37. package/dist/backend/backend/src/services/drive/drive-agent.service.js.map +1 -0
  38. package/dist/backend/backend/src/services/drive/drive-cloud.contract.d.ts +92 -0
  39. package/dist/backend/backend/src/services/drive/drive-cloud.contract.d.ts.map +1 -0
  40. package/dist/backend/backend/src/services/drive/drive-cloud.contract.js +113 -0
  41. package/dist/backend/backend/src/services/drive/drive-cloud.contract.js.map +1 -0
  42. package/dist/backend/backend/src/services/drive/drive-conversation.store.d.ts +86 -0
  43. package/dist/backend/backend/src/services/drive/drive-conversation.store.d.ts.map +1 -0
  44. package/dist/backend/backend/src/services/drive/drive-conversation.store.js +102 -0
  45. package/dist/backend/backend/src/services/drive/drive-conversation.store.js.map +1 -0
  46. package/dist/backend/backend/src/services/drive/drive-recall.d.ts +65 -0
  47. package/dist/backend/backend/src/services/drive/drive-recall.d.ts.map +1 -0
  48. package/dist/backend/backend/src/services/drive/drive-recall.js +91 -0
  49. package/dist/backend/backend/src/services/drive/drive-recall.js.map +1 -0
  50. package/dist/backend/backend/src/services/drive/drive-row.utils.d.ts +19 -0
  51. package/dist/backend/backend/src/services/drive/drive-row.utils.d.ts.map +1 -0
  52. package/dist/backend/backend/src/services/drive/drive-row.utils.js +20 -0
  53. package/dist/backend/backend/src/services/drive/drive-row.utils.js.map +1 -0
  54. package/dist/backend/backend/src/services/open-items/open-items.service.d.ts.map +1 -1
  55. package/dist/backend/backend/src/services/open-items/open-items.service.js +14 -2
  56. package/dist/backend/backend/src/services/open-items/open-items.service.js.map +1 -1
  57. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  58. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +4 -0
  59. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  60. package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
  61. package/dist/backend/backend/src/services/slack/slack-initializer.js +2 -1
  62. package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
  63. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  64. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +7 -1
  65. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  66. package/dist/backend/backend/src/services/talk/talk-live-token.service.d.ts +23 -7
  67. package/dist/backend/backend/src/services/talk/talk-live-token.service.d.ts.map +1 -1
  68. package/dist/backend/backend/src/services/talk/talk-live-token.service.js +80 -40
  69. package/dist/backend/backend/src/services/talk/talk-live-token.service.js.map +1 -1
  70. package/dist/backend/build-info.json +2 -2
  71. package/dist/cli/backend/src/constants.d.ts +64 -0
  72. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  73. package/dist/cli/backend/src/constants.js +64 -0
  74. package/dist/cli/backend/src/constants.js.map +1 -1
  75. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +33 -1
  76. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  77. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +33 -0
  78. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  79. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +21 -0
  80. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  81. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +37 -0
  82. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  83. package/dist/cli/backend/src/services/drive/drive-row.utils.d.ts +19 -0
  84. package/dist/cli/backend/src/services/drive/drive-row.utils.d.ts.map +1 -0
  85. package/dist/cli/backend/src/services/drive/drive-row.utils.js +20 -0
  86. package/dist/cli/backend/src/services/drive/drive-row.utils.js.map +1 -0
  87. package/dist/cli/backend/src/services/open-items/open-items.service.d.ts.map +1 -1
  88. package/dist/cli/backend/src/services/open-items/open-items.service.js +14 -2
  89. package/dist/cli/backend/src/services/open-items/open-items.service.js.map +1 -1
  90. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  91. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +4 -0
  92. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  93. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  94. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +7 -1
  95. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  96. package/package.json +1 -1
@@ -1,13 +1,17 @@
1
1
  /**
2
2
  * Drive mode voice: Gemini Live ephemeral tokens (specs/2026-10-08-drive-mode.md §3).
3
3
  *
4
+ * This is the machine-hosted FALLBACK: the portal starts Drive mode on Crewly
5
+ * Cloud (`POST /api/cloud/talk/session`, Cloud-held key, §7). The setup here
6
+ * is the same voice orchestrator, with the same tools and VAD.
7
+ *
4
8
  * The phone talks to Gemini Live directly (realtime audio, barge-in), but it
5
9
  * must never see this machine's Gemini API key. So the machine mints a
6
10
  * short-lived token (`POST /v1alpha/auth_tokens`) that:
7
11
  *
8
12
  * - opens ONE session within a minute and lasts at most 30 minutes;
9
13
  * - is locked to the briefer's setup — model, audio output, voice, the
10
- * system instruction and the briefing tools — so a page holding it cannot
14
+ * system instruction, the tools and voice activity detection — so a page holding it cannot
11
15
  * turn it into a general-purpose Gemini session.
12
16
  *
13
17
  * The key comes from the Antigravity credential Crewly already stores
@@ -54,6 +58,16 @@ export interface LiveSetup {
54
58
  tools: Array<{
55
59
  functionDeclarations: LiveFunctionDeclaration[];
56
60
  }>;
61
+ /** Voice activity detection: how easily the owner's voice starts / ends a turn */
62
+ realtimeInputConfig: {
63
+ automaticActivityDetection: {
64
+ startOfSpeechSensitivity: string;
65
+ endOfSpeechSensitivity: string;
66
+ prefixPaddingMs: number;
67
+ silenceDurationMs: number;
68
+ };
69
+ activityHandling: string;
70
+ };
57
71
  inputAudioTranscription: Record<string, never>;
58
72
  outputAudioTranscription: Record<string, never>;
59
73
  }
@@ -94,23 +108,25 @@ export interface TalkLiveTokenDeps {
94
108
  logger?: ComponentLogger;
95
109
  }
96
110
  /**
97
- * The briefing tools the voice model may call. The page carries each call to
98
- * this machine's `/api/briefing` over the relay.
111
+ * The tools the voice orchestrator may call. The page carries each call to
112
+ * Crewly Cloud (`/api/cloud/talk/session/…`); waiting items come from the
113
+ * owner's machine (`/api/briefing`).
99
114
  *
100
115
  * @returns Function declarations
101
116
  */
102
- export declare function briefingToolDeclarations(): LiveFunctionDeclaration[];
117
+ export declare function driveToolDeclarations(): LiveFunctionDeclaration[];
103
118
  /**
104
- * The briefer's system instruction.
119
+ * The voice orchestrator's system instruction.
105
120
  *
106
121
  * @param language - Language to start in
107
122
  * @returns Instruction text
108
123
  */
109
- export declare function briefingSystemInstruction(language: LiveLanguage): string;
124
+ export declare function driveSystemInstruction(language: LiveLanguage): string;
110
125
  /**
111
126
  * Field mask over a setup, the way the Gemini SDK builds it
112
127
  * (`tokens.create` with `lockAdditionalFields: []`): every top-level field
113
- * and, for an object, each of its keys.
128
+ * and, for an object, each of its keys — except the fields in
129
+ * {@link TALK_LIVE_CONSTANTS.FIELD_MASK_WHOLE}, masked by their top-level key.
114
130
  *
115
131
  * @param setup - The setup
116
132
  * @returns Comma-separated field paths
@@ -1 +1 @@
1
- {"version":3,"file":"talk-live-token.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/talk/talk-live-token.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"talk-live-token.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/talk/talk-live-token.service.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,17 @@
1
1
  /**
2
2
  * Drive mode voice: Gemini Live ephemeral tokens (specs/2026-10-08-drive-mode.md §3).
3
3
  *
4
+ * This is the machine-hosted FALLBACK: the portal starts Drive mode on Crewly
5
+ * Cloud (`POST /api/cloud/talk/session`, Cloud-held key, §7). The setup here
6
+ * is the same voice orchestrator, with the same tools and VAD.
7
+ *
4
8
  * The phone talks to Gemini Live directly (realtime audio, barge-in), but it
5
9
  * must never see this machine's Gemini API key. So the machine mints a
6
10
  * short-lived token (`POST /v1alpha/auth_tokens`) that:
7
11
  *
8
12
  * - opens ONE session within a minute and lasts at most 30 minutes;
9
13
  * - is locked to the briefer's setup — model, audio output, voice, the
10
- * system instruction and the briefing tools — so a page holding it cannot
14
+ * system instruction, the tools and voice activity detection — so a page holding it cannot
11
15
  * turn it into a general-purpose Gemini session.
12
16
  *
13
17
  * The key comes from the Antigravity credential Crewly already stores
@@ -37,27 +41,58 @@ export class TalkLiveTokenError extends Error {
37
41
  }
38
42
  }
39
43
  /**
40
- * The briefing tools the voice model may call. The page carries each call to
41
- * this machine's `/api/briefing` over the relay.
44
+ * The tools the voice orchestrator may call. The page carries each call to
45
+ * Crewly Cloud (`/api/cloud/talk/session/…`); waiting items come from the
46
+ * owner's machine (`/api/briefing`).
42
47
  *
43
48
  * @returns Function declarations
44
49
  */
45
- export function briefingToolDeclarations() {
46
- const itemId = { type: 'STRING', description: 'The item id from get_next_item.' };
50
+ export function driveToolDeclarations() {
51
+ const itemId = { type: 'STRING', description: 'The item id from get_waiting_item.' };
52
+ const target = { type: 'STRING', description: 'Who: an agent name ("Ella"), a team ("CE team") or a channel ("#daily-info") — or a target id from list_targets.' };
47
53
  return [
48
54
  {
49
- name: 'get_next_item',
50
- description: 'Get the next thing waiting on the owner (most urgent first) with its details and answer options. Call it when the session starts, after each item is settled, and whenever the owner asks what is next. Returns empty:true when nothing is waiting.',
55
+ name: 'list_targets',
56
+ description: 'Everyone the owner can talk to: agents (with team and machine), teams (answered by their lead) and Crewly channels. Use it when you are not sure who the owner means.',
57
+ },
58
+ {
59
+ name: 'send_to',
60
+ description: "Send the owner's words to an agent, a team or a channel, on any of the owner's machines. Returns at once (status sent) — the answer comes later through check_replies or as a message you are given. If it returns ambiguous, ask the owner which one of the candidates and call again with its id. If it returns offline, tell the owner that machine is offline and the message waits.",
61
+ parameters: {
62
+ type: 'OBJECT',
63
+ properties: {
64
+ target,
65
+ text: { type: 'STRING', description: "The owner's own words for them, in the owner's language, as said (no paraphrase)." },
66
+ },
67
+ required: ['target', 'text'],
68
+ },
69
+ },
70
+ {
71
+ name: 'check_replies',
72
+ description: 'New replies from agents since you last checked, and who is still working. Use it when the owner asks "did Ella answer?" or after a while of silence.',
73
+ },
74
+ {
75
+ name: 'recall',
76
+ description: 'What an agent recently sent the owner (their DMs and threads, last few days), best match to a hint first. Use it for "what did Ella send me about X? say it again".',
77
+ parameters: {
78
+ type: 'OBJECT',
79
+ properties: { target, hint: { type: 'STRING', description: 'What it was about, in the owner\'s words (optional).' } },
80
+ required: ['target'],
81
+ },
82
+ },
83
+ {
84
+ name: 'get_waiting_item',
85
+ description: 'Only when the owner asks ("anything waiting for me?", "有什么要我处理的?"): the next decision card or finished work waiting for them. Returns empty:true when nothing is waiting. Never call it on your own.',
51
86
  },
52
87
  {
53
88
  name: 'answer_item',
54
- description: "Give the owner's answer to an item: an option_key from its options, and/or their words as text. For finished work (review) use option_key accept, or send_back with text saying what to fix. If it returns needs_confirmation, read confirmQuestion to the owner and only after a clear yes call again with the same answer, confirm=true and the confirm_token.",
89
+ description: "Answer a waiting item: an option_key from its options, and/or the owner's words as text. For finished work use option_key accept, or send_back with text saying what to fix. If it returns needs_confirmation, read confirmQuestion and only after a clear yes call again with the same answer, confirm=true and the confirm_token.",
55
90
  parameters: {
56
91
  type: 'OBJECT',
57
92
  properties: {
58
93
  item_id: itemId,
59
94
  option_key: { type: 'STRING', description: 'Key of the chosen option (e.g. a, b, accept, send_back).' },
60
- text: { type: 'STRING', description: "The owner's own words, in their language, as said (no paraphrase)." },
95
+ text: { type: 'STRING', description: "The owner's own words, as said (no paraphrase)." },
61
96
  confirm: { type: 'BOOLEAN', description: 'true only on the second call, after the owner confirmed out loud.' },
62
97
  confirm_token: { type: 'STRING', description: 'The token from the needs_confirmation result.' },
63
98
  },
@@ -66,16 +101,12 @@ export function briefingToolDeclarations() {
66
101
  },
67
102
  {
68
103
  name: 'skip_item',
69
- description: 'The owner says next / skip / not now: hide the item for a few hours without answering. With dismiss=true it is dropped for good ("I don\'t care about this anymore") — only when the owner says so.',
70
- parameters: {
71
- type: 'OBJECT',
72
- properties: { item_id: itemId, dismiss: { type: 'BOOLEAN', description: 'Drop it for good (owner said they do not care).' } },
73
- required: ['item_id'],
74
- },
104
+ description: 'The owner says next / skip about a waiting item: it comes back in a few hours.',
105
+ parameters: { type: 'OBJECT', properties: { item_id: itemId }, required: ['item_id'] },
75
106
  },
76
107
  {
77
108
  name: 'later_item',
78
- description: 'The owner says later / remind me: bring the item back at a time (ISO 8601 with timezone offset), or tomorrow morning when no time is given.',
109
+ description: 'The owner says later / remind me about a waiting item: it comes back at a time (ISO 8601 with offset), or tomorrow morning.',
79
110
  parameters: {
80
111
  type: 'OBJECT',
81
112
  properties: { item_id: itemId, at: { type: 'STRING', description: 'When to bring it back (ISO 8601), optional.' } },
@@ -83,52 +114,52 @@ export function briefingToolDeclarations() {
83
114
  },
84
115
  },
85
116
  {
86
- name: 'ask_about_item',
87
- description: "The owner asks something about an item that its details do not answer. The question goes to the agent who is waiting; the item comes back to the queue (with the agent's answer) when they reply. Answer from details yourself whenever you can instead.",
88
- parameters: {
89
- type: 'OBJECT',
90
- properties: { item_id: itemId, question: { type: 'STRING', description: "The owner's question, in their words." } },
91
- required: ['item_id', 'question'],
92
- },
117
+ name: 'end_session',
118
+ description: 'The owner says end / 结束 / that is all: every agent posts one recap where its conversation belongs, and the owner gets a summary in Slack. Say goodbye in one sentence after it.',
93
119
  },
94
120
  ];
95
121
  }
96
122
  /** Spoken name of each starting language. */
97
123
  const LANGUAGE_NAMES = { zh: 'Mandarin Chinese', en: 'English', es: 'Spanish' };
98
124
  /**
99
- * The briefer's system instruction.
125
+ * The voice orchestrator's system instruction.
100
126
  *
101
127
  * @param language - Language to start in
102
128
  * @returns Instruction text
103
129
  */
104
- export function briefingSystemInstruction(language) {
130
+ export function driveSystemInstruction(language) {
105
131
  return [
106
- "You are Crewly's voice briefer. The owner is listening on a phone, often while driving: they cannot look at the screen.",
132
+ "You are Crewly's voice orchestrator. The owner talks to their agents through you, on a phone, often while driving: they cannot look at the screen.",
107
133
  `Speak ${LANGUAGE_NAMES[language]} to start; if the owner speaks another language, switch to it and stay in it.`,
108
- 'Be brief: one or two short sentences at a time, natural spoken language, no lists, no URLs, no ids unless asked.',
109
- 'Start by calling get_next_item. Read ONE item at a time: who is waiting and the summary, then the options. Then stop and listen.',
110
- 'Never invent facts. Everything you say about an item comes from get_next_item results; if the details do not answer a question, say you will ask, and call ask_about_item.',
111
- 'When the owner answers, call answer_item with their choice (option_key) and/or their own words (text) — never put words in their mouth. If the result is needs_confirmation, ask exactly: confirm? (in their language, e.g. 确认吗?) and call again with confirm=true and the confirm_token only after a clear yes.',
112
- 'next / skip / 下一个 / 跳过 → skip_item, then get_next_item. later / remind me / 晚点 / 明天提醒我 → later_item. drop it / 不管了 → skip_item with dismiss=true.',
113
- 'wait / what does this mean / 等一下 / 这是什么意思 → explain from the details; if they do not cover it, ask_about_item and move on to the next item. continue / 继续 → carry on where you were.',
114
- 'repeat / 再说一遍 → repeat the current item. pause / 暂停 → say one word and stay silent until the owner speaks.',
115
- "If an item has lookupAnswer, say first that the agent answered the owner's earlier question, and what they said. If it has reminder, say it is the reminder they asked for.",
116
- 'When nothing is waiting, say so in one sentence and stay listening; call get_next_item again if the owner asks.',
117
- 'If a tool fails, say so in one sentence and offer to try again or move on.',
134
+ 'Be brief: one or two short sentences, natural spoken language, no lists. Never read URLs, ids, file paths or ticket numbers aloud.',
135
+ 'Start with one short greeting and listen. Do not read anything out on your own.',
136
+ 'Route the owner\'s words: "tell Ella …", "ask the CE team …", "in #daily-info, …" → send_to with the owner\'s own words (never paraphrase or add your own). If it is unclear who is meant, ask, or call list_targets; if send_to says ambiguous, ask which one.',
137
+ 'send_to returns at once: say who has it in a few words ("Sent, Ella is on it.") and keep talking with the owner — they can start another conversation while waiting.',
138
+ 'Replies arrive as messages "[reply] <name>: …" between turns, or from check_replies. Relay them faithfully and briefly, saying who it is from; never invent or embellish. If someone is still working, say so when asked.',
139
+ 'Follow-ups go to the same person: "tell her …" means the agent of the last reply, unless the owner names someone else.',
140
+ '"what did Ella send me about X? say it again" → recall, then read the best match briefly; the owner can then continue with send_to.',
141
+ 'Only when the owner asks ("anything waiting for me?") → get_waiting_item, then answer_item / skip_item / later_item as they say. Sensitive answers return needs_confirmation: ask exactly "confirm?" (in their language, e.g. 确认吗?) and call again with confirm=true and the confirm_token only after a clear yes.',
142
+ 'repeat / 再说一遍 → repeat the last thing. pause / 暂停 → say one word and stay silent until the owner speaks.',
143
+ 'end / 结束 / that is all → end_session, then one goodbye sentence.',
144
+ 'If a tool fails, say so in one sentence and offer to try again.',
118
145
  ].join('\n');
119
146
  }
120
147
  /**
121
148
  * Field mask over a setup, the way the Gemini SDK builds it
122
149
  * (`tokens.create` with `lockAdditionalFields: []`): every top-level field
123
- * and, for an object, each of its keys.
150
+ * and, for an object, each of its keys — except the fields in
151
+ * {@link TALK_LIVE_CONSTANTS.FIELD_MASK_WHOLE}, masked by their top-level key.
124
152
  *
125
153
  * @param setup - The setup
126
154
  * @returns Comma-separated field paths
127
155
  */
128
156
  export function setupFieldMask(setup) {
157
+ const whole = new Set(C.FIELD_MASK_WHOLE);
129
158
  const fields = [];
130
159
  for (const [key, value] of Object.entries(setup)) {
131
- if (value && typeof value === 'object' && Object.keys(value).length > 0) {
160
+ // An array (tools) is masked as a whole: Google rejects `tools.0`
161
+ // ("field_mask is invalid for BidiGenerateContentSetup", 2026-10-08).
162
+ if (!whole.has(key) && value && typeof value === 'object' && !Array.isArray(value) && Object.keys(value).length > 0) {
132
163
  fields.push(...Object.keys(value).map((k) => `${key}.${k}`));
133
164
  }
134
165
  else {
@@ -191,8 +222,17 @@ export class TalkLiveTokenService {
191
222
  responseModalities: ['AUDIO'],
192
223
  speechConfig: { voiceConfig: { prebuiltVoiceConfig: { voiceName: C.VOICE } } },
193
224
  },
194
- systemInstruction: { parts: [{ text: briefingSystemInstruction(language) }] },
195
- tools: [{ functionDeclarations: briefingToolDeclarations() }],
225
+ systemInstruction: { parts: [{ text: driveSystemInstruction(language) }] },
226
+ tools: [{ functionDeclarations: driveToolDeclarations() }],
227
+ realtimeInputConfig: {
228
+ automaticActivityDetection: {
229
+ startOfSpeechSensitivity: C.VAD.START_OF_SPEECH_SENSITIVITY,
230
+ endOfSpeechSensitivity: C.VAD.END_OF_SPEECH_SENSITIVITY,
231
+ prefixPaddingMs: C.VAD.PREFIX_PADDING_MS,
232
+ silenceDurationMs: C.VAD.SILENCE_DURATION_MS,
233
+ },
234
+ activityHandling: C.VAD.ACTIVITY_HANDLING,
235
+ },
196
236
  inputAudioTranscription: {},
197
237
  outputAudioTranscription: {},
198
238
  };
@@ -1 +1 @@
1
- {"version":3,"file":"talk-live-token.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/talk/talk-live-token.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"talk-live-token.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/talk/talk-live-token.service.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  {
2
- "commit": "9a547578afc960285d508cc4a9804b08ecdce180",
3
- "builtAt": "2026-10-09T00:15:03.792Z"
2
+ "commit": "b53dffbf106897902a2cae89ddc0bf875a3e22f8",
3
+ "builtAt": "2026-10-09T02:49:14.168Z"
4
4
  }
@@ -7503,6 +7503,12 @@ export declare const BRIEFING_CONSTANTS: {
7503
7503
  readonly CONFIRM_TTL_MS: number;
7504
7504
  /** Agent timeline messages looked at for a lookup answer */
7505
7505
  readonly LOOKUP_SCAN_LIMIT: 30;
7506
+ /** An open card this long past its deadline is stale, not read out (ms) */
7507
+ readonly CARD_STALE_AFTER_DEADLINE_MS: number;
7508
+ /** A card (or reply question) asked longer ago than this is stale, not read out (ms) */
7509
+ readonly CARD_MAX_AGE_MS: number;
7510
+ /** Two cards from one asker whose questions are at least this similar (0–1, character bigrams) are duplicates */
7511
+ readonly CARD_DUPLICATE_SIMILARITY: 0.6;
7506
7512
  /** Words in a title / question that make an item sensitive (spoken confirmation required) */
7507
7513
  readonly SENSITIVE_PATTERN: RegExp;
7508
7514
  /** Decision sensitivities that always need a spoken confirmation */
@@ -7517,6 +7523,42 @@ export declare const BRIEFING_CONSTANTS: {
7517
7523
  readonly FAILED: "failed";
7518
7524
  };
7519
7525
  };
7526
+ /**
7527
+ * Drive mode, the machine side (specs/2026-10-08-drive-mode.md §7). Crewly
7528
+ * Cloud hosts the session; this machine delivers the owner's words to its
7529
+ * agents, carries their `reply --drive` answers to Cloud, reads back an
7530
+ * agent's recent messages (recall) and has each agent post its recap.
7531
+ */
7532
+ export declare const DRIVE_CONSTANTS: {
7533
+ /** Per-machine file under CREWLY_HOME: this machine's Drive mode conversations */
7534
+ readonly STATE_FILENAME: "drive-conversations.json";
7535
+ /** Capability advertised to Cloud while the handler runs */
7536
+ readonly CAPABILITY: "drive_message";
7537
+ /** Relay message type Cloud reuses for Drive mode (told apart by `kind`) */
7538
+ readonly RELAY_MESSAGE_TYPE: "talk_message";
7539
+ readonly RELAY_KIND: "drive";
7540
+ /** Cloud routes (under `/api/cloud/talk/session/:id`) */
7541
+ readonly CLOUD_BASE_PATH: "/api/cloud/talk/session";
7542
+ /** A session id Cloud makes */
7543
+ readonly SESSION_ID_PATTERN: RegExp;
7544
+ /** Local conversations are forgotten this long after they started (ms) */
7545
+ readonly KEEP_MS: number;
7546
+ /** Agent reply: longest length sent (characters) */
7547
+ readonly TEXT_MAX_CHARS: 4000;
7548
+ /** Recall: how far back an agent's messages to the owner are read (ms) */
7549
+ readonly RECALL_WINDOW_MS: number;
7550
+ /** Recall: messages returned at most */
7551
+ readonly RECALL_MAX: 4;
7552
+ /** Recall: one message, longest length (characters) */
7553
+ readonly RECALL_MESSAGE_MAX_CHARS: 900;
7554
+ /** Recall: messages scanned at most */
7555
+ readonly RECALL_SCAN_LIMIT: 3000;
7556
+ /** Cloud calls: timeout and retries */
7557
+ readonly REQUEST_TIMEOUT_MS: 10000;
7558
+ readonly FETCH_RETRIES: 3;
7559
+ /** Metadata `via` on every chat-v2 row Drive mode writes (the Slack mirrors skip them) */
7560
+ readonly VIA: "drive-mode";
7561
+ };
7520
7562
  /**
7521
7563
  * Drive mode voice layer: Gemini Live ephemeral tokens minted on this
7522
7564
  * machine with its Gemini API key (specs/2026-10-08-drive-mode.md §3).
@@ -7542,6 +7584,28 @@ export declare const TALK_LIVE_CONSTANTS: {
7542
7584
  readonly TOKEN_USES: 1;
7543
7585
  /** Google's answer deadline (ms) */
7544
7586
  readonly REQUEST_TIMEOUT_MS: 15000;
7587
+ /**
7588
+ * Gemini Live voice activity detection, locked into the token's setup
7589
+ * (`realtimeInputConfig.automaticActivityDetection`). LOW start
7590
+ * sensitivity: a cough, a click or road noise does not count as the owner
7591
+ * starting to speak, so it no longer cuts the voice off. LOW end
7592
+ * sensitivity + 800 ms of silence: a short pause mid-sentence does not end
7593
+ * the owner's turn. 300 ms of padding keeps the first syllable.
7594
+ */
7595
+ readonly VAD: {
7596
+ readonly START_OF_SPEECH_SENSITIVITY: "START_SENSITIVITY_LOW";
7597
+ readonly END_OF_SPEECH_SENSITIVITY: "END_SENSITIVITY_LOW";
7598
+ readonly PREFIX_PADDING_MS: 300;
7599
+ readonly SILENCE_DURATION_MS: 800;
7600
+ /** Speech over the voice interrupts it (barge-in stays on) */
7601
+ readonly ACTIVITY_HANDLING: "START_OF_ACTIVITY_INTERRUPTS";
7602
+ };
7603
+ /**
7604
+ * Setup fields locked as a whole in the token's field mask. Google
7605
+ * refuses a mask path into an array (`tools.0`) — and a nested object is
7606
+ * masked by its top-level key too (`realtimeInputConfig`).
7607
+ */
7608
+ readonly FIELD_MASK_WHOLE: readonly ["tools", "realtimeInputConfig"];
7545
7609
  /** Gemini prebuilt voice the briefer speaks with (multilingual) */
7546
7610
  readonly VOICE: "Aoede";
7547
7611
  /** Languages the briefer starts in */