@pushpalsdev/cli 1.0.17 → 1.0.19
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/pushpals-cli.js +542 -23
- package/package.json +1 -1
- package/runtime/sandbox/apps/workerpals/.python-version +1 -0
- package/runtime/sandbox/apps/workerpals/Dockerfile.sandbox +71 -0
- package/runtime/sandbox/apps/workerpals/package.json +25 -0
- package/runtime/sandbox/apps/workerpals/pyproject.toml +8 -0
- package/runtime/sandbox/apps/workerpals/src/backends/backend_config.ts +111 -0
- package/runtime/sandbox/apps/workerpals/src/backends/miniswe/miniswe_executor.py +2029 -0
- package/runtime/sandbox/apps/workerpals/src/backends/miniswe_backend.ts +48 -0
- package/runtime/sandbox/apps/workerpals/src/backends/openai_codex/openai_codex_executor.py +1259 -0
- package/runtime/sandbox/apps/workerpals/src/backends/openai_codex/test_openai_codex_runtime_config.py +110 -0
- package/runtime/sandbox/apps/workerpals/src/backends/openai_codex_backend.ts +67 -0
- package/runtime/sandbox/apps/workerpals/src/backends/openhands/openhands_executor.py +563 -0
- package/runtime/sandbox/apps/workerpals/src/backends/openhands_backend.ts +161 -0
- package/runtime/sandbox/apps/workerpals/src/backends/openhands_task_execute.ts +536 -0
- package/runtime/sandbox/apps/workerpals/src/backends/shared/executor_base.py +746 -0
- package/runtime/sandbox/apps/workerpals/src/backends/shared/test_settings_resolver.py +60 -0
- package/runtime/sandbox/apps/workerpals/src/backends/task_execute_registry.ts +21 -0
- package/runtime/sandbox/apps/workerpals/src/backends/types.ts +52 -0
- package/runtime/sandbox/apps/workerpals/src/common/execution_utils.ts +149 -0
- package/runtime/sandbox/apps/workerpals/src/common/executor_backend.ts +15 -0
- package/runtime/sandbox/apps/workerpals/src/common/generic_python_executor.ts +210 -0
- package/runtime/sandbox/apps/workerpals/src/common/logger.ts +65 -0
- package/runtime/sandbox/apps/workerpals/src/common/types.ts +9 -0
- package/runtime/sandbox/apps/workerpals/src/common/worktree_cleanup.ts +66 -0
- package/runtime/sandbox/apps/workerpals/src/context_manager.ts +45 -0
- package/runtime/sandbox/apps/workerpals/src/docker_executor.ts +1842 -0
- package/runtime/sandbox/apps/workerpals/src/execute_job.ts +3063 -0
- package/runtime/sandbox/apps/workerpals/src/job_runner.ts +194 -0
- package/runtime/sandbox/apps/workerpals/src/shell_manager.ts +210 -0
- package/runtime/sandbox/apps/workerpals/src/timeout_policy.ts +24 -0
- package/runtime/sandbox/apps/workerpals/src/workerpals_main.ts +1436 -0
- package/runtime/sandbox/apps/workerpals/tsconfig.json +15 -0
- package/runtime/sandbox/apps/workerpals/uv.lock +2014 -0
- package/runtime/sandbox/bun.lock +2591 -0
- package/runtime/sandbox/configs/backend.toml +79 -0
- package/runtime/sandbox/configs/default.toml +260 -0
- package/runtime/sandbox/configs/dev.toml +2 -0
- package/runtime/sandbox/configs/local.example.toml +129 -0
- package/runtime/sandbox/package.json +65 -0
- package/runtime/sandbox/packages/protocol/README.md +168 -0
- package/runtime/sandbox/packages/protocol/package.json +37 -0
- package/runtime/sandbox/packages/protocol/scripts/copy-schemas.js +17 -0
- package/runtime/sandbox/packages/protocol/src/a2a/README.md +52 -0
- package/runtime/sandbox/packages/protocol/src/a2a/mapping.ts +55 -0
- package/runtime/sandbox/packages/protocol/src/index.browser.ts +25 -0
- package/runtime/sandbox/packages/protocol/src/index.ts +25 -0
- package/runtime/sandbox/packages/protocol/src/schemas/approvals.schema.json +6 -0
- package/runtime/sandbox/packages/protocol/src/schemas/envelope.schema.json +96 -0
- package/runtime/sandbox/packages/protocol/src/schemas/events.schema.json +679 -0
- package/runtime/sandbox/packages/protocol/src/schemas/http.schema.json +50 -0
- package/runtime/sandbox/packages/protocol/src/types.ts +267 -0
- package/runtime/sandbox/packages/protocol/src/validate.browser.ts +154 -0
- package/runtime/sandbox/packages/protocol/src/validate.ts +233 -0
- package/runtime/sandbox/packages/protocol/src/version.ts +1 -0
- package/runtime/sandbox/packages/protocol/tsconfig.json +20 -0
- package/runtime/sandbox/packages/shared/package.json +19 -0
- package/runtime/sandbox/packages/shared/src/autonomy_policy.ts +400 -0
- package/runtime/sandbox/packages/shared/src/client_preflight.ts +297 -0
- package/runtime/sandbox/packages/shared/src/communication.ts +313 -0
- package/runtime/sandbox/packages/shared/src/config.ts +2201 -0
- package/runtime/sandbox/packages/shared/src/config_template_parity.ts +70 -0
- package/runtime/sandbox/packages/shared/src/git_backend.ts +205 -0
- package/runtime/sandbox/packages/shared/src/index.ts +100 -0
- package/runtime/sandbox/packages/shared/src/local_network.ts +101 -0
- package/runtime/sandbox/packages/shared/src/localbuddy_runtime.ts +329 -0
- package/runtime/sandbox/packages/shared/src/prompts.ts +64 -0
- package/runtime/sandbox/packages/shared/src/repo.ts +134 -0
- package/runtime/sandbox/packages/shared/src/session_event_visibility.ts +25 -0
- package/runtime/sandbox/packages/shared/src/vision.ts +247 -0
- package/runtime/sandbox/packages/shared/tsconfig.json +16 -0
- package/runtime/sandbox/prompts/workerpals/codex_quality_critic_instruction_prompt.md +14 -0
- package/runtime/sandbox/prompts/workerpals/commit_message_prompt.md +36 -0
- package/runtime/sandbox/prompts/workerpals/commit_message_user_prompt.md +7 -0
- package/runtime/sandbox/prompts/workerpals/miniswe_broker_system_prompt.md +33 -0
- package/runtime/sandbox/prompts/workerpals/miniswe_broker_task_prompt.md +5 -0
- package/runtime/sandbox/prompts/workerpals/miniswe_completion_requirement.md +1 -0
- package/runtime/sandbox/prompts/workerpals/miniswe_context_compaction_retry_prompt.md +1 -0
- package/runtime/sandbox/prompts/workerpals/miniswe_explicit_targets_block.md +2 -0
- package/runtime/sandbox/prompts/workerpals/miniswe_recovery_guidance_base.md +4 -0
- package/runtime/sandbox/prompts/workerpals/miniswe_recovery_guidance_blocker_line.md +1 -0
- package/runtime/sandbox/prompts/workerpals/miniswe_strict_tool_use_guidance.md +6 -0
- package/runtime/sandbox/prompts/workerpals/miniswe_supplemental_guidance_section.md +2 -0
- package/runtime/sandbox/prompts/workerpals/miniswe_timeout_note.md +1 -0
- package/runtime/sandbox/prompts/workerpals/miniswe_toolcall_retry_guidance.md +1 -0
- package/runtime/sandbox/prompts/workerpals/openai_codex_default_system_prompt.md +4 -0
- package/runtime/sandbox/prompts/workerpals/openai_codex_instruction_wrapper.md +5 -0
- package/runtime/sandbox/prompts/workerpals/openai_codex_runtime_policy_appendix.md +5 -0
- package/runtime/sandbox/prompts/workerpals/openai_codex_supplemental_guidance_section.md +2 -0
- package/runtime/sandbox/prompts/workerpals/openai_codex_task_execute_system_prompt.md +12 -0
- package/runtime/sandbox/prompts/workerpals/openhands_minimal_security_policy.j2 +8 -0
- package/runtime/sandbox/prompts/workerpals/openhands_minimal_system_prompt.j2 +20 -0
- package/runtime/sandbox/prompts/workerpals/openhands_strict_tool_use_message.md +1 -0
- package/runtime/sandbox/prompts/workerpals/openhands_supplemental_guidance_message.md +2 -0
- package/runtime/sandbox/prompts/workerpals/openhands_task_execute_fallback_system_prompt.md +1 -0
- package/runtime/sandbox/prompts/workerpals/openhands_task_execute_system_prompt.md +21 -0
- package/runtime/sandbox/prompts/workerpals/openhands_task_user_prompt.md +6 -0
- package/runtime/sandbox/prompts/workerpals/openhands_timeout_note.md +1 -0
- package/runtime/sandbox/prompts/workerpals/pr_description.md +42 -0
- package/runtime/sandbox/prompts/workerpals/task_quality_critic_system_prompt.md +9 -0
- package/runtime/sandbox/prompts/workerpals/task_quality_critic_user_prompt.md +17 -0
- package/runtime/sandbox/prompts/workerpals/workerpals_system_prompt.md +115 -0
- package/runtime/sandbox/protocol/schemas/approvals.schema.json +6 -0
- package/runtime/sandbox/protocol/schemas/envelope.schema.json +96 -0
- package/runtime/sandbox/protocol/schemas/events.schema.json +679 -0
- package/runtime/sandbox/protocol/schemas/http.schema.json +50 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "protocol",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"default": "./dist/index.js"
|
|
11
|
+
},
|
|
12
|
+
"./browser": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"default": "./dist/index.browser.js"
|
|
15
|
+
},
|
|
16
|
+
"./react-native": {
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"default": "./dist/index.browser.js"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "bun x --bun tsc && node scripts/copy-schemas.js",
|
|
23
|
+
"tsc": "bun x --bun tsc",
|
|
24
|
+
"test": "bun run ../../tests/protocol.integration.ts",
|
|
25
|
+
"typecheck": "bun x --bun tsc --noEmit"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"ajv": "^8.12.0",
|
|
29
|
+
"ajv-formats": "^3.0.1"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"typescript": "~5.9.2",
|
|
33
|
+
"json-schema-to-ts": "^3.1.0",
|
|
34
|
+
"@types/node": "^20.0.0"
|
|
35
|
+
},
|
|
36
|
+
"private": true
|
|
37
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { cpSync, mkdirSync } from "fs";
|
|
3
|
+
import { dirname, join } from "path";
|
|
4
|
+
import { fileURLToPath } from "url";
|
|
5
|
+
|
|
6
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
const srcSchemas = join(__dirname, "../src/schemas");
|
|
8
|
+
const distSchemas = join(__dirname, "../dist/schemas");
|
|
9
|
+
|
|
10
|
+
try {
|
|
11
|
+
mkdirSync(distSchemas, { recursive: true });
|
|
12
|
+
cpSync(srcSchemas, distSchemas, { recursive: true });
|
|
13
|
+
console.log("Copied schema files to dist/schemas");
|
|
14
|
+
} catch (err) {
|
|
15
|
+
console.error("Failed to copy schemas:", err);
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# A2A Protocol Adapter (Future)
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
PushPals will provide an adapter layer to support integration with the [A2A (Agent-to-Agent) Project](https://github.com/a2aproject).
|
|
6
|
+
|
|
7
|
+
This directory contains placeholders and design notes for how PushPals events and approvals will map to A2A message formats.
|
|
8
|
+
|
|
9
|
+
## Mapping Strategy
|
|
10
|
+
|
|
11
|
+
### EventEnvelope → A2A Message
|
|
12
|
+
|
|
13
|
+
PushPals `EventEnvelope` and A2A message envelopes share similar concerns:
|
|
14
|
+
|
|
15
|
+
- Versioning
|
|
16
|
+
- Tracing (id, traceId)
|
|
17
|
+
- Timestamps
|
|
18
|
+
- Payload discrimination by type
|
|
19
|
+
|
|
20
|
+
**Planned mapping:**
|
|
21
|
+
|
|
22
|
+
- `EventEnvelope.id` ↔ A2A `message.id`
|
|
23
|
+
- `EventEnvelope.ts` ↔ A2A `message.timestamp`
|
|
24
|
+
- `EventEnvelope.type` ↔ A2A `message.type`
|
|
25
|
+
- `EventEnvelope.payload` ↔ A2A `message.body` (may require re-serialization)
|
|
26
|
+
|
|
27
|
+
### Approvals as Tool Results
|
|
28
|
+
|
|
29
|
+
A2A supports "tools" and tool invocations with results. Approvals in PushPals map naturally:
|
|
30
|
+
|
|
31
|
+
- `approval_required` event → Tool invocation awaiting result
|
|
32
|
+
- `approved` / `denied` events → Tool result (success/failure)
|
|
33
|
+
|
|
34
|
+
**Planned mapping:**
|
|
35
|
+
|
|
36
|
+
- `approval_required.approvalId` ↔ A2A `tool.invocationId`
|
|
37
|
+
- `approval_required.action` ↔ A2A `tool.name`
|
|
38
|
+
- `approved.approvalId` ↔ A2A `result.invocationId` with `status: "success"`
|
|
39
|
+
- `denied.approvalId` ↔ A2A `result.invocationId` with `status: "failure"`
|
|
40
|
+
|
|
41
|
+
## Implementation Notes
|
|
42
|
+
|
|
43
|
+
- **Not implemented yet.** No A2A dependencies or endpoints yet.
|
|
44
|
+
- Adapter will be in `packages/protocol/src/a2a/adapter.ts` (future).
|
|
45
|
+
- Server will accept A2A messages alongside native protocol (future).
|
|
46
|
+
- Client will be able to display A2A workflows (future).
|
|
47
|
+
|
|
48
|
+
## References
|
|
49
|
+
|
|
50
|
+
- [A2A Project](https://github.com/a2aproject)
|
|
51
|
+
- PushPals EventEnvelope: `packages/protocol/src/types.ts`
|
|
52
|
+
- PushPals Event Types: `packages/protocol/src/schemas/events.schema.json`
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A Protocol Adapter Placeholders
|
|
3
|
+
*
|
|
4
|
+
* This file contains placeholder interfaces for A2A integration.
|
|
5
|
+
* No implementation yet; serves as a design document and future interface.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Represents the mapping between PushPals approval workflow
|
|
10
|
+
* and A2A tool invocation + result pattern.
|
|
11
|
+
*/
|
|
12
|
+
export interface A2AApprovalMapping {
|
|
13
|
+
/**
|
|
14
|
+
* PushPals approvalId ↔ A2A invocationId
|
|
15
|
+
*/
|
|
16
|
+
approvalId: string;
|
|
17
|
+
invocationId: string;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* PushPals action (git.commit, git.push, etc.) ↔ A2A tool name
|
|
21
|
+
*/
|
|
22
|
+
pushpalsAction: string;
|
|
23
|
+
a2aToolName: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Represents the mapping between PushPals EventEnvelope
|
|
28
|
+
* and A2A message envelope.
|
|
29
|
+
*/
|
|
30
|
+
export interface A2AEventMapping {
|
|
31
|
+
/**
|
|
32
|
+
* PushPals msgId ↔ A2A message id
|
|
33
|
+
*/
|
|
34
|
+
pushpalsMessageId: string;
|
|
35
|
+
a2aMessageId: string;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Event type mapping (e.g., "approval_required" → "tool_invocation")
|
|
39
|
+
*/
|
|
40
|
+
pushpalsEventType: string;
|
|
41
|
+
a2aMessageType: string;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Whether the payload needs re-serialization to comply with A2A spec
|
|
45
|
+
*/
|
|
46
|
+
requiresPayloadTransform: boolean;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Future: adapter functions will live here
|
|
51
|
+
*
|
|
52
|
+
* export function pushpalsToA2AMessage(envelope: EventEnvelope): A2AMessage { ... }
|
|
53
|
+
* export function a2aMessageToPushpals(message: A2AMessage): EventEnvelope { ... }
|
|
54
|
+
* export function createApprovalMapping(approval: ApprovalRequiredEvent, tool: A2ATool): A2AApprovalMapping { ... }
|
|
55
|
+
*/
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export { PROTOCOL_VERSION } from "./version";
|
|
2
|
+
export type {
|
|
3
|
+
Artifact,
|
|
4
|
+
EventEnvelope,
|
|
5
|
+
AnyEventEnvelope,
|
|
6
|
+
EventType,
|
|
7
|
+
EventPayload,
|
|
8
|
+
EventTypePayloadMap,
|
|
9
|
+
CreateSessionResponse,
|
|
10
|
+
MessageRequest,
|
|
11
|
+
MessageResponse,
|
|
12
|
+
ApprovalDecisionRequest,
|
|
13
|
+
ApprovalDecisionResponse,
|
|
14
|
+
CommandRequest,
|
|
15
|
+
CommandResponse,
|
|
16
|
+
} from "./types";
|
|
17
|
+
export {
|
|
18
|
+
validateEventEnvelope,
|
|
19
|
+
validateMessageRequest,
|
|
20
|
+
validateMessageResponse,
|
|
21
|
+
validateApprovalDecisionRequest,
|
|
22
|
+
validateApprovalDecisionResponse,
|
|
23
|
+
validateCommandRequest,
|
|
24
|
+
type ValidationResult,
|
|
25
|
+
} from "./validate.browser";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export { PROTOCOL_VERSION } from "./version";
|
|
2
|
+
export type {
|
|
3
|
+
Artifact,
|
|
4
|
+
EventEnvelope,
|
|
5
|
+
AnyEventEnvelope,
|
|
6
|
+
EventType,
|
|
7
|
+
EventPayload,
|
|
8
|
+
EventTypePayloadMap,
|
|
9
|
+
CreateSessionResponse,
|
|
10
|
+
MessageRequest,
|
|
11
|
+
MessageResponse,
|
|
12
|
+
ApprovalDecisionRequest,
|
|
13
|
+
ApprovalDecisionResponse,
|
|
14
|
+
CommandRequest,
|
|
15
|
+
CommandResponse,
|
|
16
|
+
} from "./types";
|
|
17
|
+
export {
|
|
18
|
+
validateEventEnvelope,
|
|
19
|
+
validateMessageRequest,
|
|
20
|
+
validateMessageResponse,
|
|
21
|
+
validateApprovalDecisionRequest,
|
|
22
|
+
validateApprovalDecisionResponse,
|
|
23
|
+
validateCommandRequest,
|
|
24
|
+
type ValidationResult,
|
|
25
|
+
} from "./validate";
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "EventEnvelope",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["protocolVersion", "id", "ts", "sessionId", "type", "payload"],
|
|
6
|
+
"properties": {
|
|
7
|
+
"protocolVersion": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"const": "0.1.0",
|
|
10
|
+
"description": "Protocol version must be 0.1.0"
|
|
11
|
+
},
|
|
12
|
+
"id": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"description": "Unique event identifier (e.g., UUID)"
|
|
15
|
+
},
|
|
16
|
+
"ts": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"format": "date-time",
|
|
19
|
+
"description": "ISO-8601 timestamp"
|
|
20
|
+
},
|
|
21
|
+
"sessionId": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"description": "Session identifier"
|
|
24
|
+
},
|
|
25
|
+
"type": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"enum": [
|
|
28
|
+
"log",
|
|
29
|
+
"scan_result",
|
|
30
|
+
"suggestions",
|
|
31
|
+
"diff_ready",
|
|
32
|
+
"approval_required",
|
|
33
|
+
"approved",
|
|
34
|
+
"denied",
|
|
35
|
+
"committed",
|
|
36
|
+
"assistant_message",
|
|
37
|
+
"error",
|
|
38
|
+
"done",
|
|
39
|
+
"agent_status",
|
|
40
|
+
"task_created",
|
|
41
|
+
"task_started",
|
|
42
|
+
"task_progress",
|
|
43
|
+
"task_completed",
|
|
44
|
+
"task_failed",
|
|
45
|
+
"tool_call",
|
|
46
|
+
"tool_result",
|
|
47
|
+
"delegate_request",
|
|
48
|
+
"delegate_response",
|
|
49
|
+
"job_enqueued",
|
|
50
|
+
"job_claimed",
|
|
51
|
+
"job_completed",
|
|
52
|
+
"job_failed",
|
|
53
|
+
"message",
|
|
54
|
+
"job_log",
|
|
55
|
+
"status",
|
|
56
|
+
"autonomy_cycle_started",
|
|
57
|
+
"autonomy_candidates_generated",
|
|
58
|
+
"autonomy_objective_dispatched",
|
|
59
|
+
"autonomy_objective_blocked",
|
|
60
|
+
"autonomy_feedback_recorded",
|
|
61
|
+
"question_asked",
|
|
62
|
+
"question_answered"
|
|
63
|
+
],
|
|
64
|
+
"description": "Event type discriminator"
|
|
65
|
+
},
|
|
66
|
+
"traceId": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"description": "Optional trace ID for debugging"
|
|
69
|
+
},
|
|
70
|
+
"from": {
|
|
71
|
+
"type": "string",
|
|
72
|
+
"description": "Originator identifier (e.g. client, agent:local1, worker:lint)"
|
|
73
|
+
},
|
|
74
|
+
"to": {
|
|
75
|
+
"type": "string",
|
|
76
|
+
"description": "Destination identifier (e.g. broadcast, agent:local1, worker:queue:default)"
|
|
77
|
+
},
|
|
78
|
+
"correlationId": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"description": "Threads a whole conversation turn together"
|
|
81
|
+
},
|
|
82
|
+
"parentId": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"description": "Links tool calls/results under their parent task event"
|
|
85
|
+
},
|
|
86
|
+
"turnId": {
|
|
87
|
+
"type": "string",
|
|
88
|
+
"description": "One per user message; groups all downstream events"
|
|
89
|
+
},
|
|
90
|
+
"payload": {
|
|
91
|
+
"type": "object",
|
|
92
|
+
"description": "Payload depends on event type"
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"additionalProperties": false
|
|
96
|
+
}
|