@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.
Files changed (65) hide show
  1. package/README.md +43 -0
  2. package/VERSION-PIN.md +27 -0
  3. package/dist/cli.js +1 -1
  4. package/dist/manifest-next-ingress.d.ts +213 -0
  5. package/dist/manifest-next-ingress.js +187 -0
  6. package/dist/manifest-next-reach.d.ts +40 -0
  7. package/dist/manifest-next-reach.js +48 -0
  8. package/dist/manifest-next.d.ts +133 -8
  9. package/dist/manifest-next.js +7 -46
  10. package/dist/manifest-static.d.ts +6 -0
  11. package/dist/manifest-static.js +10 -0
  12. package/dist/manifest.d.ts +67 -0
  13. package/dist/manifest.js +7 -0
  14. package/dist/offline/connector.d.ts +2 -0
  15. package/dist/offline/connector.js +6 -2
  16. package/dist/offline/management-types.d.ts +25 -0
  17. package/dist/offline/management-types.js +1 -0
  18. package/dist/runtime-contracts.js +1 -1
  19. package/dist/sdk.d.ts +8 -1
  20. package/dist/server/api-client.d.ts +27 -0
  21. package/dist/server/api-client.js +39 -0
  22. package/dist/server/broker-contract.d.ts +33 -6
  23. package/dist/server/broker-contract.js +20 -2
  24. package/dist/server/client.d.ts +32 -45
  25. package/dist/server/client.js +72 -101
  26. package/dist/server/connection-retry.d.ts +12 -0
  27. package/dist/server/connection-retry.js +40 -0
  28. package/dist/server/errors.d.ts +37 -2
  29. package/dist/server/errors.js +66 -6
  30. package/dist/server/external-context.d.ts +21 -0
  31. package/dist/server/external-context.js +19 -0
  32. package/dist/server/ingress-control-contract.d.ts +272 -0
  33. package/dist/server/ingress-control-contract.js +196 -0
  34. package/dist/server/ingress-routes.d.ts +76 -0
  35. package/dist/server/ingress-routes.js +150 -0
  36. package/dist/server/internal/signed-token.d.ts +15 -0
  37. package/dist/server/internal/signed-token.js +67 -0
  38. package/dist/server/internal/v1-context.d.ts +18 -0
  39. package/dist/server/internal/v1-context.js +26 -0
  40. package/dist/server/internal/verify-any.d.ts +22 -0
  41. package/dist/server/internal/verify-any.js +61 -0
  42. package/dist/server/logger.d.ts +1 -1
  43. package/dist/server/principal.d.ts +48 -0
  44. package/dist/server/principal.js +39 -0
  45. package/dist/server/processes.d.ts +56 -0
  46. package/dist/server/processes.js +13 -0
  47. package/dist/server/request-context.d.ts +121 -5
  48. package/dist/server/request-context.js +105 -34
  49. package/dist/server/runtime-config.d.ts +1 -1
  50. package/dist/server/testing.d.ts +40 -0
  51. package/dist/server/testing.js +86 -0
  52. package/dist/server.d.ts +9 -4
  53. package/dist/server.js +5 -2
  54. package/dist/templates/nextjs/README.md +9 -0
  55. package/dist/templates/nextjs/package.json +3 -1
  56. package/dist/templates/nextjs/tests/server.test.mjs +25 -0
  57. package/dist/templates/react-vite/package.json +1 -1
  58. package/dist/tunnel/protocol.js +2 -4
  59. package/dist/tunnel/reserved-headers.d.ts +7 -0
  60. package/dist/tunnel/reserved-headers.js +20 -0
  61. package/package.json +19 -3
  62. package/templates/nextjs/README.md +9 -0
  63. package/templates/nextjs/package.json +3 -1
  64. package/templates/nextjs/tests/server.test.mjs +25 -0
  65. 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.5.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.2.0",
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
- "type-check": "next typegen && tsc --noEmit"
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.5.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",