@cursor/july 0.1.76 → 0.1.78

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 (128) hide show
  1. package/dist/channels/origin/origin-webhook.d.ts +23 -2
  2. package/dist/channels/origin/origin-webhook.d.ts.map +1 -1
  3. package/dist/channels/origin/origin-webhook.js +82 -20
  4. package/dist/docs/404.html +2 -2
  5. package/dist/docs/ab.html +3 -3
  6. package/dist/docs/assets/{app.b8bhB2SV.js → app.BsA7t7rS.js} +1 -1
  7. package/dist/docs/assets/chunks/@localSearchIndexroot.Dcs6boxD.js +1 -0
  8. package/dist/docs/assets/chunks/{VPLocalSearchBox.lLSeIyWw.js → VPLocalSearchBox.B1hHhktM.js} +1 -1
  9. package/dist/docs/assets/chunks/{theme.C_owesa-.js → theme.DLpLSsQh.js} +2 -2
  10. package/dist/docs/assets/{storage.md.D8NQ389l.js → storage.md.ks1u64_R.js} +3 -3
  11. package/dist/docs/assets/storage.md.ks1u64_R.lean.js +1 -0
  12. package/dist/docs/building-with-agents.html +3 -3
  13. package/dist/docs/concepts.html +3 -3
  14. package/dist/docs/deployment.html +3 -3
  15. package/dist/docs/evals.html +3 -3
  16. package/dist/docs/example-agents/approval-buddy.html +3 -3
  17. package/dist/docs/example-agents/benny.html +3 -3
  18. package/dist/docs/example-agents/bugbot.html +3 -3
  19. package/dist/docs/example-agents/codebase-wiki.html +3 -3
  20. package/dist/docs/example-agents/codeowners-review.html +3 -3
  21. package/dist/docs/example-agents/concierge.html +3 -3
  22. package/dist/docs/example-agents/fsd.html +3 -3
  23. package/dist/docs/example-agents/index.html +3 -3
  24. package/dist/docs/example-agents/knowledge-base.html +3 -3
  25. package/dist/docs/example-agents/oncall.html +3 -3
  26. package/dist/docs/example-agents/security-reviewer.html +3 -3
  27. package/dist/docs/example-agents/slack-agent.html +3 -3
  28. package/dist/docs/example-agents/weather-agent.html +3 -3
  29. package/dist/docs/guides/agent-to-agent.html +3 -3
  30. package/dist/docs/guides/cloud-runtime.html +3 -3
  31. package/dist/docs/guides/convert-automation.html +3 -3
  32. package/dist/docs/guides/github.html +3 -3
  33. package/dist/docs/guides/human-in-the-loop.html +3 -3
  34. package/dist/docs/guides/mcp-oauth.html +3 -3
  35. package/dist/docs/guides/opentelemetry.html +3 -3
  36. package/dist/docs/guides/slack.html +3 -3
  37. package/dist/docs/guides/webhooks.html +3 -3
  38. package/dist/docs/hashmap.json +1 -1
  39. package/dist/docs/hillclimbing.html +3 -3
  40. package/dist/docs/index.html +3 -3
  41. package/dist/docs/quickstart.html +3 -3
  42. package/dist/docs/reference/agent-config.html +3 -3
  43. package/dist/docs/reference/artifacts.html +3 -3
  44. package/dist/docs/reference/channels.html +3 -3
  45. package/dist/docs/reference/cli.html +3 -3
  46. package/dist/docs/reference/connections.html +3 -3
  47. package/dist/docs/reference/hooks.html +3 -3
  48. package/dist/docs/reference/http-api.html +3 -3
  49. package/dist/docs/reference/instructions.html +3 -3
  50. package/dist/docs/reference/playground.html +3 -3
  51. package/dist/docs/reference/project-layout.html +3 -3
  52. package/dist/docs/reference/prompt.html +3 -3
  53. package/dist/docs/reference/schedules.html +3 -3
  54. package/dist/docs/reference/sessions.html +3 -3
  55. package/dist/docs/reference/skills.html +3 -3
  56. package/dist/docs/reference/subagents.html +3 -3
  57. package/dist/docs/reference/tools.html +3 -3
  58. package/dist/docs/scaffolding-agents.html +3 -3
  59. package/dist/docs/storage.html +7 -7
  60. package/dist/docs/templates/agentic-owners.html +3 -3
  61. package/dist/docs/templates/demo.html +3 -3
  62. package/dist/docs/templates/pr-autofixer.html +3 -3
  63. package/dist/docs/templates/security-reviewer.html +3 -3
  64. package/dist/docs/templates/triage.html +3 -3
  65. package/dist/docs/troubleshooting.html +3 -3
  66. package/dist/index.d.ts +0 -1
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +0 -1
  69. package/dist/internal/discovery.d.ts.map +1 -1
  70. package/dist/internal/discovery.js +3 -21
  71. package/dist/internal/distribution.d.ts.map +1 -1
  72. package/dist/internal/distribution.js +0 -1
  73. package/dist/internal/session-engine.d.ts +1 -60
  74. package/dist/internal/session-engine.d.ts.map +1 -1
  75. package/dist/internal/session-engine.js +10 -109
  76. package/dist/kv/memory-kv.d.ts +1 -10
  77. package/dist/kv/memory-kv.d.ts.map +1 -1
  78. package/dist/kv/memory-kv.js +1 -10
  79. package/dist/kv.d.ts +2 -3
  80. package/dist/kv.d.ts.map +1 -1
  81. package/dist/kv.js +2 -3
  82. package/dist/playground/assets/{index-Bfwz2yLN.css → index-DJzcIeGt.css} +1 -1
  83. package/dist/playground/assets/{index-BWqjJcRo.js → index-K3Sxyx0I.js} +48 -45
  84. package/dist/playground/index.html +2 -2
  85. package/dist/storage-backends/cursor-hosted.js +3 -3
  86. package/dist/storage-protocol.d.ts +3 -8
  87. package/dist/storage-protocol.d.ts.map +1 -1
  88. package/dist/storage-protocol.js +4 -10
  89. package/dist/storage.d.ts +5 -11
  90. package/dist/storage.d.ts.map +1 -1
  91. package/dist/storage.js +3 -4
  92. package/dist/types.d.ts +5 -34
  93. package/dist/types.d.ts.map +1 -1
  94. package/docs/storage.md +11 -44
  95. package/package.json +1 -8
  96. package/src/channels/origin/origin-webhook.ts +111 -25
  97. package/src/index.ts +0 -6
  98. package/src/internal/discovery.ts +3 -27
  99. package/src/internal/distribution.ts +0 -1
  100. package/src/internal/session-engine.ts +1 -168
  101. package/src/kv/memory-kv.ts +1 -10
  102. package/src/kv.ts +2 -3
  103. package/src/storage-backends/cursor-hosted.ts +3 -3
  104. package/src/storage-protocol.ts +4 -10
  105. package/src/storage.ts +6 -12
  106. package/src/types.ts +5 -35
  107. package/dist/docs/assets/chunks/@localSearchIndexroot.DGZeXVqn.js +0 -1
  108. package/dist/docs/assets/storage.md.D8NQ389l.lean.js +0 -1
  109. package/dist/internal/durable-session-store.d.ts +0 -60
  110. package/dist/internal/durable-session-store.d.ts.map +0 -1
  111. package/dist/internal/durable-session-store.js +0 -131
  112. package/dist/internal/ledger-serving.d.ts +0 -169
  113. package/dist/internal/ledger-serving.d.ts.map +0 -1
  114. package/dist/internal/ledger-serving.js +0 -393
  115. package/dist/ledger/janitor.d.ts +0 -60
  116. package/dist/ledger/janitor.d.ts.map +0 -1
  117. package/dist/ledger/janitor.js +0 -137
  118. package/dist/ledger/session-ledger.d.ts +0 -293
  119. package/dist/ledger/session-ledger.d.ts.map +0 -1
  120. package/dist/ledger/session-ledger.js +0 -614
  121. package/dist/ledger.d.ts +0 -12
  122. package/dist/ledger.d.ts.map +0 -1
  123. package/dist/ledger.js +0 -9
  124. package/src/internal/durable-session-store.ts +0 -134
  125. package/src/internal/ledger-serving.ts +0 -531
  126. package/src/ledger/janitor.ts +0 -193
  127. package/src/ledger/session-ledger.ts +0 -839
  128. package/src/ledger.ts +0 -44
@@ -1,293 +0,0 @@
1
- /**
2
- * Session ledger — KV coordination with a durable inbox.
3
- *
4
- * Three key families, all driven with `get` + CAS on a
5
- * {@link SessionLedgerKv}; agents never touch these keys directly:
6
- *
7
- * ```
8
- * session/<continuationKey> identity, created with put-if-absent
9
- * ledger/<sessionId> head + pending + lease — every mutation one CAS
10
- * mailbox/<sessionId>/<eventId> immutable payload blobs, plain put
11
- * ```
12
- *
13
- * The keys are deliberately bare: namespacing (per agent, per
14
- * deployment) is not the ledger's concern. The store handle it is given
15
- * must already be scoped — the engine applies the namespace exactly once
16
- * where it constructs the handle (see `durable-session-store.ts`), the
17
- * same boundary where `host.kv` gets its agent scoping.
18
- *
19
- * The guarantee: **exactly-once ledger apply, at-least-once actuation.**
20
- * A commit is one CAS carrying the read version, the expected `head`, and
21
- * the holder's `generation` — one committed transition per turn, atomic by
22
- * construction. What the CAS cannot fence (a zombie's plain `host.kv`
23
- * writes, external tool calls) is a stated bound, not this module's job.
24
- *
25
- * The inbox makes events durable before their turn runs: `appendEvent`
26
- * writes the payload blob, then one CAS indexes the eventId into
27
- * `pending` — that CAS is the ack point. A delivery that finds the lease
28
- * held walks away; the holder's commit sees the appended id in the same
29
- * CAS value, keeps the lease, and drains again. Sessions whose holder
30
- * died with events pending are recovered by the janitor
31
- * (`./janitor.js`), which is also why the store must implement
32
- * `listKeys`: the inbox brings the prefix scans (janitor + orphan
33
- * sweep) that the coordination-only ledger did not need.
34
- *
35
- * Clocks: lease expiry compares `expiresAt` against {@link
36
- * SessionLedgerOptions.clock} (default `Date.now`). Self-hosted N-pod
37
- * deployments accept NTP-synced pods as a documented requirement; a
38
- * backend-clock primitive can replace the default without touching the
39
- * protocol code.
40
- */
41
- import type { HostKvCasApi, JsonValue } from "../types.js";
42
- export declare const LEASE_TTL_MS = 30000;
43
- export declare const HEARTBEAT_INTERVAL_MS = 10000;
44
- /** Unreferenced mailbox blobs older than this are sweepable. */
45
- export declare const DEFAULT_ORPHAN_TTL_MS: number;
46
- /**
47
- * The KV surface the ledger uses — the full CAS-capable contract. The
48
- * coordination half needs only `getWithVersion` / `putIfAbsent` /
49
- * `putIfVersion`; the inbox adds plain `get`/`put`/`delete` for mailbox
50
- * payload blobs and `listKeys` for the janitor scan and the orphan
51
- * sweep.
52
- */
53
- export type SessionLedgerKv = HostKvCasApi;
54
- /** Runtime probe for {@link SessionLedgerKv} on stores of unknown shape. */
55
- export declare function supportsSessionLedgerKv(kv: object): kv is SessionLedgerKv;
56
- /** `session/<continuationKey>` value. Immutable after creation. */
57
- export interface SessionIdentity {
58
- sessionId: string;
59
- sdkSessionRef: string | null;
60
- createdAt: number;
61
- }
62
- export interface LedgerLease {
63
- holder: string;
64
- generation: number;
65
- expiresAt: number;
66
- }
67
- /**
68
- * `ledger/<sessionId>` value: `{ sessionId, head, pending, lease,
69
- * generation, lastCommitId }`. `sessionId` lets the janitor's prefix
70
- * scan address sessions without inverting digested key segments;
71
- * `generation` is a monotonic acquisition counter that must survive
72
- * lease release, or a zombie of a cleanly released lease could reuse
73
- * its generation; `lastCommitId` is the ambiguous-commit recovery
74
- * token.
75
- */
76
- export interface LedgerSnapshot {
77
- sessionId: string;
78
- head: number;
79
- pending: string[];
80
- lease: LedgerLease | null;
81
- generation: number;
82
- lastCommitId: string | null;
83
- }
84
- /** One event handed to {@link SessionLedger.appendEvent}. */
85
- export interface LedgerEventInput {
86
- eventId: string;
87
- envelope: JsonValue;
88
- hookContext?: JsonValue;
89
- /** Source-assigned timestamp used for drain ordering. */
90
- sourceTs: number;
91
- }
92
- /** One drained mailbox event. */
93
- export interface LedgerEvent {
94
- eventId: string;
95
- envelope: JsonValue;
96
- hookContext: JsonValue | null;
97
- sourceTs: number;
98
- /** Pod-clock write time; drives the orphan sweep TTL. */
99
- storedAt: number;
100
- }
101
- export type EnsureSessionResult = {
102
- created: boolean;
103
- session: SessionIdentity;
104
- };
105
- export type ClaimResult = {
106
- claimed: true;
107
- lease: LedgerLease;
108
- head: number;
109
- pending: string[];
110
- } | {
111
- claimed: false;
112
- reason: "held";
113
- holder: string;
114
- expiresAt: number;
115
- };
116
- export type HeartbeatResult = {
117
- ok: true;
118
- expiresAt: number;
119
- } | {
120
- ok: false;
121
- reason: "not-found" | "fenced";
122
- };
123
- export interface DrainResult {
124
- /** `head` at read time — pass as `expectedHead` to the matching commit. */
125
- head: number;
126
- /** Pending events sorted by `sourceTs`, then `eventId`. */
127
- events: LedgerEvent[];
128
- }
129
- export interface CommitArgs {
130
- /** Event ids this turn actually consumed. Only these leave `pending`. */
131
- drainedEventIds: string[];
132
- /** The holder's lease generation (fences zombies). */
133
- generation: number;
134
- /** `head` observed at drain time (fences concurrent turns). */
135
- expectedHead: number;
136
- /** Unique per commit attempt; enables ambiguous-outcome recovery. */
137
- commitId: string;
138
- }
139
- export interface CommitResult {
140
- head: number;
141
- /** Events that arrived mid-turn; non-empty ⇒ the lease was kept. */
142
- pending: string[];
143
- /**
144
- * Whether this holder's lease is gone — for the caller's purposes, not
145
- * the record's: `true` also when the re-read of an ambiguous commit
146
- * finds a *new claimant's* lease, since we no longer hold the session
147
- * either way and continuing the turn loop would duplicate the new
148
- * holder's work.
149
- */
150
- leaseReleased: boolean;
151
- }
152
- export interface SweepOrphansArgs {
153
- /** Limit the sweep to one session (default: all mailbox blobs). */
154
- sessionId?: string;
155
- /** Age gate (default {@link DEFAULT_ORPHAN_TTL_MS}). */
156
- olderThanMs?: number;
157
- }
158
- export interface SweepOrphansResult {
159
- /** Deleted blob ids as `<sessionId>/<eventId>`. */
160
- deleted: string[];
161
- }
162
- /**
163
- * The turn was fenced: a stale generation, a moved head, or a missing
164
- * ledger. The caller must abort the turn and discard warm state.
165
- */
166
- export declare class LedgerFencedError extends Error {
167
- constructor(message: string);
168
- }
169
- /** A CAS retry loop ran out of attempts (sustained contention or outage). */
170
- export declare class LedgerCasExhaustedError extends Error {
171
- constructor(operation: string, attempts: number);
172
- }
173
- export interface SessionLedgerOptions {
174
- /** Already-scoped store handle; the ledger writes bare keys into it. */
175
- kv: SessionLedgerKv;
176
- /** Stable identity of this pod/process — the lease `holder`. */
177
- podId: string;
178
- /** Lease TTL (default {@link LEASE_TTL_MS}). */
179
- leaseTtlMs?: number;
180
- /** Time source for lease expiry and blob ages (default `Date.now`). */
181
- clock?: () => number;
182
- /** Max attempts per CAS loop (default 16). */
183
- maxCasAttempts?: number;
184
- /**
185
- * Wait between CAS retries. Default: immediate for the first retries,
186
- * then a jittered exponential capped at 250ms.
187
- */
188
- backoff?: (attempt: number) => Promise<void>;
189
- /** Session id mint (default `ses_<24 hex>` like the session engine). */
190
- newSessionId?: () => string;
191
- }
192
- /** Drives the three ledger key families over a CAS-capable KV. */
193
- export declare class SessionLedger {
194
- private readonly kv;
195
- private readonly podId;
196
- private readonly leaseTtlMs;
197
- private readonly clock;
198
- private readonly maxCasAttempts;
199
- private readonly backoff;
200
- private readonly mintSessionId;
201
- constructor(options: SessionLedgerOptions);
202
- private sessionKey;
203
- private ledgerKey;
204
- private mailboxKey;
205
- private mailboxPrefix;
206
- private emptyLedger;
207
- /**
208
- * Create-or-read the session identity for a continuation key. The create
209
- * race has one winner (put-if-absent); losers read the winner's identity
210
- * and append there.
211
- */
212
- ensureSession(continuationKey: string, init?: {
213
- sdkSessionRef?: string | null;
214
- }): Promise<EnsureSessionResult>;
215
- /**
216
- * Make one event durable: payload blob first, then one CAS indexing its
217
- * id into `pending`. The blob must land before the index — a pending id
218
- * with no payload would break drain, while the reverse (blob without
219
- * index, i.e. a crash between the two writes) is a sweepable orphan.
220
- * Idempotent by `eventId`: `pending` is a set, so redelivery re-runs are
221
- * no-ops. The CAS in step two is the ack point — callers ack the source
222
- * only after this resolves.
223
- */
224
- appendEvent(sessionId: string, event: LedgerEventInput): Promise<{
225
- appended: boolean;
226
- }>;
227
- /**
228
- * Try to take the session lease, creating the ledger record on first
229
- * contact. Succeeds only when the lease is null or expired; the CAS
230
- * bumps the acquisition generation, fencing every prior holder. A
231
- * losing caller walks away — the holder's commit sees any appended
232
- * events in the same CAS value, and the janitor recovers sessions
233
- * whose holder died.
234
- */
235
- claim(sessionId: string): Promise<ClaimResult>;
236
- /**
237
- * Extend the lease. Fails when the generation is no longer ours — the
238
- * caller must abort the turn and discard warm state; the session has a
239
- * new legitimate holder.
240
- */
241
- heartbeat(sessionId: string, generation: number): Promise<HeartbeatResult>;
242
- /**
243
- * Read the pending mailbox: fetch each indexed payload blob and return
244
- * them sorted by `sourceTs`, then `eventId` (mailbox order ≠ source
245
- * order is a stated non-guarantee; this is the drain order). The
246
- * returned `head` is the `expectedHead` for the matching commit.
247
- */
248
- drain(sessionId: string): Promise<DrainResult>;
249
- /**
250
- * Commit one turn. The single CAS is the commit point: it bumps `head`,
251
- * removes ONLY the drained ids from `pending`, releases the lease iff
252
- * nothing is left pending, and records `commitId` — atomically. A
253
- * non-empty result `pending` means events landed mid-turn: the lease was
254
- * kept and the caller drains again.
255
- *
256
- * Ambiguous outcomes (the KV threw and we never saw the CAS result) are
257
- * resolved by re-reading, never by blind-retrying: `head` advanced to
258
- * `expectedHead + 1` with our `commitId` ⇒ our write landed, report
259
- * success; `head` still at `expectedHead` with our lease ⇒ it did not,
260
- * retry against the fresh version; anything else ⇒ fenced.
261
- */
262
- commit(sessionId: string, args: CommitArgs): Promise<CommitResult>;
263
- /**
264
- * Release a held lease without committing — graceful shutdown, a turn
265
- * that failed before its commit, or a claim that found nothing to
266
- * drain. Fenced by generation: a stale holder's release is a no-op
267
- * (the session has moved on). `head` and the acquisition counter are
268
- * untouched, so prior holders stay fenced.
269
- */
270
- release(sessionId: string, generation: number): Promise<{
271
- released: boolean;
272
- }>;
273
- /** Parsed ledger value for one session, or `undefined` when never created. */
274
- readLedger(sessionId: string): Promise<LedgerSnapshot | undefined>;
275
- /**
276
- * All ledgers under this prefix (the janitor's scan). An unparseable
277
- * record is skipped — reported through `onSkip` — never thrown: one
278
- * corrupt value must degrade that one session, not abort the scan and
279
- * kill the whole agent's recovery pass.
280
- */
281
- listLedgers(onSkip?: (key: string, error: unknown) => void): Promise<LedgerSnapshot[]>;
282
- /**
283
- * Delete mailbox blobs that are (a) not referenced by their session's
284
- * `pending` and (b) older than the TTL. Covers both true orphans (a
285
- * crash between the payload put and the ledger CAS) and consumed blobs
286
- * whose ids a commit already removed. Membership is checked against a
287
- * ledger read taken *after* listing the blobs, so a blob whose append
288
- * CAS is in flight is never swept: its id is either already in
289
- * `pending`, or the blob is younger than any sane TTL.
290
- */
291
- sweepOrphans(args?: SweepOrphansArgs): Promise<SweepOrphansResult>;
292
- }
293
- //# sourceMappingURL=session-ledger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-ledger.d.ts","sourceRoot":"","sources":["../../src/ledger/session-ledger.ts"],"names":[],"mappings":"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"}