@elevasis/sdk 1.9.0 → 1.11.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/dist/cli.cjs +228 -190
- package/dist/index.d.ts +127 -154
- package/dist/index.js +15 -139
- package/dist/test-utils/index.d.ts +8270 -0
- package/dist/test-utils/index.js +20070 -0
- package/dist/types/worker/index.d.ts +20 -1
- package/dist/worker/index.js +7 -4
- package/package.json +8 -2
- package/reference/_navigation.md +15 -1
- package/reference/_reference-manifest.json +56 -0
- package/reference/claude-config/sync-notes/2026-04-24-test-utils-and-template-tests.md +73 -0
- package/reference/claude-config/sync-notes/2026-04-24-ui-consolidation-and-sdk-cli-train.md +1 -1
- package/reference/deployment/provided-features.mdx +40 -267
- package/reference/examples/organization-model.ts +96 -564
- package/reference/packages/core/src/organization-model/README.md +101 -97
- package/reference/packages/core/src/test-utils/README.md +5 -10
- package/reference/packages/ui/src/test-utils/README.md +5 -0
- package/reference/resources/types.mdx +72 -163
- package/reference/scaffold/core/organization-graph.mdx +89 -272
- package/reference/scaffold/core/organization-model.mdx +149 -320
- package/reference/scaffold/operations/workflow-recipes.md +94 -1
- package/reference/scaffold/recipes/add-a-feature.md +102 -158
- package/reference/scaffold/recipes/add-a-resource.md +85 -158
- package/reference/scaffold/recipes/customize-organization-model.md +141 -400
- package/reference/scaffold/recipes/gate-by-feature-or-admin.md +114 -158
- package/reference/scaffold/reference/contracts.md +62 -148
- package/reference/scaffold/reference/feature-registry.md +8 -8
- package/reference/scaffold/reference/glossary.md +71 -105
- package/reference/scaffold/ui/feature-flags-and-gating.md +27 -232
- package/reference/scaffold/ui/feature-shell.mdx +50 -219
- package/reference/scaffold/ui/recipes.md +62 -397
|
@@ -26,8 +26,27 @@
|
|
|
26
26
|
* Worker -> Parent: { type: 'credential-request', id, name }
|
|
27
27
|
* Parent -> Worker: { type: 'credential-result', id, provider?, credentials?, error?, code? }
|
|
28
28
|
*/
|
|
29
|
-
import type { DeploymentSpec } from '../index.js';
|
|
29
|
+
import type { DeploymentSpec, WorkflowDefinition } from '../index.js';
|
|
30
30
|
export { platform, PlatformToolError } from './platform.js';
|
|
31
31
|
export type { PlatformCredential } from './platform.js';
|
|
32
32
|
export * from './adapters/index.js';
|
|
33
|
+
export interface LogEntry {
|
|
34
|
+
level: 'debug' | 'info' | 'warn' | 'error';
|
|
35
|
+
message: string;
|
|
36
|
+
timestamp: string;
|
|
37
|
+
context?: Record<string, unknown>;
|
|
38
|
+
}
|
|
39
|
+
export declare function executeWorkflow(workflow: WorkflowDefinition, input: unknown, context: {
|
|
40
|
+
executionId: string;
|
|
41
|
+
organizationId: string;
|
|
42
|
+
organizationName: string;
|
|
43
|
+
sessionId?: string;
|
|
44
|
+
sessionTurnNumber?: number;
|
|
45
|
+
parentExecutionId?: string;
|
|
46
|
+
executionDepth: number;
|
|
47
|
+
adapters?: Record<string, unknown>;
|
|
48
|
+
}): Promise<{
|
|
49
|
+
output: unknown;
|
|
50
|
+
logs: LogEntry[];
|
|
51
|
+
}>;
|
|
33
52
|
export declare function startWorker(org: DeploymentSpec): void;
|
package/dist/worker/index.js
CHANGED
|
@@ -5083,7 +5083,7 @@ function captureConsole(executionId, logs) {
|
|
|
5083
5083
|
const timestamp = (/* @__PURE__ */ new Date()).toISOString();
|
|
5084
5084
|
const entry = { level, message, timestamp, context: logContext };
|
|
5085
5085
|
logs.push(entry);
|
|
5086
|
-
parentPort
|
|
5086
|
+
parentPort?.postMessage({
|
|
5087
5087
|
type: "log",
|
|
5088
5088
|
entry: { level, message, timestamp, executionId, context: logContext }
|
|
5089
5089
|
});
|
|
@@ -5177,6 +5177,7 @@ async function executeWorkflow(workflow, input, context) {
|
|
|
5177
5177
|
sessionTurnNumber: context.sessionTurnNumber,
|
|
5178
5178
|
parentExecutionId: context.parentExecutionId,
|
|
5179
5179
|
executionDepth: context.executionDepth,
|
|
5180
|
+
adapters: context.adapters,
|
|
5180
5181
|
store: /* @__PURE__ */ new Map(),
|
|
5181
5182
|
logger: {
|
|
5182
5183
|
debug: (msg) => console.log(`[debug] ${msg}`),
|
|
@@ -5289,7 +5290,8 @@ function startWorker(org) {
|
|
|
5289
5290
|
status: w.config.status,
|
|
5290
5291
|
description: w.config.description,
|
|
5291
5292
|
version: w.config.version,
|
|
5292
|
-
|
|
5293
|
+
links: w.config.links,
|
|
5294
|
+
category: w.config.category,
|
|
5293
5295
|
contract: {
|
|
5294
5296
|
inputSchema: safeZodToJsonSchema(w.contract?.inputSchema),
|
|
5295
5297
|
outputSchema: safeZodToJsonSchema(w.contract?.outputSchema)
|
|
@@ -5311,7 +5313,8 @@ function startWorker(org) {
|
|
|
5311
5313
|
status: a.config.status,
|
|
5312
5314
|
description: a.config.description,
|
|
5313
5315
|
version: a.config.version,
|
|
5314
|
-
|
|
5316
|
+
links: a.config.links,
|
|
5317
|
+
category: a.config.category,
|
|
5315
5318
|
contract: {
|
|
5316
5319
|
inputSchema: safeZodToJsonSchema(a.contract?.inputSchema),
|
|
5317
5320
|
outputSchema: safeZodToJsonSchema(a.contract?.outputSchema)
|
|
@@ -5434,4 +5437,4 @@ function startWorker(org) {
|
|
|
5434
5437
|
});
|
|
5435
5438
|
}
|
|
5436
5439
|
|
|
5437
|
-
export { PlatformToolError, acqDb, approval, createAdapter, createAnymailfinderAdapter, createApifyAdapter, createAttioAdapter, createDropboxAdapter, createGmailAdapter, createGoogleSheetsAdapter, createInstantlyAdapter, createMillionVerifierAdapter, createResendAdapter, createSignatureApiAdapter, createStripeAdapter, createTombaAdapter, crm, email, execution, list, llm, notifications, pdf, platform, projects, scheduler, startWorker, storage };
|
|
5440
|
+
export { PlatformToolError, acqDb, approval, createAdapter, createAnymailfinderAdapter, createApifyAdapter, createAttioAdapter, createDropboxAdapter, createGmailAdapter, createGoogleSheetsAdapter, createInstantlyAdapter, createMillionVerifierAdapter, createResendAdapter, createSignatureApiAdapter, createStripeAdapter, createTombaAdapter, crm, email, executeWorkflow, execution, list, llm, notifications, pdf, platform, projects, scheduler, startWorker, storage };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elevasis/sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.0",
|
|
4
4
|
"description": "SDK for building Elevasis organization resources",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -14,6 +14,10 @@
|
|
|
14
14
|
"./worker": {
|
|
15
15
|
"types": "./dist/types/worker/index.d.ts",
|
|
16
16
|
"import": "./dist/worker/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./test-utils": {
|
|
19
|
+
"types": "./dist/test-utils/index.d.ts",
|
|
20
|
+
"import": "./dist/test-utils/index.js"
|
|
17
21
|
}
|
|
18
22
|
},
|
|
19
23
|
"files": [
|
|
@@ -23,6 +27,8 @@
|
|
|
23
27
|
"dist/types/worker/index.d.ts",
|
|
24
28
|
"dist/types/worker/platform.d.ts",
|
|
25
29
|
"dist/types/worker/adapters/",
|
|
30
|
+
"dist/test-utils/index.js",
|
|
31
|
+
"dist/test-utils/index.d.ts",
|
|
26
32
|
"dist/cli.cjs",
|
|
27
33
|
"reference/"
|
|
28
34
|
],
|
|
@@ -44,7 +50,7 @@
|
|
|
44
50
|
"tsup": "^8.0.0",
|
|
45
51
|
"typescript": "5.9.2",
|
|
46
52
|
"zod": "^4.1.0",
|
|
47
|
-
"@repo/core": "0.
|
|
53
|
+
"@repo/core": "0.11.0",
|
|
48
54
|
"@repo/typescript-config": "0.0.0"
|
|
49
55
|
},
|
|
50
56
|
"scripts": {
|
package/reference/_navigation.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Auto-generated from the package reference manifests.
|
|
4
4
|
|
|
5
|
-
Package entries indexed:
|
|
5
|
+
Package entries indexed: 47.
|
|
6
6
|
|
|
7
7
|
## @elevasis/core / Core
|
|
8
8
|
|
|
@@ -40,6 +40,12 @@ Package entries indexed: 43.
|
|
|
40
40
|
| --- | --- | --- | --- |
|
|
41
41
|
| Worker Runtime | `runtime.mdx` | Worker runtime entrypoint, adapters, and platform execution surface. | (not specified) |
|
|
42
42
|
|
|
43
|
+
## @elevasis/sdk / Testing
|
|
44
|
+
|
|
45
|
+
| Resource | Location | Description | When to Load |
|
|
46
|
+
| --- | --- | --- | --- |
|
|
47
|
+
| Test Utils | `runtime.mdx` | Workflow runner, registry assertion, and typed adapter mocks for SDK consumers. | (not specified) |
|
|
48
|
+
|
|
43
49
|
## @elevasis/ui / Components
|
|
44
50
|
|
|
45
51
|
| Resource | Location | Description | When to Load |
|
|
@@ -100,6 +106,14 @@ Package entries indexed: 43.
|
|
|
100
106
|
| Provider UI | `packages/ui/src/provider/README.md` | Published provider UI entry for downstream applications. | (not specified) |
|
|
101
107
|
| Elevasis Service Context | `packages/ui/src/provider/README.md` | Standalone service context and provider that supplies apiRequest, organizationId, and isReady to child components. | (not specified) |
|
|
102
108
|
|
|
109
|
+
## @elevasis/ui / Testing
|
|
110
|
+
|
|
111
|
+
| Resource | Location | Description | When to Load |
|
|
112
|
+
| --- | --- | --- | --- |
|
|
113
|
+
| Test Utils | `packages/ui/src/test-utils/README.md` | Published rendering helpers, auth mocks, MSW handlers, and test provider utilities. | (not specified) |
|
|
114
|
+
| Test Utils Setup | `packages/ui/src/test-utils/README.md` | Vitest setup file for UI consumers using browser mocks and MSW. | (not specified) |
|
|
115
|
+
| Test Utils Integration Setup | `packages/ui/src/test-utils/README.md` | Vitest setup file for integration tests that avoid MSW and use real network boundaries. | (not specified) |
|
|
116
|
+
|
|
103
117
|
## @elevasis/ui / Visual
|
|
104
118
|
|
|
105
119
|
| Resource | Location | Description | When to Load |
|
|
@@ -85,6 +85,20 @@
|
|
|
85
85
|
"referencePath": "runtime.mdx",
|
|
86
86
|
"publishedExportPath": "./dist/worker/index.js"
|
|
87
87
|
},
|
|
88
|
+
{
|
|
89
|
+
"packageName": "@elevasis/sdk",
|
|
90
|
+
"packageDir": "packages/sdk",
|
|
91
|
+
"subpath": "./test-utils",
|
|
92
|
+
"kind": "subpath",
|
|
93
|
+
"title": "Test Utils",
|
|
94
|
+
"description": "Workflow runner, registry assertion, and typed adapter mocks for SDK consumers.",
|
|
95
|
+
"group": "Testing",
|
|
96
|
+
"order": 1,
|
|
97
|
+
"sourcePath": "packages/sdk/src/test-utils/index.ts",
|
|
98
|
+
"docPath": "apps/docs/content/docs/sdk/runtime.mdx",
|
|
99
|
+
"referencePath": "runtime.mdx",
|
|
100
|
+
"publishedExportPath": "./dist/test-utils/index.js"
|
|
101
|
+
},
|
|
88
102
|
{
|
|
89
103
|
"packageName": "@elevasis/ui",
|
|
90
104
|
"packageDir": "packages/ui",
|
|
@@ -575,6 +589,48 @@
|
|
|
575
589
|
"referencePath": "packages/ui/src/provider/README.md",
|
|
576
590
|
"publishedExportPath": "./dist/provider/ElevasisServiceContext.js"
|
|
577
591
|
},
|
|
592
|
+
{
|
|
593
|
+
"packageName": "@elevasis/ui",
|
|
594
|
+
"packageDir": "packages/ui",
|
|
595
|
+
"subpath": "./test-utils",
|
|
596
|
+
"kind": "subpath",
|
|
597
|
+
"title": "Test Utils",
|
|
598
|
+
"description": "Published rendering helpers, auth mocks, MSW handlers, and test provider utilities.",
|
|
599
|
+
"group": "Testing",
|
|
600
|
+
"order": 1,
|
|
601
|
+
"sourcePath": "packages/ui/src/test-utils/index.ts",
|
|
602
|
+
"docPath": "packages/ui/src/test-utils/README.md",
|
|
603
|
+
"referencePath": "packages/ui/src/test-utils/README.md",
|
|
604
|
+
"publishedExportPath": "./dist/test-utils/index.js"
|
|
605
|
+
},
|
|
606
|
+
{
|
|
607
|
+
"packageName": "@elevasis/ui",
|
|
608
|
+
"packageDir": "packages/ui",
|
|
609
|
+
"subpath": "./test-utils/setup",
|
|
610
|
+
"kind": "subpath",
|
|
611
|
+
"title": "Test Utils Setup",
|
|
612
|
+
"description": "Vitest setup file for UI consumers using browser mocks and MSW.",
|
|
613
|
+
"group": "Testing",
|
|
614
|
+
"order": 2,
|
|
615
|
+
"sourcePath": "packages/ui/src/test-utils/setup.ts",
|
|
616
|
+
"docPath": "packages/ui/src/test-utils/README.md",
|
|
617
|
+
"referencePath": "packages/ui/src/test-utils/README.md",
|
|
618
|
+
"publishedExportPath": "./dist/test-utils/setup.js"
|
|
619
|
+
},
|
|
620
|
+
{
|
|
621
|
+
"packageName": "@elevasis/ui",
|
|
622
|
+
"packageDir": "packages/ui",
|
|
623
|
+
"subpath": "./test-utils/setup-integration",
|
|
624
|
+
"kind": "subpath",
|
|
625
|
+
"title": "Test Utils Integration Setup",
|
|
626
|
+
"description": "Vitest setup file for integration tests that avoid MSW and use real network boundaries.",
|
|
627
|
+
"group": "Testing",
|
|
628
|
+
"order": 3,
|
|
629
|
+
"sourcePath": "packages/ui/src/test-utils/setup-integration.ts",
|
|
630
|
+
"docPath": "packages/ui/src/test-utils/README.md",
|
|
631
|
+
"referencePath": "packages/ui/src/test-utils/README.md",
|
|
632
|
+
"publishedExportPath": "./dist/test-utils/setup-integration.js"
|
|
633
|
+
},
|
|
578
634
|
{
|
|
579
635
|
"packageName": "@elevasis/ui",
|
|
580
636
|
"packageDir": "packages/ui",
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Test Utils And Template Tests
|
|
2
|
+
|
|
3
|
+
## Why this note exists
|
|
4
|
+
|
|
5
|
+
This update adds meaningful package, template, and downstream test coverage while keeping ownership boundaries clear. Package-owned contracts live in package tests/test-utils; `_template` keeps scaffold smoke tests and examples; downstream projects keep custom tests for project-specific workflows and routes.
|
|
6
|
+
|
|
7
|
+
The new package-level test-utils subpaths are being prepared in the monorepo packages:
|
|
8
|
+
|
|
9
|
+
- `@elevasis/core/test-utils`
|
|
10
|
+
- `@elevasis/ui/test-utils`
|
|
11
|
+
- `@elevasis/sdk/test-utils`
|
|
12
|
+
|
|
13
|
+
Until the bundled release train publishes those expanded package surfaces, `_template` keeps small local compatibility wrappers for tests that need the new helpers. Do not replace those wrappers with local `file:` dependencies.
|
|
14
|
+
|
|
15
|
+
## Applies to
|
|
16
|
+
|
|
17
|
+
All template-derived projects that sync from `external/_template`.
|
|
18
|
+
|
|
19
|
+
Known affected projects: `nirvana-marketing`, `ZentaraHQ`.
|
|
20
|
+
|
|
21
|
+
## Required actions
|
|
22
|
+
|
|
23
|
+
### Step 1 -- Pull template changes via `/git-sync`
|
|
24
|
+
|
|
25
|
+
Accept the new tests under sync-managed scaffold surfaces:
|
|
26
|
+
|
|
27
|
+
- `ui/src/routes/__tests__/`
|
|
28
|
+
- `core/types/**`
|
|
29
|
+
- `core/config/**`
|
|
30
|
+
- local core compatibility helpers under `core/test-utils/`
|
|
31
|
+
|
|
32
|
+
Operations tests are intentionally narrower. Treat `operations/src/**` as project-owned runtime code. Only keep or add Operations tests in a downstream project when the project owns the workflow/module being tested. The template's email-notification tests are examples, not a requirement for every derived project.
|
|
33
|
+
|
|
34
|
+
### Step 2 -- Run the expanded test chain
|
|
35
|
+
|
|
36
|
+
From project root:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
pnpm test
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
The root test script now runs `operations check` between UI and operations tests so resource-registry drift fails during ordinary test runs.
|
|
43
|
+
|
|
44
|
+
### Step 3 -- Keep compatibility wrappers until the bundled release lands
|
|
45
|
+
|
|
46
|
+
Do not delete any local compatibility wrapper that is still used by a project-owned custom test until the project has upgraded to package versions that publish the expanded test-utils subpaths.
|
|
47
|
+
|
|
48
|
+
After the release train lands, projects can migrate local compatibility imports to:
|
|
49
|
+
|
|
50
|
+
```ts
|
|
51
|
+
import { renderWithProviders } from '@elevasis/ui/test-utils'
|
|
52
|
+
import { makeProject } from '@elevasis/core/test-utils'
|
|
53
|
+
import { runWorkflow } from '@elevasis/sdk/test-utils'
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Step 4 -- Adjust only for intentionally removed features
|
|
57
|
+
|
|
58
|
+
If a derived project intentionally removed a feature route or workflow, skip or adjust the specific synced test case. For Operations, prefer project-owned tests that import package helpers over copied template workflow tests.
|
|
59
|
+
|
|
60
|
+
## Verification
|
|
61
|
+
|
|
62
|
+
- `pnpm -C ui test` passes.
|
|
63
|
+
- `pnpm -C operations check` passes.
|
|
64
|
+
- `pnpm -C operations test` passes.
|
|
65
|
+
- `pnpm -C core test` passes.
|
|
66
|
+
- `pnpm test` passes from project root.
|
|
67
|
+
|
|
68
|
+
## Not handled by /git-sync
|
|
69
|
+
|
|
70
|
+
- `/git-sync` does not publish or upgrade `@elevasis/*` package versions.
|
|
71
|
+
- `/git-sync` does not remove compatibility wrappers after the release train.
|
|
72
|
+
- `/git-sync` does not decide how a project-specific removed feature should be represented in tests.
|
|
73
|
+
- `/git-sync` does not force template-only Operations example tests into downstream projects that do not own the matching workflow files.
|
|
@@ -32,7 +32,7 @@ Run from project root:
|
|
|
32
32
|
pnpm up @elevasis/ui @elevasis/core @elevasis/sdk --latest
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
Dep bumps are already written into `_template/ui/package.json` and `_template/
|
|
35
|
+
Dep bumps are already written into `_template/ui/package.json`, `_template/operations/package.json`, and `_template/core/package.json` by the release train (`@elevasis/core` ^0.9.0, `@elevasis/ui` ^2.19.0, `@elevasis/sdk` ^1.9.0).
|
|
36
36
|
|
|
37
37
|
### Step 3 -- Replace inlined type defs with package imports
|
|
38
38
|
|