@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,46 @@
1
+ /**
2
+ * PluresDB Integration (Placeholder)
3
+ *
4
+ * Future integration with pluresdb - reactive graph datastore and event source/sink.
5
+ * This module will provide adapters for:
6
+ * - Storing Praxis state in pluresdb
7
+ * - Sourcing events from pluresdb
8
+ * - Sinking events to pluresdb
9
+ * - Reactive queries and subscriptions
10
+ */
11
+ /**
12
+ * Create a pluresdb adapter (placeholder implementation)
13
+ *
14
+ * @example
15
+ * // Future usage:
16
+ * const adapter = createPluresDBAdapter({
17
+ * connection: pluresdbClient,
18
+ * collection: "myapp-events"
19
+ * });
20
+ * adapter.attachEngine(engine);
21
+ */
22
+ export function createPluresDBAdapter(_options) {
23
+ return {
24
+ async persistEvents(_events) {
25
+ // TODO: Implement pluresdb event persistence
26
+ throw new Error("PluresDB integration not yet implemented");
27
+ },
28
+ async persistFacts(_facts) {
29
+ // TODO: Implement pluresdb fact persistence
30
+ throw new Error("PluresDB integration not yet implemented");
31
+ },
32
+ async loadEvents(_query) {
33
+ // TODO: Implement pluresdb event loading
34
+ throw new Error("PluresDB integration not yet implemented");
35
+ },
36
+ subscribeToEvents(_callback, _query) {
37
+ // TODO: Implement pluresdb event subscription
38
+ throw new Error("PluresDB integration not yet implemented");
39
+ },
40
+ attachEngine(_engine) {
41
+ // TODO: Implement engine attachment
42
+ throw new Error("PluresDB integration not yet implemented");
43
+ },
44
+ };
45
+ }
46
+ //# sourceMappingURL=pluresdb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pluresdb.js","sourceRoot":"","sources":["../../src/integrations/pluresdb.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA4CH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAiB;IAEjB,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,OAAsB;YACxC,6CAA6C;YAC7C,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,CAAC,YAAY,CAAC,MAAoB;YACrC,4CAA4C;YAC5C,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,MAAgB;YAC/B,yCAAyC;YACzC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,iBAAiB,CACf,SAA0C,EAC1C,MAAgB;YAEhB,8CAA8C;YAC9C,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,YAAY,CAAC,OAA8B;YACzC,oCAAoC;YACpC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,306 @@
1
+ /**
2
+ * Svelte v5 Integration
3
+ *
4
+ * Provides reactive bindings for Praxis logic engines in Svelte v5 applications.
5
+ * Supports both traditional stores and modern Svelte 5 runes ($state, $derived, $effect).
6
+ *
7
+ * Features:
8
+ * - Store-based API for backward compatibility
9
+ * - Runes-based composables for Svelte 5
10
+ * - Snapshot support for time-travel debugging
11
+ * - History state pattern implementation
12
+ * - Automatic cleanup and subscription management
13
+ */
14
+ import type { LogicEngine } from "../core/engine.js";
15
+ import type { PraxisEvent, PraxisState } from "../core/protocol.js";
16
+ /**
17
+ * Writable store interface (Svelte-compatible)
18
+ */
19
+ export interface Writable<T> {
20
+ subscribe(run: (value: T) => void): () => void;
21
+ set(value: T): void;
22
+ update(updater: (value: T) => T): void;
23
+ }
24
+ /**
25
+ * Readable store interface (Svelte-compatible)
26
+ */
27
+ export interface Readable<T> {
28
+ subscribe(run: (value: T) => void): () => void;
29
+ }
30
+ /**
31
+ * Create a reactive Svelte store from a Praxis engine.
32
+ *
33
+ * The store tracks the engine's state and provides methods to dispatch events.
34
+ *
35
+ * @example
36
+ * const engine = createPraxisEngine({ ... });
37
+ * const store = createPraxisStore(engine);
38
+ *
39
+ * // In Svelte component:
40
+ * $: state = $store;
41
+ *
42
+ * // Dispatch events:
43
+ * store.dispatch([Login.create({ username: "alice", password: "secret" })]);
44
+ */
45
+ export declare function createPraxisStore<TContext = unknown>(engine: LogicEngine<TContext>): Readable<Readonly<PraxisState & {
46
+ context: TContext;
47
+ }>> & {
48
+ dispatch: (events: PraxisEvent[]) => void;
49
+ };
50
+ /**
51
+ * Create a derived store that extracts the context from the engine state.
52
+ *
53
+ * @example
54
+ * const engine = createPraxisEngine({ ... });
55
+ * const contextStore = createContextStore(engine);
56
+ *
57
+ * // In Svelte component:
58
+ * $: context = $contextStore;
59
+ */
60
+ export declare function createContextStore<TContext = unknown>(engine: LogicEngine<TContext>): Readable<TContext> & {
61
+ dispatch: (events: PraxisEvent[]) => void;
62
+ };
63
+ /**
64
+ * Create a derived store that extracts specific data from the context.
65
+ *
66
+ * @example
67
+ * const engine = createPraxisEngine<{ count: number }>({ ... });
68
+ * const countStore = createDerivedStore(engine, (ctx) => ctx.count);
69
+ *
70
+ * // In Svelte component:
71
+ * $: count = $countStore;
72
+ */
73
+ export declare function createDerivedStore<TContext = unknown, TDerived = unknown>(engine: LogicEngine<TContext>, selector: (context: TContext) => TDerived): Readable<TDerived> & {
74
+ dispatch: (events: PraxisEvent[]) => void;
75
+ };
76
+ /**
77
+ * Snapshot of engine state for time-travel debugging
78
+ */
79
+ export interface StateSnapshot<TContext = unknown> {
80
+ timestamp: number;
81
+ state: Readonly<PraxisState & {
82
+ context: TContext;
83
+ }>;
84
+ events: PraxisEvent[];
85
+ }
86
+ /**
87
+ * Options for usePraxisEngine composable
88
+ */
89
+ export interface UsePraxisEngineOptions {
90
+ /** Enable snapshot history for time-travel debugging */
91
+ enableHistory?: boolean;
92
+ /** Maximum number of snapshots to keep */
93
+ maxHistorySize?: number;
94
+ }
95
+ /**
96
+ * Result of usePraxisEngine composable with Svelte 5 runes
97
+ */
98
+ export interface PraxisEngineBinding<TContext = unknown> {
99
+ /** Current state (reactive via $state) */
100
+ state: Readonly<PraxisState & {
101
+ context: TContext;
102
+ }>;
103
+ /** Current context (reactive via $state) */
104
+ context: TContext;
105
+ /** Current facts (reactive via $state) */
106
+ facts: PraxisState['facts'];
107
+ /** Dispatch events to the engine */
108
+ dispatch: (events: PraxisEvent[]) => void;
109
+ /** History snapshots (if enabled) */
110
+ snapshots: StateSnapshot<TContext>[];
111
+ /** Navigate to a specific snapshot index */
112
+ goToSnapshot: (index: number) => void;
113
+ /** Undo last action (go back one snapshot) */
114
+ undo: () => void;
115
+ /** Redo action (go forward one snapshot) */
116
+ redo: () => void;
117
+ /** Check if undo is available */
118
+ canUndo: boolean;
119
+ /** Check if redo is available */
120
+ canRedo: boolean;
121
+ /** Current position in history */
122
+ historyIndex: number;
123
+ }
124
+ /**
125
+ * Create a reactive binding to a Praxis engine with Svelte 5 runes support.
126
+ *
127
+ * This composable provides a runes-compatible API for integrating Praxis
128
+ * with Svelte 5 components. The returned state is reactive and will
129
+ * automatically update the component when the engine state changes.
130
+ *
131
+ * Note: The history/snapshot feature tracks state snapshots but doesn't
132
+ * restore the engine to previous states. When you navigate history (undo/redo),
133
+ * you're viewing past snapshots, but new events are still applied to the
134
+ * current engine state. For true undo/redo, use createHistoryEngine or
135
+ * implement state restoration in your application logic.
136
+ *
137
+ * @example
138
+ * <script>
139
+ * import { usePraxisEngine } from '@plures/praxis/svelte';
140
+ * import { createMyEngine } from './my-engine';
141
+ *
142
+ * const engine = createMyEngine();
143
+ * const { context, dispatch, undo, canUndo } = usePraxisEngine(engine, {
144
+ * enableHistory: true
145
+ * });
146
+ * </script>
147
+ *
148
+ * <div>
149
+ * <p>Count: {context.count}</p>
150
+ * <button onclick={() => dispatch([Increment.create({})])}>+</button>
151
+ * <button onclick={() => undo()} disabled={!canUndo}>Undo</button>
152
+ * </div>
153
+ *
154
+ * @param engine The Praxis logic engine
155
+ * @param options Configuration options
156
+ * @returns Reactive binding with state, context, and control methods
157
+ */
158
+ export declare function usePraxisEngine<TContext = unknown>(engine: LogicEngine<TContext>, options?: UsePraxisEngineOptions): PraxisEngineBinding<TContext>;
159
+ /**
160
+ * Create a reactive derived value from engine context with Svelte 5 runes.
161
+ *
162
+ * This composable extracts and tracks a specific value from the engine context.
163
+ * The returned value is reactive and will update when the selected value changes.
164
+ *
165
+ * @example
166
+ * <script>
167
+ * import { usePraxisContext } from '@plures/praxis/svelte';
168
+ *
169
+ * const engine = createMyEngine();
170
+ * const count = usePraxisContext(engine, (ctx) => ctx.count);
171
+ * </script>
172
+ *
173
+ * <p>Count: {count}</p>
174
+ *
175
+ * @param engine The Praxis logic engine
176
+ * @param selector Function to extract value from context
177
+ * @returns Reactive derived value
178
+ */
179
+ export declare function usePraxisContext<TContext = unknown, TDerived = unknown>(engine: LogicEngine<TContext>, selector: (context: TContext) => TDerived): TDerived;
180
+ /**
181
+ * Subscribe to engine state changes with automatic cleanup.
182
+ *
183
+ * This composable sets up a subscription to engine state changes and
184
+ * automatically cleans up when the component is destroyed.
185
+ *
186
+ * @example
187
+ * <script>
188
+ * import { usePraxisSubscription } from '@plures/praxis/svelte';
189
+ *
190
+ * const engine = createMyEngine();
191
+ *
192
+ * usePraxisSubscription(engine, (state) => {
193
+ * console.log('State changed:', state);
194
+ * });
195
+ * </script>
196
+ *
197
+ * @param engine The Praxis logic engine
198
+ * @param callback Function to call when state changes
199
+ */
200
+ export declare function usePraxisSubscription<TContext = unknown>(engine: LogicEngine<TContext>, callback: (state: Readonly<PraxisState & {
201
+ context: TContext;
202
+ }>) => void): () => void;
203
+ /**
204
+ * History state entry for tracking state transitions
205
+ */
206
+ export interface HistoryEntry<TContext = unknown> {
207
+ /** Unique identifier for this history entry */
208
+ id: string;
209
+ /** Timestamp when this state was entered */
210
+ timestamp: number;
211
+ /** State snapshot */
212
+ state: Readonly<PraxisState & {
213
+ context: TContext;
214
+ }>;
215
+ /** Events that led to this state */
216
+ events: PraxisEvent[];
217
+ /** Optional label for this history entry */
218
+ label?: string;
219
+ }
220
+ /**
221
+ * History state manager for Praxis engines
222
+ */
223
+ export declare class HistoryStateManager<TContext = unknown> {
224
+ private history;
225
+ private currentIndex;
226
+ private readonly maxSize;
227
+ private idCounter;
228
+ constructor(maxSize?: number);
229
+ /**
230
+ * Record a new history entry
231
+ */
232
+ record(state: Readonly<PraxisState & {
233
+ context: TContext;
234
+ }>, events: PraxisEvent[], label?: string): void;
235
+ /**
236
+ * Navigate to a specific history entry
237
+ */
238
+ goTo(index: number): HistoryEntry<TContext> | null;
239
+ /**
240
+ * Go back to previous state
241
+ */
242
+ back(): HistoryEntry<TContext> | null;
243
+ /**
244
+ * Go forward to next state
245
+ */
246
+ forward(): HistoryEntry<TContext> | null;
247
+ /**
248
+ * Check if can go back
249
+ */
250
+ canGoBack(): boolean;
251
+ /**
252
+ * Check if can go forward
253
+ */
254
+ canGoForward(): boolean;
255
+ /**
256
+ * Get current history entry
257
+ */
258
+ current(): HistoryEntry<TContext> | null;
259
+ /**
260
+ * Get all history entries
261
+ */
262
+ getHistory(): ReadonlyArray<HistoryEntry<TContext>>;
263
+ /**
264
+ * Get current index in history
265
+ */
266
+ getCurrentIndex(): number;
267
+ /**
268
+ * Clear all history
269
+ */
270
+ clear(): void;
271
+ }
272
+ /**
273
+ * Create a Praxis engine with history tracking.
274
+ *
275
+ * This utility wraps an engine with automatic history recording,
276
+ * providing undo/redo functionality.
277
+ *
278
+ * @example
279
+ * const engine = createPraxisEngine({ ... });
280
+ * const { dispatch, undo, redo, canUndo, canRedo } = createHistoryEngine(engine);
281
+ *
282
+ * // Use normally
283
+ * dispatch([Login.create({ username: "alice" })]);
284
+ *
285
+ * // Undo the login
286
+ * undo();
287
+ *
288
+ * @param engine The base Praxis engine
289
+ * @param options History configuration
290
+ * @returns Enhanced engine with history methods
291
+ */
292
+ export declare function createHistoryEngine<TContext = unknown>(engine: LogicEngine<TContext>, options?: {
293
+ maxHistorySize?: number;
294
+ initialLabel?: string;
295
+ }): {
296
+ engine: LogicEngine<TContext>;
297
+ dispatch: (events: PraxisEvent[], label?: string) => void;
298
+ undo: () => boolean;
299
+ redo: () => boolean;
300
+ canUndo: () => boolean;
301
+ canRedo: () => boolean;
302
+ getHistory: () => ReadonlyArray<HistoryEntry<TContext>>;
303
+ goToHistory: (index: number) => boolean;
304
+ clearHistory: () => void;
305
+ };
306
+ //# sourceMappingURL=svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelte.d.ts","sourceRoot":"","sources":["../../src/integrations/svelte.ts"],"names":[],"mappings":"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"}