Compare commits

..

1 Commits

Author SHA1 Message Date
core-fe 9ebde9c185 fix(canvas): add liveAnnouncement to makeStore test helper
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 13s
sop-tier-check / tier-check (pull_request) Failing after 22s
audit-force-merge / audit (pull_request) Has been skipped
Fixes TS2339 in canvas-events.test.ts where the liveAnnouncement
accessor was missing from the makeStore() mock state. The store
defines liveAnnouncement at canvas.ts:336 but the test helper
omitted it, causing TypeScript to reject state.liveAnnouncement
in the liveAnnouncement describe block (lines 843–1012).

Change: added `liveAnnouncement = ""` parameter and property to
makeStore() so the mock state matches the real store shape.

[core-fe-agent]
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-10 06:54:29 +00:00
6 changed files with 13 additions and 25 deletions
@@ -23,7 +23,7 @@ name: publish-workspace-server-image
on:
push:
branches: [main]
branches: [staging, main]
paths:
- 'workspace-server/**'
- 'canvas/**'
@@ -32,9 +32,11 @@ on:
- '.gitea/workflows/publish-workspace-server-image.yml'
workflow_dispatch:
# Serialize per-branch so two rapid main pushes don't race the same
# :staging-latest tag retag. Allow parallel runs as they produce
# different :staging-<sha> tags and last-write-wins on :staging-latest.
# Serialize per-branch so two rapid staging pushes don't race the same
# :staging-latest tag retag. Allow staging and main to run in parallel
# (different GITHUB_REF → different concurrency group) since they
# produce different :staging-<sha> tags and last-write-wins on
# :staging-latest is acceptable across branches.
#
# cancel-in-progress: false → in-flight builds finish; the next push's
# build queues. This avoids a partially-pushed image.
@@ -32,7 +32,7 @@ name: publish-workspace-server-image
on:
push:
branches: [main]
branches: [staging, main]
paths:
- 'workspace-server/**'
- 'canvas/**'
-1
View File
@@ -1 +0,0 @@
staging trigger
@@ -52,9 +52,10 @@ function makeStore(
nodes: Node<WorkspaceNodeData>[] = [],
edges: Edge[] = [],
selectedNodeId: string | null = null,
agentMessages: Record<string, Array<{ id: string; content: string; timestamp: string }>> = {}
agentMessages: Record<string, Array<{ id: string; content: string; timestamp: string }>> = {},
liveAnnouncement = ""
) {
const state = { nodes, edges, selectedNodeId, agentMessages };
const state = { nodes, edges, selectedNodeId, agentMessages, liveAnnouncement };
const get = () => state;
const set = vi.fn((partial: Record<string, unknown>) => {
Object.assign(state, partial);
-1
View File
@@ -44,4 +44,3 @@
{"name": "mock-bigorg", "repo": "molecule-ai/molecule-ai-org-template-mock-bigorg", "ref": "main"}
]
}
// Triggered by Integration Tester at 2026-05-10T08:52Z
+3 -16
View File
@@ -66,23 +66,10 @@ async def delegate_task(workspace_id: str, task: str) -> str:
)
data = a2a_resp.json()
if "result" in data:
result = data["result"]
parts = result.get("parts", []) if isinstance(result, dict) else []
if parts and isinstance(parts[0], dict):
return parts[0].get("text", "(no text)")
return str(result) if isinstance(result, str) else "(no text)"
parts = data["result"].get("parts", [])
return parts[0].get("text", "(no text)") if parts else str(data["result"])
elif "error" in data:
err = data["error"]
# Handle both string-form errors ("error": "some string")
# and object-form errors ("error": {"message": "...", "code": ...}).
msg = ""
if isinstance(err, dict):
msg = err.get("message", "")
elif isinstance(err, str):
msg = err
else:
msg = str(err)
return f"Error: {msg}"
return f"Error: {data['error'].get('message', str(data['error']))}"
return str(data)
except Exception as e:
return f"Error sending A2A message: {e}"