@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,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Sponsors API Client
|
|
3
|
+
*
|
|
4
|
+
* Client for checking GitHub Sponsors subscription status.
|
|
5
|
+
*/
|
|
6
|
+
import type { Subscription } from "./billing.js";
|
|
7
|
+
/**
|
|
8
|
+
* GitHub Sponsors tier information
|
|
9
|
+
*/
|
|
10
|
+
export interface SponsorTier {
|
|
11
|
+
/**
|
|
12
|
+
* Tier ID
|
|
13
|
+
*/
|
|
14
|
+
id: string;
|
|
15
|
+
/**
|
|
16
|
+
* Tier name
|
|
17
|
+
*/
|
|
18
|
+
name: string;
|
|
19
|
+
/**
|
|
20
|
+
* Monthly price in cents
|
|
21
|
+
*/
|
|
22
|
+
monthlyPriceInCents: number;
|
|
23
|
+
/**
|
|
24
|
+
* Tier description
|
|
25
|
+
*/
|
|
26
|
+
description?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Whether this is a one-time sponsorship
|
|
29
|
+
*/
|
|
30
|
+
isOneTime: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Sponsorship information
|
|
34
|
+
*/
|
|
35
|
+
export interface Sponsorship {
|
|
36
|
+
/**
|
|
37
|
+
* Sponsor login
|
|
38
|
+
*/
|
|
39
|
+
sponsorLogin: string;
|
|
40
|
+
/**
|
|
41
|
+
* Sponsor ID
|
|
42
|
+
*/
|
|
43
|
+
sponsorId: number;
|
|
44
|
+
/**
|
|
45
|
+
* Tier information
|
|
46
|
+
*/
|
|
47
|
+
tier: SponsorTier;
|
|
48
|
+
/**
|
|
49
|
+
* Creation date
|
|
50
|
+
*/
|
|
51
|
+
createdAt: string;
|
|
52
|
+
/**
|
|
53
|
+
* Whether sponsorship is active
|
|
54
|
+
*/
|
|
55
|
+
isActive: boolean;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* GitHub Sponsors API client
|
|
59
|
+
*/
|
|
60
|
+
export declare class GitHubSponsorsClient {
|
|
61
|
+
private token;
|
|
62
|
+
private accountLogin;
|
|
63
|
+
constructor(token: string, accountLogin: string);
|
|
64
|
+
/**
|
|
65
|
+
* Get current user's sponsorship of the Praxis account
|
|
66
|
+
*/
|
|
67
|
+
getSponsorship(userLogin: string): Promise<Sponsorship | null>;
|
|
68
|
+
/**
|
|
69
|
+
* Get subscription from sponsorship
|
|
70
|
+
*/
|
|
71
|
+
getSubscription(userLogin: string): Promise<Subscription>;
|
|
72
|
+
/**
|
|
73
|
+
* Check if user is a sponsor
|
|
74
|
+
*/
|
|
75
|
+
isSponsor(userLogin: string): Promise<boolean>;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Create a GitHub Sponsors client
|
|
79
|
+
*/
|
|
80
|
+
export declare function createSponsorsClient(token: string, accountLogin?: string): GitHubSponsorsClient;
|
|
81
|
+
//# sourceMappingURL=sponsors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sponsors.d.ts","sourceRoot":"","sources":["../../src/cloud/sponsors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,EAAE,WAAW,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAAS;gBAEjB,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAK/C;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IA+FpE;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAa/D;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAIrD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,YAAY,GAAE,MAAiB,GAC9B,oBAAoB,CAEtB"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Sponsors API Client
|
|
3
|
+
*
|
|
4
|
+
* Client for checking GitHub Sponsors subscription status.
|
|
5
|
+
*/
|
|
6
|
+
import { createSponsorSubscription, createFreeSubscription } from "./billing.js";
|
|
7
|
+
/**
|
|
8
|
+
* GitHub Sponsors API client
|
|
9
|
+
*/
|
|
10
|
+
export class GitHubSponsorsClient {
|
|
11
|
+
token;
|
|
12
|
+
accountLogin;
|
|
13
|
+
constructor(token, accountLogin) {
|
|
14
|
+
this.token = token;
|
|
15
|
+
this.accountLogin = accountLogin;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get current user's sponsorship of the Praxis account
|
|
19
|
+
*/
|
|
20
|
+
async getSponsorship(userLogin) {
|
|
21
|
+
try {
|
|
22
|
+
const query = `
|
|
23
|
+
query($accountLogin: String!, $userLogin: String!) {
|
|
24
|
+
user(login: $userLogin) {
|
|
25
|
+
sponsorshipForViewerAsSponsor(activeOnly: true) {
|
|
26
|
+
tier {
|
|
27
|
+
id
|
|
28
|
+
name
|
|
29
|
+
monthlyPriceInCents
|
|
30
|
+
description
|
|
31
|
+
isOneTime
|
|
32
|
+
}
|
|
33
|
+
createdAt
|
|
34
|
+
isActive
|
|
35
|
+
}
|
|
36
|
+
sponsorshipsAsSponsor(first: 100, activeOnly: true) {
|
|
37
|
+
nodes {
|
|
38
|
+
sponsorable {
|
|
39
|
+
... on User {
|
|
40
|
+
login
|
|
41
|
+
}
|
|
42
|
+
... on Organization {
|
|
43
|
+
login
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
tier {
|
|
47
|
+
id
|
|
48
|
+
name
|
|
49
|
+
monthlyPriceInCents
|
|
50
|
+
description
|
|
51
|
+
isOneTime
|
|
52
|
+
}
|
|
53
|
+
createdAt
|
|
54
|
+
isActive
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
`;
|
|
60
|
+
const response = await fetch("https://api.github.com/graphql", {
|
|
61
|
+
method: "POST",
|
|
62
|
+
headers: {
|
|
63
|
+
Authorization: `Bearer ${this.token}`,
|
|
64
|
+
"Content-Type": "application/json",
|
|
65
|
+
},
|
|
66
|
+
body: JSON.stringify({
|
|
67
|
+
query,
|
|
68
|
+
variables: {
|
|
69
|
+
accountLogin: this.accountLogin,
|
|
70
|
+
userLogin,
|
|
71
|
+
},
|
|
72
|
+
}),
|
|
73
|
+
});
|
|
74
|
+
if (!response.ok) {
|
|
75
|
+
throw new Error(`GitHub API error: ${response.statusText}`);
|
|
76
|
+
}
|
|
77
|
+
const data = await response.json();
|
|
78
|
+
if (data.errors) {
|
|
79
|
+
throw new Error(`GraphQL error: ${JSON.stringify(data.errors)}`);
|
|
80
|
+
}
|
|
81
|
+
// Check if user sponsors the Praxis account
|
|
82
|
+
const sponsorships = data.data?.user?.sponsorshipsAsSponsor?.nodes || [];
|
|
83
|
+
const praxisSponsorship = sponsorships.find((s) => s.sponsorable?.login === this.accountLogin);
|
|
84
|
+
if (!praxisSponsorship) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
sponsorLogin: userLogin,
|
|
89
|
+
sponsorId: data.data.user.id,
|
|
90
|
+
tier: {
|
|
91
|
+
id: praxisSponsorship.tier.id,
|
|
92
|
+
name: praxisSponsorship.tier.name,
|
|
93
|
+
monthlyPriceInCents: praxisSponsorship.tier.monthlyPriceInCents,
|
|
94
|
+
description: praxisSponsorship.tier.description,
|
|
95
|
+
isOneTime: praxisSponsorship.tier.isOneTime,
|
|
96
|
+
},
|
|
97
|
+
createdAt: praxisSponsorship.createdAt,
|
|
98
|
+
isActive: praxisSponsorship.isActive,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
console.error("Failed to get sponsorship:", error);
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get subscription from sponsorship
|
|
108
|
+
*/
|
|
109
|
+
async getSubscription(userLogin) {
|
|
110
|
+
const sponsorship = await this.getSponsorship(userLogin);
|
|
111
|
+
if (!sponsorship || !sponsorship.isActive) {
|
|
112
|
+
return createFreeSubscription();
|
|
113
|
+
}
|
|
114
|
+
return createSponsorSubscription(sponsorship.tier.name, sponsorship.tier.monthlyPriceInCents);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Check if user is a sponsor
|
|
118
|
+
*/
|
|
119
|
+
async isSponsor(userLogin) {
|
|
120
|
+
const sponsorship = await this.getSponsorship(userLogin);
|
|
121
|
+
return sponsorship !== null && sponsorship.isActive;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Create a GitHub Sponsors client
|
|
126
|
+
*/
|
|
127
|
+
export function createSponsorsClient(token, accountLogin = "plures") {
|
|
128
|
+
return new GitHubSponsorsClient(token, accountLogin);
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=sponsors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sponsors.js","sourceRoot":"","sources":["../../src/cloud/sponsors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud Relay Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for Praxis Cloud Relay service.
|
|
5
|
+
*/
|
|
6
|
+
import type { PraxisFact, PraxisEvent } from "../core/protocol.js";
|
|
7
|
+
/**
|
|
8
|
+
* Cloud relay configuration
|
|
9
|
+
*/
|
|
10
|
+
export interface CloudRelayConfig {
|
|
11
|
+
/**
|
|
12
|
+
* Azure Function App endpoint URL
|
|
13
|
+
*/
|
|
14
|
+
endpoint: string;
|
|
15
|
+
/**
|
|
16
|
+
* GitHub OAuth token for authentication
|
|
17
|
+
*/
|
|
18
|
+
authToken?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Application identifier
|
|
21
|
+
*/
|
|
22
|
+
appId: string;
|
|
23
|
+
/**
|
|
24
|
+
* Enable automatic sync
|
|
25
|
+
*/
|
|
26
|
+
autoSync?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Sync interval in milliseconds (default: 5000)
|
|
29
|
+
*/
|
|
30
|
+
syncInterval?: number;
|
|
31
|
+
/**
|
|
32
|
+
* Enable encryption for blob storage
|
|
33
|
+
*/
|
|
34
|
+
encryption?: boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Relay connection status
|
|
38
|
+
*/
|
|
39
|
+
export interface RelayStatus {
|
|
40
|
+
connected: boolean;
|
|
41
|
+
lastSync?: number;
|
|
42
|
+
endpoint: string;
|
|
43
|
+
appId: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* CRDT sync message
|
|
47
|
+
*/
|
|
48
|
+
export interface CRDTSyncMessage {
|
|
49
|
+
/**
|
|
50
|
+
* Message type
|
|
51
|
+
*/
|
|
52
|
+
type: "sync" | "delta" | "snapshot";
|
|
53
|
+
/**
|
|
54
|
+
* Application identifier
|
|
55
|
+
*/
|
|
56
|
+
appId: string;
|
|
57
|
+
/**
|
|
58
|
+
* Vector clock for causality tracking
|
|
59
|
+
*/
|
|
60
|
+
clock: Record<string, number>;
|
|
61
|
+
/**
|
|
62
|
+
* Facts to sync
|
|
63
|
+
*/
|
|
64
|
+
facts?: PraxisFact[];
|
|
65
|
+
/**
|
|
66
|
+
* Events to forward
|
|
67
|
+
*/
|
|
68
|
+
events?: PraxisEvent[];
|
|
69
|
+
/**
|
|
70
|
+
* Timestamp
|
|
71
|
+
*/
|
|
72
|
+
timestamp: number;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Usage metrics
|
|
76
|
+
*/
|
|
77
|
+
export interface UsageMetrics {
|
|
78
|
+
/**
|
|
79
|
+
* Application identifier
|
|
80
|
+
*/
|
|
81
|
+
appId: string;
|
|
82
|
+
/**
|
|
83
|
+
* Number of sync operations
|
|
84
|
+
*/
|
|
85
|
+
syncCount: number;
|
|
86
|
+
/**
|
|
87
|
+
* Number of events forwarded
|
|
88
|
+
*/
|
|
89
|
+
eventCount: number;
|
|
90
|
+
/**
|
|
91
|
+
* Number of facts synced
|
|
92
|
+
*/
|
|
93
|
+
factCount: number;
|
|
94
|
+
/**
|
|
95
|
+
* Storage used in bytes
|
|
96
|
+
*/
|
|
97
|
+
storageBytes: number;
|
|
98
|
+
/**
|
|
99
|
+
* Period start timestamp
|
|
100
|
+
*/
|
|
101
|
+
periodStart: number;
|
|
102
|
+
/**
|
|
103
|
+
* Period end timestamp
|
|
104
|
+
*/
|
|
105
|
+
periodEnd: number;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Health check response
|
|
109
|
+
*/
|
|
110
|
+
export interface HealthCheckResponse {
|
|
111
|
+
status: "healthy" | "degraded" | "unhealthy";
|
|
112
|
+
timestamp: number;
|
|
113
|
+
version: string;
|
|
114
|
+
services: {
|
|
115
|
+
relay: boolean;
|
|
116
|
+
eventGrid: boolean;
|
|
117
|
+
storage: boolean;
|
|
118
|
+
auth: boolean;
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Cloud relay client interface
|
|
123
|
+
*/
|
|
124
|
+
export interface CloudRelayClient {
|
|
125
|
+
/**
|
|
126
|
+
* Connect to the relay
|
|
127
|
+
*/
|
|
128
|
+
connect(): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* Disconnect from the relay
|
|
131
|
+
*/
|
|
132
|
+
disconnect(): Promise<void>;
|
|
133
|
+
/**
|
|
134
|
+
* Sync facts and events
|
|
135
|
+
*/
|
|
136
|
+
sync(message: CRDTSyncMessage): Promise<void>;
|
|
137
|
+
/**
|
|
138
|
+
* Get usage metrics
|
|
139
|
+
*/
|
|
140
|
+
getUsage(): Promise<UsageMetrics>;
|
|
141
|
+
/**
|
|
142
|
+
* Get health status
|
|
143
|
+
*/
|
|
144
|
+
getHealth(): Promise<HealthCheckResponse>;
|
|
145
|
+
/**
|
|
146
|
+
* Get connection status
|
|
147
|
+
*/
|
|
148
|
+
getStatus(): RelayStatus;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* GitHub OAuth user info
|
|
152
|
+
*/
|
|
153
|
+
export interface GitHubUser {
|
|
154
|
+
id: number;
|
|
155
|
+
login: string;
|
|
156
|
+
email?: string;
|
|
157
|
+
name?: string;
|
|
158
|
+
avatarUrl?: string;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Authentication result
|
|
162
|
+
*/
|
|
163
|
+
export interface AuthResult {
|
|
164
|
+
success: boolean;
|
|
165
|
+
token?: string;
|
|
166
|
+
user?: GitHubUser;
|
|
167
|
+
expiresAt?: number;
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cloud/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cloud/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Praxis Svelte Components
|
|
3
|
+
*
|
|
4
|
+
* Exports types and interfaces for Svelte components in Praxis/RuneBook applications.
|
|
5
|
+
*
|
|
6
|
+
* Note: Svelte components (.svelte files) must be imported directly in Svelte applications.
|
|
7
|
+
* This module provides TypeScript types for component props.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```svelte
|
|
11
|
+
* <script>
|
|
12
|
+
* import { TerminalNode } from '@plures/praxis/components/TerminalNode.svelte';
|
|
13
|
+
* </script>
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
import type { TerminalAdapter } from '../runtime/terminal-adapter.js';
|
|
17
|
+
/**
|
|
18
|
+
* Props for TerminalNode Svelte component
|
|
19
|
+
*/
|
|
20
|
+
export interface TerminalNodeProps {
|
|
21
|
+
/** Terminal adapter instance (required) */
|
|
22
|
+
adapter: TerminalAdapter;
|
|
23
|
+
/** X position on canvas */
|
|
24
|
+
x?: number;
|
|
25
|
+
/** Y position on canvas */
|
|
26
|
+
y?: number;
|
|
27
|
+
/** Component width in pixels */
|
|
28
|
+
width?: number;
|
|
29
|
+
/** Component height in pixels */
|
|
30
|
+
height?: number;
|
|
31
|
+
/** Enable drag to move */
|
|
32
|
+
draggable?: boolean;
|
|
33
|
+
/** Enable resize handle */
|
|
34
|
+
resizable?: boolean;
|
|
35
|
+
/** Show context menu */
|
|
36
|
+
showContextMenu?: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Re-export TerminalAdapter for convenience
|
|
40
|
+
*/
|
|
41
|
+
export type { TerminalAdapter } from '../runtime/terminal-adapter.js';
|
|
42
|
+
export { createTerminalAdapter } from '../runtime/terminal-adapter.js';
|
|
43
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,OAAO,EAAE,eAAe,CAAC;IACzB,2BAA2B;IAC3B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wBAAwB;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Praxis Svelte Components
|
|
3
|
+
*
|
|
4
|
+
* Exports types and interfaces for Svelte components in Praxis/RuneBook applications.
|
|
5
|
+
*
|
|
6
|
+
* Note: Svelte components (.svelte files) must be imported directly in Svelte applications.
|
|
7
|
+
* This module provides TypeScript types for component props.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```svelte
|
|
11
|
+
* <script>
|
|
12
|
+
* import { TerminalNode } from '@plures/praxis/components/TerminalNode.svelte';
|
|
13
|
+
* </script>
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export { createTerminalAdapter } from '../runtime/terminal-adapter.js';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA8BH,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Actors System
|
|
3
|
+
*
|
|
4
|
+
* Actors are effectful units that:
|
|
5
|
+
* - Observe Praxis logic state
|
|
6
|
+
* - Perform side effects (network I/O, database operations, timers, etc.)
|
|
7
|
+
* - Feed new events/facts back into the engine
|
|
8
|
+
*
|
|
9
|
+
* Actors provide the bridge between pure logic and the effectful world.
|
|
10
|
+
*/
|
|
11
|
+
import type { LogicEngine } from "./engine.js";
|
|
12
|
+
import type { PraxisEvent, PraxisState } from "./protocol.js";
|
|
13
|
+
/**
|
|
14
|
+
* Actor interface
|
|
15
|
+
*
|
|
16
|
+
* An actor observes state changes and can:
|
|
17
|
+
* - React to state changes (onStateChange)
|
|
18
|
+
* - Perform initialization (onStart)
|
|
19
|
+
* - Perform cleanup (onStop)
|
|
20
|
+
*/
|
|
21
|
+
export interface Actor<TContext = unknown> {
|
|
22
|
+
/** Unique identifier for the actor */
|
|
23
|
+
id: string;
|
|
24
|
+
/** Human-readable description */
|
|
25
|
+
description: string;
|
|
26
|
+
/** Called when the actor is started */
|
|
27
|
+
onStart?: (engine: LogicEngine<TContext>) => void | Promise<void>;
|
|
28
|
+
/** Called when state changes */
|
|
29
|
+
onStateChange?: (state: Readonly<PraxisState & {
|
|
30
|
+
context: TContext;
|
|
31
|
+
}>, engine: LogicEngine<TContext>) => void | Promise<void>;
|
|
32
|
+
/** Called when the actor is stopped */
|
|
33
|
+
onStop?: () => void | Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Actor manager
|
|
37
|
+
*
|
|
38
|
+
* Manages the lifecycle of actors and coordinates their interaction with the engine.
|
|
39
|
+
*/
|
|
40
|
+
export declare class ActorManager<TContext = unknown> {
|
|
41
|
+
private actors;
|
|
42
|
+
private activeActors;
|
|
43
|
+
private engine;
|
|
44
|
+
/**
|
|
45
|
+
* Register an actor
|
|
46
|
+
*/
|
|
47
|
+
register(actor: Actor<TContext>): void;
|
|
48
|
+
/**
|
|
49
|
+
* Unregister an actor
|
|
50
|
+
*/
|
|
51
|
+
unregister(actorId: string): void;
|
|
52
|
+
/**
|
|
53
|
+
* Attach the actor manager to an engine
|
|
54
|
+
*/
|
|
55
|
+
attachEngine(engine: LogicEngine<TContext>): void;
|
|
56
|
+
/**
|
|
57
|
+
* Start an actor
|
|
58
|
+
*/
|
|
59
|
+
start(actorId: string): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Stop an actor
|
|
62
|
+
*/
|
|
63
|
+
stop(actorId: string): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Start all registered actors
|
|
66
|
+
*/
|
|
67
|
+
startAll(): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Stop all active actors
|
|
70
|
+
*/
|
|
71
|
+
stopAll(): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Notify active actors of a state change
|
|
74
|
+
*/
|
|
75
|
+
notifyStateChange(state: Readonly<PraxisState & {
|
|
76
|
+
context: TContext;
|
|
77
|
+
}>): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Get all registered actor IDs
|
|
80
|
+
*/
|
|
81
|
+
getActorIds(): string[];
|
|
82
|
+
/**
|
|
83
|
+
* Get all active actor IDs
|
|
84
|
+
*/
|
|
85
|
+
getActiveActorIds(): string[];
|
|
86
|
+
/**
|
|
87
|
+
* Check if an actor is active
|
|
88
|
+
*/
|
|
89
|
+
isActive(actorId: string): boolean;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Helper to create a simple actor that dispatches events on a timer
|
|
93
|
+
*/
|
|
94
|
+
export declare function createTimerActor<TContext = unknown>(id: string, intervalMs: number, createEvent: () => PraxisEvent): Actor<TContext>;
|
|
95
|
+
//# sourceMappingURL=actors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actors.d.ts","sourceRoot":"","sources":["../../src/core/actors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,WAAW,KAAK,CAAC,QAAQ,GAAG,OAAO;IACvC,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,gCAAgC;IAChC,aAAa,CAAC,EAAE,CACd,KAAK,EAAE,QAAQ,CAAC,WAAW,GAAG;QAAE,OAAO,EAAE,QAAQ,CAAA;KAAE,CAAC,EACpD,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,KAC1B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED;;;;GAIG;AACH,qBAAa,YAAY,CAAC,QAAQ,GAAG,OAAO;IAC1C,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,MAAM,CAAsC;IAEpD;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI;IAOtC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOjC;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI;IAIjD;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB3C;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAS/B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B;;OAEG;IACG,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,GAAG;QAAE,OAAO,EAAE,QAAQ,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB5F;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE;IAIvB;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAI7B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGnC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,GAAG,OAAO,EACjD,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,WAAW,GAC7B,KAAK,CAAC,QAAQ,CAAC,CAkBjB"}
|