pi-harness-runtime 1.1.336 → 1.1.337
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/index.ts +21 -12
- package/package.json +1 -1
- package/packages/a2a-adapter/package.json +1 -1
- package/packages/agent-policy/package.json +1 -1
- package/packages/architecture-generator/package.json +1 -1
- package/packages/auth/package.json +1 -1
- package/packages/autonomous-refactor/package.json +1 -1
- package/packages/autonomous-runtime/package.json +1 -1
- package/packages/cache-strategy/package.json +1 -1
- package/packages/capability-registry/package.json +1 -1
- package/packages/checkpoint/package.json +1 -1
- package/packages/cli-plugin-sdk/package.json +1 -1
- package/packages/clipboard/package.json +1 -1
- package/packages/clipboard-plugin/package.json +1 -1
- package/packages/code-generation/package.json +1 -1
- package/packages/code-review/package.json +1 -1
- package/packages/codex-adapter/package.json +1 -1
- package/packages/codex-watcher/package.json +1 -1
- package/packages/config-capture/package.json +1 -1
- package/packages/connection-runtime/dist/index.d.ts +11 -0
- package/packages/connection-runtime/dist/index.js +11 -0
- package/packages/connection-runtime/dist/registry.d.ts +69 -0
- package/packages/connection-runtime/dist/registry.js +117 -0
- package/packages/connection-runtime/dist/supervisor.d.ts +89 -0
- package/packages/connection-runtime/dist/supervisor.js +169 -0
- package/packages/connection-runtime/dist/types.d.ts +70 -0
- package/packages/connection-runtime/dist/types.js +16 -0
- package/packages/connection-runtime/package.json +24 -0
- package/packages/connection-runtime/src/index.ts +12 -0
- package/packages/connection-runtime/src/registry.ts +142 -0
- package/packages/connection-runtime/src/supervisor.ts +224 -0
- package/packages/connection-runtime/src/types.ts +88 -0
- package/packages/context-compiler/package.json +1 -1
- package/packages/context-discovery/package.json +1 -1
- package/packages/context-manager/package.json +1 -1
- package/packages/contracts/dist/approvals.d.ts +273 -0
- package/packages/contracts/dist/approvals.js +93 -0
- package/packages/contracts/dist/base.d.ts +78 -0
- package/packages/contracts/dist/base.js +82 -0
- package/packages/contracts/dist/events.d.ts +99 -0
- package/packages/contracts/dist/events.js +65 -0
- package/packages/contracts/dist/index.d.ts +20 -0
- package/packages/contracts/dist/index.js +20 -0
- package/packages/contracts/dist/jobs.d.ts +234 -0
- package/packages/contracts/dist/jobs.js +79 -0
- package/packages/contracts/dist/notifications.d.ts +317 -0
- package/packages/contracts/dist/notifications.js +85 -0
- package/packages/contracts/dist/projects.d.ts +171 -0
- package/packages/contracts/dist/projects.js +62 -0
- package/packages/contracts/dist/sessions.d.ts +226 -0
- package/packages/contracts/dist/sessions.js +82 -0
- package/packages/contracts/package.json +24 -0
- package/packages/contracts/src/approvals.ts +115 -0
- package/packages/contracts/src/base.ts +126 -0
- package/packages/contracts/src/events.ts +78 -0
- package/packages/contracts/src/index.ts +21 -0
- package/packages/contracts/src/jobs.ts +101 -0
- package/packages/contracts/src/notifications.ts +104 -0
- package/packages/contracts/src/projects.ts +81 -0
- package/packages/contracts/src/sessions.ts +104 -0
- package/packages/cookie-sanitizer/package.json +1 -1
- package/packages/cost-optimizer/package.json +1 -1
- package/packages/dependency-analyzer/package.json +1 -1
- package/packages/django-plugin/package.json +1 -1
- package/packages/doc-generator/package.json +1 -1
- package/packages/durable-review/package.json +1 -1
- package/packages/e2e-tester/package.json +1 -1
- package/packages/evaluation-engine/package.json +1 -1
- package/packages/evaluation-runner/package.json +1 -1
- package/packages/event-bus/package.json +1 -1
- package/packages/event-sink/dist/index.d.ts +12 -0
- package/packages/event-sink/dist/index.js +12 -0
- package/packages/event-sink/dist/outbox.d.ts +51 -0
- package/packages/event-sink/dist/outbox.js +88 -0
- package/packages/event-sink/dist/projection.d.ts +41 -0
- package/packages/event-sink/dist/projection.js +62 -0
- package/packages/event-sink/dist/sink.d.ts +81 -0
- package/packages/event-sink/dist/sink.js +106 -0
- package/packages/event-sink/package.json +28 -0
- package/packages/event-sink/src/index.ts +15 -0
- package/packages/event-sink/src/outbox.ts +119 -0
- package/packages/event-sink/src/projection.ts +84 -0
- package/packages/event-sink/src/sink.ts +167 -0
- package/packages/event-store/package.json +1 -1
- package/packages/experience-replay/package.json +1 -1
- package/packages/feedback-collector/package.json +1 -1
- package/packages/file-copy-helper/package.json +1 -1
- package/packages/framework-detector/package.json +1 -1
- package/packages/framework-plugin-sdk/package.json +1 -1
- package/packages/frappe-plugin/package.json +1 -1
- package/packages/generic-web-plugin/package.json +1 -1
- package/packages/health-monitor/package.json +1 -1
- package/packages/intent-analyzer/package.json +1 -1
- package/packages/jev-judge/package.json +1 -1
- package/packages/knowledge-graph/package.json +1 -1
- package/packages/knowledge-retrieval/package.json +1 -1
- package/packages/laravel-plugin/package.json +1 -1
- package/packages/learning-engine/package.json +1 -1
- package/packages/mcp-adapter/package.json +1 -1
- package/packages/memory-engine/package.json +1 -1
- package/packages/milestone-manager/package.json +1 -1
- package/packages/model-registry/package.json +1 -1
- package/packages/nextjs-plugin/package.json +1 -1
- package/packages/notification/package.json +1 -1
- package/packages/observability/package.json +1 -1
- package/packages/okf-indexer/package.json +1 -1
- package/packages/paperclip-integration/package.json +1 -1
- package/packages/performance-optimizer/package.json +1 -1
- package/packages/permission-mode/dist/checker.d.ts +66 -0
- package/packages/permission-mode/dist/checker.js +64 -0
- package/packages/permission-mode/dist/index.d.ts +12 -0
- package/packages/permission-mode/dist/index.js +11 -0
- package/packages/permission-mode/dist/manager.d.ts +65 -0
- package/packages/permission-mode/dist/manager.js +91 -0
- package/packages/permission-mode/dist/mode.d.ts +31 -0
- package/packages/permission-mode/dist/mode.js +47 -0
- package/packages/permission-mode/package.json +24 -0
- package/packages/permission-mode/src/checker.ts +103 -0
- package/packages/permission-mode/src/index.ts +13 -0
- package/packages/permission-mode/src/manager.ts +154 -0
- package/packages/permission-mode/src/mode.ts +73 -0
- package/packages/privilege-broker/package.json +1 -1
- package/packages/project-analyzer/package.json +1 -1
- package/packages/project-bootstrap/package.json +1 -1
- package/packages/projection-engine/package.json +1 -1
- package/packages/prompt-compiler/package.json +1 -1
- package/packages/prompt-versioning/package.json +1 -1
- package/packages/provider-adapter-sdk/package.json +1 -1
- package/packages/provider-router/package.json +1 -1
- package/packages/provider-selector/package.json +1 -1
- package/packages/providers/package.json +1 -1
- package/packages/qdrant-skills/package.json +1 -1
- package/packages/quota-manager/package.json +1 -1
- package/packages/rate-limiter/package.json +1 -1
- package/packages/react-vite-plugin/package.json +1 -1
- package/packages/relay/dist/client.d.ts +53 -0
- package/packages/relay/dist/client.js +95 -0
- package/packages/relay/dist/index.d.ts +9 -0
- package/packages/relay/dist/index.js +8 -0
- package/packages/relay/dist/server.d.ts +58 -0
- package/packages/relay/dist/server.js +93 -0
- package/packages/relay/dist/types.d.ts +35 -0
- package/packages/relay/dist/types.js +4 -0
- package/packages/relay/package.json +24 -0
- package/packages/relay/src/client.ts +119 -0
- package/packages/relay/src/index.ts +10 -0
- package/packages/relay/src/server.ts +120 -0
- package/packages/relay/src/types.ts +38 -0
- package/packages/release-manager/package.json +1 -1
- package/packages/requirement-compiler/package.json +1 -1
- package/packages/runtime/package.json +1 -1
- package/packages/scheduler/package.json +1 -1
- package/packages/scheduler-adapter/package.json +1 -1
- package/packages/session/package.json +1 -1
- package/packages/session-api/package.json +1 -1
- package/packages/session-export/package.json +1 -1
- package/packages/shared-context/package.json +1 -1
- package/packages/skill-mcp-client/package.json +1 -1
- package/packages/skill-registry/package.json +1 -1
- package/packages/skills/package.json +1 -1
- package/packages/sprint-planner/package.json +1 -1
- package/packages/subscription-engine/package.json +1 -1
- package/packages/task-compiler/package.json +1 -1
- package/packages/telegram/package.json +1 -1
- package/packages/tencentdb-memory/package.json +1 -1
- package/packages/tencentdb-sync/package.json +1 -1
- package/packages/test-data-generator/package.json +1 -1
- package/packages/test-generator/package.json +1 -1
- package/packages/todo-bd-sync/package.json +1 -1
- package/packages/token-estimation/package.json +1 -1
- package/packages/token-optimizer/package.json +1 -1
- package/packages/trajectory/package.json +1 -1
- package/packages/tui/package.json +1 -1
- package/packages/types/package.json +1 -1
- package/packages/webmcp-tester/package.json +1 -1
- package/packages/wiki/package.json +1 -1
- package/packages/workflow-events/package.json +1 -1
- package/packages/workspace-scanner/package.json +1 -1
- package/packages/worktree/package.json +1 -1
- package/packages/write-review/package.json +1 -1
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connection types
|
|
3
|
+
*
|
|
4
|
+
* Note: Uses minimal EventEmitter-like interface to avoid Node.js dependency.
|
|
5
|
+
* Implementations can swap in Node's EventEmitter or use any compatible event system.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Minimal event emitter interface
|
|
10
|
+
*/
|
|
11
|
+
export interface EventEmitter {
|
|
12
|
+
on(event: string, listener: (...args: unknown[]) => void): void;
|
|
13
|
+
off(event: string, listener: (...args: unknown[]) => void): void;
|
|
14
|
+
emit(event: string, ...args: unknown[]): void;
|
|
15
|
+
once(event: string, listener: (...args: unknown[]) => void): void;
|
|
16
|
+
removeAllListeners(event?: string): void;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Connection state
|
|
21
|
+
*/
|
|
22
|
+
export type ConnectionState =
|
|
23
|
+
| 'disconnected'
|
|
24
|
+
| 'connecting'
|
|
25
|
+
| 'connected'
|
|
26
|
+
| 'reconnecting'
|
|
27
|
+
| 'error';
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Connection error
|
|
31
|
+
*/
|
|
32
|
+
export interface ConnectionError extends Error {
|
|
33
|
+
code?: string;
|
|
34
|
+
recoverable?: boolean;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Transport interface
|
|
39
|
+
*/
|
|
40
|
+
export interface Transport {
|
|
41
|
+
/** Open the connection */
|
|
42
|
+
open(): Promise<void>;
|
|
43
|
+
/** Close the connection */
|
|
44
|
+
close(): Promise<void>;
|
|
45
|
+
/** Send a message */
|
|
46
|
+
send(data: unknown): Promise<void>;
|
|
47
|
+
/** Check if connected */
|
|
48
|
+
isConnected(): boolean;
|
|
49
|
+
/** Event emitter for connection events */
|
|
50
|
+
events: EventEmitter;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Transport events
|
|
55
|
+
*/
|
|
56
|
+
export interface TransportEvents {
|
|
57
|
+
'open': () => void;
|
|
58
|
+
'close': () => void;
|
|
59
|
+
'error': (error: Error) => void;
|
|
60
|
+
'message': (data: unknown) => void;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Connection options
|
|
65
|
+
*/
|
|
66
|
+
export interface ConnectionOptions {
|
|
67
|
+
/** Initial retry delay in ms */
|
|
68
|
+
initialDelay?: number;
|
|
69
|
+
/** Maximum retry delay in ms */
|
|
70
|
+
maxDelay?: number;
|
|
71
|
+
/** Maximum number of retries (0 = infinite) */
|
|
72
|
+
maxRetries?: number;
|
|
73
|
+
/** Enable jitter (recommended) */
|
|
74
|
+
jitter?: boolean;
|
|
75
|
+
/** Enable verbose logging */
|
|
76
|
+
verbose?: boolean;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Default connection options
|
|
81
|
+
*/
|
|
82
|
+
export const DEFAULT_CONNECTION_OPTIONS: Required<ConnectionOptions> = {
|
|
83
|
+
initialDelay: 1000,
|
|
84
|
+
maxDelay: 5 * 60 * 1000, // 5 minutes
|
|
85
|
+
maxRetries: 0, // Infinite
|
|
86
|
+
jitter: true,
|
|
87
|
+
verbose: false,
|
|
88
|
+
};
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Approval schemas for pi-harness
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
/**
|
|
6
|
+
* Approval status
|
|
7
|
+
*/
|
|
8
|
+
export declare const ApprovalStatus: z.ZodEnum<["pending", "approved", "rejected", "expired"]>;
|
|
9
|
+
export type ApprovalStatus = z.infer<typeof ApprovalStatus>;
|
|
10
|
+
/**
|
|
11
|
+
* Approval type
|
|
12
|
+
*/
|
|
13
|
+
export declare const ApprovalType: z.ZodEnum<["tool_execution", "file_write", "file_delete", "command_execution", "network_request", "external_action"]>;
|
|
14
|
+
export type ApprovalType = z.infer<typeof ApprovalType>;
|
|
15
|
+
/**
|
|
16
|
+
* Approval definition
|
|
17
|
+
*/
|
|
18
|
+
export declare const Approval: z.ZodObject<{
|
|
19
|
+
id: z.ZodString;
|
|
20
|
+
type: z.ZodEnum<["tool_execution", "file_write", "file_delete", "command_execution", "network_request", "external_action"]>;
|
|
21
|
+
status: z.ZodDefault<z.ZodEnum<["pending", "approved", "rejected", "expired"]>>;
|
|
22
|
+
workspaceId: z.ZodString;
|
|
23
|
+
sessionId: z.ZodString;
|
|
24
|
+
jobId: z.ZodOptional<z.ZodString>;
|
|
25
|
+
tool: z.ZodOptional<z.ZodString>;
|
|
26
|
+
command: z.ZodOptional<z.ZodString>;
|
|
27
|
+
file: z.ZodOptional<z.ZodString>;
|
|
28
|
+
description: z.ZodString;
|
|
29
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
30
|
+
requestedAt: z.ZodString;
|
|
31
|
+
respondedAt: z.ZodOptional<z.ZodString>;
|
|
32
|
+
expiresAt: z.ZodOptional<z.ZodString>;
|
|
33
|
+
requestedBy: z.ZodString;
|
|
34
|
+
approvedBy: z.ZodOptional<z.ZodString>;
|
|
35
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
36
|
+
}, "strip", z.ZodTypeAny, {
|
|
37
|
+
id: string;
|
|
38
|
+
type: "command_execution" | "external_action" | "file_delete" | "file_write" | "network_request" | "tool_execution";
|
|
39
|
+
status: "approved" | "expired" | "pending" | "rejected";
|
|
40
|
+
workspaceId: string;
|
|
41
|
+
sessionId: string;
|
|
42
|
+
jobId?: string | undefined;
|
|
43
|
+
tool?: string | undefined;
|
|
44
|
+
command?: string | undefined;
|
|
45
|
+
file?: string | undefined;
|
|
46
|
+
description: string;
|
|
47
|
+
reason?: string | undefined;
|
|
48
|
+
requestedAt: string;
|
|
49
|
+
respondedAt?: string | undefined;
|
|
50
|
+
expiresAt?: string | undefined;
|
|
51
|
+
requestedBy: string;
|
|
52
|
+
approvedBy?: string | undefined;
|
|
53
|
+
metadata?: Record<string, unknown> | undefined;
|
|
54
|
+
}, {
|
|
55
|
+
id: string;
|
|
56
|
+
type: "command_execution" | "external_action" | "file_delete" | "file_write" | "network_request" | "tool_execution";
|
|
57
|
+
status?: "approved" | "expired" | "pending" | "rejected" | undefined;
|
|
58
|
+
workspaceId: string;
|
|
59
|
+
sessionId: string;
|
|
60
|
+
jobId?: string | undefined;
|
|
61
|
+
tool?: string | undefined;
|
|
62
|
+
command?: string | undefined;
|
|
63
|
+
file?: string | undefined;
|
|
64
|
+
description: string;
|
|
65
|
+
reason?: string | undefined;
|
|
66
|
+
requestedAt: string;
|
|
67
|
+
respondedAt?: string | undefined;
|
|
68
|
+
expiresAt?: string | undefined;
|
|
69
|
+
requestedBy: string;
|
|
70
|
+
approvedBy?: string | undefined;
|
|
71
|
+
metadata?: Record<string, unknown> | undefined;
|
|
72
|
+
}>;
|
|
73
|
+
export type Approval = z.infer<typeof Approval>;
|
|
74
|
+
/**
|
|
75
|
+
* Approval request input
|
|
76
|
+
*/
|
|
77
|
+
export declare const ApprovalRequest: z.ZodObject<{
|
|
78
|
+
type: z.ZodEnum<["tool_execution", "file_write", "file_delete", "command_execution", "network_request", "external_action"]>;
|
|
79
|
+
workspaceId: z.ZodString;
|
|
80
|
+
sessionId: z.ZodString;
|
|
81
|
+
jobId: z.ZodOptional<z.ZodString>;
|
|
82
|
+
tool: z.ZodOptional<z.ZodString>;
|
|
83
|
+
command: z.ZodOptional<z.ZodString>;
|
|
84
|
+
file: z.ZodOptional<z.ZodString>;
|
|
85
|
+
description: z.ZodString;
|
|
86
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
87
|
+
expiresIn: z.ZodOptional<z.ZodNumber>;
|
|
88
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
89
|
+
}, "strip", z.ZodTypeAny, {
|
|
90
|
+
type: "command_execution" | "external_action" | "file_delete" | "file_write" | "network_request" | "tool_execution";
|
|
91
|
+
workspaceId: string;
|
|
92
|
+
sessionId: string;
|
|
93
|
+
jobId?: string | undefined;
|
|
94
|
+
tool?: string | undefined;
|
|
95
|
+
command?: string | undefined;
|
|
96
|
+
file?: string | undefined;
|
|
97
|
+
description: string;
|
|
98
|
+
reason?: string | undefined;
|
|
99
|
+
expiresIn?: number | undefined;
|
|
100
|
+
metadata?: Record<string, unknown> | undefined;
|
|
101
|
+
}, {
|
|
102
|
+
type: "command_execution" | "external_action" | "file_delete" | "file_write" | "network_request" | "tool_execution";
|
|
103
|
+
workspaceId: string;
|
|
104
|
+
sessionId: string;
|
|
105
|
+
jobId?: string | undefined;
|
|
106
|
+
tool?: string | undefined;
|
|
107
|
+
command?: string | undefined;
|
|
108
|
+
file?: string | undefined;
|
|
109
|
+
description: string;
|
|
110
|
+
reason?: string | undefined;
|
|
111
|
+
expiresIn?: number | undefined;
|
|
112
|
+
metadata?: Record<string, unknown> | undefined;
|
|
113
|
+
}>;
|
|
114
|
+
export type ApprovalRequest = z.infer<typeof ApprovalRequest>;
|
|
115
|
+
/**
|
|
116
|
+
* Approval response input
|
|
117
|
+
*/
|
|
118
|
+
export declare const ApprovalResponse: z.ZodObject<{
|
|
119
|
+
id: z.ZodString;
|
|
120
|
+
approved: z.ZodBoolean;
|
|
121
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
122
|
+
}, "strip", z.ZodTypeAny, {
|
|
123
|
+
id: string;
|
|
124
|
+
approved: boolean;
|
|
125
|
+
reason?: string | undefined;
|
|
126
|
+
}, {
|
|
127
|
+
id: string;
|
|
128
|
+
approved: boolean;
|
|
129
|
+
reason?: string | undefined;
|
|
130
|
+
}>;
|
|
131
|
+
export type ApprovalResponse = z.infer<typeof ApprovalResponse>;
|
|
132
|
+
/**
|
|
133
|
+
* Approval filter
|
|
134
|
+
*/
|
|
135
|
+
export declare const ApprovalFilter: z.ZodObject<{
|
|
136
|
+
workspaceId: z.ZodOptional<z.ZodString>;
|
|
137
|
+
sessionId: z.ZodOptional<z.ZodString>;
|
|
138
|
+
jobId: z.ZodOptional<z.ZodString>;
|
|
139
|
+
status: z.ZodOptional<z.ZodEnum<["pending", "approved", "rejected", "expired"]>>;
|
|
140
|
+
type: z.ZodOptional<z.ZodEnum<["tool_execution", "file_write", "file_delete", "command_execution", "network_request", "external_action"]>>;
|
|
141
|
+
since: z.ZodOptional<z.ZodString>;
|
|
142
|
+
until: z.ZodOptional<z.ZodString>;
|
|
143
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
144
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
145
|
+
}, "strip", z.ZodTypeAny, {
|
|
146
|
+
workspaceId?: string | undefined;
|
|
147
|
+
sessionId?: string | undefined;
|
|
148
|
+
jobId?: string | undefined;
|
|
149
|
+
status?: "approved" | "expired" | "pending" | "rejected" | undefined;
|
|
150
|
+
type?: "command_execution" | "external_action" | "file_delete" | "file_write" | "network_request" | "tool_execution" | undefined;
|
|
151
|
+
since?: string | undefined;
|
|
152
|
+
until?: string | undefined;
|
|
153
|
+
limit: number;
|
|
154
|
+
cursor?: string | undefined;
|
|
155
|
+
}, {
|
|
156
|
+
workspaceId?: string | undefined;
|
|
157
|
+
sessionId?: string | undefined;
|
|
158
|
+
jobId?: string | undefined;
|
|
159
|
+
status?: "approved" | "expired" | "pending" | "rejected" | undefined;
|
|
160
|
+
type?: "command_execution" | "external_action" | "file_delete" | "file_write" | "network_request" | "tool_execution" | undefined;
|
|
161
|
+
since?: string | undefined;
|
|
162
|
+
until?: string | undefined;
|
|
163
|
+
limit?: number | undefined;
|
|
164
|
+
cursor?: string | undefined;
|
|
165
|
+
}>;
|
|
166
|
+
export type ApprovalFilter = z.infer<typeof ApprovalFilter>;
|
|
167
|
+
/**
|
|
168
|
+
* Approval list response
|
|
169
|
+
*/
|
|
170
|
+
export declare const ApprovalList: z.ZodObject<{
|
|
171
|
+
items: z.ZodArray<z.ZodObject<{
|
|
172
|
+
id: z.ZodString;
|
|
173
|
+
type: z.ZodEnum<["tool_execution", "file_write", "file_delete", "command_execution", "network_request", "external_action"]>;
|
|
174
|
+
status: z.ZodDefault<z.ZodEnum<["pending", "approved", "rejected", "expired"]>>;
|
|
175
|
+
workspaceId: z.ZodString;
|
|
176
|
+
sessionId: z.ZodString;
|
|
177
|
+
jobId: z.ZodOptional<z.ZodString>;
|
|
178
|
+
tool: z.ZodOptional<z.ZodString>;
|
|
179
|
+
command: z.ZodOptional<z.ZodString>;
|
|
180
|
+
file: z.ZodOptional<z.ZodString>;
|
|
181
|
+
description: z.ZodString;
|
|
182
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
183
|
+
requestedAt: z.ZodString;
|
|
184
|
+
respondedAt: z.ZodOptional<z.ZodString>;
|
|
185
|
+
expiresAt: z.ZodOptional<z.ZodString>;
|
|
186
|
+
requestedBy: z.ZodString;
|
|
187
|
+
approvedBy: z.ZodOptional<z.ZodString>;
|
|
188
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
189
|
+
}, "strip", z.ZodTypeAny, {
|
|
190
|
+
id: string;
|
|
191
|
+
type: "command_execution" | "external_action" | "file_delete" | "file_write" | "network_request" | "tool_execution";
|
|
192
|
+
status: "approved" | "expired" | "pending" | "rejected";
|
|
193
|
+
workspaceId: string;
|
|
194
|
+
sessionId: string;
|
|
195
|
+
jobId?: string | undefined;
|
|
196
|
+
tool?: string | undefined;
|
|
197
|
+
command?: string | undefined;
|
|
198
|
+
file?: string | undefined;
|
|
199
|
+
description: string;
|
|
200
|
+
reason?: string | undefined;
|
|
201
|
+
requestedAt: string;
|
|
202
|
+
respondedAt?: string | undefined;
|
|
203
|
+
expiresAt?: string | undefined;
|
|
204
|
+
requestedBy: string;
|
|
205
|
+
approvedBy?: string | undefined;
|
|
206
|
+
metadata?: Record<string, unknown> | undefined;
|
|
207
|
+
}, {
|
|
208
|
+
id: string;
|
|
209
|
+
type: "command_execution" | "external_action" | "file_delete" | "file_write" | "network_request" | "tool_execution";
|
|
210
|
+
status?: "approved" | "expired" | "pending" | "rejected" | undefined;
|
|
211
|
+
workspaceId: string;
|
|
212
|
+
sessionId: string;
|
|
213
|
+
jobId?: string | undefined;
|
|
214
|
+
tool?: string | undefined;
|
|
215
|
+
command?: string | undefined;
|
|
216
|
+
file?: string | undefined;
|
|
217
|
+
description: string;
|
|
218
|
+
reason?: string | undefined;
|
|
219
|
+
requestedAt: string;
|
|
220
|
+
respondedAt?: string | undefined;
|
|
221
|
+
expiresAt?: string | undefined;
|
|
222
|
+
requestedBy: string;
|
|
223
|
+
approvedBy?: string | undefined;
|
|
224
|
+
metadata?: Record<string, unknown> | undefined;
|
|
225
|
+
}>, "many">;
|
|
226
|
+
nextCursor: z.ZodOptional<z.ZodString>;
|
|
227
|
+
total: z.ZodOptional<z.ZodNumber>;
|
|
228
|
+
}, "strip", z.ZodTypeAny, {
|
|
229
|
+
items: {
|
|
230
|
+
id: string;
|
|
231
|
+
type: "command_execution" | "external_action" | "file_delete" | "file_write" | "network_request" | "tool_execution";
|
|
232
|
+
status: "approved" | "expired" | "pending" | "rejected";
|
|
233
|
+
workspaceId: string;
|
|
234
|
+
sessionId: string;
|
|
235
|
+
jobId?: string | undefined;
|
|
236
|
+
tool?: string | undefined;
|
|
237
|
+
command?: string | undefined;
|
|
238
|
+
file?: string | undefined;
|
|
239
|
+
description: string;
|
|
240
|
+
reason?: string | undefined;
|
|
241
|
+
requestedAt: string;
|
|
242
|
+
respondedAt?: string | undefined;
|
|
243
|
+
expiresAt?: string | undefined;
|
|
244
|
+
requestedBy: string;
|
|
245
|
+
approvedBy?: string | undefined;
|
|
246
|
+
metadata?: Record<string, unknown> | undefined;
|
|
247
|
+
}[];
|
|
248
|
+
nextCursor?: string | undefined;
|
|
249
|
+
total?: number | undefined;
|
|
250
|
+
}, {
|
|
251
|
+
items: {
|
|
252
|
+
id: string;
|
|
253
|
+
type: "command_execution" | "external_action" | "file_delete" | "file_write" | "network_request" | "tool_execution";
|
|
254
|
+
status?: "approved" | "expired" | "pending" | "rejected" | undefined;
|
|
255
|
+
workspaceId: string;
|
|
256
|
+
sessionId: string;
|
|
257
|
+
jobId?: string | undefined;
|
|
258
|
+
tool?: string | undefined;
|
|
259
|
+
command?: string | undefined;
|
|
260
|
+
file?: string | undefined;
|
|
261
|
+
description: string;
|
|
262
|
+
reason?: string | undefined;
|
|
263
|
+
requestedAt: string;
|
|
264
|
+
respondedAt?: string | undefined;
|
|
265
|
+
expiresAt?: string | undefined;
|
|
266
|
+
requestedBy: string;
|
|
267
|
+
approvedBy?: string | undefined;
|
|
268
|
+
metadata?: Record<string, unknown> | undefined;
|
|
269
|
+
}[];
|
|
270
|
+
nextCursor?: string | undefined;
|
|
271
|
+
total?: number | undefined;
|
|
272
|
+
}>;
|
|
273
|
+
export type ApprovalList = z.infer<typeof ApprovalList>;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Approval schemas for pi-harness
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { Timestamp, UUID, NonEmptyString } from './base.js';
|
|
6
|
+
/**
|
|
7
|
+
* Approval status
|
|
8
|
+
*/
|
|
9
|
+
export const ApprovalStatus = z.enum([
|
|
10
|
+
'pending',
|
|
11
|
+
'approved',
|
|
12
|
+
'rejected',
|
|
13
|
+
'expired',
|
|
14
|
+
]);
|
|
15
|
+
/**
|
|
16
|
+
* Approval type
|
|
17
|
+
*/
|
|
18
|
+
export const ApprovalType = z.enum([
|
|
19
|
+
'tool_execution',
|
|
20
|
+
'file_write',
|
|
21
|
+
'file_delete',
|
|
22
|
+
'command_execution',
|
|
23
|
+
'network_request',
|
|
24
|
+
'external_action',
|
|
25
|
+
]);
|
|
26
|
+
/**
|
|
27
|
+
* Approval definition
|
|
28
|
+
*/
|
|
29
|
+
export const Approval = z.object({
|
|
30
|
+
id: UUID,
|
|
31
|
+
type: ApprovalType,
|
|
32
|
+
status: ApprovalStatus.default('pending'),
|
|
33
|
+
workspaceId: z.string(),
|
|
34
|
+
sessionId: z.string(),
|
|
35
|
+
jobId: z.string().optional(),
|
|
36
|
+
tool: NonEmptyString.optional(),
|
|
37
|
+
command: NonEmptyString.optional(),
|
|
38
|
+
file: NonEmptyString.optional(),
|
|
39
|
+
description: NonEmptyString,
|
|
40
|
+
reason: z.string().optional(),
|
|
41
|
+
requestedAt: Timestamp,
|
|
42
|
+
respondedAt: Timestamp.optional(),
|
|
43
|
+
expiresAt: Timestamp.optional(),
|
|
44
|
+
requestedBy: NonEmptyString,
|
|
45
|
+
approvedBy: NonEmptyString.optional(),
|
|
46
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
47
|
+
});
|
|
48
|
+
/**
|
|
49
|
+
* Approval request input
|
|
50
|
+
*/
|
|
51
|
+
export const ApprovalRequest = z.object({
|
|
52
|
+
type: ApprovalType,
|
|
53
|
+
workspaceId: z.string(),
|
|
54
|
+
sessionId: z.string(),
|
|
55
|
+
jobId: z.string().optional(),
|
|
56
|
+
tool: NonEmptyString.optional(),
|
|
57
|
+
command: NonEmptyString.optional(),
|
|
58
|
+
file: NonEmptyString.optional(),
|
|
59
|
+
description: NonEmptyString,
|
|
60
|
+
reason: z.string().optional(),
|
|
61
|
+
expiresIn: z.number().int().positive().optional(), // seconds, default 5 min
|
|
62
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
63
|
+
});
|
|
64
|
+
/**
|
|
65
|
+
* Approval response input
|
|
66
|
+
*/
|
|
67
|
+
export const ApprovalResponse = z.object({
|
|
68
|
+
id: UUID,
|
|
69
|
+
approved: z.boolean(),
|
|
70
|
+
reason: z.string().optional(),
|
|
71
|
+
});
|
|
72
|
+
/**
|
|
73
|
+
* Approval filter
|
|
74
|
+
*/
|
|
75
|
+
export const ApprovalFilter = z.object({
|
|
76
|
+
workspaceId: z.string().optional(),
|
|
77
|
+
sessionId: z.string().optional(),
|
|
78
|
+
jobId: z.string().optional(),
|
|
79
|
+
status: ApprovalStatus.optional(),
|
|
80
|
+
type: ApprovalType.optional(),
|
|
81
|
+
since: Timestamp.optional(),
|
|
82
|
+
until: Timestamp.optional(),
|
|
83
|
+
limit: z.number().int().positive().max(100).default(50),
|
|
84
|
+
cursor: z.string().optional(),
|
|
85
|
+
});
|
|
86
|
+
/**
|
|
87
|
+
* Approval list response
|
|
88
|
+
*/
|
|
89
|
+
export const ApprovalList = z.object({
|
|
90
|
+
items: z.array(Approval),
|
|
91
|
+
nextCursor: z.string().optional(),
|
|
92
|
+
total: z.number().optional(),
|
|
93
|
+
});
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base schemas for pi-harness contracts
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
/**
|
|
6
|
+
* Base64-encoded content
|
|
7
|
+
*/
|
|
8
|
+
export declare const Base64Content: z.ZodString;
|
|
9
|
+
/**
|
|
10
|
+
* ISO 8601 timestamp
|
|
11
|
+
*/
|
|
12
|
+
export declare const Timestamp: z.ZodString;
|
|
13
|
+
/**
|
|
14
|
+
* UUID v4
|
|
15
|
+
*/
|
|
16
|
+
export declare const UUID: z.ZodString;
|
|
17
|
+
/**
|
|
18
|
+
* Non-empty string
|
|
19
|
+
*/
|
|
20
|
+
export declare const NonEmptyString: z.ZodString;
|
|
21
|
+
/**
|
|
22
|
+
* Positive integer
|
|
23
|
+
*/
|
|
24
|
+
export declare const PositiveInt: z.ZodNumber;
|
|
25
|
+
/**
|
|
26
|
+
* Generic success result wrapper
|
|
27
|
+
*/
|
|
28
|
+
export declare function success<T>(data: T): {
|
|
29
|
+
readonly ok: true;
|
|
30
|
+
readonly data: T;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Generic error result wrapper
|
|
34
|
+
*/
|
|
35
|
+
export declare function error(message: string, code?: string): {
|
|
36
|
+
readonly ok: false;
|
|
37
|
+
readonly error: {
|
|
38
|
+
readonly message: string;
|
|
39
|
+
readonly code: string | undefined;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Result type for operations that can fail
|
|
44
|
+
*/
|
|
45
|
+
export type Result<T, E = {
|
|
46
|
+
message: string;
|
|
47
|
+
code?: string;
|
|
48
|
+
}> = {
|
|
49
|
+
ok: true;
|
|
50
|
+
data: T;
|
|
51
|
+
} | {
|
|
52
|
+
ok: false;
|
|
53
|
+
error: E;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Pagination cursor
|
|
57
|
+
*/
|
|
58
|
+
export interface PageCursor {
|
|
59
|
+
after?: string;
|
|
60
|
+
before?: string;
|
|
61
|
+
limit?: number;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Paginated response
|
|
65
|
+
*/
|
|
66
|
+
export interface Page<T> {
|
|
67
|
+
items: T[];
|
|
68
|
+
nextCursor?: string;
|
|
69
|
+
total?: number;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Base64 encode utility (pure TypeScript, no DOM dependencies)
|
|
73
|
+
*/
|
|
74
|
+
export declare function base64Encode(str: string): string;
|
|
75
|
+
/**
|
|
76
|
+
* Base64 decode utility (pure TypeScript, no DOM dependencies)
|
|
77
|
+
*/
|
|
78
|
+
export declare function base64Decode(str: string): string;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base schemas for pi-harness contracts
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
/**
|
|
6
|
+
* Base64-encoded content
|
|
7
|
+
*/
|
|
8
|
+
export const Base64Content = z.string().regex(/^[A-Za-z0-9+/]*={0,2}$/);
|
|
9
|
+
/**
|
|
10
|
+
* ISO 8601 timestamp
|
|
11
|
+
*/
|
|
12
|
+
export const Timestamp = z.string().datetime();
|
|
13
|
+
/**
|
|
14
|
+
* UUID v4
|
|
15
|
+
*/
|
|
16
|
+
export const UUID = z.string().uuid();
|
|
17
|
+
/**
|
|
18
|
+
* Non-empty string
|
|
19
|
+
*/
|
|
20
|
+
export const NonEmptyString = z.string().min(1);
|
|
21
|
+
/**
|
|
22
|
+
* Positive integer
|
|
23
|
+
*/
|
|
24
|
+
export const PositiveInt = z.number().int().positive();
|
|
25
|
+
/**
|
|
26
|
+
* Generic success result wrapper
|
|
27
|
+
*/
|
|
28
|
+
export function success(data) {
|
|
29
|
+
return { ok: true, data };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Generic error result wrapper
|
|
33
|
+
*/
|
|
34
|
+
export function error(message, code) {
|
|
35
|
+
return { ok: false, error: { message, code } };
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Base64 encode utility (pure TypeScript, no DOM dependencies)
|
|
39
|
+
*/
|
|
40
|
+
export function base64Encode(str) {
|
|
41
|
+
// Use Node.js Buffer if available (most common in runtime)
|
|
42
|
+
// Otherwise use manual base64 encoding
|
|
43
|
+
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
44
|
+
let result = '';
|
|
45
|
+
let i = 0;
|
|
46
|
+
while (i < str.length) {
|
|
47
|
+
const a = str.charCodeAt(i++);
|
|
48
|
+
const b = i < str.length ? str.charCodeAt(i++) : 0;
|
|
49
|
+
const c = i < str.length ? str.charCodeAt(i++) : 0;
|
|
50
|
+
const triplet = (a << 16) | (b << 8) | c;
|
|
51
|
+
result += chars[(triplet >> 18) & 0x3f];
|
|
52
|
+
result += chars[(triplet >> 12) & 0x3f];
|
|
53
|
+
result += i - 2 < str.length ? chars[(triplet >> 6) & 0x3f] : '=';
|
|
54
|
+
result += i - 1 < str.length ? chars[triplet & 0x3f] : '=';
|
|
55
|
+
}
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Base64 decode utility (pure TypeScript, no DOM dependencies)
|
|
60
|
+
*/
|
|
61
|
+
export function base64Decode(str) {
|
|
62
|
+
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
63
|
+
let result = '';
|
|
64
|
+
let i = 0;
|
|
65
|
+
// Remove padding
|
|
66
|
+
const cleanStr = str.replace(/=/g, '');
|
|
67
|
+
while (i < cleanStr.length) {
|
|
68
|
+
const a = chars.indexOf(cleanStr[i++]);
|
|
69
|
+
const b = i < cleanStr.length ? chars.indexOf(cleanStr[i++]) : 0;
|
|
70
|
+
const c = i < cleanStr.length ? chars.indexOf(cleanStr[i++]) : 0;
|
|
71
|
+
const d = i < cleanStr.length ? chars.indexOf(cleanStr[i++]) : 0;
|
|
72
|
+
const triplet = (a << 18) | (b << 12) | (c << 6) | d;
|
|
73
|
+
result += String.fromCharCode((triplet >> 16) & 0xff);
|
|
74
|
+
if (cleanStr[i - 2] !== undefined) {
|
|
75
|
+
result += String.fromCharCode((triplet >> 8) & 0xff);
|
|
76
|
+
}
|
|
77
|
+
if (cleanStr[i - 1] !== undefined) {
|
|
78
|
+
result += String.fromCharCode(triplet & 0xff);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return result;
|
|
82
|
+
}
|