@pushpalsdev/cli 1.0.18 → 1.0.20

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 (108) hide show
  1. package/dist/pushpals-cli.js +291 -44
  2. package/package.json +1 -1
  3. package/runtime/configs/backend.toml +1 -1
  4. package/runtime/configs/default.toml +1 -1
  5. package/runtime/sandbox/apps/workerpals/.python-version +1 -0
  6. package/runtime/sandbox/apps/workerpals/Dockerfile.sandbox +71 -0
  7. package/runtime/sandbox/apps/workerpals/package.json +25 -0
  8. package/runtime/sandbox/apps/workerpals/pyproject.toml +8 -0
  9. package/runtime/sandbox/apps/workerpals/src/backends/backend_config.ts +119 -0
  10. package/runtime/sandbox/apps/workerpals/src/backends/miniswe/miniswe_executor.py +2029 -0
  11. package/runtime/sandbox/apps/workerpals/src/backends/miniswe_backend.ts +48 -0
  12. package/runtime/sandbox/apps/workerpals/src/backends/openai_codex/openai_codex_executor.py +1259 -0
  13. package/runtime/sandbox/apps/workerpals/src/backends/openai_codex/test_openai_codex_runtime_config.py +110 -0
  14. package/runtime/sandbox/apps/workerpals/src/backends/openai_codex_backend.ts +67 -0
  15. package/runtime/sandbox/apps/workerpals/src/backends/openhands/openhands_executor.py +563 -0
  16. package/runtime/sandbox/apps/workerpals/src/backends/openhands_backend.ts +161 -0
  17. package/runtime/sandbox/apps/workerpals/src/backends/openhands_task_execute.ts +536 -0
  18. package/runtime/sandbox/apps/workerpals/src/backends/shared/executor_base.py +746 -0
  19. package/runtime/sandbox/apps/workerpals/src/backends/shared/test_settings_resolver.py +60 -0
  20. package/runtime/sandbox/apps/workerpals/src/backends/task_execute_registry.ts +21 -0
  21. package/runtime/sandbox/apps/workerpals/src/backends/types.ts +52 -0
  22. package/runtime/sandbox/apps/workerpals/src/common/execution_utils.ts +149 -0
  23. package/runtime/sandbox/apps/workerpals/src/common/executor_backend.ts +15 -0
  24. package/runtime/sandbox/apps/workerpals/src/common/generic_python_executor.ts +210 -0
  25. package/runtime/sandbox/apps/workerpals/src/common/logger.ts +65 -0
  26. package/runtime/sandbox/apps/workerpals/src/common/types.ts +9 -0
  27. package/runtime/sandbox/apps/workerpals/src/common/worktree_cleanup.ts +66 -0
  28. package/runtime/sandbox/apps/workerpals/src/context_manager.ts +45 -0
  29. package/runtime/sandbox/apps/workerpals/src/docker_executor.ts +1842 -0
  30. package/runtime/sandbox/apps/workerpals/src/execute_job.ts +3063 -0
  31. package/runtime/sandbox/apps/workerpals/src/job_runner.ts +194 -0
  32. package/runtime/sandbox/apps/workerpals/src/shell_manager.ts +210 -0
  33. package/runtime/sandbox/apps/workerpals/src/timeout_policy.ts +24 -0
  34. package/runtime/sandbox/apps/workerpals/src/workerpals_main.ts +1436 -0
  35. package/runtime/sandbox/apps/workerpals/tsconfig.json +15 -0
  36. package/runtime/sandbox/apps/workerpals/uv.lock +2014 -0
  37. package/runtime/sandbox/bun.lock +2591 -0
  38. package/runtime/sandbox/configs/backend.toml +79 -0
  39. package/runtime/sandbox/configs/default.toml +260 -0
  40. package/runtime/sandbox/configs/dev.toml +2 -0
  41. package/runtime/sandbox/configs/local.example.toml +129 -0
  42. package/runtime/sandbox/package.json +65 -0
  43. package/runtime/sandbox/packages/protocol/README.md +168 -0
  44. package/runtime/sandbox/packages/protocol/package.json +37 -0
  45. package/runtime/sandbox/packages/protocol/scripts/copy-schemas.js +17 -0
  46. package/runtime/sandbox/packages/protocol/src/a2a/README.md +52 -0
  47. package/runtime/sandbox/packages/protocol/src/a2a/mapping.ts +55 -0
  48. package/runtime/sandbox/packages/protocol/src/index.browser.ts +25 -0
  49. package/runtime/sandbox/packages/protocol/src/index.ts +25 -0
  50. package/runtime/sandbox/packages/protocol/src/schemas/approvals.schema.json +6 -0
  51. package/runtime/sandbox/packages/protocol/src/schemas/envelope.schema.json +96 -0
  52. package/runtime/sandbox/packages/protocol/src/schemas/events.schema.json +679 -0
  53. package/runtime/sandbox/packages/protocol/src/schemas/http.schema.json +50 -0
  54. package/runtime/sandbox/packages/protocol/src/types.ts +267 -0
  55. package/runtime/sandbox/packages/protocol/src/validate.browser.ts +154 -0
  56. package/runtime/sandbox/packages/protocol/src/validate.ts +233 -0
  57. package/runtime/sandbox/packages/protocol/src/version.ts +1 -0
  58. package/runtime/sandbox/packages/protocol/tsconfig.json +20 -0
  59. package/runtime/sandbox/packages/shared/package.json +19 -0
  60. package/runtime/sandbox/packages/shared/src/autonomy_policy.ts +400 -0
  61. package/runtime/sandbox/packages/shared/src/client_preflight.ts +286 -0
  62. package/runtime/sandbox/packages/shared/src/communication.ts +313 -0
  63. package/runtime/sandbox/packages/shared/src/config.ts +2180 -0
  64. package/runtime/sandbox/packages/shared/src/config_template_parity.ts +70 -0
  65. package/runtime/sandbox/packages/shared/src/git_backend.ts +205 -0
  66. package/runtime/sandbox/packages/shared/src/index.ts +101 -0
  67. package/runtime/sandbox/packages/shared/src/local_network.ts +101 -0
  68. package/runtime/sandbox/packages/shared/src/localbuddy_runtime.ts +314 -0
  69. package/runtime/sandbox/packages/shared/src/prompts.ts +64 -0
  70. package/runtime/sandbox/packages/shared/src/repo.ts +134 -0
  71. package/runtime/sandbox/packages/shared/src/session_event_visibility.ts +25 -0
  72. package/runtime/sandbox/packages/shared/src/vision.ts +247 -0
  73. package/runtime/sandbox/packages/shared/tsconfig.json +16 -0
  74. package/runtime/sandbox/prompts/workerpals/codex_quality_critic_instruction_prompt.md +14 -0
  75. package/runtime/sandbox/prompts/workerpals/commit_message_prompt.md +36 -0
  76. package/runtime/sandbox/prompts/workerpals/commit_message_user_prompt.md +7 -0
  77. package/runtime/sandbox/prompts/workerpals/miniswe_broker_system_prompt.md +33 -0
  78. package/runtime/sandbox/prompts/workerpals/miniswe_broker_task_prompt.md +5 -0
  79. package/runtime/sandbox/prompts/workerpals/miniswe_completion_requirement.md +1 -0
  80. package/runtime/sandbox/prompts/workerpals/miniswe_context_compaction_retry_prompt.md +1 -0
  81. package/runtime/sandbox/prompts/workerpals/miniswe_explicit_targets_block.md +2 -0
  82. package/runtime/sandbox/prompts/workerpals/miniswe_recovery_guidance_base.md +4 -0
  83. package/runtime/sandbox/prompts/workerpals/miniswe_recovery_guidance_blocker_line.md +1 -0
  84. package/runtime/sandbox/prompts/workerpals/miniswe_strict_tool_use_guidance.md +6 -0
  85. package/runtime/sandbox/prompts/workerpals/miniswe_supplemental_guidance_section.md +2 -0
  86. package/runtime/sandbox/prompts/workerpals/miniswe_timeout_note.md +1 -0
  87. package/runtime/sandbox/prompts/workerpals/miniswe_toolcall_retry_guidance.md +1 -0
  88. package/runtime/sandbox/prompts/workerpals/openai_codex_default_system_prompt.md +4 -0
  89. package/runtime/sandbox/prompts/workerpals/openai_codex_instruction_wrapper.md +5 -0
  90. package/runtime/sandbox/prompts/workerpals/openai_codex_runtime_policy_appendix.md +5 -0
  91. package/runtime/sandbox/prompts/workerpals/openai_codex_supplemental_guidance_section.md +2 -0
  92. package/runtime/sandbox/prompts/workerpals/openai_codex_task_execute_system_prompt.md +12 -0
  93. package/runtime/sandbox/prompts/workerpals/openhands_minimal_security_policy.j2 +8 -0
  94. package/runtime/sandbox/prompts/workerpals/openhands_minimal_system_prompt.j2 +20 -0
  95. package/runtime/sandbox/prompts/workerpals/openhands_strict_tool_use_message.md +1 -0
  96. package/runtime/sandbox/prompts/workerpals/openhands_supplemental_guidance_message.md +2 -0
  97. package/runtime/sandbox/prompts/workerpals/openhands_task_execute_fallback_system_prompt.md +1 -0
  98. package/runtime/sandbox/prompts/workerpals/openhands_task_execute_system_prompt.md +21 -0
  99. package/runtime/sandbox/prompts/workerpals/openhands_task_user_prompt.md +6 -0
  100. package/runtime/sandbox/prompts/workerpals/openhands_timeout_note.md +1 -0
  101. package/runtime/sandbox/prompts/workerpals/pr_description.md +42 -0
  102. package/runtime/sandbox/prompts/workerpals/task_quality_critic_system_prompt.md +9 -0
  103. package/runtime/sandbox/prompts/workerpals/task_quality_critic_user_prompt.md +17 -0
  104. package/runtime/sandbox/prompts/workerpals/workerpals_system_prompt.md +115 -0
  105. package/runtime/sandbox/protocol/schemas/approvals.schema.json +6 -0
  106. package/runtime/sandbox/protocol/schemas/envelope.schema.json +96 -0
  107. package/runtime/sandbox/protocol/schemas/events.schema.json +679 -0
  108. 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,6 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "ApprovalsSchema",
4
+ "type": "object",
5
+ "description": "Schemas for approval workflows"
6
+ }
@@ -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
+ }