@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.
Files changed (263) hide show
  1. package/FRAMEWORK.md +420 -0
  2. package/LICENSE +21 -0
  3. package/README.md +1310 -0
  4. package/dist/adapters/cli.d.ts +43 -0
  5. package/dist/adapters/cli.d.ts.map +1 -0
  6. package/dist/adapters/cli.js +126 -0
  7. package/dist/adapters/cli.js.map +1 -0
  8. package/dist/cli/commands/auth.d.ts +26 -0
  9. package/dist/cli/commands/auth.d.ts.map +1 -0
  10. package/dist/cli/commands/auth.js +233 -0
  11. package/dist/cli/commands/auth.js.map +1 -0
  12. package/dist/cli/commands/cloud.d.ts +27 -0
  13. package/dist/cli/commands/cloud.d.ts.map +1 -0
  14. package/dist/cli/commands/cloud.js +232 -0
  15. package/dist/cli/commands/cloud.js.map +1 -0
  16. package/dist/cli/commands/generate.d.ts +25 -0
  17. package/dist/cli/commands/generate.d.ts.map +1 -0
  18. package/dist/cli/commands/generate.js +168 -0
  19. package/dist/cli/commands/generate.js.map +1 -0
  20. package/dist/cli/index.d.ts +8 -0
  21. package/dist/cli/index.d.ts.map +1 -0
  22. package/dist/cli/index.js +179 -0
  23. package/dist/cli/index.js.map +1 -0
  24. package/dist/cloud/auth.d.ts +51 -0
  25. package/dist/cloud/auth.d.ts.map +1 -0
  26. package/dist/cloud/auth.js +194 -0
  27. package/dist/cloud/auth.js.map +1 -0
  28. package/dist/cloud/billing.d.ts +184 -0
  29. package/dist/cloud/billing.d.ts.map +1 -0
  30. package/dist/cloud/billing.js +179 -0
  31. package/dist/cloud/billing.js.map +1 -0
  32. package/dist/cloud/client.d.ts +39 -0
  33. package/dist/cloud/client.d.ts.map +1 -0
  34. package/dist/cloud/client.js +176 -0
  35. package/dist/cloud/client.js.map +1 -0
  36. package/dist/cloud/index.d.ts +44 -0
  37. package/dist/cloud/index.d.ts.map +1 -0
  38. package/dist/cloud/index.js +44 -0
  39. package/dist/cloud/index.js.map +1 -0
  40. package/dist/cloud/marketplace.d.ts +166 -0
  41. package/dist/cloud/marketplace.d.ts.map +1 -0
  42. package/dist/cloud/marketplace.js +159 -0
  43. package/dist/cloud/marketplace.js.map +1 -0
  44. package/dist/cloud/provisioning.d.ts +110 -0
  45. package/dist/cloud/provisioning.d.ts.map +1 -0
  46. package/dist/cloud/provisioning.js +148 -0
  47. package/dist/cloud/provisioning.js.map +1 -0
  48. package/dist/cloud/relay/endpoints.d.ts +62 -0
  49. package/dist/cloud/relay/endpoints.d.ts.map +1 -0
  50. package/dist/cloud/relay/endpoints.js +217 -0
  51. package/dist/cloud/relay/endpoints.js.map +1 -0
  52. package/dist/cloud/relay/health/index.d.ts +5 -0
  53. package/dist/cloud/relay/health/index.d.ts.map +1 -0
  54. package/dist/cloud/relay/health/index.js +9 -0
  55. package/dist/cloud/relay/health/index.js.map +1 -0
  56. package/dist/cloud/relay/stats/index.d.ts +5 -0
  57. package/dist/cloud/relay/stats/index.d.ts.map +1 -0
  58. package/dist/cloud/relay/stats/index.js +9 -0
  59. package/dist/cloud/relay/stats/index.js.map +1 -0
  60. package/dist/cloud/relay/sync/index.d.ts +5 -0
  61. package/dist/cloud/relay/sync/index.d.ts.map +1 -0
  62. package/dist/cloud/relay/sync/index.js +9 -0
  63. package/dist/cloud/relay/sync/index.js.map +1 -0
  64. package/dist/cloud/relay/usage/index.d.ts +5 -0
  65. package/dist/cloud/relay/usage/index.d.ts.map +1 -0
  66. package/dist/cloud/relay/usage/index.js +9 -0
  67. package/dist/cloud/relay/usage/index.js.map +1 -0
  68. package/dist/cloud/sponsors.d.ts +81 -0
  69. package/dist/cloud/sponsors.d.ts.map +1 -0
  70. package/dist/cloud/sponsors.js +130 -0
  71. package/dist/cloud/sponsors.js.map +1 -0
  72. package/dist/cloud/types.d.ts +169 -0
  73. package/dist/cloud/types.d.ts.map +1 -0
  74. package/dist/cloud/types.js +7 -0
  75. package/dist/cloud/types.js.map +1 -0
  76. package/dist/components/index.d.ts +43 -0
  77. package/dist/components/index.d.ts.map +1 -0
  78. package/dist/components/index.js +17 -0
  79. package/dist/components/index.js.map +1 -0
  80. package/dist/core/actors.d.ts +95 -0
  81. package/dist/core/actors.d.ts.map +1 -0
  82. package/dist/core/actors.js +158 -0
  83. package/dist/core/actors.js.map +1 -0
  84. package/dist/core/component/generator.d.ts +122 -0
  85. package/dist/core/component/generator.d.ts.map +1 -0
  86. package/dist/core/component/generator.js +307 -0
  87. package/dist/core/component/generator.js.map +1 -0
  88. package/dist/core/engine.d.ts +92 -0
  89. package/dist/core/engine.d.ts.map +1 -0
  90. package/dist/core/engine.js +199 -0
  91. package/dist/core/engine.js.map +1 -0
  92. package/dist/core/introspection.d.ts +141 -0
  93. package/dist/core/introspection.d.ts.map +1 -0
  94. package/dist/core/introspection.js +208 -0
  95. package/dist/core/introspection.js.map +1 -0
  96. package/dist/core/logic/generator.d.ts +76 -0
  97. package/dist/core/logic/generator.d.ts.map +1 -0
  98. package/dist/core/logic/generator.js +339 -0
  99. package/dist/core/logic/generator.js.map +1 -0
  100. package/dist/core/pluresdb/generator.d.ts +58 -0
  101. package/dist/core/pluresdb/generator.d.ts.map +1 -0
  102. package/dist/core/pluresdb/generator.js +162 -0
  103. package/dist/core/pluresdb/generator.js.map +1 -0
  104. package/dist/core/protocol.d.ts +121 -0
  105. package/dist/core/protocol.d.ts.map +1 -0
  106. package/dist/core/protocol.js +46 -0
  107. package/dist/core/protocol.js.map +1 -0
  108. package/dist/core/rules.d.ts +120 -0
  109. package/dist/core/rules.d.ts.map +1 -0
  110. package/dist/core/rules.js +81 -0
  111. package/dist/core/rules.js.map +1 -0
  112. package/dist/core/schema/loader.d.ts +47 -0
  113. package/dist/core/schema/loader.d.ts.map +1 -0
  114. package/dist/core/schema/loader.js +189 -0
  115. package/dist/core/schema/loader.js.map +1 -0
  116. package/dist/core/schema/normalize.d.ts +72 -0
  117. package/dist/core/schema/normalize.d.ts.map +1 -0
  118. package/dist/core/schema/normalize.js +190 -0
  119. package/dist/core/schema/normalize.js.map +1 -0
  120. package/dist/core/schema/types.d.ts +370 -0
  121. package/dist/core/schema/types.d.ts.map +1 -0
  122. package/dist/core/schema/types.js +161 -0
  123. package/dist/core/schema/types.js.map +1 -0
  124. package/dist/dsl/index.d.ts +152 -0
  125. package/dist/dsl/index.d.ts.map +1 -0
  126. package/dist/dsl/index.js +132 -0
  127. package/dist/dsl/index.js.map +1 -0
  128. package/dist/dsl.d.ts +124 -0
  129. package/dist/dsl.d.ts.map +1 -0
  130. package/dist/dsl.js +130 -0
  131. package/dist/dsl.js.map +1 -0
  132. package/dist/examples/advanced-todo/index.d.ts +55 -0
  133. package/dist/examples/advanced-todo/index.d.ts.map +1 -0
  134. package/dist/examples/advanced-todo/index.js +222 -0
  135. package/dist/examples/advanced-todo/index.js.map +1 -0
  136. package/dist/examples/auth-basic/index.d.ts +17 -0
  137. package/dist/examples/auth-basic/index.d.ts.map +1 -0
  138. package/dist/examples/auth-basic/index.js +122 -0
  139. package/dist/examples/auth-basic/index.js.map +1 -0
  140. package/dist/examples/cart/index.d.ts +19 -0
  141. package/dist/examples/cart/index.d.ts.map +1 -0
  142. package/dist/examples/cart/index.js +202 -0
  143. package/dist/examples/cart/index.js.map +1 -0
  144. package/dist/examples/hero-ecommerce/index.d.ts +39 -0
  145. package/dist/examples/hero-ecommerce/index.d.ts.map +1 -0
  146. package/dist/examples/hero-ecommerce/index.js +506 -0
  147. package/dist/examples/hero-ecommerce/index.js.map +1 -0
  148. package/dist/examples/svelte-counter/index.d.ts +31 -0
  149. package/dist/examples/svelte-counter/index.d.ts.map +1 -0
  150. package/dist/examples/svelte-counter/index.js +123 -0
  151. package/dist/examples/svelte-counter/index.js.map +1 -0
  152. package/dist/flows.d.ts +125 -0
  153. package/dist/flows.d.ts.map +1 -0
  154. package/dist/flows.js +160 -0
  155. package/dist/flows.js.map +1 -0
  156. package/dist/index.d.ts +67 -0
  157. package/dist/index.d.ts.map +1 -0
  158. package/dist/index.js +59 -0
  159. package/dist/index.js.map +1 -0
  160. package/dist/integrations/pluresdb.d.ts +56 -0
  161. package/dist/integrations/pluresdb.d.ts.map +1 -0
  162. package/dist/integrations/pluresdb.js +46 -0
  163. package/dist/integrations/pluresdb.js.map +1 -0
  164. package/dist/integrations/svelte.d.ts +306 -0
  165. package/dist/integrations/svelte.d.ts.map +1 -0
  166. package/dist/integrations/svelte.js +447 -0
  167. package/dist/integrations/svelte.js.map +1 -0
  168. package/dist/registry.d.ts +94 -0
  169. package/dist/registry.d.ts.map +1 -0
  170. package/dist/registry.js +181 -0
  171. package/dist/registry.js.map +1 -0
  172. package/dist/runtime/terminal-adapter.d.ts +105 -0
  173. package/dist/runtime/terminal-adapter.d.ts.map +1 -0
  174. package/dist/runtime/terminal-adapter.js +113 -0
  175. package/dist/runtime/terminal-adapter.js.map +1 -0
  176. package/dist/step.d.ts +34 -0
  177. package/dist/step.d.ts.map +1 -0
  178. package/dist/step.js +111 -0
  179. package/dist/step.js.map +1 -0
  180. package/dist/types.d.ts +63 -0
  181. package/dist/types.d.ts.map +1 -0
  182. package/dist/types.js +6 -0
  183. package/dist/types.js.map +1 -0
  184. package/docs/MONETIZATION.md +394 -0
  185. package/docs/TERMINAL_NODE.md +588 -0
  186. package/docs/guides/canvas.md +389 -0
  187. package/docs/guides/getting-started.md +347 -0
  188. package/docs/guides/history-state-pattern.md +618 -0
  189. package/docs/guides/orchestration.md +617 -0
  190. package/docs/guides/parallel-state-pattern.md +767 -0
  191. package/docs/guides/svelte-integration.md +691 -0
  192. package/package.json +96 -0
  193. package/src/__tests__/actors.test.ts +270 -0
  194. package/src/__tests__/billing.test.ts +175 -0
  195. package/src/__tests__/cloud.test.ts +247 -0
  196. package/src/__tests__/dsl.test.ts +154 -0
  197. package/src/__tests__/edge-cases.test.ts +475 -0
  198. package/src/__tests__/engine.test.ts +137 -0
  199. package/src/__tests__/generators.test.ts +270 -0
  200. package/src/__tests__/introspection.test.ts +321 -0
  201. package/src/__tests__/protocol.test.ts +40 -0
  202. package/src/__tests__/provisioning.test.ts +162 -0
  203. package/src/__tests__/schema.test.ts +241 -0
  204. package/src/__tests__/svelte-integration.test.ts +431 -0
  205. package/src/__tests__/terminal-node.test.ts +352 -0
  206. package/src/adapters/cli.ts +175 -0
  207. package/src/cli/commands/auth.ts +271 -0
  208. package/src/cli/commands/cloud.ts +281 -0
  209. package/src/cli/commands/generate.ts +225 -0
  210. package/src/cli/index.ts +190 -0
  211. package/src/cloud/README.md +383 -0
  212. package/src/cloud/auth.ts +245 -0
  213. package/src/cloud/billing.ts +336 -0
  214. package/src/cloud/client.ts +221 -0
  215. package/src/cloud/index.ts +121 -0
  216. package/src/cloud/marketplace.ts +303 -0
  217. package/src/cloud/provisioning.ts +254 -0
  218. package/src/cloud/relay/endpoints.ts +307 -0
  219. package/src/cloud/relay/health/function.json +17 -0
  220. package/src/cloud/relay/health/index.ts +10 -0
  221. package/src/cloud/relay/host.json +15 -0
  222. package/src/cloud/relay/local.settings.json +8 -0
  223. package/src/cloud/relay/stats/function.json +17 -0
  224. package/src/cloud/relay/stats/index.ts +10 -0
  225. package/src/cloud/relay/sync/function.json +17 -0
  226. package/src/cloud/relay/sync/index.ts +10 -0
  227. package/src/cloud/relay/usage/function.json +17 -0
  228. package/src/cloud/relay/usage/index.ts +10 -0
  229. package/src/cloud/sponsors.ts +213 -0
  230. package/src/cloud/types.ts +198 -0
  231. package/src/components/README.md +125 -0
  232. package/src/components/TerminalNode.svelte +457 -0
  233. package/src/components/index.ts +46 -0
  234. package/src/core/actors.ts +205 -0
  235. package/src/core/component/generator.ts +432 -0
  236. package/src/core/engine.ts +243 -0
  237. package/src/core/introspection.ts +329 -0
  238. package/src/core/logic/generator.ts +420 -0
  239. package/src/core/pluresdb/generator.ts +229 -0
  240. package/src/core/protocol.ts +132 -0
  241. package/src/core/rules.ts +167 -0
  242. package/src/core/schema/loader.ts +247 -0
  243. package/src/core/schema/normalize.ts +322 -0
  244. package/src/core/schema/types.ts +557 -0
  245. package/src/dsl/index.ts +218 -0
  246. package/src/dsl.ts +214 -0
  247. package/src/examples/advanced-todo/App.svelte +506 -0
  248. package/src/examples/advanced-todo/README.md +371 -0
  249. package/src/examples/advanced-todo/index.ts +309 -0
  250. package/src/examples/auth-basic/index.ts +163 -0
  251. package/src/examples/cart/index.ts +259 -0
  252. package/src/examples/hero-ecommerce/index.ts +657 -0
  253. package/src/examples/svelte-counter/index.ts +168 -0
  254. package/src/flows.ts +268 -0
  255. package/src/index.ts +154 -0
  256. package/src/integrations/pluresdb.ts +93 -0
  257. package/src/integrations/svelte.ts +617 -0
  258. package/src/registry.ts +223 -0
  259. package/src/runtime/terminal-adapter.ts +175 -0
  260. package/src/step.ts +151 -0
  261. package/src/types.ts +70 -0
  262. package/templates/basic-app/README.md +147 -0
  263. 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