@sequenceholdings/artifact-studio 0.5.0 → 0.6.2
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 +43 -0
- package/VERSION-PIN.md +27 -0
- package/dist/cli.js +1 -1
- package/dist/manifest-next-ingress.d.ts +213 -0
- package/dist/manifest-next-ingress.js +187 -0
- package/dist/manifest-next-reach.d.ts +40 -0
- package/dist/manifest-next-reach.js +48 -0
- package/dist/manifest-next.d.ts +133 -8
- package/dist/manifest-next.js +7 -46
- package/dist/manifest-static.d.ts +6 -0
- package/dist/manifest-static.js +10 -0
- package/dist/manifest.d.ts +67 -0
- package/dist/manifest.js +7 -0
- package/dist/offline/connector.d.ts +2 -0
- package/dist/offline/connector.js +6 -2
- package/dist/offline/management-types.d.ts +25 -0
- package/dist/offline/management-types.js +1 -0
- package/dist/runtime-contracts.js +1 -1
- package/dist/sdk.d.ts +8 -1
- package/dist/server/api-client.d.ts +27 -0
- package/dist/server/api-client.js +39 -0
- package/dist/server/broker-contract.d.ts +33 -6
- package/dist/server/broker-contract.js +20 -2
- package/dist/server/client.d.ts +32 -45
- package/dist/server/client.js +72 -101
- package/dist/server/connection-retry.d.ts +12 -0
- package/dist/server/connection-retry.js +40 -0
- package/dist/server/errors.d.ts +37 -2
- package/dist/server/errors.js +66 -6
- package/dist/server/external-context.d.ts +21 -0
- package/dist/server/external-context.js +19 -0
- package/dist/server/ingress-control-contract.d.ts +272 -0
- package/dist/server/ingress-control-contract.js +196 -0
- package/dist/server/ingress-routes.d.ts +76 -0
- package/dist/server/ingress-routes.js +150 -0
- package/dist/server/internal/signed-token.d.ts +15 -0
- package/dist/server/internal/signed-token.js +67 -0
- package/dist/server/internal/v1-context.d.ts +18 -0
- package/dist/server/internal/v1-context.js +26 -0
- package/dist/server/internal/verify-any.d.ts +22 -0
- package/dist/server/internal/verify-any.js +61 -0
- package/dist/server/logger.d.ts +1 -1
- package/dist/server/principal.d.ts +48 -0
- package/dist/server/principal.js +39 -0
- package/dist/server/processes.d.ts +56 -0
- package/dist/server/processes.js +13 -0
- package/dist/server/request-context.d.ts +121 -5
- package/dist/server/request-context.js +105 -34
- package/dist/server/runtime-config.d.ts +1 -1
- package/dist/server/testing.d.ts +40 -0
- package/dist/server/testing.js +86 -0
- package/dist/server.d.ts +9 -4
- package/dist/server.js +5 -2
- package/dist/templates/nextjs/README.md +9 -0
- package/dist/templates/nextjs/package.json +3 -1
- package/dist/templates/nextjs/tests/server.test.mjs +25 -0
- package/dist/templates/react-vite/package.json +1 -1
- package/dist/tunnel/protocol.js +2 -4
- package/dist/tunnel/reserved-headers.d.ts +7 -0
- package/dist/tunnel/reserved-headers.js +20 -0
- package/package.json +19 -3
- package/templates/nextjs/README.md +9 -0
- package/templates/nextjs/package.json +3 -1
- package/templates/nextjs/tests/server.test.mjs +25 -0
- package/templates/react-vite/package.json +1 -1
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"publishConfig": {
|
|
10
10
|
"access": "public"
|
|
11
11
|
},
|
|
12
|
-
"version": "0.
|
|
12
|
+
"version": "0.6.2",
|
|
13
13
|
"description": "SDK types and CLI library for building Artifact Studio apps. Driven via `seq-studio artifact <sub>` (@sequenceholdings/studio-cli), which runs the `./cli` runCli export.",
|
|
14
14
|
"type": "module",
|
|
15
15
|
"exports": {
|
|
@@ -101,10 +101,22 @@
|
|
|
101
101
|
"types": "./dist/server/broker-contract.d.ts",
|
|
102
102
|
"default": "./dist/server/broker-contract.js"
|
|
103
103
|
},
|
|
104
|
+
"./server/ingress-control-contract": {
|
|
105
|
+
"types": "./dist/server/ingress-control-contract.d.ts",
|
|
106
|
+
"default": "./dist/server/ingress-control-contract.js"
|
|
107
|
+
},
|
|
108
|
+
"./server/ingress-routes": {
|
|
109
|
+
"types": "./dist/server/ingress-routes.d.ts",
|
|
110
|
+
"default": "./dist/server/ingress-routes.js"
|
|
111
|
+
},
|
|
104
112
|
"./server/release-forms": {
|
|
105
113
|
"types": "./dist/server/release-forms.d.ts",
|
|
106
114
|
"default": "./dist/server/release-forms.js"
|
|
107
115
|
},
|
|
116
|
+
"./server/testing": {
|
|
117
|
+
"types": "./dist/server/testing.d.ts",
|
|
118
|
+
"default": "./dist/server/testing.js"
|
|
119
|
+
},
|
|
108
120
|
"./next": {
|
|
109
121
|
"types": "./dist/next.d.ts",
|
|
110
122
|
"default": "./dist/next.js"
|
|
@@ -124,6 +136,10 @@
|
|
|
124
136
|
"./tunnel": {
|
|
125
137
|
"types": "./dist/tunnel/index.d.ts",
|
|
126
138
|
"default": "./dist/tunnel/index.js"
|
|
139
|
+
},
|
|
140
|
+
"./offline-management": {
|
|
141
|
+
"types": "./dist/offline/management-types.d.ts",
|
|
142
|
+
"default": "./dist/offline/management-types.js"
|
|
127
143
|
}
|
|
128
144
|
},
|
|
129
145
|
"files": [
|
|
@@ -150,9 +166,9 @@
|
|
|
150
166
|
"google-auth-library": "^10.5.0",
|
|
151
167
|
"server-only": "0.0.1",
|
|
152
168
|
"parse5": "7.3.0",
|
|
169
|
+
"@sequenceholdings/lattice-form-renderer": "0.2.0",
|
|
153
170
|
"@sequenceholdings/storage": "0.1.0",
|
|
154
|
-
"@sequenceholdings/orm": "2.
|
|
155
|
-
"@sequenceholdings/lattice-form-renderer": "0.2.0"
|
|
171
|
+
"@sequenceholdings/orm": "2.3.0"
|
|
156
172
|
},
|
|
157
173
|
"devDependencies": {
|
|
158
174
|
"@types/js-yaml": "^4.0.9",
|
|
@@ -97,6 +97,11 @@ only runs that user may view, `getRun` needs Viewer on the run and returns
|
|
|
97
97
|
every viewer — keep the data your pages need in your own ORM namespace. Reads
|
|
98
98
|
work from pages and GET route handlers; starting a run does not.
|
|
99
99
|
|
|
100
|
+
To follow a run as it moves, poll `processes.listEvents({ runId, since, limit })`
|
|
101
|
+
with the `event_cursor` from `getRun`, then with the `cursor` each page returns:
|
|
102
|
+
every event arrives once, oldest first, in the shape the run's stream sends. It
|
|
103
|
+
needs Viewer on the run, like `getRun`.
|
|
104
|
+
|
|
100
105
|
The same `processes.read` declaration lets you render the process itself.
|
|
101
106
|
`processes.describe({ process, version })` returns the applied template a run
|
|
102
107
|
is filled in from — `{ id, name, version, new_runs_disabled, start_node_id,
|
|
@@ -128,6 +133,10 @@ groups })` reassigns a parked step (its advancers become exactly those
|
|
|
128
133
|
principals) and `processes.grantViewers` / `processes.revokeViewers({ runId,
|
|
129
134
|
users, groups })` share a run or take a share back; all three need the user to
|
|
130
135
|
own the run, and `processes.listViewers(runId)` shows the run's stored shares.
|
|
136
|
+
`processes.cancel(runId)` cancels a run, and `processes.resetStep({ runId,
|
|
137
|
+
stepId })` stops a generating agent step without cancelling its run (the run
|
|
138
|
+
re-parks at the node's reset edge); both need the user's `invoker` relation on
|
|
139
|
+
the run, as the Lattice routes do.
|
|
131
140
|
Users are Auth0 subs and groups are chat-group ids — take them from
|
|
132
141
|
`processes.searchPrincipals({ q, types, limit })`, which finds people in the
|
|
133
142
|
user's own tenant and groups they can see, as the Lattice picker does. The
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
"dev": "next dev --webpack --hostname 127.0.0.1",
|
|
11
11
|
"build": "next build",
|
|
12
12
|
"start": "next start --hostname 127.0.0.1",
|
|
13
|
-
"
|
|
13
|
+
"lint": "next typegen && tsc --noEmit --noUnusedLocals --noUnusedParameters --noFallthroughCasesInSwitch",
|
|
14
|
+
"type-check": "next typegen && tsc --noEmit",
|
|
15
|
+
"test": "node --test tests/*.test.mjs"
|
|
14
16
|
},
|
|
15
17
|
"dependencies": {
|
|
16
18
|
"@sequenceholdings/artifact-studio": "{{artifactStudioVersion}}",
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import assert from 'node:assert/strict'
|
|
2
|
+
import { test } from 'node:test'
|
|
3
|
+
import { greet } from '../app/actions.ts'
|
|
4
|
+
import { GET } from '../app/api/health/route.ts'
|
|
5
|
+
|
|
6
|
+
test('greeting validates input and returns the server action result', async () => {
|
|
7
|
+
const data = new FormData()
|
|
8
|
+
data.set('name', ' Atlas ')
|
|
9
|
+
assert.deepEqual(await greet({ message: '', error: null }, data), {
|
|
10
|
+
message: 'Hello, Atlas. Your server action ran successfully.', error: null,
|
|
11
|
+
})
|
|
12
|
+
for (const name of ['', ' '.repeat(3), 'a'.repeat(81)]) {
|
|
13
|
+
data.set('name', name)
|
|
14
|
+
const result = await greet({ message: '', error: null }, data)
|
|
15
|
+
assert.equal(result.message, '')
|
|
16
|
+
assert.equal(result.error, 'Enter a name between 1 and 80 characters.')
|
|
17
|
+
}
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
test('health route returns uncached JSON without any runtime bindings', async () => {
|
|
21
|
+
const response = GET()
|
|
22
|
+
assert.equal(response.status, 200)
|
|
23
|
+
assert.equal(response.headers.get('cache-control'), 'no-store')
|
|
24
|
+
assert.deepEqual(await response.json(), { ok: true, framework: 'nextjs' })
|
|
25
|
+
})
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {},
|
|
11
11
|
"devDependencies": {
|
|
12
|
-
"@sequenceholdings/artifact-studio": "^0.
|
|
12
|
+
"@sequenceholdings/artifact-studio": "^0.6.0",
|
|
13
13
|
"@sequenceholdings/atlas-ui": "^3.1.1",
|
|
14
14
|
"@tailwindcss/postcss": "^4.2.2",
|
|
15
15
|
"@tailwindcss/vite": "^4.2.2",
|