@plures/praxis 0.2.0
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/FRAMEWORK.md +420 -0
- package/LICENSE +21 -0
- package/README.md +1310 -0
- package/dist/adapters/cli.d.ts +43 -0
- package/dist/adapters/cli.d.ts.map +1 -0
- package/dist/adapters/cli.js +126 -0
- package/dist/adapters/cli.js.map +1 -0
- package/dist/cli/commands/auth.d.ts +26 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +233 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/cloud.d.ts +27 -0
- package/dist/cli/commands/cloud.d.ts.map +1 -0
- package/dist/cli/commands/cloud.js +232 -0
- package/dist/cli/commands/cloud.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +25 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +168 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +179 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cloud/auth.d.ts +51 -0
- package/dist/cloud/auth.d.ts.map +1 -0
- package/dist/cloud/auth.js +194 -0
- package/dist/cloud/auth.js.map +1 -0
- package/dist/cloud/billing.d.ts +184 -0
- package/dist/cloud/billing.d.ts.map +1 -0
- package/dist/cloud/billing.js +179 -0
- package/dist/cloud/billing.js.map +1 -0
- package/dist/cloud/client.d.ts +39 -0
- package/dist/cloud/client.d.ts.map +1 -0
- package/dist/cloud/client.js +176 -0
- package/dist/cloud/client.js.map +1 -0
- package/dist/cloud/index.d.ts +44 -0
- package/dist/cloud/index.d.ts.map +1 -0
- package/dist/cloud/index.js +44 -0
- package/dist/cloud/index.js.map +1 -0
- package/dist/cloud/marketplace.d.ts +166 -0
- package/dist/cloud/marketplace.d.ts.map +1 -0
- package/dist/cloud/marketplace.js +159 -0
- package/dist/cloud/marketplace.js.map +1 -0
- package/dist/cloud/provisioning.d.ts +110 -0
- package/dist/cloud/provisioning.d.ts.map +1 -0
- package/dist/cloud/provisioning.js +148 -0
- package/dist/cloud/provisioning.js.map +1 -0
- package/dist/cloud/relay/endpoints.d.ts +62 -0
- package/dist/cloud/relay/endpoints.d.ts.map +1 -0
- package/dist/cloud/relay/endpoints.js +217 -0
- package/dist/cloud/relay/endpoints.js.map +1 -0
- package/dist/cloud/relay/health/index.d.ts +5 -0
- package/dist/cloud/relay/health/index.d.ts.map +1 -0
- package/dist/cloud/relay/health/index.js +9 -0
- package/dist/cloud/relay/health/index.js.map +1 -0
- package/dist/cloud/relay/stats/index.d.ts +5 -0
- package/dist/cloud/relay/stats/index.d.ts.map +1 -0
- package/dist/cloud/relay/stats/index.js +9 -0
- package/dist/cloud/relay/stats/index.js.map +1 -0
- package/dist/cloud/relay/sync/index.d.ts +5 -0
- package/dist/cloud/relay/sync/index.d.ts.map +1 -0
- package/dist/cloud/relay/sync/index.js +9 -0
- package/dist/cloud/relay/sync/index.js.map +1 -0
- package/dist/cloud/relay/usage/index.d.ts +5 -0
- package/dist/cloud/relay/usage/index.d.ts.map +1 -0
- package/dist/cloud/relay/usage/index.js +9 -0
- package/dist/cloud/relay/usage/index.js.map +1 -0
- package/dist/cloud/sponsors.d.ts +81 -0
- package/dist/cloud/sponsors.d.ts.map +1 -0
- package/dist/cloud/sponsors.js +130 -0
- package/dist/cloud/sponsors.js.map +1 -0
- package/dist/cloud/types.d.ts +169 -0
- package/dist/cloud/types.d.ts.map +1 -0
- package/dist/cloud/types.js +7 -0
- package/dist/cloud/types.js.map +1 -0
- package/dist/components/index.d.ts +43 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +17 -0
- package/dist/components/index.js.map +1 -0
- package/dist/core/actors.d.ts +95 -0
- package/dist/core/actors.d.ts.map +1 -0
- package/dist/core/actors.js +158 -0
- package/dist/core/actors.js.map +1 -0
- package/dist/core/component/generator.d.ts +122 -0
- package/dist/core/component/generator.d.ts.map +1 -0
- package/dist/core/component/generator.js +307 -0
- package/dist/core/component/generator.js.map +1 -0
- package/dist/core/engine.d.ts +92 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/engine.js +199 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/core/introspection.d.ts +141 -0
- package/dist/core/introspection.d.ts.map +1 -0
- package/dist/core/introspection.js +208 -0
- package/dist/core/introspection.js.map +1 -0
- package/dist/core/logic/generator.d.ts +76 -0
- package/dist/core/logic/generator.d.ts.map +1 -0
- package/dist/core/logic/generator.js +339 -0
- package/dist/core/logic/generator.js.map +1 -0
- package/dist/core/pluresdb/generator.d.ts +58 -0
- package/dist/core/pluresdb/generator.d.ts.map +1 -0
- package/dist/core/pluresdb/generator.js +162 -0
- package/dist/core/pluresdb/generator.js.map +1 -0
- package/dist/core/protocol.d.ts +121 -0
- package/dist/core/protocol.d.ts.map +1 -0
- package/dist/core/protocol.js +46 -0
- package/dist/core/protocol.js.map +1 -0
- package/dist/core/rules.d.ts +120 -0
- package/dist/core/rules.d.ts.map +1 -0
- package/dist/core/rules.js +81 -0
- package/dist/core/rules.js.map +1 -0
- package/dist/core/schema/loader.d.ts +47 -0
- package/dist/core/schema/loader.d.ts.map +1 -0
- package/dist/core/schema/loader.js +189 -0
- package/dist/core/schema/loader.js.map +1 -0
- package/dist/core/schema/normalize.d.ts +72 -0
- package/dist/core/schema/normalize.d.ts.map +1 -0
- package/dist/core/schema/normalize.js +190 -0
- package/dist/core/schema/normalize.js.map +1 -0
- package/dist/core/schema/types.d.ts +370 -0
- package/dist/core/schema/types.d.ts.map +1 -0
- package/dist/core/schema/types.js +161 -0
- package/dist/core/schema/types.js.map +1 -0
- package/dist/dsl/index.d.ts +152 -0
- package/dist/dsl/index.d.ts.map +1 -0
- package/dist/dsl/index.js +132 -0
- package/dist/dsl/index.js.map +1 -0
- package/dist/dsl.d.ts +124 -0
- package/dist/dsl.d.ts.map +1 -0
- package/dist/dsl.js +130 -0
- package/dist/dsl.js.map +1 -0
- package/dist/examples/advanced-todo/index.d.ts +55 -0
- package/dist/examples/advanced-todo/index.d.ts.map +1 -0
- package/dist/examples/advanced-todo/index.js +222 -0
- package/dist/examples/advanced-todo/index.js.map +1 -0
- package/dist/examples/auth-basic/index.d.ts +17 -0
- package/dist/examples/auth-basic/index.d.ts.map +1 -0
- package/dist/examples/auth-basic/index.js +122 -0
- package/dist/examples/auth-basic/index.js.map +1 -0
- package/dist/examples/cart/index.d.ts +19 -0
- package/dist/examples/cart/index.d.ts.map +1 -0
- package/dist/examples/cart/index.js +202 -0
- package/dist/examples/cart/index.js.map +1 -0
- package/dist/examples/hero-ecommerce/index.d.ts +39 -0
- package/dist/examples/hero-ecommerce/index.d.ts.map +1 -0
- package/dist/examples/hero-ecommerce/index.js +506 -0
- package/dist/examples/hero-ecommerce/index.js.map +1 -0
- package/dist/examples/svelte-counter/index.d.ts +31 -0
- package/dist/examples/svelte-counter/index.d.ts.map +1 -0
- package/dist/examples/svelte-counter/index.js +123 -0
- package/dist/examples/svelte-counter/index.js.map +1 -0
- package/dist/flows.d.ts +125 -0
- package/dist/flows.d.ts.map +1 -0
- package/dist/flows.js +160 -0
- package/dist/flows.js.map +1 -0
- package/dist/index.d.ts +67 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/pluresdb.d.ts +56 -0
- package/dist/integrations/pluresdb.d.ts.map +1 -0
- package/dist/integrations/pluresdb.js +46 -0
- package/dist/integrations/pluresdb.js.map +1 -0
- package/dist/integrations/svelte.d.ts +306 -0
- package/dist/integrations/svelte.d.ts.map +1 -0
- package/dist/integrations/svelte.js +447 -0
- package/dist/integrations/svelte.js.map +1 -0
- package/dist/registry.d.ts +94 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +181 -0
- package/dist/registry.js.map +1 -0
- package/dist/runtime/terminal-adapter.d.ts +105 -0
- package/dist/runtime/terminal-adapter.d.ts.map +1 -0
- package/dist/runtime/terminal-adapter.js +113 -0
- package/dist/runtime/terminal-adapter.js.map +1 -0
- package/dist/step.d.ts +34 -0
- package/dist/step.d.ts.map +1 -0
- package/dist/step.js +111 -0
- package/dist/step.js.map +1 -0
- package/dist/types.d.ts +63 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/docs/MONETIZATION.md +394 -0
- package/docs/TERMINAL_NODE.md +588 -0
- package/docs/guides/canvas.md +389 -0
- package/docs/guides/getting-started.md +347 -0
- package/docs/guides/history-state-pattern.md +618 -0
- package/docs/guides/orchestration.md +617 -0
- package/docs/guides/parallel-state-pattern.md +767 -0
- package/docs/guides/svelte-integration.md +691 -0
- package/package.json +96 -0
- package/src/__tests__/actors.test.ts +270 -0
- package/src/__tests__/billing.test.ts +175 -0
- package/src/__tests__/cloud.test.ts +247 -0
- package/src/__tests__/dsl.test.ts +154 -0
- package/src/__tests__/edge-cases.test.ts +475 -0
- package/src/__tests__/engine.test.ts +137 -0
- package/src/__tests__/generators.test.ts +270 -0
- package/src/__tests__/introspection.test.ts +321 -0
- package/src/__tests__/protocol.test.ts +40 -0
- package/src/__tests__/provisioning.test.ts +162 -0
- package/src/__tests__/schema.test.ts +241 -0
- package/src/__tests__/svelte-integration.test.ts +431 -0
- package/src/__tests__/terminal-node.test.ts +352 -0
- package/src/adapters/cli.ts +175 -0
- package/src/cli/commands/auth.ts +271 -0
- package/src/cli/commands/cloud.ts +281 -0
- package/src/cli/commands/generate.ts +225 -0
- package/src/cli/index.ts +190 -0
- package/src/cloud/README.md +383 -0
- package/src/cloud/auth.ts +245 -0
- package/src/cloud/billing.ts +336 -0
- package/src/cloud/client.ts +221 -0
- package/src/cloud/index.ts +121 -0
- package/src/cloud/marketplace.ts +303 -0
- package/src/cloud/provisioning.ts +254 -0
- package/src/cloud/relay/endpoints.ts +307 -0
- package/src/cloud/relay/health/function.json +17 -0
- package/src/cloud/relay/health/index.ts +10 -0
- package/src/cloud/relay/host.json +15 -0
- package/src/cloud/relay/local.settings.json +8 -0
- package/src/cloud/relay/stats/function.json +17 -0
- package/src/cloud/relay/stats/index.ts +10 -0
- package/src/cloud/relay/sync/function.json +17 -0
- package/src/cloud/relay/sync/index.ts +10 -0
- package/src/cloud/relay/usage/function.json +17 -0
- package/src/cloud/relay/usage/index.ts +10 -0
- package/src/cloud/sponsors.ts +213 -0
- package/src/cloud/types.ts +198 -0
- package/src/components/README.md +125 -0
- package/src/components/TerminalNode.svelte +457 -0
- package/src/components/index.ts +46 -0
- package/src/core/actors.ts +205 -0
- package/src/core/component/generator.ts +432 -0
- package/src/core/engine.ts +243 -0
- package/src/core/introspection.ts +329 -0
- package/src/core/logic/generator.ts +420 -0
- package/src/core/pluresdb/generator.ts +229 -0
- package/src/core/protocol.ts +132 -0
- package/src/core/rules.ts +167 -0
- package/src/core/schema/loader.ts +247 -0
- package/src/core/schema/normalize.ts +322 -0
- package/src/core/schema/types.ts +557 -0
- package/src/dsl/index.ts +218 -0
- package/src/dsl.ts +214 -0
- package/src/examples/advanced-todo/App.svelte +506 -0
- package/src/examples/advanced-todo/README.md +371 -0
- package/src/examples/advanced-todo/index.ts +309 -0
- package/src/examples/auth-basic/index.ts +163 -0
- package/src/examples/cart/index.ts +259 -0
- package/src/examples/hero-ecommerce/index.ts +657 -0
- package/src/examples/svelte-counter/index.ts +168 -0
- package/src/flows.ts +268 -0
- package/src/index.ts +154 -0
- package/src/integrations/pluresdb.ts +93 -0
- package/src/integrations/svelte.ts +617 -0
- package/src/registry.ts +223 -0
- package/src/runtime/terminal-adapter.ts +175 -0
- package/src/step.ts +151 -0
- package/src/types.ts +70 -0
- package/templates/basic-app/README.md +147 -0
- package/templates/fullstack-app/README.md +279 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud Relay Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for Praxis Cloud Relay service.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { PraxisFact, PraxisEvent } from "../core/protocol.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Cloud relay configuration
|
|
11
|
+
*/
|
|
12
|
+
export interface CloudRelayConfig {
|
|
13
|
+
/**
|
|
14
|
+
* Azure Function App endpoint URL
|
|
15
|
+
*/
|
|
16
|
+
endpoint: string;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* GitHub OAuth token for authentication
|
|
20
|
+
*/
|
|
21
|
+
authToken?: string;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Application identifier
|
|
25
|
+
*/
|
|
26
|
+
appId: string;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Enable automatic sync
|
|
30
|
+
*/
|
|
31
|
+
autoSync?: boolean;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Sync interval in milliseconds (default: 5000)
|
|
35
|
+
*/
|
|
36
|
+
syncInterval?: number;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Enable encryption for blob storage
|
|
40
|
+
*/
|
|
41
|
+
encryption?: boolean;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Relay connection status
|
|
46
|
+
*/
|
|
47
|
+
export interface RelayStatus {
|
|
48
|
+
connected: boolean;
|
|
49
|
+
lastSync?: number;
|
|
50
|
+
endpoint: string;
|
|
51
|
+
appId: string;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* CRDT sync message
|
|
56
|
+
*/
|
|
57
|
+
export interface CRDTSyncMessage {
|
|
58
|
+
/**
|
|
59
|
+
* Message type
|
|
60
|
+
*/
|
|
61
|
+
type: "sync" | "delta" | "snapshot";
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Application identifier
|
|
65
|
+
*/
|
|
66
|
+
appId: string;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Vector clock for causality tracking
|
|
70
|
+
*/
|
|
71
|
+
clock: Record<string, number>;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Facts to sync
|
|
75
|
+
*/
|
|
76
|
+
facts?: PraxisFact[];
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Events to forward
|
|
80
|
+
*/
|
|
81
|
+
events?: PraxisEvent[];
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Timestamp
|
|
85
|
+
*/
|
|
86
|
+
timestamp: number;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Usage metrics
|
|
91
|
+
*/
|
|
92
|
+
export interface UsageMetrics {
|
|
93
|
+
/**
|
|
94
|
+
* Application identifier
|
|
95
|
+
*/
|
|
96
|
+
appId: string;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Number of sync operations
|
|
100
|
+
*/
|
|
101
|
+
syncCount: number;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Number of events forwarded
|
|
105
|
+
*/
|
|
106
|
+
eventCount: number;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Number of facts synced
|
|
110
|
+
*/
|
|
111
|
+
factCount: number;
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Storage used in bytes
|
|
115
|
+
*/
|
|
116
|
+
storageBytes: number;
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Period start timestamp
|
|
120
|
+
*/
|
|
121
|
+
periodStart: number;
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Period end timestamp
|
|
125
|
+
*/
|
|
126
|
+
periodEnd: number;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Health check response
|
|
131
|
+
*/
|
|
132
|
+
export interface HealthCheckResponse {
|
|
133
|
+
status: "healthy" | "degraded" | "unhealthy";
|
|
134
|
+
timestamp: number;
|
|
135
|
+
version: string;
|
|
136
|
+
services: {
|
|
137
|
+
relay: boolean;
|
|
138
|
+
eventGrid: boolean;
|
|
139
|
+
storage: boolean;
|
|
140
|
+
auth: boolean;
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Cloud relay client interface
|
|
146
|
+
*/
|
|
147
|
+
export interface CloudRelayClient {
|
|
148
|
+
/**
|
|
149
|
+
* Connect to the relay
|
|
150
|
+
*/
|
|
151
|
+
connect(): Promise<void>;
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Disconnect from the relay
|
|
155
|
+
*/
|
|
156
|
+
disconnect(): Promise<void>;
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Sync facts and events
|
|
160
|
+
*/
|
|
161
|
+
sync(message: CRDTSyncMessage): Promise<void>;
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Get usage metrics
|
|
165
|
+
*/
|
|
166
|
+
getUsage(): Promise<UsageMetrics>;
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Get health status
|
|
170
|
+
*/
|
|
171
|
+
getHealth(): Promise<HealthCheckResponse>;
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Get connection status
|
|
175
|
+
*/
|
|
176
|
+
getStatus(): RelayStatus;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* GitHub OAuth user info
|
|
181
|
+
*/
|
|
182
|
+
export interface GitHubUser {
|
|
183
|
+
id: number;
|
|
184
|
+
login: string;
|
|
185
|
+
email?: string;
|
|
186
|
+
name?: string;
|
|
187
|
+
avatarUrl?: string;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Authentication result
|
|
192
|
+
*/
|
|
193
|
+
export interface AuthResult {
|
|
194
|
+
success: boolean;
|
|
195
|
+
token?: string;
|
|
196
|
+
user?: GitHubUser;
|
|
197
|
+
expiresAt?: number;
|
|
198
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Praxis Svelte Components
|
|
2
|
+
|
|
3
|
+
This directory contains Svelte components for Praxis/RuneBook applications.
|
|
4
|
+
|
|
5
|
+
## Components
|
|
6
|
+
|
|
7
|
+
### TerminalNode
|
|
8
|
+
|
|
9
|
+
A terminal interface component with command execution, history, and canvas integration.
|
|
10
|
+
|
|
11
|
+
**Features:**
|
|
12
|
+
- Command execution with output display
|
|
13
|
+
- Command history tracking
|
|
14
|
+
- Draggable positioning on canvas
|
|
15
|
+
- Resizable dimensions
|
|
16
|
+
- Context menu with operations
|
|
17
|
+
- Text and widget input modes
|
|
18
|
+
- Dark theme with VS Code styling
|
|
19
|
+
|
|
20
|
+
**Usage:**
|
|
21
|
+
|
|
22
|
+
```svelte
|
|
23
|
+
<script>
|
|
24
|
+
import TerminalNode from '@plures/praxis/components/TerminalNode.svelte';
|
|
25
|
+
import { createTerminalAdapter } from '@plures/praxis';
|
|
26
|
+
|
|
27
|
+
const adapter = createTerminalAdapter({
|
|
28
|
+
nodeId: 'my-terminal',
|
|
29
|
+
props: {
|
|
30
|
+
inputMode: 'text',
|
|
31
|
+
history: [],
|
|
32
|
+
lastOutput: null,
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
</script>
|
|
36
|
+
|
|
37
|
+
<TerminalNode
|
|
38
|
+
{adapter}
|
|
39
|
+
x={100}
|
|
40
|
+
y={100}
|
|
41
|
+
width={600}
|
|
42
|
+
height={400}
|
|
43
|
+
draggable={true}
|
|
44
|
+
resizable={true}
|
|
45
|
+
/>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Props:**
|
|
49
|
+
|
|
50
|
+
- `adapter: TerminalAdapter` - Terminal adapter instance (required)
|
|
51
|
+
- `x?: number` - X position on canvas (default: 0)
|
|
52
|
+
- `y?: number` - Y position on canvas (default: 0)
|
|
53
|
+
- `width?: number` - Component width in pixels (default: 600)
|
|
54
|
+
- `height?: number` - Component height in pixels (default: 400)
|
|
55
|
+
- `draggable?: boolean` - Enable drag to move (default: true)
|
|
56
|
+
- `resizable?: boolean` - Enable resize handle (default: true)
|
|
57
|
+
- `showContextMenu?: boolean` - Show context menu (default: false)
|
|
58
|
+
|
|
59
|
+
**Canvas Integration:**
|
|
60
|
+
|
|
61
|
+
The component is designed for canvas-based applications where multiple terminal nodes can be positioned and managed visually:
|
|
62
|
+
|
|
63
|
+
```svelte
|
|
64
|
+
<script>
|
|
65
|
+
import TerminalNode from '@plures/praxis/components/TerminalNode.svelte';
|
|
66
|
+
import { createTerminalAdapter } from '@plures/praxis';
|
|
67
|
+
|
|
68
|
+
const terminals = [
|
|
69
|
+
{
|
|
70
|
+
adapter: createTerminalAdapter({ nodeId: 'terminal-1' }),
|
|
71
|
+
x: 50,
|
|
72
|
+
y: 50,
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
adapter: createTerminalAdapter({ nodeId: 'terminal-2' }),
|
|
76
|
+
x: 700,
|
|
77
|
+
y: 50,
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
</script>
|
|
81
|
+
|
|
82
|
+
<div class="canvas">
|
|
83
|
+
{#each terminals as terminal}
|
|
84
|
+
<TerminalNode
|
|
85
|
+
adapter={terminal.adapter}
|
|
86
|
+
x={terminal.x}
|
|
87
|
+
y={terminal.y}
|
|
88
|
+
/>
|
|
89
|
+
{/each}
|
|
90
|
+
</div>
|
|
91
|
+
|
|
92
|
+
<style>
|
|
93
|
+
.canvas {
|
|
94
|
+
position: relative;
|
|
95
|
+
width: 100%;
|
|
96
|
+
height: 100vh;
|
|
97
|
+
background: #1a1a1a;
|
|
98
|
+
}
|
|
99
|
+
</style>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Development
|
|
103
|
+
|
|
104
|
+
### Building
|
|
105
|
+
|
|
106
|
+
Components are exported as source files and should be processed by your Svelte application's build system.
|
|
107
|
+
|
|
108
|
+
### Testing
|
|
109
|
+
|
|
110
|
+
Component behavior can be tested using Svelte Testing Library or similar tools in your application.
|
|
111
|
+
|
|
112
|
+
## Requirements
|
|
113
|
+
|
|
114
|
+
- Svelte 5.0+ (peer dependency)
|
|
115
|
+
- Modern browser with ES modules support
|
|
116
|
+
|
|
117
|
+
## Future Components
|
|
118
|
+
|
|
119
|
+
Planned components for upcoming RuneBook tasks:
|
|
120
|
+
|
|
121
|
+
- `InputNode` - User input widgets (text, confirm, select)
|
|
122
|
+
- `DisplayNode` - Data visualization (text, markdown, JSON)
|
|
123
|
+
- `AgentNode` - AI agent integration with MCP
|
|
124
|
+
- `SudolangNode` - Sudolang transformation component
|
|
125
|
+
- `CustomNode` - Dynamic custom component loader
|