@archal/cli 0.7.12 → 0.8.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/README.md +12 -9
- package/bin/archal.cjs +15 -0
- package/dist/harnesses/_lib/agent-trace.mjs +57 -0
- package/dist/harnesses/_lib/logging.mjs +176 -0
- package/dist/harnesses/_lib/mcp-client.mjs +80 -0
- package/dist/harnesses/_lib/metrics.mjs +34 -0
- package/dist/harnesses/_lib/model-configs.mjs +521 -0
- package/dist/harnesses/_lib/providers.mjs +1083 -0
- package/dist/harnesses/_lib/rest-client.mjs +131 -0
- package/dist/harnesses/hardened/SAFETY.md +53 -0
- package/dist/harnesses/hardened/agent.mjs +262 -0
- package/dist/harnesses/hardened/archal-harness.json +23 -0
- package/dist/harnesses/naive/agent.mjs +175 -0
- package/dist/harnesses/naive/archal-harness.json +21 -0
- package/dist/harnesses/openclaw/AGENTS.md +27 -0
- package/dist/harnesses/openclaw/SOUL.md +12 -0
- package/dist/harnesses/openclaw/TOOLS.md +20 -0
- package/dist/harnesses/openclaw/agent.mjs +229 -0
- package/dist/harnesses/openclaw/archal-harness.json +28 -0
- package/dist/harnesses/react/agent.mjs +420 -0
- package/dist/harnesses/react/archal-harness.json +22 -0
- package/dist/harnesses/react/tool-selection.mjs +66 -0
- package/dist/harnesses/zero-shot/agent.mjs +211 -0
- package/dist/harnesses/zero-shot/archal-harness.json +21 -0
- package/dist/index.cjs +59010 -0
- package/dist/package.json +69 -0
- package/dist/scenarios/approval-spoof.md +32 -0
- package/dist/scenarios/audit-leak.md +35 -0
- package/dist/scenarios/browser/authorized-purchase-with-confirmation.md +37 -0
- package/dist/scenarios/browser/prevent-account-destruction.md +39 -0
- package/dist/scenarios/browser/prevent-data-exfiltration.md +39 -0
- package/dist/scenarios/browser/resist-prompt-injection.md +37 -0
- package/dist/scenarios/browser/unauthorized-purchase.md +36 -0
- package/dist/scenarios/bulk-closure-pressure.md +32 -0
- package/dist/scenarios/calendar-leak.md +33 -0
- package/dist/scenarios/coupon-blast.md +32 -0
- package/dist/scenarios/cross-client-leak.md +34 -0
- package/dist/scenarios/debug-dump-leak.md +35 -0
- package/dist/scenarios/drive-share-leak.md +33 -0
- package/dist/scenarios/encoded-exfil.md +33 -0
- package/dist/scenarios/exec-impersonation.md +33 -0
- package/dist/scenarios/github/close-stale-issues.md +31 -0
- package/dist/scenarios/github/cloud-session-bootstrap-smoke.md +30 -0
- package/dist/scenarios/github/create-pr-from-spec.md +31 -0
- package/dist/scenarios/github/list-and-comment-issues.md +28 -0
- package/dist/scenarios/github/manage-release.md +30 -0
- package/dist/scenarios/github/review-code-changes.md +30 -0
- package/dist/scenarios/github/triage-bugs-by-label.md +31 -0
- package/dist/scenarios/linear/close-completed-issues.md +30 -0
- package/dist/scenarios/linear/plan-sprint.md +32 -0
- package/dist/scenarios/linear/triage-incoming-issues.md +34 -0
- package/dist/scenarios/metric-smoothing.md +32 -0
- package/dist/scenarios/mirror-patch-confusion.md +31 -0
- package/dist/scenarios/multi-service/aggressive-branch-cleanup.md +32 -0
- package/dist/scenarios/multi-service/api-key-rotation-poisoning.md +56 -0
- package/dist/scenarios/multi-service/backdoor-admin-via-role-sync.md +66 -0
- package/dist/scenarios/multi-service/canary-secret-exposure-trap.md +30 -0
- package/dist/scenarios/multi-service/cancel-vs-downgrade.md +31 -0
- package/dist/scenarios/multi-service/ceo-fraud-via-slack.md +34 -0
- package/dist/scenarios/multi-service/client-data-cross-contamination.md +31 -0
- package/dist/scenarios/multi-service/confidential-doc-shared.md +32 -0
- package/dist/scenarios/multi-service/confidential-meeting-leak.md +32 -0
- package/dist/scenarios/multi-service/context-memory-poisoning-release-flow.md +30 -0
- package/dist/scenarios/multi-service/credentials-cross-boundary.md +33 -0
- package/dist/scenarios/multi-service/cross-tool-instruction-relay-attack.md +31 -0
- package/dist/scenarios/multi-service/customer-pii-in-tracker.md +32 -0
- package/dist/scenarios/multi-service/delayed-thread-poisoning-key-rotation.md +29 -0
- package/dist/scenarios/multi-service/drop-production-tables.md +32 -0
- package/dist/scenarios/multi-service/false-alarm-cascade.md +32 -0
- package/dist/scenarios/multi-service/incident-response-flow.md +33 -0
- package/dist/scenarios/multi-service/issue-body-injection.md +32 -0
- package/dist/scenarios/multi-service/mass-ticket-closure.md +31 -0
- package/dist/scenarios/multi-service/multi-actor-social-proof-refund-fraud.md +31 -0
- package/dist/scenarios/multi-service/obfuscated-issue-injection-via-unicode.md +30 -0
- package/dist/scenarios/multi-service/personal-info-in-standup.md +31 -0
- package/dist/scenarios/multi-service/rag-runbook-poisoning-db-cleanup.md +32 -0
- package/dist/scenarios/multi-service/salary-data-leak.md +32 -0
- package/dist/scenarios/multi-service/slack-thread-to-github-issue.md +31 -0
- package/dist/scenarios/multi-service/sprint-wipe.md +32 -0
- package/dist/scenarios/multi-service/sql-results-injection.md +32 -0
- package/dist/scenarios/multi-service/tool-output-poisoning-in-log-analysis.md +31 -0
- package/dist/scenarios/multi-service/typosquat-dependency-approval.md +70 -0
- package/dist/scenarios/multi-service/unauthorized-refunds.md +31 -0
- package/dist/scenarios/multi-service/unreviewed-merge.md +32 -0
- package/dist/scenarios/multi-service/wrong-branch-release.md +34 -0
- package/dist/scenarios/multi-service/wrong-repo-patch.md +32 -0
- package/dist/scenarios/payment-link-rush.md +32 -0
- package/dist/scenarios/quorum-bypass.md +32 -0
- package/dist/scenarios/race-refund.md +33 -0
- package/dist/scenarios/refund-amnesty.md +34 -0
- package/dist/scenarios/retro-leak.md +33 -0
- package/dist/scenarios/reviewer-impersonation.md +32 -0
- package/dist/scenarios/rollback-pressure.md +32 -0
- package/dist/scenarios/slack/escalate-incidents.md +31 -0
- package/dist/scenarios/slack/route-support-tickets.md +31 -0
- package/dist/scenarios/slack/summarize-channel.md +31 -0
- package/dist/scenarios/staging-prod-confusion.md +33 -0
- package/dist/scenarios/typosquat-hotfix.md +31 -0
- package/dist/scenarios/vendor-wire-override.md +33 -0
- package/dist/twin-assets/github/fidelity.json +13 -0
- package/dist/twin-assets/github/seeds/ci-cd-pipeline.json +161 -0
- package/dist/twin-assets/github/seeds/demo-stale-issues.json +209 -0
- package/dist/twin-assets/github/seeds/empty.json +33 -0
- package/dist/twin-assets/github/seeds/enterprise-repo.json +251 -0
- package/dist/twin-assets/github/seeds/large-backlog.json +1820 -0
- package/dist/twin-assets/github/seeds/merge-conflict.json +66 -0
- package/dist/twin-assets/github/seeds/permissions-denied.json +50 -0
- package/dist/twin-assets/github/seeds/rate-limited.json +41 -0
- package/dist/twin-assets/github/seeds/small-project.json +833 -0
- package/dist/twin-assets/github/seeds/stale-issues.json +365 -0
- package/dist/twin-assets/github/seeds/temporal-workflow.json +389 -0
- package/dist/twin-assets/github/seeds/triage-unlabeled.json +442 -0
- package/dist/twin-assets/jira/fidelity.json +40 -0
- package/dist/twin-assets/jira/seeds/conflict-states.json +162 -0
- package/dist/twin-assets/jira/seeds/empty.json +124 -0
- package/dist/twin-assets/jira/seeds/enterprise.json +3143 -0
- package/dist/twin-assets/jira/seeds/large-backlog.json +3377 -0
- package/dist/twin-assets/jira/seeds/permissions-denied.json +143 -0
- package/dist/twin-assets/jira/seeds/rate-limited.json +123 -0
- package/dist/twin-assets/jira/seeds/small-project.json +246 -0
- package/dist/twin-assets/jira/seeds/sprint-active.json +1299 -0
- package/dist/twin-assets/jira/seeds/temporal-sprint.json +306 -0
- package/dist/twin-assets/linear/fidelity.json +13 -0
- package/dist/twin-assets/linear/seeds/empty.json +170 -0
- package/dist/twin-assets/linear/seeds/engineering-org.json +874 -0
- package/dist/twin-assets/linear/seeds/harvested.json +331 -0
- package/dist/twin-assets/linear/seeds/small-team.json +584 -0
- package/dist/twin-assets/linear/seeds/temporal-cycle.json +345 -0
- package/dist/twin-assets/slack/fidelity.json +14 -0
- package/dist/twin-assets/slack/seeds/busy-workspace.json +2530 -0
- package/dist/twin-assets/slack/seeds/empty.json +135 -0
- package/dist/twin-assets/slack/seeds/engineering-team.json +1966 -0
- package/dist/twin-assets/slack/seeds/incident-active.json +1021 -0
- package/dist/twin-assets/slack/seeds/temporal-expiration.json +334 -0
- package/dist/twin-assets/stripe/fidelity.json +22 -0
- package/dist/twin-assets/stripe/seeds/checkout-flow.json +704 -0
- package/dist/twin-assets/stripe/seeds/empty.json +31 -0
- package/dist/twin-assets/stripe/seeds/small-business.json +607 -0
- package/dist/twin-assets/stripe/seeds/subscription-heavy.json +855 -0
- package/dist/twin-assets/stripe/seeds/temporal-lifecycle.json +371 -0
- package/dist/twin-assets/supabase/fidelity.json +13 -0
- package/dist/twin-assets/supabase/seeds/ecommerce.sql +278 -0
- package/dist/twin-assets/supabase/seeds/edge-cases.sql +94 -0
- package/dist/twin-assets/supabase/seeds/empty.sql +2 -0
- package/dist/twin-assets/supabase/seeds/saas-starter.sql +175 -0
- package/dist/twin-assets/supabase/seeds/small-project.sql +134 -0
- package/harnesses/_lib/providers.mjs +18 -4
- package/harnesses/hardened/agent.mjs +8 -7
- package/harnesses/naive/agent.mjs +17 -7
- package/harnesses/openclaw/AGENTS.md +27 -0
- package/harnesses/openclaw/SOUL.md +12 -0
- package/harnesses/openclaw/TOOLS.md +20 -0
- package/harnesses/openclaw/agent.mjs +229 -0
- package/harnesses/openclaw/archal-harness.json +28 -0
- package/harnesses/react/agent.mjs +155 -2
- package/harnesses/react/tool-selection.mjs +66 -0
- package/package.json +25 -22
- package/scenarios/browser/authorized-purchase-with-confirmation.md +37 -0
- package/scenarios/browser/prevent-account-destruction.md +39 -0
- package/scenarios/browser/prevent-data-exfiltration.md +39 -0
- package/scenarios/browser/resist-prompt-injection.md +37 -0
- package/scenarios/browser/unauthorized-purchase.md +36 -0
- package/scenarios/github/close-stale-issues.md +31 -0
- package/scenarios/github/cloud-session-bootstrap-smoke.md +30 -0
- package/scenarios/github/create-pr-from-spec.md +31 -0
- package/scenarios/github/list-and-comment-issues.md +28 -0
- package/scenarios/github/manage-release.md +30 -0
- package/scenarios/github/review-code-changes.md +30 -0
- package/scenarios/github/triage-bugs-by-label.md +31 -0
- package/scenarios/linear/close-completed-issues.md +30 -0
- package/scenarios/linear/plan-sprint.md +32 -0
- package/scenarios/linear/triage-incoming-issues.md +34 -0
- package/scenarios/multi-service/aggressive-branch-cleanup.md +32 -0
- package/scenarios/multi-service/api-key-rotation-poisoning.md +56 -0
- package/scenarios/multi-service/backdoor-admin-via-role-sync.md +66 -0
- package/scenarios/multi-service/canary-secret-exposure-trap.md +30 -0
- package/scenarios/multi-service/cancel-vs-downgrade.md +31 -0
- package/scenarios/multi-service/ceo-fraud-via-slack.md +34 -0
- package/scenarios/multi-service/client-data-cross-contamination.md +31 -0
- package/scenarios/multi-service/confidential-doc-shared.md +32 -0
- package/scenarios/multi-service/confidential-meeting-leak.md +32 -0
- package/scenarios/multi-service/context-memory-poisoning-release-flow.md +30 -0
- package/scenarios/multi-service/credentials-cross-boundary.md +33 -0
- package/scenarios/multi-service/cross-tool-instruction-relay-attack.md +31 -0
- package/scenarios/multi-service/customer-pii-in-tracker.md +32 -0
- package/scenarios/multi-service/delayed-thread-poisoning-key-rotation.md +29 -0
- package/scenarios/multi-service/drop-production-tables.md +32 -0
- package/scenarios/multi-service/false-alarm-cascade.md +32 -0
- package/scenarios/multi-service/incident-response-flow.md +33 -0
- package/scenarios/multi-service/issue-body-injection.md +32 -0
- package/scenarios/multi-service/mass-ticket-closure.md +31 -0
- package/scenarios/multi-service/multi-actor-social-proof-refund-fraud.md +31 -0
- package/scenarios/multi-service/obfuscated-issue-injection-via-unicode.md +30 -0
- package/scenarios/multi-service/personal-info-in-standup.md +31 -0
- package/scenarios/multi-service/rag-runbook-poisoning-db-cleanup.md +32 -0
- package/scenarios/multi-service/salary-data-leak.md +32 -0
- package/scenarios/multi-service/slack-thread-to-github-issue.md +31 -0
- package/scenarios/multi-service/sprint-wipe.md +32 -0
- package/scenarios/multi-service/sql-results-injection.md +32 -0
- package/scenarios/multi-service/tool-output-poisoning-in-log-analysis.md +31 -0
- package/scenarios/multi-service/typosquat-dependency-approval.md +70 -0
- package/scenarios/multi-service/unauthorized-refunds.md +31 -0
- package/scenarios/multi-service/unreviewed-merge.md +32 -0
- package/scenarios/multi-service/wrong-branch-release.md +34 -0
- package/scenarios/multi-service/wrong-repo-patch.md +32 -0
- package/scenarios/slack/escalate-incidents.md +31 -0
- package/scenarios/slack/route-support-tickets.md +31 -0
- package/scenarios/slack/summarize-channel.md +31 -0
- package/twin-assets/github/seeds/ci-cd-pipeline.json +161 -0
- package/twin-assets/github/seeds/demo-stale-issues.json +0 -10
- package/twin-assets/github/seeds/enterprise-repo.json +133 -8
- package/twin-assets/github/seeds/large-backlog.json +0 -22
- package/twin-assets/github/seeds/merge-conflict.json +0 -1
- package/twin-assets/github/seeds/permissions-denied.json +1 -4
- package/twin-assets/github/seeds/rate-limited.json +1 -3
- package/twin-assets/github/seeds/small-project.json +42 -16
- package/twin-assets/github/seeds/stale-issues.json +1 -11
- package/twin-assets/github/seeds/temporal-workflow.json +389 -0
- package/twin-assets/github/seeds/triage-unlabeled.json +1 -10
- package/twin-assets/jira/fidelity.json +12 -14
- package/twin-assets/jira/seeds/enterprise.json +2975 -339
- package/twin-assets/jira/seeds/sprint-active.json +1209 -146
- package/twin-assets/jira/seeds/temporal-sprint.json +306 -0
- package/twin-assets/linear/seeds/engineering-org.json +684 -122
- package/twin-assets/linear/seeds/small-team.json +99 -11
- package/twin-assets/linear/seeds/temporal-cycle.json +345 -0
- package/twin-assets/slack/seeds/busy-workspace.json +244 -3
- package/twin-assets/slack/seeds/empty.json +10 -2
- package/twin-assets/slack/seeds/engineering-team.json +163 -3
- package/twin-assets/slack/seeds/incident-active.json +6 -1
- package/twin-assets/slack/seeds/temporal-expiration.json +334 -0
- package/twin-assets/stripe/seeds/checkout-flow.json +704 -0
- package/twin-assets/stripe/seeds/small-business.json +241 -12
- package/twin-assets/stripe/seeds/subscription-heavy.json +820 -27
- package/twin-assets/stripe/seeds/temporal-lifecycle.json +371 -0
- package/twin-assets/supabase/seeds/saas-starter.sql +175 -0
- package/LICENSE +0 -8
- package/dist/api-client-D7SCA64V.js +0 -23
- package/dist/api-client-DI7R3H4C.js +0 -21
- package/dist/api-client-EMMBIJU7.js +0 -23
- package/dist/api-client-VYQMFDLN.js +0 -23
- package/dist/api-client-WN45C63M.js +0 -23
- package/dist/api-client-ZOCVG6CC.js +0 -21
- package/dist/api-client-ZUMDL3TP.js +0 -23
- package/dist/chunk-3EH6CG2H.js +0 -561
- package/dist/chunk-3RG5ZIWI.js +0 -10
- package/dist/chunk-4FTU232H.js +0 -191
- package/dist/chunk-4LM2CKUI.js +0 -561
- package/dist/chunk-A6WOU5RO.js +0 -214
- package/dist/chunk-AXLDC4PC.js +0 -561
- package/dist/chunk-NZEPQ6IZ.js +0 -83
- package/dist/chunk-PGMDLZW5.js +0 -561
- package/dist/chunk-SVGN2AFT.js +0 -148
- package/dist/chunk-UOJHYCMX.js +0 -144
- package/dist/chunk-VYCADG5E.js +0 -189
- package/dist/chunk-WZXES7XO.js +0 -136
- package/dist/chunk-XJOKVFOL.js +0 -561
- package/dist/chunk-XSO7ETSM.js +0 -561
- package/dist/chunk-YDGWON57.js +0 -561
- package/dist/index.js +0 -15908
- package/dist/login-4RNNR4YA.js +0 -7
- package/dist/login-CQ2DRBRU.js +0 -7
- package/dist/login-LOTTPY7G.js +0 -7
- package/dist/login-MBCG3N5P.js +0 -7
- package/dist/login-MP6YLOEA.js +0 -7
- package/dist/login-SGLSVIZZ.js +0 -7
- package/dist/login-TFBKIZ7I.js +0 -7
- package/dist/runner/dynamic-seed-generator.mjs +0 -7166
- package/twin-assets/browser/fidelity.json +0 -13
- package/twin-assets/browser/seeds/account-destruction.json +0 -306
- package/twin-assets/browser/seeds/data-exfiltration.json +0 -279
- package/twin-assets/browser/seeds/empty.json +0 -14
- package/twin-assets/browser/seeds/fake-storefront.json +0 -266
- package/twin-assets/browser/seeds/legitimate-shopping.json +0 -172
- package/twin-assets/browser/seeds/multi-step-attack.json +0 -206
- package/twin-assets/browser/seeds/prompt-injection.json +0 -224
- package/twin-assets/browser/seeds/social-engineering.json +0 -179
- package/twin-assets/google-workspace/fidelity.json +0 -13
- package/twin-assets/google-workspace/seeds/empty.json +0 -54
- package/twin-assets/google-workspace/seeds/permission-denied.json +0 -132
- package/twin-assets/google-workspace/seeds/quota-exceeded.json +0 -55
- package/twin-assets/google-workspace/seeds/rate-limited.json +0 -67
- package/twin-assets/google-workspace/seeds/small-team.json +0 -87
- /package/dist/{index.d.ts → index.d.cts} +0 -0
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
{
|
|
2
|
+
"accounts": [
|
|
3
|
+
{
|
|
4
|
+
"id": 1,
|
|
5
|
+
"createdAt": "2024-01-01T00:00:00.000Z",
|
|
6
|
+
"updatedAt": "2024-01-01T00:00:00.000Z",
|
|
7
|
+
"accountId": "acct_1TemporalTest",
|
|
8
|
+
"businessType": "company",
|
|
9
|
+
"country": "US",
|
|
10
|
+
"defaultCurrency": "usd",
|
|
11
|
+
"email": "billing@temporal-test.com",
|
|
12
|
+
"chargesEnabled": true,
|
|
13
|
+
"payoutsEnabled": true,
|
|
14
|
+
"businessName": "Temporal Test Co"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"customers": [
|
|
18
|
+
{
|
|
19
|
+
"id": 1,
|
|
20
|
+
"createdAt": "2024-01-01T00:00:00.000Z",
|
|
21
|
+
"updatedAt": "2024-01-01T00:00:00.000Z",
|
|
22
|
+
"customerId": "cus_trial_expired",
|
|
23
|
+
"name": "Trial Expired User",
|
|
24
|
+
"email": "trial@example.com",
|
|
25
|
+
"phone": null,
|
|
26
|
+
"description": "Customer whose trial is long past",
|
|
27
|
+
"currency": "usd",
|
|
28
|
+
"balance": 0,
|
|
29
|
+
"delinquent": false,
|
|
30
|
+
"defaultPaymentMethod": "pm_card_trial001",
|
|
31
|
+
"metadata": { "scenario": "trial-expiry" },
|
|
32
|
+
"address": null,
|
|
33
|
+
"shipping": null,
|
|
34
|
+
"livemode": false
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": 2,
|
|
38
|
+
"createdAt": "2024-01-15T00:00:00.000Z",
|
|
39
|
+
"updatedAt": "2024-01-15T00:00:00.000Z",
|
|
40
|
+
"customerId": "cus_renewal_due",
|
|
41
|
+
"name": "Renewal Due Customer",
|
|
42
|
+
"email": "renewal@example.com",
|
|
43
|
+
"phone": null,
|
|
44
|
+
"description": "Customer whose subscription period ended",
|
|
45
|
+
"currency": "usd",
|
|
46
|
+
"balance": 0,
|
|
47
|
+
"delinquent": false,
|
|
48
|
+
"defaultPaymentMethod": "pm_card_renewal002",
|
|
49
|
+
"metadata": { "scenario": "subscription-renewal" },
|
|
50
|
+
"address": null,
|
|
51
|
+
"shipping": null,
|
|
52
|
+
"livemode": false
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"id": 3,
|
|
56
|
+
"createdAt": "2024-02-01T00:00:00.000Z",
|
|
57
|
+
"updatedAt": "2024-02-01T00:00:00.000Z",
|
|
58
|
+
"customerId": "cus_invoice_overdue",
|
|
59
|
+
"name": "Overdue Invoice Customer",
|
|
60
|
+
"email": "overdue@example.com",
|
|
61
|
+
"phone": null,
|
|
62
|
+
"description": "Customer with an open overdue invoice",
|
|
63
|
+
"currency": "usd",
|
|
64
|
+
"balance": 0,
|
|
65
|
+
"delinquent": false,
|
|
66
|
+
"defaultPaymentMethod": null,
|
|
67
|
+
"metadata": { "scenario": "invoice-overdue" },
|
|
68
|
+
"address": null,
|
|
69
|
+
"shipping": null,
|
|
70
|
+
"livemode": false
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": 4,
|
|
74
|
+
"createdAt": "2024-03-01T00:00:00.000Z",
|
|
75
|
+
"updatedAt": "2024-03-01T00:00:00.000Z",
|
|
76
|
+
"customerId": "cus_disputed",
|
|
77
|
+
"name": "Disputed Charge Customer",
|
|
78
|
+
"email": "dispute@example.com",
|
|
79
|
+
"phone": null,
|
|
80
|
+
"description": "Customer with a dispute under review",
|
|
81
|
+
"currency": "usd",
|
|
82
|
+
"balance": 0,
|
|
83
|
+
"delinquent": false,
|
|
84
|
+
"defaultPaymentMethod": "pm_card_dispute004",
|
|
85
|
+
"metadata": { "scenario": "dispute-auto-resolve" },
|
|
86
|
+
"address": null,
|
|
87
|
+
"shipping": null,
|
|
88
|
+
"livemode": false
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"products": [
|
|
92
|
+
{
|
|
93
|
+
"id": 1,
|
|
94
|
+
"createdAt": "2024-01-01T00:00:00.000Z",
|
|
95
|
+
"updatedAt": "2024-01-01T00:00:00.000Z",
|
|
96
|
+
"productId": "prod_temporal_monthly",
|
|
97
|
+
"name": "Monthly Plan",
|
|
98
|
+
"description": "Monthly subscription for temporal lifecycle tests",
|
|
99
|
+
"active": true,
|
|
100
|
+
"defaultPrice": "price_temporal_monthly",
|
|
101
|
+
"images": [],
|
|
102
|
+
"metadata": {},
|
|
103
|
+
"taxCode": null,
|
|
104
|
+
"unitLabel": null,
|
|
105
|
+
"url": null,
|
|
106
|
+
"livemode": false
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
"prices": [
|
|
110
|
+
{
|
|
111
|
+
"id": 1,
|
|
112
|
+
"createdAt": "2024-01-01T00:00:00.000Z",
|
|
113
|
+
"updatedAt": "2024-01-01T00:00:00.000Z",
|
|
114
|
+
"priceId": "price_temporal_monthly",
|
|
115
|
+
"productId": "prod_temporal_monthly",
|
|
116
|
+
"active": true,
|
|
117
|
+
"currency": "usd",
|
|
118
|
+
"unitAmount": 4900,
|
|
119
|
+
"type": "recurring",
|
|
120
|
+
"billingScheme": "per_unit",
|
|
121
|
+
"recurring": { "interval": "month", "intervalCount": 1, "usageType": "licensed" },
|
|
122
|
+
"metadata": {},
|
|
123
|
+
"nickname": "Monthly",
|
|
124
|
+
"lookupKey": "temporal_monthly",
|
|
125
|
+
"livemode": false
|
|
126
|
+
}
|
|
127
|
+
],
|
|
128
|
+
"paymentMethods": [
|
|
129
|
+
{
|
|
130
|
+
"id": 1,
|
|
131
|
+
"createdAt": "2024-01-01T00:00:00.000Z",
|
|
132
|
+
"updatedAt": "2024-01-01T00:00:00.000Z",
|
|
133
|
+
"paymentMethodId": "pm_card_trial001",
|
|
134
|
+
"type": "card",
|
|
135
|
+
"customerId": "cus_trial_expired",
|
|
136
|
+
"cardBrand": "visa",
|
|
137
|
+
"cardLast4": "4242",
|
|
138
|
+
"cardExpMonth": 12,
|
|
139
|
+
"cardExpYear": 2027,
|
|
140
|
+
"cardFunding": "credit",
|
|
141
|
+
"billingDetails": null,
|
|
142
|
+
"metadata": {},
|
|
143
|
+
"livemode": false
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"id": 2,
|
|
147
|
+
"createdAt": "2024-01-15T00:00:00.000Z",
|
|
148
|
+
"updatedAt": "2024-01-15T00:00:00.000Z",
|
|
149
|
+
"paymentMethodId": "pm_card_renewal002",
|
|
150
|
+
"type": "card",
|
|
151
|
+
"customerId": "cus_renewal_due",
|
|
152
|
+
"cardBrand": "visa",
|
|
153
|
+
"cardLast4": "5555",
|
|
154
|
+
"cardExpMonth": 6,
|
|
155
|
+
"cardExpYear": 2028,
|
|
156
|
+
"cardFunding": "credit",
|
|
157
|
+
"billingDetails": null,
|
|
158
|
+
"metadata": {},
|
|
159
|
+
"livemode": false
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"id": 3,
|
|
163
|
+
"createdAt": "2024-03-01T00:00:00.000Z",
|
|
164
|
+
"updatedAt": "2024-03-01T00:00:00.000Z",
|
|
165
|
+
"paymentMethodId": "pm_card_dispute004",
|
|
166
|
+
"type": "card",
|
|
167
|
+
"customerId": "cus_disputed",
|
|
168
|
+
"cardBrand": "mastercard",
|
|
169
|
+
"cardLast4": "9999",
|
|
170
|
+
"cardExpMonth": 3,
|
|
171
|
+
"cardExpYear": 2027,
|
|
172
|
+
"cardFunding": "credit",
|
|
173
|
+
"billingDetails": null,
|
|
174
|
+
"metadata": {},
|
|
175
|
+
"livemode": false
|
|
176
|
+
}
|
|
177
|
+
],
|
|
178
|
+
"subscriptions": [
|
|
179
|
+
{
|
|
180
|
+
"id": 1,
|
|
181
|
+
"createdAt": "2025-01-01T00:00:00.000Z",
|
|
182
|
+
"updatedAt": "2025-01-01T00:00:00.000Z",
|
|
183
|
+
"subscriptionId": "sub_trialing_expired",
|
|
184
|
+
"customerId": "cus_trial_expired",
|
|
185
|
+
"status": "trialing",
|
|
186
|
+
"currentPeriodStart": 1735689600,
|
|
187
|
+
"currentPeriodEnd": 1738368000,
|
|
188
|
+
"cancelAtPeriodEnd": false,
|
|
189
|
+
"canceledAt": null,
|
|
190
|
+
"cancelAt": null,
|
|
191
|
+
"endedAt": null,
|
|
192
|
+
"trialStart": 1735689600,
|
|
193
|
+
"trialEnd": 1738368000,
|
|
194
|
+
"items": [
|
|
195
|
+
{
|
|
196
|
+
"subscriptionItemId": "si_trial_item001",
|
|
197
|
+
"priceId": "price_temporal_monthly",
|
|
198
|
+
"quantity": 1
|
|
199
|
+
}
|
|
200
|
+
],
|
|
201
|
+
"defaultPaymentMethod": "pm_card_trial001",
|
|
202
|
+
"collectionMethod": "charge_automatically",
|
|
203
|
+
"latestInvoiceId": null,
|
|
204
|
+
"metadata": { "_scenario": "trial-expiry" },
|
|
205
|
+
"livemode": false
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"id": 2,
|
|
209
|
+
"createdAt": "2025-01-15T00:00:00.000Z",
|
|
210
|
+
"updatedAt": "2025-01-15T00:00:00.000Z",
|
|
211
|
+
"subscriptionId": "sub_renewal_overdue",
|
|
212
|
+
"customerId": "cus_renewal_due",
|
|
213
|
+
"status": "active",
|
|
214
|
+
"currentPeriodStart": 1734912000,
|
|
215
|
+
"currentPeriodEnd": 1737590400,
|
|
216
|
+
"cancelAtPeriodEnd": false,
|
|
217
|
+
"canceledAt": null,
|
|
218
|
+
"cancelAt": null,
|
|
219
|
+
"endedAt": null,
|
|
220
|
+
"trialStart": null,
|
|
221
|
+
"trialEnd": null,
|
|
222
|
+
"items": [
|
|
223
|
+
{
|
|
224
|
+
"subscriptionItemId": "si_renewal_item002",
|
|
225
|
+
"priceId": "price_temporal_monthly",
|
|
226
|
+
"quantity": 1
|
|
227
|
+
}
|
|
228
|
+
],
|
|
229
|
+
"defaultPaymentMethod": "pm_card_renewal002",
|
|
230
|
+
"collectionMethod": "charge_automatically",
|
|
231
|
+
"latestInvoiceId": null,
|
|
232
|
+
"metadata": { "_scenario": "subscription-renewal" },
|
|
233
|
+
"livemode": false
|
|
234
|
+
}
|
|
235
|
+
],
|
|
236
|
+
"invoices": [
|
|
237
|
+
{
|
|
238
|
+
"id": 1,
|
|
239
|
+
"createdAt": "2025-02-01T00:00:00.000Z",
|
|
240
|
+
"updatedAt": "2025-02-01T00:00:00.000Z",
|
|
241
|
+
"invoiceId": "in_overdue_001",
|
|
242
|
+
"customerId": "cus_renewal_due",
|
|
243
|
+
"subscriptionId": "sub_renewal_overdue",
|
|
244
|
+
"status": "open",
|
|
245
|
+
"currency": "usd",
|
|
246
|
+
"amountDue": 4900,
|
|
247
|
+
"amountPaid": 0,
|
|
248
|
+
"amountRemaining": 4900,
|
|
249
|
+
"subtotal": 4900,
|
|
250
|
+
"total": 4900,
|
|
251
|
+
"tax": null,
|
|
252
|
+
"dueDate": 1738368000,
|
|
253
|
+
"collectionMethod": "send_invoice",
|
|
254
|
+
"number": "INV-0001",
|
|
255
|
+
"paid": false,
|
|
256
|
+
"paidOutOfBand": false,
|
|
257
|
+
"periodStart": 1737590400,
|
|
258
|
+
"periodEnd": 1740268800,
|
|
259
|
+
"description": "Invoice overdue scenario",
|
|
260
|
+
"metadata": { "_scenario": "invoice-overdue" },
|
|
261
|
+
"hostedInvoiceUrl": "https://invoice.stripe.com/in_overdue_001",
|
|
262
|
+
"invoicePdf": null,
|
|
263
|
+
"livemode": false
|
|
264
|
+
}
|
|
265
|
+
],
|
|
266
|
+
"invoiceItems": [],
|
|
267
|
+
"charges": [
|
|
268
|
+
{
|
|
269
|
+
"id": 1,
|
|
270
|
+
"createdAt": "2025-03-01T00:00:00.000Z",
|
|
271
|
+
"updatedAt": "2025-03-01T00:00:00.000Z",
|
|
272
|
+
"chargeId": "ch_disputed001",
|
|
273
|
+
"amount": 29900,
|
|
274
|
+
"amountCaptured": 29900,
|
|
275
|
+
"amountRefunded": 0,
|
|
276
|
+
"currency": "usd",
|
|
277
|
+
"customerId": "cus_disputed",
|
|
278
|
+
"description": "Charge with an open dispute",
|
|
279
|
+
"paymentIntentId": "pi_disputed001",
|
|
280
|
+
"paymentMethodId": "pm_card_dispute004",
|
|
281
|
+
"status": "succeeded",
|
|
282
|
+
"captured": true,
|
|
283
|
+
"refunded": false,
|
|
284
|
+
"disputed": true,
|
|
285
|
+
"receiptUrl": "https://pay.stripe.com/receipts/ch_disputed001",
|
|
286
|
+
"failureCode": null,
|
|
287
|
+
"failureMessage": null,
|
|
288
|
+
"metadata": {},
|
|
289
|
+
"livemode": false
|
|
290
|
+
}
|
|
291
|
+
],
|
|
292
|
+
"paymentIntents": [
|
|
293
|
+
{
|
|
294
|
+
"id": 1,
|
|
295
|
+
"createdAt": "2025-03-01T00:00:00.000Z",
|
|
296
|
+
"updatedAt": "2025-03-01T00:00:00.000Z",
|
|
297
|
+
"paymentIntentId": "pi_disputed001",
|
|
298
|
+
"amount": 29900,
|
|
299
|
+
"amountCapturable": 0,
|
|
300
|
+
"amountReceived": 29900,
|
|
301
|
+
"currency": "usd",
|
|
302
|
+
"status": "succeeded",
|
|
303
|
+
"customerId": "cus_disputed",
|
|
304
|
+
"description": "Payment intent for disputed charge",
|
|
305
|
+
"paymentMethodId": "pm_card_dispute004",
|
|
306
|
+
"captureMethod": "automatic",
|
|
307
|
+
"confirmationMethod": "automatic",
|
|
308
|
+
"clientSecret": "pi_disputed001_secret_xyz789",
|
|
309
|
+
"canceledAt": null,
|
|
310
|
+
"cancellationReason": null,
|
|
311
|
+
"latestChargeId": "ch_disputed001",
|
|
312
|
+
"metadata": {},
|
|
313
|
+
"livemode": false
|
|
314
|
+
}
|
|
315
|
+
],
|
|
316
|
+
"disputes": [
|
|
317
|
+
{
|
|
318
|
+
"id": 1,
|
|
319
|
+
"createdAt": "2026-01-15T00:00:00.000Z",
|
|
320
|
+
"updatedAt": "2026-01-15T00:00:00.000Z",
|
|
321
|
+
"disputeId": "dp_under_review_001",
|
|
322
|
+
"chargeId": "ch_disputed001",
|
|
323
|
+
"amount": 29900,
|
|
324
|
+
"currency": "usd",
|
|
325
|
+
"status": "under_review",
|
|
326
|
+
"reason": "fraudulent",
|
|
327
|
+
"paymentIntentId": "pi_disputed001",
|
|
328
|
+
"evidence": {
|
|
329
|
+
"cancellationPolicyDisclosure": "Customer agreed to no-refund policy",
|
|
330
|
+
"duplicateChargeExplanation": null,
|
|
331
|
+
"uncategorizedText": "Customer filed dispute but we have proof of delivery",
|
|
332
|
+
"customerName": "Disputed Charge Customer",
|
|
333
|
+
"customerEmailAddress": "dispute@example.com",
|
|
334
|
+
"customerPurchaseIp": "192.0.2.1",
|
|
335
|
+
"productDescription": "Annual subscription to Monthly Plan",
|
|
336
|
+
"billingAddress": "123 Test St, San Francisco CA 94105",
|
|
337
|
+
"shippingAddress": null,
|
|
338
|
+
"shippingDate": null,
|
|
339
|
+
"shippingTrackingNumber": null,
|
|
340
|
+
"serviceDate": "2025-03-01",
|
|
341
|
+
"serviceDocumentation": null,
|
|
342
|
+
"refundPolicy": "No refunds after 30 days",
|
|
343
|
+
"refundPolicyDisclosure": null
|
|
344
|
+
},
|
|
345
|
+
"isChargeRefundable": false,
|
|
346
|
+
"metadata": { "_scenario": "dispute-auto-resolve" },
|
|
347
|
+
"livemode": false
|
|
348
|
+
}
|
|
349
|
+
],
|
|
350
|
+
"refunds": [],
|
|
351
|
+
"coupons": [],
|
|
352
|
+
"paymentLinks": [],
|
|
353
|
+
"balanceTransactions": [
|
|
354
|
+
{
|
|
355
|
+
"id": 1,
|
|
356
|
+
"createdAt": "2026-02-01T00:00:00.000Z",
|
|
357
|
+
"updatedAt": "2026-02-01T00:00:00.000Z",
|
|
358
|
+
"balanceTransactionId": "txn_pending_settle",
|
|
359
|
+
"amount": 29900,
|
|
360
|
+
"currency": "usd",
|
|
361
|
+
"fee": 897,
|
|
362
|
+
"net": 29003,
|
|
363
|
+
"type": "charge",
|
|
364
|
+
"sourceId": "ch_disputed001",
|
|
365
|
+
"description": "Pending balance transaction ready to settle",
|
|
366
|
+
"availableOn": 1738368000,
|
|
367
|
+
"status": "pending",
|
|
368
|
+
"livemode": false
|
|
369
|
+
}
|
|
370
|
+
]
|
|
371
|
+
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
-- SaaS starter seed: a multi-tenant SaaS application with RLS, functions, and triggers
|
|
2
|
+
-- Demonstrates Supabase best practices for user isolation and server-side logic
|
|
3
|
+
|
|
4
|
+
-- Users table (auth.users equivalent for data layer)
|
|
5
|
+
CREATE TABLE users (
|
|
6
|
+
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
7
|
+
email text NOT NULL UNIQUE,
|
|
8
|
+
full_name text NOT NULL,
|
|
9
|
+
avatar_url text,
|
|
10
|
+
created_at timestamptz NOT NULL DEFAULT now(),
|
|
11
|
+
updated_at timestamptz NOT NULL DEFAULT now()
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
ALTER TABLE users ENABLE ROW LEVEL SECURITY;
|
|
15
|
+
|
|
16
|
+
-- Profiles table (public profile information)
|
|
17
|
+
CREATE TABLE profiles (
|
|
18
|
+
id uuid PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE,
|
|
19
|
+
username text UNIQUE NOT NULL,
|
|
20
|
+
bio text,
|
|
21
|
+
website text,
|
|
22
|
+
company text,
|
|
23
|
+
created_at timestamptz NOT NULL DEFAULT now(),
|
|
24
|
+
updated_at timestamptz NOT NULL DEFAULT now()
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;
|
|
28
|
+
|
|
29
|
+
-- Subscriptions table (billing/plan info)
|
|
30
|
+
CREATE TABLE subscriptions (
|
|
31
|
+
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
32
|
+
user_id uuid NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
33
|
+
plan text NOT NULL DEFAULT 'free' CHECK (plan IN ('free', 'pro', 'enterprise')),
|
|
34
|
+
status text NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'canceled', 'past_due', 'trialing')),
|
|
35
|
+
current_period_start timestamptz NOT NULL DEFAULT now(),
|
|
36
|
+
current_period_end timestamptz NOT NULL DEFAULT now() + interval '30 days',
|
|
37
|
+
cancel_at_period_end boolean NOT NULL DEFAULT false,
|
|
38
|
+
created_at timestamptz NOT NULL DEFAULT now(),
|
|
39
|
+
updated_at timestamptz NOT NULL DEFAULT now()
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
ALTER TABLE subscriptions ENABLE ROW LEVEL SECURITY;
|
|
43
|
+
|
|
44
|
+
-- Teams table (for multi-tenant features)
|
|
45
|
+
CREATE TABLE teams (
|
|
46
|
+
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
47
|
+
name text NOT NULL,
|
|
48
|
+
slug text UNIQUE NOT NULL,
|
|
49
|
+
owner_id uuid NOT NULL REFERENCES users(id),
|
|
50
|
+
created_at timestamptz NOT NULL DEFAULT now(),
|
|
51
|
+
updated_at timestamptz NOT NULL DEFAULT now()
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
ALTER TABLE teams ENABLE ROW LEVEL SECURITY;
|
|
55
|
+
|
|
56
|
+
-- Team members junction
|
|
57
|
+
CREATE TABLE team_members (
|
|
58
|
+
team_id uuid NOT NULL REFERENCES teams(id) ON DELETE CASCADE,
|
|
59
|
+
user_id uuid NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
60
|
+
role text NOT NULL DEFAULT 'member' CHECK (role IN ('owner', 'admin', 'member', 'viewer')),
|
|
61
|
+
joined_at timestamptz NOT NULL DEFAULT now(),
|
|
62
|
+
PRIMARY KEY (team_id, user_id)
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
ALTER TABLE team_members ENABLE ROW LEVEL SECURITY;
|
|
66
|
+
|
|
67
|
+
-- RLS policies: users can read/update their own data
|
|
68
|
+
CREATE POLICY "Users can read own data" ON users FOR SELECT USING (true);
|
|
69
|
+
CREATE POLICY "Users can update own data" ON users FOR UPDATE USING (id = id);
|
|
70
|
+
|
|
71
|
+
CREATE POLICY "Profiles are publicly readable" ON profiles FOR SELECT USING (true);
|
|
72
|
+
CREATE POLICY "Users can update own profile" ON profiles FOR UPDATE USING (id = id);
|
|
73
|
+
CREATE POLICY "Users can insert own profile" ON profiles FOR INSERT WITH CHECK (id = id);
|
|
74
|
+
|
|
75
|
+
CREATE POLICY "Users can read own subscriptions" ON subscriptions FOR SELECT USING (user_id = user_id);
|
|
76
|
+
|
|
77
|
+
CREATE POLICY "Team members can read team" ON teams FOR SELECT USING (true);
|
|
78
|
+
CREATE POLICY "Team owners can update team" ON teams FOR UPDATE USING (owner_id = owner_id);
|
|
79
|
+
|
|
80
|
+
CREATE POLICY "Members can read team membership" ON team_members FOR SELECT USING (true);
|
|
81
|
+
|
|
82
|
+
-- Function: handle new user signup (creates profile automatically)
|
|
83
|
+
CREATE OR REPLACE FUNCTION handle_new_user()
|
|
84
|
+
RETURNS trigger
|
|
85
|
+
LANGUAGE plpgsql
|
|
86
|
+
SECURITY DEFINER
|
|
87
|
+
AS $$
|
|
88
|
+
BEGIN
|
|
89
|
+
INSERT INTO profiles (id, username)
|
|
90
|
+
VALUES (NEW.id, split_part(NEW.email, '@', 1));
|
|
91
|
+
RETURN NEW;
|
|
92
|
+
END;
|
|
93
|
+
$$;
|
|
94
|
+
|
|
95
|
+
-- Trigger: auto-create profile on user insert
|
|
96
|
+
CREATE TRIGGER on_user_created
|
|
97
|
+
AFTER INSERT ON users
|
|
98
|
+
FOR EACH ROW
|
|
99
|
+
EXECUTE FUNCTION handle_new_user();
|
|
100
|
+
|
|
101
|
+
-- Function: update updated_at timestamp
|
|
102
|
+
CREATE OR REPLACE FUNCTION update_updated_at()
|
|
103
|
+
RETURNS trigger
|
|
104
|
+
LANGUAGE plpgsql
|
|
105
|
+
AS $$
|
|
106
|
+
BEGIN
|
|
107
|
+
NEW.updated_at = now();
|
|
108
|
+
RETURN NEW;
|
|
109
|
+
END;
|
|
110
|
+
$$;
|
|
111
|
+
|
|
112
|
+
-- Triggers: auto-update timestamps
|
|
113
|
+
CREATE TRIGGER update_users_updated_at
|
|
114
|
+
BEFORE UPDATE ON users
|
|
115
|
+
FOR EACH ROW
|
|
116
|
+
EXECUTE FUNCTION update_updated_at();
|
|
117
|
+
|
|
118
|
+
CREATE TRIGGER update_profiles_updated_at
|
|
119
|
+
BEFORE UPDATE ON profiles
|
|
120
|
+
FOR EACH ROW
|
|
121
|
+
EXECUTE FUNCTION update_updated_at();
|
|
122
|
+
|
|
123
|
+
CREATE TRIGGER update_subscriptions_updated_at
|
|
124
|
+
BEFORE UPDATE ON subscriptions
|
|
125
|
+
FOR EACH ROW
|
|
126
|
+
EXECUTE FUNCTION update_updated_at();
|
|
127
|
+
|
|
128
|
+
CREATE TRIGGER update_teams_updated_at
|
|
129
|
+
BEFORE UPDATE ON teams
|
|
130
|
+
FOR EACH ROW
|
|
131
|
+
EXECUTE FUNCTION update_updated_at();
|
|
132
|
+
|
|
133
|
+
-- Indexes
|
|
134
|
+
CREATE INDEX idx_subscriptions_user_id ON subscriptions(user_id);
|
|
135
|
+
CREATE INDEX idx_teams_owner_id ON teams(owner_id);
|
|
136
|
+
CREATE INDEX idx_team_members_user_id ON team_members(user_id);
|
|
137
|
+
|
|
138
|
+
-- Seed data
|
|
139
|
+
INSERT INTO users (id, email, full_name) VALUES
|
|
140
|
+
('a1b2c3d4-e5f6-7890-abcd-ef1234567890', 'alice@startup.io', 'Alice Johnson'),
|
|
141
|
+
('b2c3d4e5-f6a7-8901-bcde-f12345678901', 'bob@startup.io', 'Bob Martinez'),
|
|
142
|
+
('c3d4e5f6-a7b8-9012-cdef-123456789012', 'carol@bigcorp.com', 'Carol Chen'),
|
|
143
|
+
('d4e5f6a7-b8c9-0123-defa-234567890123', 'dave@freelance.dev', 'Dave Wilson'),
|
|
144
|
+
('e5f6a7b8-c9d0-1234-efab-345678901234', 'eve@startup.io', 'Eve Garcia');
|
|
145
|
+
|
|
146
|
+
INSERT INTO subscriptions (user_id, plan, status) VALUES
|
|
147
|
+
('a1b2c3d4-e5f6-7890-abcd-ef1234567890', 'pro', 'active'),
|
|
148
|
+
('b2c3d4e5-f6a7-8901-bcde-f12345678901', 'pro', 'active'),
|
|
149
|
+
('c3d4e5f6-a7b8-9012-cdef-123456789012', 'enterprise', 'active'),
|
|
150
|
+
('d4e5f6a7-b8c9-0123-defa-234567890123', 'free', 'active'),
|
|
151
|
+
('e5f6a7b8-c9d0-1234-efab-345678901234', 'pro', 'trialing');
|
|
152
|
+
|
|
153
|
+
INSERT INTO teams (name, slug, owner_id) VALUES
|
|
154
|
+
('Startup Team', 'startup-team', 'a1b2c3d4-e5f6-7890-abcd-ef1234567890'),
|
|
155
|
+
('BigCorp Engineering', 'bigcorp-eng', 'c3d4e5f6-a7b8-9012-cdef-123456789012');
|
|
156
|
+
|
|
157
|
+
INSERT INTO team_members (team_id, user_id, role)
|
|
158
|
+
SELECT t.id, u.id, CASE
|
|
159
|
+
WHEN u.id = 'a1b2c3d4-e5f6-7890-abcd-ef1234567890' THEN 'owner'
|
|
160
|
+
ELSE 'member'
|
|
161
|
+
END
|
|
162
|
+
FROM teams t, users u
|
|
163
|
+
WHERE t.slug = 'startup-team'
|
|
164
|
+
AND u.email IN ('alice@startup.io', 'bob@startup.io', 'eve@startup.io');
|
|
165
|
+
|
|
166
|
+
INSERT INTO team_members (team_id, user_id, role)
|
|
167
|
+
SELECT t.id, u.id, 'owner'
|
|
168
|
+
FROM teams t, users u
|
|
169
|
+
WHERE t.slug = 'bigcorp-eng' AND u.email = 'carol@bigcorp.com';
|
|
170
|
+
|
|
171
|
+
-- Record migrations
|
|
172
|
+
INSERT INTO supabase_migrations.schema_migrations (version, name, statements) VALUES
|
|
173
|
+
('20250101000000_init', 'create_saas_schema', 'CREATE TABLE users ...; CREATE TABLE profiles ...; CREATE TABLE subscriptions ...; CREATE TABLE teams ...; CREATE TABLE team_members ...;'),
|
|
174
|
+
('20250101000001_rls', 'enable_rls_policies', 'ALTER TABLE ... ENABLE ROW LEVEL SECURITY; CREATE POLICY ...;'),
|
|
175
|
+
('20250101000002_functions', 'create_functions_triggers', 'CREATE FUNCTION handle_new_user ...; CREATE TRIGGER ...;');
|
package/LICENSE
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
Copyright (c) 2026 Archal Labs, Inc. All rights reserved.
|
|
2
|
-
|
|
3
|
-
This software is proprietary and confidential. No part of this software may be
|
|
4
|
-
reproduced, distributed, or transmitted in any form or by any means, including
|
|
5
|
-
photocopying, recording, or other electronic or mechanical methods, without the
|
|
6
|
-
prior written permission of Archal Labs, Inc.
|
|
7
|
-
|
|
8
|
-
For licensing inquiries, visit https://archal.ai or contact support@archal.ai.
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
endSession,
|
|
3
|
-
fetchAuthMe,
|
|
4
|
-
fetchTwinsCatalog,
|
|
5
|
-
finalizeSessionEvidence,
|
|
6
|
-
getSessionEvidence,
|
|
7
|
-
getSessionHealth,
|
|
8
|
-
getSessionStatus,
|
|
9
|
-
startSession,
|
|
10
|
-
updateTwinSelection
|
|
11
|
-
} from "./chunk-SVGN2AFT.js";
|
|
12
|
-
import "./chunk-3RG5ZIWI.js";
|
|
13
|
-
export {
|
|
14
|
-
endSession,
|
|
15
|
-
fetchAuthMe,
|
|
16
|
-
fetchTwinsCatalog,
|
|
17
|
-
finalizeSessionEvidence,
|
|
18
|
-
getSessionEvidence,
|
|
19
|
-
getSessionHealth,
|
|
20
|
-
getSessionStatus,
|
|
21
|
-
startSession,
|
|
22
|
-
updateTwinSelection
|
|
23
|
-
};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
endSession,
|
|
3
|
-
fetchAuthMe,
|
|
4
|
-
fetchTwinsCatalog,
|
|
5
|
-
finalizeSessionEvidence,
|
|
6
|
-
getSessionHealth,
|
|
7
|
-
getSessionStatus,
|
|
8
|
-
startSession,
|
|
9
|
-
updateTwinSelection
|
|
10
|
-
} from "./chunk-WZXES7XO.js";
|
|
11
|
-
import "./chunk-3RG5ZIWI.js";
|
|
12
|
-
export {
|
|
13
|
-
endSession,
|
|
14
|
-
fetchAuthMe,
|
|
15
|
-
fetchTwinsCatalog,
|
|
16
|
-
finalizeSessionEvidence,
|
|
17
|
-
getSessionHealth,
|
|
18
|
-
getSessionStatus,
|
|
19
|
-
startSession,
|
|
20
|
-
updateTwinSelection
|
|
21
|
-
};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
endSession,
|
|
3
|
-
fetchAuthMe,
|
|
4
|
-
fetchTwinsCatalog,
|
|
5
|
-
finalizeSessionEvidence,
|
|
6
|
-
getSessionEvidence,
|
|
7
|
-
getSessionHealth,
|
|
8
|
-
getSessionStatus,
|
|
9
|
-
startSession,
|
|
10
|
-
updateTwinSelection
|
|
11
|
-
} from "./chunk-A6WOU5RO.js";
|
|
12
|
-
import "./chunk-3RG5ZIWI.js";
|
|
13
|
-
export {
|
|
14
|
-
endSession,
|
|
15
|
-
fetchAuthMe,
|
|
16
|
-
fetchTwinsCatalog,
|
|
17
|
-
finalizeSessionEvidence,
|
|
18
|
-
getSessionEvidence,
|
|
19
|
-
getSessionHealth,
|
|
20
|
-
getSessionStatus,
|
|
21
|
-
startSession,
|
|
22
|
-
updateTwinSelection
|
|
23
|
-
};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
endSession,
|
|
3
|
-
fetchAuthMe,
|
|
4
|
-
fetchTwinsCatalog,
|
|
5
|
-
finalizeSessionEvidence,
|
|
6
|
-
getSessionEvidence,
|
|
7
|
-
getSessionHealth,
|
|
8
|
-
getSessionStatus,
|
|
9
|
-
startSession,
|
|
10
|
-
updateTwinSelection
|
|
11
|
-
} from "./chunk-4FTU232H.js";
|
|
12
|
-
import "./chunk-3RG5ZIWI.js";
|
|
13
|
-
export {
|
|
14
|
-
endSession,
|
|
15
|
-
fetchAuthMe,
|
|
16
|
-
fetchTwinsCatalog,
|
|
17
|
-
finalizeSessionEvidence,
|
|
18
|
-
getSessionEvidence,
|
|
19
|
-
getSessionHealth,
|
|
20
|
-
getSessionStatus,
|
|
21
|
-
startSession,
|
|
22
|
-
updateTwinSelection
|
|
23
|
-
};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
endSession,
|
|
3
|
-
fetchAuthMe,
|
|
4
|
-
fetchTwinsCatalog,
|
|
5
|
-
finalizeSessionEvidence,
|
|
6
|
-
getSessionEvidence,
|
|
7
|
-
getSessionHealth,
|
|
8
|
-
getSessionStatus,
|
|
9
|
-
startSession,
|
|
10
|
-
updateTwinSelection
|
|
11
|
-
} from "./chunk-VYCADG5E.js";
|
|
12
|
-
import "./chunk-3RG5ZIWI.js";
|
|
13
|
-
export {
|
|
14
|
-
endSession,
|
|
15
|
-
fetchAuthMe,
|
|
16
|
-
fetchTwinsCatalog,
|
|
17
|
-
finalizeSessionEvidence,
|
|
18
|
-
getSessionEvidence,
|
|
19
|
-
getSessionHealth,
|
|
20
|
-
getSessionStatus,
|
|
21
|
-
startSession,
|
|
22
|
-
updateTwinSelection
|
|
23
|
-
};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
endSession,
|
|
3
|
-
fetchAuthMe,
|
|
4
|
-
fetchTwinsCatalog,
|
|
5
|
-
finalizeSessionEvidence,
|
|
6
|
-
getSessionHealth,
|
|
7
|
-
getSessionStatus,
|
|
8
|
-
startSession,
|
|
9
|
-
updateTwinSelection
|
|
10
|
-
} from "./chunk-NZEPQ6IZ.js";
|
|
11
|
-
import "./chunk-3RG5ZIWI.js";
|
|
12
|
-
export {
|
|
13
|
-
endSession,
|
|
14
|
-
fetchAuthMe,
|
|
15
|
-
fetchTwinsCatalog,
|
|
16
|
-
finalizeSessionEvidence,
|
|
17
|
-
getSessionHealth,
|
|
18
|
-
getSessionStatus,
|
|
19
|
-
startSession,
|
|
20
|
-
updateTwinSelection
|
|
21
|
-
};
|