@pulse-compute/cli 0.0.0 → 1.0.0-beta.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/API.md +572 -0
- package/CHANGELOG.md +71 -0
- package/README.md +71 -1
- package/bin/pulse.js +15 -0
- package/bin/pulsewasm-extract.js +22 -0
- package/cli-spec.json +575 -0
- package/completions/_pulse +106 -0
- package/completions/pulse.bash +31 -0
- package/completions/pulse.fish +76 -0
- package/docs/README.md +77 -0
- package/docs/architecture/current-contracts.md +470 -0
- package/docs/architecture/overview.md +93 -0
- package/docs/architecture/vision.md +515 -0
- package/docs/concepts/bodies.md +186 -0
- package/docs/concepts/compilation-and-lowering.md +496 -0
- package/docs/concepts/contracts-and-providers.md +158 -0
- package/docs/concepts/effects-and-continuations.md +300 -0
- package/docs/concepts/entities-and-adapters.md +71 -0
- package/docs/concepts/package-owned-lowering.md +175 -0
- package/docs/concepts/targets-and-hosts.md +70 -0
- package/docs/contributing/README.md +38 -0
- package/docs/contributing/adding-core-provider.md +315 -0
- package/docs/contributing/adding-first-party-lowerer.md +327 -0
- package/docs/contributing/entities-lowering.md +91 -0
- package/docs/contributing/package-lowerer-contract.md +383 -0
- package/docs/contributing/pulse-aware-packages.md +149 -0
- package/docs/examples.md +112 -0
- package/docs/fixtures/inspect-fetch-composition.selected.json +181 -0
- package/docs/getting-started.md +128 -0
- package/docs/guides/compatibility-imports.md +60 -0
- package/docs/guides/deploying-fastly.md +188 -0
- package/docs/guides/deploying-node.md +143 -0
- package/docs/guides/events.md +233 -0
- package/docs/guides/fastly-capabilities.md +153 -0
- package/docs/guides/fetching-and-composition.md +101 -0
- package/docs/guides/grip.md +94 -0
- package/docs/guides/json-schemas.md +233 -0
- package/docs/guides/migrating-from-express.md +192 -0
- package/docs/guides/project-lifecycle.md +143 -0
- package/docs/guides/routing.md +202 -0
- package/docs/guides/troubleshooting.md +47 -0
- package/docs/maintainers/README.md +60 -0
- package/docs/maintainers/codex-maintainer.md +71 -0
- package/docs/maintainers/documentation-deployment.md +147 -0
- package/docs/maintainers/documentation-system.md +58 -0
- package/docs/maintainers/documentation-versioning.md +65 -0
- package/docs/maintainers/maintainer-charter.md +100 -0
- package/docs/maintainers/maintenance-policy.json +809 -0
- package/docs/maintainers/maintenance-policy.md +124 -0
- package/docs/maintainers/npm-publishing.md +154 -0
- package/docs/maintainers/plugin-readiness.json +19 -0
- package/docs/maintainers/plugin-readiness.md +31 -0
- package/docs/maintainers/public-site.md +158 -0
- package/docs/maintainers/release-acceptance.md +293 -0
- package/docs/maintainers/release-manifest.md +89 -0
- package/docs/maintainers/repository-setup.md +145 -0
- package/docs/maintainers/scope-policy.md +105 -0
- package/docs/maintainers/support-and-triage.md +74 -0
- package/docs/maintainers/testing.md +334 -0
- package/docs/packages/README.md +60 -0
- package/docs/packages/assets.md +85 -0
- package/docs/packages/cli.md +190 -0
- package/docs/packages/crypto.md +78 -0
- package/docs/packages/entities.md +129 -0
- package/docs/packages/grip.md +82 -0
- package/docs/packages/implementation-packages.md +122 -0
- package/docs/packages/jwt.md +55 -0
- package/docs/packages/provider-fastly.md +243 -0
- package/docs/packages/pulse.md +159 -0
- package/docs/packages/runtime.md +265 -0
- package/docs/packages/s3.md +101 -0
- package/docs/preview-scope.md +142 -0
- package/docs/reference/README.md +33 -0
- package/docs/reference/cli-spec.json +575 -0
- package/docs/reference/cli.md +457 -0
- package/docs/reference/compatibility-matrix.md +169 -0
- package/docs/reference/diagnostics.md +1872 -0
- package/docs/reference/documentation-versions.json +22 -0
- package/docs/reference/environment.md +347 -0
- package/docs/reference/handler-authoring.md +264 -0
- package/docs/reference/project-config.md +582 -0
- package/docs/reference/project-config.schema.json +981 -0
- package/docs/reference/release-manifest.json +441 -0
- package/docs/reference/shell-completion.md +23 -0
- package/documentation-site.json +668 -0
- package/documentation-versions.json +22 -0
- package/examples/01-hello-json/.pulse/.gitignore +3 -0
- package/examples/01-hello-json/.pulse/config.ts +16 -0
- package/examples/01-hello-json/README.md +119 -0
- package/examples/01-hello-json/package.json +20 -0
- package/examples/01-hello-json/src/index.ts +9 -0
- package/examples/01-hello-json/tests/pulse.harness.ts +22 -0
- package/examples/01-hello-json/tsconfig.json +14 -0
- package/examples/02-request-schema/.pulse/.gitignore +3 -0
- package/examples/02-request-schema/.pulse/config.ts +17 -0
- package/examples/02-request-schema/README.md +145 -0
- package/examples/02-request-schema/package.json +20 -0
- package/examples/02-request-schema/src/index.ts +18 -0
- package/examples/02-request-schema/src/schemas.ts +20 -0
- package/examples/02-request-schema/tests/pulse.harness.ts +37 -0
- package/examples/02-request-schema/tsconfig.json +14 -0
- package/examples/03-fetch-composition/.pulse/.gitignore +3 -0
- package/examples/03-fetch-composition/.pulse/config.ts +31 -0
- package/examples/03-fetch-composition/README.md +210 -0
- package/examples/03-fetch-composition/package.json +20 -0
- package/examples/03-fetch-composition/src/index.ts +60 -0
- package/examples/03-fetch-composition/tests/pulse.harness.ts +47 -0
- package/examples/03-fetch-composition/tsconfig.json +14 -0
- package/examples/05-fastly-capabilities/.pulse/.gitignore +3 -0
- package/examples/05-fastly-capabilities/.pulse/config.ts +57 -0
- package/examples/05-fastly-capabilities/README.md +257 -0
- package/examples/05-fastly-capabilities/package.json +22 -0
- package/examples/05-fastly-capabilities/src/index.ts +55 -0
- package/examples/05-fastly-capabilities/tests/pulse.harness.ts +66 -0
- package/examples/05-fastly-capabilities/tsconfig.json +14 -0
- package/examples/07-opaque-proxy/.pulse/.gitignore +3 -0
- package/examples/07-opaque-proxy/.pulse/config.ts +38 -0
- package/examples/07-opaque-proxy/README.md +150 -0
- package/examples/07-opaque-proxy/package.json +21 -0
- package/examples/07-opaque-proxy/src/index.ts +9 -0
- package/examples/07-opaque-proxy/tests/pulse.harness.ts +25 -0
- package/examples/07-opaque-proxy/tsconfig.json +14 -0
- package/examples/09-router-lowering/.pulse/.gitignore +3 -0
- package/examples/09-router-lowering/.pulse/config.ts +22 -0
- package/examples/09-router-lowering/README.md +287 -0
- package/examples/09-router-lowering/package.json +22 -0
- package/examples/09-router-lowering/src/index.ts +65 -0
- package/examples/09-router-lowering/tests/pulse.harness.ts +91 -0
- package/examples/09-router-lowering/tsconfig.json +14 -0
- package/examples/10-entities-tools/.pulse/.gitignore +4 -0
- package/examples/10-entities-tools/.pulse/config.ts +23 -0
- package/examples/10-entities-tools/README.md +165 -0
- package/examples/10-entities-tools/package.json +21 -0
- package/examples/10-entities-tools/src/handlers.ts +15 -0
- package/examples/10-entities-tools/src/index.ts +31 -0
- package/examples/10-entities-tools/src/schemas.ts +18 -0
- package/examples/10-entities-tools/tests/pulse.harness.ts +40 -0
- package/examples/10-entities-tools/tools-facade.cjs +158 -0
- package/examples/10-entities-tools/tsconfig.json +14 -0
- package/examples/11-events/.pulse/.gitignore +4 -0
- package/examples/11-events/.pulse/config.ts +24 -0
- package/examples/11-events/README.md +194 -0
- package/examples/11-events/package.json +20 -0
- package/examples/11-events/src/index.ts +27 -0
- package/examples/11-events/src/schemas.ts +19 -0
- package/examples/11-events/tests/pulse.harness.ts +34 -0
- package/examples/11-events/tsconfig.json +15 -0
- package/examples/12-mcp-proxy/.pulse/.gitignore +3 -0
- package/examples/12-mcp-proxy/.pulse/config.ts +25 -0
- package/examples/12-mcp-proxy/README.md +149 -0
- package/examples/12-mcp-proxy/package.json +20 -0
- package/examples/12-mcp-proxy/src/index.ts +17 -0
- package/examples/12-mcp-proxy/tests/pulse.harness.ts +29 -0
- package/examples/12-mcp-proxy/tsconfig.json +14 -0
- package/examples/13-jwt-es256/.pulse/config.ts +19 -0
- package/examples/13-jwt-es256/README.md +195 -0
- package/examples/13-jwt-es256/package.json +21 -0
- package/examples/13-jwt-es256/src/index.ts +21 -0
- package/examples/13-jwt-es256/tests/pulse.harness.ts +54 -0
- package/examples/13-jwt-es256/tsconfig.json +14 -0
- package/examples/README.md +36 -0
- package/package.json +66 -6
- package/project-config.schema.json +981 -0
- package/release-manifest.json +441 -0
- package/src/command-spec.js +279 -0
- package/src/completion.js +113 -0
- package/src/diagnostics.js +350 -0
- package/src/documentation.js +45 -0
- package/src/index.d.ts +133 -0
- package/src/index.js +15 -0
- package/src/internal/command-executor.d.ts +29 -0
- package/src/internal/command-executor.js +143 -0
- package/src/internal/command-plan.d.ts +9 -0
- package/src/internal/command-plan.js +73 -0
- package/src/internal/command-reporter.d.ts +15 -0
- package/src/internal/command-reporter.js +133 -0
- package/src/internal/command-request.d.ts +35 -0
- package/src/internal/command-request.js +154 -0
- package/src/internal/node-http.js +54 -0
- package/src/internal/project-context.d.ts +66 -0
- package/src/internal/project-context.js +175 -0
- package/src/project-config-reference.js +4 -0
- package/src/project-config-schema.d.ts +23 -0
- package/src/project-config-schema.js +271 -0
- package/src/project-config.js +724 -0
- package/src/project-execution.js +2946 -0
- package/src/provider-drivers.js +3 -0
- package/src/target-support.js +3 -0
- package/src/typescript-module-loader.js +269 -0
- package/src/workflow.js +78 -0
- package/src/workspace.js +82 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# `@pulse-compute/s3`
|
|
2
|
+
|
|
3
|
+
S3 provides bounded exact-key `head`, `getText` and `putText` effects. It is a
|
|
4
|
+
supported extension in the synchronized `1.0.0-beta.2` candidate. Candidate
|
|
5
|
+
preparation does not assert that the package has been published to npm. Consume
|
|
6
|
+
the exact compatible S3, Pulse, CLI and provider tarballs from one release pack.
|
|
7
|
+
|
|
8
|
+
## Authoring and lowering
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
import { s3 } from '@pulse-compute/s3'
|
|
12
|
+
|
|
13
|
+
const written = await s3.putText(ctx, 'objects', key, text, {
|
|
14
|
+
contentType: 'application/json',
|
|
15
|
+
})
|
|
16
|
+
const inspected = await ctx.parallel({
|
|
17
|
+
metadata: s3.head(ctx, 'objects', key),
|
|
18
|
+
object: s3.getText(ctx, 'objects', key),
|
|
19
|
+
})
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Use these expressions inside a Pulse handler. Await into a local variable or
|
|
23
|
+
use keyed `ctx.parallel`. The logical binding must be a string literal. Key and
|
|
24
|
+
text may be runtime strings; content type is optional literal metadata and does
|
|
25
|
+
not serialize the text. Strict JSON responses require a response schema.
|
|
26
|
+
|
|
27
|
+
S3 owns its facade, operation contract, compiler recognition, Native lowering,
|
|
28
|
+
key encoding, SigV4 protocol and result interpretation. Native targets compose
|
|
29
|
+
the packaged AssemblyScript implementation with Crypto's SHA-256 and HMAC-SHA256
|
|
30
|
+
primitives. Node JavaScript uses the package protocol and Crypto's bounded Web
|
|
31
|
+
Crypto realization. Providers own fixed authority, credential resolution,
|
|
32
|
+
deadlines, raw metadata and transport. Application imports use only the package
|
|
33
|
+
root; `/provider`, manifest, compiler and Native exports are toolchain integration.
|
|
34
|
+
|
|
35
|
+
## Binding map
|
|
36
|
+
|
|
37
|
+
Declare `crypto: ['SHA-256', 'HMAC-SHA256']` in Pulse configuration. Map each
|
|
38
|
+
logical name under `<profile>.node.bindings.s3` or
|
|
39
|
+
`<profile>.fastly.bindings.s3`.
|
|
40
|
+
|
|
41
|
+
| Field | Contract |
|
|
42
|
+
| --- | --- |
|
|
43
|
+
| `endpoint` | Fixed HTTPS origin, without a path, query or credentials |
|
|
44
|
+
| `bucket`, `region` | Explicit bucket and signing region |
|
|
45
|
+
| `accessKeyIdSecret`, `secretAccessKeySecret` | Names of provider secrets |
|
|
46
|
+
| `sessionTokenSecret` | Optional provider secret name |
|
|
47
|
+
| `maxTextBytes` | 1–32768; default 32768 |
|
|
48
|
+
| `timeoutMs` | 1–30000; default 10000; includes credentials, signing and body completion |
|
|
49
|
+
| `backend` | Fastly requires a named static backend; configure its secret store in `fastly.bindings.secretStore` |
|
|
50
|
+
|
|
51
|
+
Runtime keys cannot select an origin, bucket, region, backend or credentials.
|
|
52
|
+
Keys are 1–1024 UTF-8 bytes, with no controls or `.`/`..` path segments. Slashes,
|
|
53
|
+
repeated slashes and Unicode normalization are preserved; encoding occurs once.
|
|
54
|
+
|
|
55
|
+
## Results and bounds
|
|
56
|
+
|
|
57
|
+
| Operation | Successful result | Other results |
|
|
58
|
+
| --- | --- | --- |
|
|
59
|
+
| `head` | `found`: byte length, optional opaque ETag and content type | `not-found` or `failed` with bounded reason and observed HTTP status |
|
|
60
|
+
| `getText` | `found`: exact UTF-8 text, raw byte length and SHA-256, optional metadata | `not-found` or `failed`; malformed UTF-8 is rejected |
|
|
61
|
+
| `putText` | `stored`: sent byte length and SHA-256, optional opaque ETag | `not-stored` before dispatch or for complete explicit 4xx rejection except 408; `unknown` when dispatch may have stored bytes |
|
|
62
|
+
|
|
63
|
+
GET and PUT are bounded to 32768 UTF-8 bytes, or the lower binding limit. Empty
|
|
64
|
+
text is allowed and a BOM is preserved. HEAD requires a safe Content-Length and
|
|
65
|
+
can describe an object larger than the text limit. Metadata is bounded to 16384
|
|
66
|
+
aggregate bytes and 1024 bytes per selected value; duplicate selected headers,
|
|
67
|
+
malformed lengths, truncated bodies and compression fail closed.
|
|
68
|
+
|
|
69
|
+
PUT succeeds only on a complete 200 acknowledgement with an empty body. Its
|
|
70
|
+
digest identifies sent bytes, not origin durability. Cancellation terminates
|
|
71
|
+
the request lifecycle without a typed S3 result or a rollback promise. There
|
|
72
|
+
are no retries, redirects, decompression or caches. For a JSON request carrying
|
|
73
|
+
32768 escaped control characters, configure `schemas.maxBytes: 262144`; the
|
|
74
|
+
object byte limit remains unchanged.
|
|
75
|
+
|
|
76
|
+
## Target support and evidence
|
|
77
|
+
|
|
78
|
+
| Target | S3 support | Local acceptance |
|
|
79
|
+
| --- | --- | --- |
|
|
80
|
+
| Node Native | Supported | Compiled Wasm with the Node provider |
|
|
81
|
+
| Node JavaScript | Supported | Package runtime with bounded Web Crypto |
|
|
82
|
+
| Fastly Native | Supported | Compiled provider Wasm with host ABI fixtures |
|
|
83
|
+
| Fastly JavaScript | Ineligible | SDK header projection loses required raw metadata |
|
|
84
|
+
|
|
85
|
+
The read and write corpus is repeated from isolated exact-version tarball
|
|
86
|
+
installs, using installed compilers, package lowering and provider realizations.
|
|
87
|
+
It covers signatures, key encoding, malformed and truncated data, limits,
|
|
88
|
+
credentials, redaction, deadlines and ambiguous writes. Fastly JavaScript's
|
|
89
|
+
exclusion does not gate these supported targets.
|
|
90
|
+
|
|
91
|
+
Local fixtures do not establish live Fastly Object Storage semantics. Live
|
|
92
|
+
origin acceptance follows infrastructure setup (T2) and records endpoint,
|
|
93
|
+
region, target artifact, exact observed bytes and acknowledgement behavior.
|
|
94
|
+
There is no listing, multipart upload, copy, presigning, arbitrary bucket
|
|
95
|
+
selection or conditional creation. Assets alignment remains separate.
|
|
96
|
+
|
|
97
|
+
## Related material
|
|
98
|
+
|
|
99
|
+
- [Project configuration](../reference/project-config.md)
|
|
100
|
+
- [Package-owned lowering](../concepts/package-owned-lowering.md)
|
|
101
|
+
- [Crypto](./crypto.md)
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# Beta scope
|
|
2
|
+
|
|
3
|
+
Pulse `1.0.0-beta.2` is a Beta of one provider-neutral application contract
|
|
4
|
+
with explicit Native and JavaScript execution targets. The intended 1.0
|
|
5
|
+
surface is present, but deliberate corrections may still occur before the
|
|
6
|
+
stable `1.0.0` release.
|
|
7
|
+
|
|
8
|
+
The Beta is intentionally strict: Pulse builds the target selected by the
|
|
9
|
+
active `.pulse/config.ts` profile, and unsupported source stops at the exact
|
|
10
|
+
lowering boundary with a stable diagnostic. Pulse never silently switches
|
|
11
|
+
targets.
|
|
12
|
+
|
|
13
|
+
## Supported application behavior
|
|
14
|
+
|
|
15
|
+
- Async-shaped provider-neutral TypeScript handlers; trusted Pulse awaits lower
|
|
16
|
+
into explicit effects and continuations without a Promise runtime.
|
|
17
|
+
- Static Router v2 with terminal middleware, route fallthrough, error
|
|
18
|
+
middleware, GET/HEAD/POST/PUT/PATCH/DELETE routes, exact paths, named parameters, trailing
|
|
19
|
+
wildcards, and acyclic mounts.
|
|
20
|
+
- Basic branching and structured object, array, and scalar manipulation.
|
|
21
|
+
- Request method, URL, path, headers, text, and JSON access.
|
|
22
|
+
- Bounded, memoized structured body decoding.
|
|
23
|
+
- Explicit TypeScript JSON schema declarations and literal schema IDs.
|
|
24
|
+
- GET, HEAD, and POST fetch effects.
|
|
25
|
+
- Independent Native effect grouping, dependent continuation chains, and
|
|
26
|
+
explicit cross-target `ctx.parallel({ ... })` keyed groups.
|
|
27
|
+
- HTTP status and headers as ordinary response data.
|
|
28
|
+
- JSON, text, custom, and direct pass-through responses.
|
|
29
|
+
- Exact-name config and secret reads.
|
|
30
|
+
- Named KV `get` and `put`.
|
|
31
|
+
- Opaque host-owned binary and stream pass-through.
|
|
32
|
+
- Stateless package-root GRIP request classification, response subscription and
|
|
33
|
+
handoff framing, and configured request-bound broadcast.
|
|
34
|
+
- Synchronous string logging through `ctx.log.error`, `warn`, `info`, and
|
|
35
|
+
`debug`, with flat profile reporting thresholds and provider-owned output.
|
|
36
|
+
- Root-only static `Pulse.on` declarations, immutable schema-validated event
|
|
37
|
+
contexts, and one-way `ctx.emit` acceptance through the bounded Node
|
|
38
|
+
JavaScript/Native reference adapter.
|
|
39
|
+
- Provider-neutral portable Wasm and configured Native Node or Fastly builds.
|
|
40
|
+
- Direct JavaScript execution and deterministic source packaging for Node and
|
|
41
|
+
Fastly.
|
|
42
|
+
|
|
43
|
+
## Execution contract
|
|
44
|
+
|
|
45
|
+
The Beta has two target classes and four explicitly selected
|
|
46
|
+
execution modes over one application model:
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
source
|
|
50
|
+
├─ Node / Native → canonical analysis → Pulse-owned Wasm → Node realization
|
|
51
|
+
├─ Node / JavaScript → graph-backed loader → live packages → Node lifecycle
|
|
52
|
+
├─ Fastly / Native → canonical analysis → direct-host-ABI bin/main.wasm
|
|
53
|
+
└─ Fastly / JavaScript → deterministic source package → Fastly JS runtime candidate
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Native source that crosses the supported lowering boundary fails visibly with a
|
|
57
|
+
stable diagnostic. JavaScript core Router execution, request/response lifecycle,
|
|
58
|
+
eligibility inspection, effects, package realizations, source packaging, schema
|
|
59
|
+
enforcement, target integrity, and bounded GRIP realization are implemented.
|
|
60
|
+
Native/JavaScript conformance covers Router context, body handling, fetch
|
|
61
|
+
projections, configuration, secrets, KV, schema codecs, GRIP framing, logging,
|
|
62
|
+
and target identity. All declared Node and Fastly full-target-support gates are
|
|
63
|
+
satisfied for the implemented four-mode contract.
|
|
64
|
+
|
|
65
|
+
Fastly JavaScript candidate evidence compiles the deterministic source package
|
|
66
|
+
with the exact pinned downstream toolchain and records a structurally deployable
|
|
67
|
+
runtime artifact. The final release candidate must additionally pass the
|
|
68
|
+
mandatory external Fastly CLI-managed reality lane. Neither result authorizes a
|
|
69
|
+
service deployment or activation.
|
|
70
|
+
|
|
71
|
+
There is no automatic fallback. An operator must select the target through
|
|
72
|
+
project configuration or an explicitly permitted CLI target selection. A
|
|
73
|
+
successful provider-neutral compile does not silently change a
|
|
74
|
+
JavaScript-selected project into a Native one.
|
|
75
|
+
|
|
76
|
+
## Deliberately unsupported
|
|
77
|
+
|
|
78
|
+
- Automatic fallback from Native lowering to JavaScript execution.
|
|
79
|
+
- Declaring general target availability without satisfying every declared
|
|
80
|
+
full-target-support gate.
|
|
81
|
+
- Arbitrary Promise construction, arbitrary library awaits under Native
|
|
82
|
+
selection, JSPI, or Asyncify semantics. Managed `async` wrappers and trusted
|
|
83
|
+
Pulse awaits are supported notation, not a Promise runtime.
|
|
84
|
+
- Ambient `fetch`, environment variables, filesystem, process, sockets, or
|
|
85
|
+
timers.
|
|
86
|
+
- Provider SDK objects or `ctx.fastly` / `ctx.cloudflare` namespaces.
|
|
87
|
+
- Capability enumeration or runtime provider introspection.
|
|
88
|
+
- Automatic discovery of arbitrary TypeScript types.
|
|
89
|
+
- Dynamic schema IDs.
|
|
90
|
+
- Arbitrary binary body inspection or mutation.
|
|
91
|
+
- Userland chunk iteration, transform streams, or manual backpressure.
|
|
92
|
+
- Background tasks and work that outlives the request.
|
|
93
|
+
- Raw TCP or UDP sockets.
|
|
94
|
+
- Dynamic GRIP channel, framing-option, or message shapes under Native
|
|
95
|
+
selection.
|
|
96
|
+
- Onion-style post-`next()` middleware, assigning or awaiting `next()`, Router
|
|
97
|
+
`throw` transfer, realtime hooks, channels, timeout scopes, `ctx.resolve`, or
|
|
98
|
+
`ctx.resolved`.
|
|
99
|
+
- Third-party provider or lowerer self-registration.
|
|
100
|
+
- A public event listener, production event transport, delivery/retry
|
|
101
|
+
guarantee, automatic loopback or reentrancy, generic bus, `ctx.call`, or
|
|
102
|
+
request/reply event routing.
|
|
103
|
+
- Fastly, browser, or ESP32 event ingress/emit realization. Fastly fails closed
|
|
104
|
+
with exact eligibility diagnostics; browser and ESP32 remain unclaimed.
|
|
105
|
+
|
|
106
|
+
## Compatibility authority
|
|
107
|
+
|
|
108
|
+
The single source-form, provider-binding, artifact, and deployment-boundary
|
|
109
|
+
table is [Provider and target compatibility](./reference/compatibility-matrix.md).
|
|
110
|
+
It uses one public target order—Node JavaScript, Fastly JavaScript, Node Native,
|
|
111
|
+
and Fastly Native—and links every row to a focused proof or canonical contract.
|
|
112
|
+
|
|
113
|
+
The exact portable language subset and the JavaScript-only Native eligibility
|
|
114
|
+
boundaries are defined in
|
|
115
|
+
[Managed handler TypeScript and JavaScript](./reference/handler-authoring.md).
|
|
116
|
+
|
|
117
|
+
## Body model
|
|
118
|
+
|
|
119
|
+
If a body is inspected as text or JSON, Pulse treats it as a bounded immutable
|
|
120
|
+
value. If a body is passed through as binary or a stream, it remains an opaque
|
|
121
|
+
host-owned capability handle.
|
|
122
|
+
|
|
123
|
+
```text
|
|
124
|
+
inspect it → bounded structured value
|
|
125
|
+
pass it through → opaque handle
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Compatibility and release signals
|
|
129
|
+
|
|
130
|
+
- Documented behavior is intentional and evidence-backed.
|
|
131
|
+
- Unsupported behavior fails explicitly.
|
|
132
|
+
- No execution target silently falls back.
|
|
133
|
+
- Public surfaces may still change deliberately before stable `1.0.0`.
|
|
134
|
+
- Implementation and historical subpaths do not gain accidental compatibility
|
|
135
|
+
guarantees.
|
|
136
|
+
- Package names, release artifacts, and published versions are immutable once
|
|
137
|
+
released.
|
|
138
|
+
|
|
139
|
+
The intended npm dist-tag for the Beta is `beta`. It becomes
|
|
140
|
+
active only through the atomic documentation-release transaction and an
|
|
141
|
+
explicitly authorized publication. The workflow never assigns `latest`
|
|
142
|
+
implicitly.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<!-- pulse-doc-meta:start
|
|
2
|
+
owner: docs-platform
|
|
3
|
+
status: active
|
|
4
|
+
last-reviewed: 2026-08-01
|
|
5
|
+
review-by: 2027-02-01
|
|
6
|
+
pulse-doc-meta:end -->
|
|
7
|
+
|
|
8
|
+
# Reference
|
|
9
|
+
|
|
10
|
+
Use this section for exact application, command, configuration, compatibility,
|
|
11
|
+
and diagnostic contracts.
|
|
12
|
+
|
|
13
|
+
- [API reference](../../API.md) — a context-at-a-glance map plus the exact
|
|
14
|
+
Router, request, header, route parameter, state, response, and capability
|
|
15
|
+
surfaces.
|
|
16
|
+
- [Provider and target compatibility](./compatibility-matrix.md) — supported
|
|
17
|
+
behavior across Node and Fastly Native and JavaScript targets.
|
|
18
|
+
- [Managed handler TypeScript and JavaScript](./handler-authoring.md) — the
|
|
19
|
+
accepted authoring language and Native eligibility boundary.
|
|
20
|
+
- [CLI reference](./cli.md) — commands, flags, and machine-readable command
|
|
21
|
+
specification.
|
|
22
|
+
- [Project configuration](./project-config.md) — profiles, providers, targets,
|
|
23
|
+
bindings, and schemas.
|
|
24
|
+
- [Diagnostics and remediation](./diagnostics.md) — stable public diagnostic
|
|
25
|
+
codes and corrective actions.
|
|
26
|
+
- [Environment variables](./environment.md) — supported tooling inputs and
|
|
27
|
+
contributor-only controls.
|
|
28
|
+
- [Shell completion](./shell-completion.md) — Bash, Zsh, and Fish integration.
|
|
29
|
+
|
|
30
|
+
Repository governance, release operations, publication, deployment, and
|
|
31
|
+
evidence procedures are intentionally separated from the application
|
|
32
|
+
reference. Maintainers can enter that narrower surface through the
|
|
33
|
+
[maintainer documentation](../maintainers/).
|