From 95939d675df2d7165deebe280f801254826b156a Mon Sep 17 00:00:00 2001 From: "CodexSol-GPT-5.6-sol" <773678591@qq.com> Date: Fri, 9 Oct 2026 07:55:42 -0700 Subject: [PATCH 1/3] feat(companion): present meeting capture truth MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Why: F317 meeting capture must reach the desktop companion as a bounded Host-owned status without exposing raw capture diagnostics or giving the renderer meeting control authority. [小太阳·砚砚/gpt-5.6-sol🐾] --- catalog/catalog.json | 17 ++++++ packages/companion/package.json | 6 +- packages/companion/scripts/preview.mjs | 1 + packages/companion/src/index.html | 5 ++ packages/companion/src/meeting-state.mjs | 55 +++++++++++++++++++ packages/companion/src/style.css | 7 +++ packages/companion/src/surface.mjs | 3 + packages/companion/test/conversation.test.mjs | 1 + .../companion/test/history-surface.test.mjs | 48 +++++++++++++++- .../companion/test/meeting-state.test.mjs | 54 ++++++++++++++++++ packages/companion/test/package.test.mjs | 2 + .../companion/test/panel-layout.browser.mjs | 37 +++++++++++++ packages/plugin-contract/package.json | 2 +- .../src/conformance/release-config.test.ts | 4 +- .../src/generated/contract.generated.ts | 12 ++++ .../src/schemas/companion-bridge.schema.json | 37 +++++++++++++ .../src/validation/companion-bridge.test.ts | 29 +++++++++- packages/plugin-sdk/package.json | 4 +- .../plugin-sdk/src/companion-client.test.ts | 20 +++++++ pnpm-lock.yaml | 6 +- scripts/fresh-consumer-install.test.mjs | 6 +- 21 files changed, 340 insertions(+), 16 deletions(-) create mode 100644 packages/companion/src/meeting-state.mjs create mode 100644 packages/companion/test/meeting-state.test.mjs diff --git a/catalog/catalog.json b/catalog/catalog.json index 2dcfe745..71d7f545 100644 --- a/catalog/catalog.json +++ b/catalog/catalog.json @@ -145,6 +145,23 @@ "voice" ], "versions": [ + { + "version": "0.1.0-alpha.22", + "contractVersion": "0.1.0", + "manifestPath": "plugin.yaml", + "artifact": { + "kind": "npm", + "packageName": "@clowder-ai/companion", + "version": "0.1.0-alpha.22", + "tarballUrl": "https://registry.npmjs.org/@clowder-ai/companion/-/companion-0.1.0-alpha.22.tgz", + "integrity": "sha512-KjG/CirSO1Nr0Y0ogcKGIFtmM5z3MGqdbeDnaZxwpZ/4NvuGRWjEV+KruiRIF5daf4Hd22oX4i9whRfLt4gO3g==", + "shasum": "063a04997d5cd56862b34019da2248d42cb71f5a", + "provenance": { + "repository": "https://github.com/zts212653/clowder-ai-plugins", + "sourceDirectory": "packages/companion" + } + } + }, { "version": "0.1.0-alpha.21", "contractVersion": "0.1.0", diff --git a/packages/companion/package.json b/packages/companion/package.json index 59ad5a61..f4edb4d8 100644 --- a/packages/companion/package.json +++ b/packages/companion/package.json @@ -1,6 +1,6 @@ { "name": "@clowder-ai/companion", - "version": "0.1.0-alpha.21", + "version": "0.1.0-alpha.22", "description": "The desktop voice body for your Clowder companion", "license": "MIT", "type": "module", @@ -27,8 +27,8 @@ "prepack": "pnpm build" }, "devDependencies": { - "@clowder-ai/plugin-contract": "0.1.0-beta.25", - "@clowder-ai/plugin-sdk": "0.1.0-beta.21", + "@clowder-ai/plugin-contract": "0.1.0-beta.26", + "@clowder-ai/plugin-sdk": "0.1.0-beta.22", "playwright": "1.61.1" }, "repository": { diff --git a/packages/companion/scripts/preview.mjs b/packages/companion/scripts/preview.mjs index 56336106..84f698bd 100644 --- a/packages/companion/scripts/preview.mjs +++ b/packages/companion/scripts/preview.mjs @@ -33,6 +33,7 @@ export function fixture(skin, failure, pending = true) { let companionSettings = {dutyCatProfileId:'fable-5',skin:${JSON.stringify(skin)},ballSize:72,behaviorEnabled:true,proactivePolicy:'quiet-badge',personaTone:'温暖、简短、不啰嗦',householdReadsAllowed:true}; const identity = () => ({kind:'state',phase,displayName:'宪宪',skin:companionSettings.skin,documentsAllowed:allowed,toolsReady:phase==='talking',behaviorEnabled:companionSettings.behaviorEnabled,nativeActivity:'none', audio:{supportedModes:['duplex','receive_only'],activeMode:phase==='talking'?(activeMode??'duplex'):null}, + meeting:{kind:'running',sharing:false,paused:false,sourceLabel:'Zoom · Cat Café 产品周会(核心桌面协作与会议转写状态验证)'}, liveTransport:{kind:'gpt_live_v3',verifiedModel:null},nativeWork:{scopeId:phase==='idle'?null:'0123456789abcdef',revision:0,active:[],recent:[]}, duty:{catId:'preview-cat',displayName:'宪宪'},carrier:{catId:'preview-cat',displayName:'宪宪'}}); let activeMode = null; const emit = event => listeners.forEach(fn=>fn(event)); diff --git a/packages/companion/src/index.html b/packages/companion/src/index.html index 7e69b78a..52662c6d 100644 --- a/packages/companion/src/index.html +++ b/packages/companion/src/index.html @@ -49,6 +49,7 @@