stitchkit 0.94.1 → 0.95.1
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/CHANGELOG.md +57 -0
- package/dist/agent-runtime/provider-origin.d.ts +7 -0
- package/dist/agent-runtime/provider-origin.d.ts.map +1 -1
- package/dist/agent-runtime/run-operation-lifecycle.d.ts.map +1 -1
- package/dist/application/directory-inbox-contract.d.ts +129 -0
- package/dist/application/directory-inbox-contract.d.ts.map +1 -0
- package/dist/application/directory-inbox.d.ts +3 -0
- package/dist/application/directory-inbox.d.ts.map +1 -0
- package/dist/application/process-lifecycle-transitions.d.ts +175 -0
- package/dist/application/process-lifecycle-transitions.d.ts.map +1 -0
- package/dist/application/process-lifecycle.d.ts +3 -131
- package/dist/application/process-lifecycle.d.ts.map +1 -1
- package/dist/entrypoints/agent-runtime/harness.js +1 -1
- package/dist/entrypoints/agent-runtime.js +1 -1
- package/dist/entrypoints/application/directory-inbox.d.ts +11 -0
- package/dist/entrypoints/application/directory-inbox.d.ts.map +1 -0
- package/dist/entrypoints/application/directory-inbox.js +221 -0
- package/dist/entrypoints/application.d.ts +3 -1
- package/dist/entrypoints/application.d.ts.map +1 -1
- package/dist/entrypoints/application.js +151 -56
- package/dist/entrypoints/server.js +6 -219
- package/dist/index-5jrd0yng.js +114 -0
- package/dist/{index-7f68ghdn.js → index-8zja4pkf.js} +23 -1
- package/dist/index-tm88avnj.js +221 -0
- package/llms/application-directory-inbox.txt +9 -0
- package/llms/application.2.txt +7 -5
- package/llms/application.txt +88 -24
- package/llms/stitchkit.txt +4 -3
- package/llms/{upgrading-0.37.0-0.50.0.txt → upgrading-0.37.0-0.53.0.txt} +25 -3
- package/llms/{upgrading-0.53.0-0.67.0.txt → upgrading-0.55.0-0.68.0.txt} +53 -25
- package/llms/{upgrading-0.68.0-0.94.0.txt → upgrading-0.69.0-0.95.0.txt} +45 -53
- package/llms/upgrading.txt +3 -3
- package/llms-full.txt +141 -32
- package/llms.txt +6 -5
- package/package.json +5 -1
package/llms-full.txt
CHANGED
|
@@ -67,11 +67,11 @@ own, recorded as an ADR.
|
|
|
67
67
|
| `stitchkit/geo` | server (Bun or Node) | evolving | managed GeoIP reader generations, last-known-good reload and the optional MaxMind adapter |
|
|
68
68
|
| `stitchkit/oauth` | browser **and** server | evolving | provider-neutral Authorization Code + PKCE request and one-shot callback transaction mechanics |
|
|
69
69
|
| `stitchkit/google` | server (Bun or Node) | evolving | optional Google code exchange and verified OIDC identity adapter |
|
|
70
|
-
| `stitchkit/observability` | server | stable<br>_redefined in 2 of the
|
|
70
|
+
| `stitchkit/observability` | server | stable<br>_redefined in 2 of the 40 minors since 0.56.2, most recently 0.92.0_ | request/tool event projections — `createObservability`, trace context, sanitisation |
|
|
71
71
|
| `stitchkit/testing` | tests on Bun or Node | stable | in-process generated clients over a real Fetch handler, plus the managed-resource conformance kit |
|
|
72
72
|
| `stitchkit/declaration` | browser + build and deployment tooling (Bun or Node) | evolving | `ProjectDeclarationSchema` — the one machine-readable statement a repository makes about itself |
|
|
73
73
|
| `stitchkit/react` | browser + server rendering | stable | `createCursorQuery`, `createCacheBridge`, QueryClient and `ApiError` retry policy |
|
|
74
|
-
| `stitchkit/agent-runtime` | server | evolving<br>_redefined in 21 of the
|
|
74
|
+
| `stitchkit/agent-runtime` | server | evolving<br>_redefined in 21 of the 40 minors since 0.56.2, most recently 0.94.0_ | optional durable conversation/run loop, history, models, prompts, fencing and events |
|
|
75
75
|
| `stitchkit/agent-runtime/sandbox` | server | evolving | optional Linux Bubblewrap sessions, durable workspaces and a host HTTP credential gateway; see [sandbox guide](sandbox.md) |
|
|
76
76
|
| `stitchkit/agent-runtime/testing` | tests on Bun or Node | evolving | credential-free replay, scripted provider faults, deterministic race controls and the agent-store conformance kit |
|
|
77
77
|
| `stitchkit/agent-runtime/harness` | server | evolving | resource-aware process-local facade over the canonical Agent runtime; supervision stays outside |
|
|
@@ -81,11 +81,12 @@ own, recorded as an ADR.
|
|
|
81
81
|
| `stitchkit/agent-runtime/sqlite/bun` | server (Bun) | evolving | durable built-in SQLite store for the agent runtime |
|
|
82
82
|
| `stitchkit/agent-runtime/sqlite/node` | server (Node ≥ 22.5) | evolving | durable built-in SQLite store for the agent runtime |
|
|
83
83
|
| `stitchkit-tui` | terminal (Bun) | evolving | optional official OpenTUI host over a caller-composed headless runtime |
|
|
84
|
-
| `stitchkit/application` | browser + server | evolving<br>_redefined in
|
|
84
|
+
| `stitchkit/application` | browser + server | evolving<br>_redefined in 8 of the 40 minors since 0.56.2, most recently 0.95.0_ | managed resource graph, readiness, admission, schedules, subtree restart and bounded shutdown |
|
|
85
85
|
| `stitchkit/application/grammy` | server | evolving | isolated grammY polling and webhook lifecycle adapters |
|
|
86
86
|
| `stitchkit/application/opentelemetry` | server | evolving | maps application snapshots onto an injected OpenTelemetry `Meter` |
|
|
87
87
|
| `stitchkit/application/schemas` | browser + server | evolving | the application's snapshot, health and shutdown schemas alone, without the kernel |
|
|
88
88
|
| `stitchkit/application/diagnostic-journal` | server | evolving | the local diagnostic journal — the one part of the kernel that spawns, locks and writes files |
|
|
89
|
+
| `stitchkit/application/directory-inbox` | server | evolving | the directory inbox — entries another program drops into a directory, delivered to the application at least once |
|
|
89
90
|
|
|
90
91
|
Rule of thumb: browser code imports `stitchkit` and `stitchkit/react`; server
|
|
91
92
|
code adds `stitchkit/server` (or `stitchkit/node` on Node) and opts into
|
|
@@ -7061,39 +7062,74 @@ application-owned.
|
|
|
7061
7062
|
## Durable process facts and owner notifications
|
|
7062
7063
|
|
|
7063
7064
|
`createProcessLifecycleLedger` records a bounded versioned list of process runs.
|
|
7064
|
-
Start, readiness and shutdown target both `runId` and `pid`, so hot
|
|
7065
|
-
PID reuse cannot close the wrong generation.
|
|
7066
|
-
|
|
7067
|
-
|
|
7068
|
-
the
|
|
7065
|
+
Start, readiness, draining and shutdown target both `runId` and `pid`, so hot
|
|
7066
|
+
reload and PID reuse cannot close the wrong generation. `lifecycleLedgerResource`
|
|
7067
|
+
drives it from the kernel's phases: `start` records the start, `activate` the
|
|
7068
|
+
readiness, `stopAdmission` the drain — the run's `unavailableAt`, the moment it
|
|
7069
|
+
stops answering new work — and `close` / `force` the stop. A run that stops
|
|
7070
|
+
without ever becoming ready (a failed startup rolls back with `close` only)
|
|
7071
|
+
ends as `startup-failed`, not `clean`.
|
|
7072
|
+
|
|
7073
|
+
A start classifies what happened to the newest run before it, and the
|
|
7074
|
+
classification is decided by four facts — whether that run recorded its own
|
|
7075
|
+
exit, whether the pid is the same, whether the version changed and whether it
|
|
7076
|
+
ever became ready:
|
|
7069
7077
|
|
|
7070
7078
|
| newest run | same pid | version | `previousExit` | predecessor's `termination` |
|
|
7071
7079
|
|---|---|---|---|---|
|
|
7072
7080
|
| none | — | — | `first-boot` | — |
|
|
7073
|
-
| recorded `stoppedAt` | — | — | `clean` / `forced` / `abnormal` as recorded | unchanged |
|
|
7074
|
-
| still
|
|
7075
|
-
| still
|
|
7076
|
-
| still
|
|
7081
|
+
| recorded `stoppedAt` | — | — | `clean` / `forced` / `startup-failed` / `abnormal` as recorded | unchanged |
|
|
7082
|
+
| still open | yes | — | `hot-reload` | `hot-reload`, closed at the new start |
|
|
7083
|
+
| still open | no | changed | `handoff` | stays open; it records its own stop later |
|
|
7084
|
+
| still open, was ready | no | same | `abnormal` (default) | `abnormal`, closed at the new start — an upper bound, the crash time is unknown |
|
|
7085
|
+
| still open, never ready | no | same | `startup-failed` (default) | `startup-failed`, closed at the new start |
|
|
7086
|
+
|
|
7087
|
+
Every other open run the start finds was abandoned too and is closed the same
|
|
7088
|
+
way — two crashes in a row leave two open runs, and both are closed, not only
|
|
7089
|
+
the newest. Open means `active` or `draining`.
|
|
7077
7090
|
|
|
7078
7091
|
A version of `unknown` on either side is never a version change, so a dev build
|
|
7079
7092
|
after a crashed release reads `abnormal`, not `handoff`. `forced` means the
|
|
7080
7093
|
process itself acknowledged a kill; `abnormal` means a successor found it dead.
|
|
7081
7094
|
|
|
7082
|
-
|
|
7095
|
+
### Downtime is the window nobody answered in
|
|
7096
|
+
|
|
7097
|
+
`ReadyFact.downtimeMs` is `readyAt` of the new run minus `unavailableAt` of the
|
|
7098
|
+
last run that served — the predecessor's drain plus the successor's boot. A
|
|
7099
|
+
110 s forced drain followed by a 4 s boot is 114 s of downtime; the gap between
|
|
7100
|
+
the two processes alone would read 4 s before and after that defect was fixed.
|
|
7101
|
+
Runs that never became ready answered nobody, so the count passes them: after a
|
|
7102
|
+
failed start it still opens where the last serving run stopped answering. It is
|
|
7103
|
+
`0` when that run still answers (a handoff whose predecessor has not drained
|
|
7104
|
+
yet) and `null` on first boot and when the end was never timed — a crash or a
|
|
7105
|
+
hot reload records no `unavailableAt`. `unavailableSince` names the moment it is
|
|
7106
|
+
counted from. The gap between two processes is still there, under its own
|
|
7107
|
+
name: `StartFact.processGapMs` is the start minus the predecessor's recorded
|
|
7108
|
+
stop.
|
|
7109
|
+
|
|
7110
|
+
The ledger records what the process says while it can say it. stitchkit never
|
|
7111
|
+
calls `process.exit` (ADR 0074), so a stop is recorded on the kernel's `close`
|
|
7112
|
+
or `force` path, both awaited. An application that exits the process on its
|
|
7113
|
+
own before its shutdown settles loses that last write; the successor then
|
|
7114
|
+
finds the run open and closes it as `abnormal`, keeping the `unavailableAt`
|
|
7115
|
+
already recorded — which is why the drain moment is written first, at
|
|
7116
|
+
`stopAdmission`, and the downtime survives a stop that was never recorded.
|
|
7117
|
+
|
|
7118
|
+
The `abnormal` default is a choice, and it is the single-process deployment:
|
|
7083
7119
|
one process per build, a new pid of the same build means the old one stopped
|
|
7084
|
-
answering. Where
|
|
7085
|
-
|
|
7086
|
-
|
|
7087
|
-
|
|
7088
|
-
|
|
7089
|
-
|
|
7090
|
-
|
|
7091
|
-
|
|
7092
|
-
|
|
7093
|
-
|
|
7094
|
-
|
|
7095
|
-
|
|
7096
|
-
|
|
7120
|
+
answering. Where processes of **one** build overlap on purpose — a cluster, a
|
|
7121
|
+
zero-downtime reload of the same build — pass `sameVersionOverlap: 'handoff'`
|
|
7122
|
+
to the ledger, and every open run stays open until it records its own
|
|
7123
|
+
shutdown. The cost of that setting is symmetric: a real crash under it is
|
|
7124
|
+
reported as a handoff and the dead run stays open in the ledger until
|
|
7125
|
+
retention drops it. The list is kept in the order the transitions wrote it —
|
|
7126
|
+
every write goes through one atomic update, so that order is the causal one,
|
|
7127
|
+
and a successor whose clock lags its predecessor still finds it at the head;
|
|
7128
|
+
`startedAt` is data, not the sort key. Retention (`retain`, default 20) drops
|
|
7129
|
+
finished runs first and an open one — a live handoff predecessor — only when
|
|
7130
|
+
nothing finished is left. Facts are published through the ledger's own
|
|
7131
|
+
subscription and resource value; `ApplicationEventSink` remains the strict
|
|
7132
|
+
application-state stream.
|
|
7097
7133
|
|
|
7098
7134
|
`createNotificationOutbox` is the transport-neutral durable delivery side. It
|
|
7099
7135
|
persists before send, claims an item with an expiring lease, carries one stable
|
|
@@ -7116,7 +7152,36 @@ deadline holds `stop()` — and so the resource's `force()` — for that one cal
|
|
|
7116
7152
|
so give the transport a timeout. Superseding a key that is being sent right now
|
|
7117
7153
|
does not recall it: the send completes, and only its receipt is not written.
|
|
7118
7154
|
|
|
7119
|
-
|
|
7155
|
+
`createDirectoryInbox` is the receiving side for another program on the same
|
|
7156
|
+
host: it drops entries — a release transition, say — into a directory, and
|
|
7157
|
+
the application takes each one at least once. It is a managed resource of its
|
|
7158
|
+
own (`createDirectoryInbox({ id, directory, schema, handle })`, imported from
|
|
7159
|
+
`stitchkit/application/directory-inbox` because it touches files; its types
|
|
7160
|
+
and schemas are in `stitchkit/application`) and publishes a handle with
|
|
7161
|
+
`flush()` and `state()`. The producer writes each entry
|
|
7162
|
+
atomically as `<name>.json` — a temporary name, then a rename; names that start
|
|
7163
|
+
with a dot are never read. Entries are delivered in name order, and only after
|
|
7164
|
+
`activate`: none reaches the application before it is ready. `stopAdmission`
|
|
7165
|
+
stops taking new ones, `drain` waits for the one in flight, and `force` aborts
|
|
7166
|
+
the `signal` its handler was given.
|
|
7167
|
+
|
|
7168
|
+
Taken and done are separate durable records. Before `handle` runs, the entry
|
|
7169
|
+
is claimed with a lease (`leaseMs`, default five minutes); after it returns,
|
|
7170
|
+
a receipt replaces the claim and only then is the file removed. A process that
|
|
7171
|
+
died mid-delivery leaves a claim, and the entry is taken again once the lease
|
|
7172
|
+
runs out — at least once, not exactly once, so a handler that sends somewhere
|
|
7173
|
+
should carry the entry's `key` as its idempotency key. A process that died
|
|
7174
|
+
after the receipt leaves only the file, which the next pass removes without
|
|
7175
|
+
delivering it again. A handler that throws is retried after a backoff from one
|
|
7176
|
+
second doubling to five minutes; an entry that fails `schema`, is over
|
|
7177
|
+
`maxEntryBytes` or was taken `maxAttempts` times (default 20 — the count
|
|
7178
|
+
survives restarts, so an entry whose handling kills the process is not taken
|
|
7179
|
+
forever) is moved to `rejected/` with its reason and reported to `onRejected`,
|
|
7180
|
+
and the entries after it keep flowing. The state lives in
|
|
7181
|
+
`<directory>/.inbox-state.json` under `createFileStateStore`'s inter-process
|
|
7182
|
+
lock unless a `store` is supplied.
|
|
7183
|
+
|
|
7184
|
+
These primitives depend on the structural `StateStore`. On a server,
|
|
7120
7185
|
`createFileStateStore` supplies the shared Zod-validated JSON adapter with an
|
|
7121
7186
|
inter-process lock, unique temporary file, fsync and atomic rename. The lock
|
|
7122
7187
|
is a file with a heartbeat: the holder refreshes its mtime every third of
|
|
@@ -12664,6 +12729,48 @@ analytics policy belong to the application.
|
|
|
12664
12729
|
|
|
12665
12730
|
# Upgrading stitchkit
|
|
12666
12731
|
|
|
12732
|
+
## Released migration: 0.95.0
|
|
12733
|
+
|
|
12734
|
+
One breaking change in `stitchkit/application`: the process lifecycle ledger
|
|
12735
|
+
counts downtime as the window nobody answered in, and gains the `draining`
|
|
12736
|
+
phase and the `startup-failed` outcome. A ledger file written by an earlier
|
|
12737
|
+
version loads unchanged — the new `unavailableAt` reads as `null`.
|
|
12738
|
+
|
|
12739
|
+
1. **Read downtime from the ready fact.** **Who must act:** a project that
|
|
12740
|
+
reads `downtimeMs` from a `started` fact. It is gone from `StartFact`; the
|
|
12741
|
+
number it carried is `processGapMs`. The downtime now arrives with the new
|
|
12742
|
+
run's readiness:
|
|
12743
|
+
|
|
12744
|
+
```ts
|
|
12745
|
+
// before
|
|
12746
|
+
ledger.subscribe((fact) => {
|
|
12747
|
+
if (fact.type === 'started') report(fact.previousExit, fact.downtimeMs);
|
|
12748
|
+
});
|
|
12749
|
+
// after
|
|
12750
|
+
ledger.subscribe((fact) => {
|
|
12751
|
+
if (fact.type === 'started') previousExit = fact.previousExit;
|
|
12752
|
+
if (fact.type === 'ready') report(previousExit, fact.downtimeMs);
|
|
12753
|
+
});
|
|
12754
|
+
```
|
|
12755
|
+
|
|
12756
|
+
2. **Handle the new values.** **Who must act:** a project that switches
|
|
12757
|
+
exhaustively over `LifecycleTermination` (new: `draining`,
|
|
12758
|
+
`startup-failed`), `PreviousExit` (new: `startup-failed`) or
|
|
12759
|
+
`ProcessLifecycleFact` (new: `DrainingFact`, `type: 'draining'`). The type
|
|
12760
|
+
checker names each switch. An open run is `active` or `draining`; a check
|
|
12761
|
+
written as `termination === 'active'` to mean "still running" becomes
|
|
12762
|
+
`termination === 'active' || termination === 'draining'`.
|
|
12763
|
+
`TransitionReadyInput` is renamed `TransitionRunInput` — the same fields,
|
|
12764
|
+
now also taken by `transitionProcessDraining`; rename the import.
|
|
12765
|
+
|
|
12766
|
+
3. **Record the drain and the readiness when driving the ledger by hand.**
|
|
12767
|
+
**Who must act:** only a project that calls `createProcessLifecycleLedger`
|
|
12768
|
+
methods itself instead of mounting `lifecycleLedgerResource`. Call
|
|
12769
|
+
`recordDraining()` where the application stops admitting work, before it
|
|
12770
|
+
drains; without it downtime is counted from the recorded stop. Call
|
|
12771
|
+
`recordReady()` when the run serves; a run stopped without it now ends
|
|
12772
|
+
`startup-failed`, not `clean`.
|
|
12773
|
+
|
|
12667
12774
|
## Released migration: 0.94.0
|
|
12668
12775
|
|
|
12669
12776
|
One breaking minor that consolidates: tool options move into one group, and
|
|
@@ -16892,15 +16999,17 @@ cutovers are covered by the executable
|
|
|
16892
16999
|
| `createApplication` | function | compose a validated resource DAG into one startup, readiness, admission and shutdown state machine |
|
|
16893
17000
|
| `StateStore` / `StateStoreUpdate` | _type_ | async atomic read/update boundary shared by durable application state machines |
|
|
16894
17001
|
| `createProcessLifecycleLedger` / `ProcessLifecycleLedger` / `ProcessLifecycleLedgerConfig` | function / _type_ | durable bounded run history and typed fact subscription |
|
|
16895
|
-
| `LifecycleRunSchema` / `LifecycleRun` / `LifecycleStateSchema` / `LifecycleState` / `LifecycleTerminationSchema` / `LifecycleTermination` | schema / _type_ | versioned process-run state and
|
|
16896
|
-
| `PreviousExitSchema` / `PreviousExit` / `StartFact` / `ReadyFact` / `ShutdownFact` / `ProcessLifecycleFact` | schema / _type_ | first-boot, hot-reload, clean, forced, handoff and abnormal lifecycle facts |
|
|
16897
|
-
| `transitionProcessStart` / `transitionProcessReady` / `transitionProcessShutdown` | function | pure idempotent runId+pid-owned transitions |
|
|
16898
|
-
| `LifecycleTransition` / `TransitionStartInput` / `
|
|
16899
|
-
| `lifecycleLedgerResource` / `LifecycleLedgerResource` / `LifecycleLedgerResourceConfig` | function / _type_ | managed-resource adapter that records start, readiness and shutdown |
|
|
17002
|
+
| `LifecycleRunSchema` / `LifecycleRun` / `LifecycleStateSchema` / `LifecycleState` / `LifecycleTerminationSchema` / `LifecycleTermination` | schema / _type_ | versioned process-run state — open (`active`, `draining` with `unavailableAt`) and ended (`clean`, `forced`, `startup-failed`, `hot-reload`, `abnormal`) |
|
|
17003
|
+
| `PreviousExitSchema` / `PreviousExit` / `StartFact` / `ReadyFact` / `DrainingFact` / `ShutdownFact` / `ProcessLifecycleFact` | schema / _type_ | first-boot, hot-reload, clean, forced, startup-failed, handoff and abnormal lifecycle facts; `processGapMs` on start, `downtimeMs` (unavailable → ready) on ready |
|
|
17004
|
+
| `transitionProcessStart` / `transitionProcessReady` / `transitionProcessDraining` / `transitionProcessShutdown` | function | pure idempotent runId+pid-owned transitions |
|
|
17005
|
+
| `LifecycleTransition` / `TransitionStartInput` / `TransitionRunInput` / `TransitionShutdownInput` / `SameVersionOverlap` | _type_ | pure transition inputs (`TransitionRunInput` for ready and draining, extended with `forced` for shutdown), the same-build overlap policy (`abnormal` default / `handoff`) and state+fact result |
|
|
17006
|
+
| `lifecycleLedgerResource` / `LifecycleLedgerResource` / `LifecycleLedgerResourceConfig` | function / _type_ | managed-resource adapter that records start, readiness, admission stop (draining) and shutdown |
|
|
16900
17007
|
| `createNotificationOutbox` / `NotificationOutbox` / `NotificationOutboxConfig` | function / _type_ | bounded at-least-once queue with durable claims, leases, retries and supersede |
|
|
16901
17008
|
| `NotificationOutboxItem` / `NotificationOutboxReceipt` / `NotificationOutboxState` / `NotificationSend` / `NotificationFailureClassification` / `DroppedNotification` / `EnqueueNotification` | _type_ | versioned queue records, stable send identity and delivery decisions |
|
|
16902
17009
|
| `notificationOutboxStateSchema` | function | strict persisted-state schema over an application payload schema |
|
|
16903
17010
|
| `notificationOutboxResource` / `NotificationOutboxResource` / `NotificationOutboxResourceConfig` | function / _type_ | thin managed-resource scheduler over an outbox handle |
|
|
17011
|
+
| `createDirectoryInbox` (from `stitchkit/application/directory-inbox`) / `DirectoryInbox` / `DirectoryInboxConfig` / `DirectoryInboxDelivery` / `DirectoryInboxResource` | function / _type_ | managed resource delivering each `<name>.json` entry another program drops into a directory to the application at least once, after readiness; separate durable taken/done records, leases, bounded retry |
|
|
17012
|
+
| `DirectoryInboxStateSchema` / `DirectoryInboxState` / `DirectoryInboxRejection` / `DirectoryInboxRejectionReasonSchema` / `DirectoryInboxRejectionReason` | schema / _type_ | the inbox's claims, receipts and rejections (`invalid`, `too-large`, `attempt-limit`) |
|
|
16904
17013
|
| `ApplicationHandle.restart` | method | replace one resource and everything that depends on it, leaving the rest of the graph running and the process epoch unchanged |
|
|
16905
17014
|
| `ApplicationRestartInputSchema` / `ApplicationRestartInput` | schema / _type_ | the resource to replace, by id, and optionally `gracePeriodMs` / `forceTimeoutMs` for this restart — the application's own shutdown budget otherwise |
|
|
16906
17015
|
| `ApplicationRestartResultSchema` / `ApplicationRestartResult` | schema / _type_ | the subtree that was actually taken down and brought back, in start order, with the outcome, the reason on anything but success, and how long it took |
|
package/llms.txt
CHANGED
|
@@ -9,7 +9,7 @@ Build with stitchkit: define a contract once, then `implement` it and serve it (
|
|
|
9
9
|
Load the slice for each entrypoint your code imports — `import … from 'stitchkit/server'` → `llms/server.txt`; the root `stitchkit` import → `llms/stitchkit.txt`. A slice holds that entrypoint's API reference section and the guide pages whose home it is; every guide lives in exactly one slice, and a slice that needs another's guide names it under "Also read". Each file is at most 50.0 KB; a longer one continues in numbered parts, each naming the next at its top. Moving across versions: load `llms/upgrading.txt` and the range slices it lists between your version and the target. `llms-full.txt` inlines everything; it is far larger than a context window, so do not read it whole.
|
|
10
10
|
|
|
11
11
|
## Entrypoint slices
|
|
12
|
-
- **stitchkit**: [llms/stitchkit.txt](llms/stitchkit.txt) 15.
|
|
12
|
+
- **stitchkit**: [llms/stitchkit.txt](llms/stitchkit.txt) 15.3 KB → [llms/stitchkit.2.txt](llms/stitchkit.2.txt) 35.0 KB → [llms/stitchkit.3.txt](llms/stitchkit.3.txt) 14.2 KB
|
|
13
13
|
- **stitchkit/live**: [llms/live.txt](llms/live.txt) 21.2 KB
|
|
14
14
|
- **stitchkit/react**: [llms/react.txt](llms/react.txt) 8.6 KB
|
|
15
15
|
- **stitchkit/tools**: [llms/tools.txt](llms/tools.txt) 44.9 KB → [llms/tools.2.txt](llms/tools.2.txt) 26.3 KB → [llms/tools.3.txt](llms/tools.3.txt) 25.4 KB
|
|
@@ -30,9 +30,10 @@ Load the slice for each entrypoint your code imports — `import … from 'stitc
|
|
|
30
30
|
- **stitchkit/agent-runtime/openrouter**: [llms/agent-runtime-openrouter.txt](llms/agent-runtime-openrouter.txt) 1.1 KB
|
|
31
31
|
- **stitchkit/agent-runtime/sqlite/bun**: [llms/agent-runtime-sqlite-bun.txt](llms/agent-runtime-sqlite-bun.txt) 1.8 KB
|
|
32
32
|
- **stitchkit/agent-runtime/sqlite/node**: [llms/agent-runtime-sqlite-node.txt](llms/agent-runtime-sqlite-node.txt) 1.7 KB
|
|
33
|
-
- **stitchkit/application**: [llms/application.txt](llms/application.txt)
|
|
33
|
+
- **stitchkit/application**: [llms/application.txt](llms/application.txt) 42.1 KB → [llms/application.2.txt](llms/application.2.txt) 32.6 KB
|
|
34
34
|
- **stitchkit/application/grammy**: [llms/application-grammy.txt](llms/application-grammy.txt) 1.5 KB
|
|
35
35
|
- **stitchkit/application/opentelemetry**: [llms/application-opentelemetry.txt](llms/application-opentelemetry.txt) 1.6 KB
|
|
36
|
+
- **stitchkit/application/directory-inbox**: [llms/application-directory-inbox.txt](llms/application-directory-inbox.txt) 0.3 KB
|
|
36
37
|
- **stitchkit/application/diagnostic-journal**: [llms/application-diagnostic-journal.txt](llms/application-diagnostic-journal.txt) 1.4 KB
|
|
37
38
|
- **stitchkit/application/schemas**: [llms/application-schemas.txt](llms/application-schemas.txt) 1.8 KB
|
|
38
39
|
- **stitchkit/testing**: [llms/testing.txt](llms/testing.txt) 30.8 KB
|
|
@@ -50,9 +51,9 @@ Load the slice for each entrypoint your code imports — `import … from 'stitc
|
|
|
50
51
|
|
|
51
52
|
## Upgrading slices
|
|
52
53
|
- **Upgrading — how to move across versions**: [llms/upgrading.txt](llms/upgrading.txt) 10.3 KB
|
|
53
|
-
- **Upgrading 0.
|
|
54
|
-
- **Upgrading 0.
|
|
55
|
-
- **Upgrading 0.37.0 → 0.
|
|
54
|
+
- **Upgrading 0.69.0 → 0.95.0**: [llms/upgrading-0.69.0-0.95.0.txt](llms/upgrading-0.69.0-0.95.0.txt) 46.6 KB
|
|
55
|
+
- **Upgrading 0.55.0 → 0.68.0**: [llms/upgrading-0.55.0-0.68.0.txt](llms/upgrading-0.55.0-0.68.0.txt) 47.0 KB
|
|
56
|
+
- **Upgrading 0.37.0 → 0.53.0**: [llms/upgrading-0.37.0-0.53.0.txt](llms/upgrading-0.37.0-0.53.0.txt) 32.6 KB
|
|
56
57
|
|
|
57
58
|
## Guide (web)
|
|
58
59
|
- [Getting started](https://github.com/max-listov/stitchkit/blob/master/docs/guide/getting-started.md): install, entrypoints, and a first contract → server → client app
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stitchkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.95.1",
|
|
4
4
|
"description": "Contract-first backend framework — one defineContract() into an HTTP API, MCP tools, AI-agent tools and a typed client. Bun and Node.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bun",
|
|
@@ -146,6 +146,10 @@
|
|
|
146
146
|
"types": "./dist/entrypoints/application/opentelemetry.d.ts",
|
|
147
147
|
"import": "./dist/entrypoints/application/opentelemetry.js"
|
|
148
148
|
},
|
|
149
|
+
"./application/directory-inbox": {
|
|
150
|
+
"types": "./dist/entrypoints/application/directory-inbox.d.ts",
|
|
151
|
+
"import": "./dist/entrypoints/application/directory-inbox.js"
|
|
152
|
+
},
|
|
149
153
|
"./application/diagnostic-journal": {
|
|
150
154
|
"types": "./dist/entrypoints/application/diagnostic-journal.d.ts",
|
|
151
155
|
"import": "./dist/entrypoints/application/diagnostic-journal.js"
|