@cursor/july 0.1.45 → 0.1.46
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/AGENTS.md +4 -2
- package/README.md +3 -1
- package/dist/channels/github/api.d.ts +25 -0
- package/dist/channels/github/api.d.ts.map +1 -1
- package/dist/channels/github/api.js +48 -0
- package/dist/channels/github/cursor-account.d.ts +7 -0
- package/dist/channels/github/cursor-account.d.ts.map +1 -1
- package/dist/channels/github/cursor-account.js +18 -0
- package/dist/channels/github/defaults.d.ts +1 -1
- package/dist/channels/github/defaults.js +1 -1
- package/dist/channels/github/github-channel.d.ts.map +1 -1
- package/dist/channels/github/github-channel.js +2 -2
- package/dist/channels/github/progress.d.ts +6 -5
- package/dist/channels/github/progress.d.ts.map +1 -1
- package/dist/channels/github/progress.js +58 -16
- package/dist/channels/github/state.d.ts +11 -0
- package/dist/channels/github/state.d.ts.map +1 -1
- package/dist/channels/github/state.js +1 -1
- package/dist/channels/github/types.d.ts +3 -3
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +3 -3
- package/dist/docs/assets/{app.fHnNXEJ6.js → app.C2NFTb-h.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.B-FxvuoI.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.Cf6ghfFY.js → VPLocalSearchBox.o1_FJGip.js} +1 -1
- package/dist/docs/assets/chunks/{theme.B_5-VLe8.js → theme.BcGduE7g.js} +2 -2
- package/dist/docs/assets/{guides_github.md.DSg0j9qj.js → guides_github.md.B8QKtIpw.js} +7 -6
- package/dist/docs/assets/{guides_github.md.DSg0j9qj.lean.js → guides_github.md.B8QKtIpw.lean.js} +1 -1
- package/dist/docs/assets/{reference_agent-config.md.XRpxctsA.js → reference_agent-config.md.DHkkvcEZ.js} +4 -4
- package/dist/docs/assets/{reference_agent-config.md.XRpxctsA.lean.js → reference_agent-config.md.DHkkvcEZ.lean.js} +1 -1
- package/dist/docs/assets/{reference_hooks.md.4cbRRIIu.js → reference_hooks.md.DJE5DXcT.js} +1 -1
- package/dist/docs/assets/{storage.md.DcGSnIxX.js → storage.md.CJYd5YmN.js} +2 -2
- package/dist/docs/assets/{storage.md.DcGSnIxX.lean.js → storage.md.CJYd5YmN.lean.js} +1 -1
- package/dist/docs/building-with-agents.html +3 -3
- package/dist/docs/concepts.html +3 -3
- package/dist/docs/deployment.html +3 -3
- package/dist/docs/evals.html +3 -3
- package/dist/docs/example-agents/approval-buddy.html +3 -3
- package/dist/docs/example-agents/benny.html +3 -3
- package/dist/docs/example-agents/bugbot.html +3 -3
- package/dist/docs/example-agents/codebase-wiki.html +3 -3
- package/dist/docs/example-agents/codeowners-review.html +3 -3
- package/dist/docs/example-agents/concierge.html +3 -3
- package/dist/docs/example-agents/fsd.html +3 -3
- package/dist/docs/example-agents/index.html +3 -3
- package/dist/docs/example-agents/knowledge-base.html +3 -3
- package/dist/docs/example-agents/oncall.html +3 -3
- package/dist/docs/example-agents/security-reviewer.html +3 -3
- package/dist/docs/example-agents/slack-agent.html +3 -3
- package/dist/docs/example-agents/weather-agent.html +3 -3
- package/dist/docs/guides/agent-to-agent.html +3 -3
- package/dist/docs/guides/cloud-runtime.html +3 -3
- package/dist/docs/guides/github.html +10 -9
- package/dist/docs/guides/human-in-the-loop.html +3 -3
- package/dist/docs/guides/mcp-oauth.html +3 -3
- package/dist/docs/guides/opentelemetry.html +3 -3
- package/dist/docs/guides/slack.html +3 -3
- package/dist/docs/guides/webhooks.html +3 -3
- package/dist/docs/hashmap.json +1 -1
- package/dist/docs/hillclimbing.html +3 -3
- package/dist/docs/index.html +3 -3
- package/dist/docs/quickstart.html +3 -3
- package/dist/docs/reference/agent-config.html +6 -6
- package/dist/docs/reference/artifacts.html +3 -3
- package/dist/docs/reference/channels.html +3 -3
- package/dist/docs/reference/cli.html +3 -3
- package/dist/docs/reference/connections.html +3 -3
- package/dist/docs/reference/hooks.html +5 -5
- package/dist/docs/reference/http-api.html +3 -3
- package/dist/docs/reference/instructions.html +3 -3
- package/dist/docs/reference/playground.html +3 -3
- package/dist/docs/reference/project-layout.html +3 -3
- package/dist/docs/reference/prompt.html +3 -3
- package/dist/docs/reference/schedules.html +3 -3
- package/dist/docs/reference/sessions.html +3 -3
- package/dist/docs/reference/skills.html +3 -3
- package/dist/docs/reference/subagents.html +3 -3
- package/dist/docs/reference/tools.html +3 -3
- package/dist/docs/scaffolding-agents.html +3 -3
- package/dist/docs/storage.html +5 -5
- package/dist/docs/templates/triage.html +3 -3
- package/dist/docs/troubleshooting.html +3 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/internal/auth.d.ts +4 -0
- package/dist/internal/auth.d.ts.map +1 -1
- package/dist/internal/auth.js +7 -0
- package/dist/internal/durable-session-store.d.ts +35 -23
- package/dist/internal/durable-session-store.d.ts.map +1 -1
- package/dist/internal/durable-session-store.js +71 -26
- package/dist/internal/ledger-serving.d.ts +135 -67
- package/dist/internal/ledger-serving.d.ts.map +1 -1
- package/dist/internal/ledger-serving.js +326 -107
- package/dist/internal/server.d.ts.map +1 -1
- package/dist/internal/server.js +2 -2
- package/dist/internal/session-engine.d.ts +18 -17
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +60 -27
- package/dist/kv/memory-kv.d.ts +8 -0
- package/dist/kv/memory-kv.d.ts.map +1 -1
- package/dist/kv/memory-kv.js +8 -0
- package/dist/ledger/janitor.d.ts +60 -0
- package/dist/ledger/janitor.d.ts.map +1 -0
- package/dist/ledger/janitor.js +137 -0
- package/dist/ledger/session-ledger.d.ts +132 -43
- package/dist/ledger/session-ledger.d.ts.map +1 -1
- package/dist/ledger/session-ledger.js +282 -50
- package/dist/ledger.d.ts +9 -8
- package/dist/ledger.d.ts.map +1 -1
- package/dist/ledger.js +7 -7
- package/dist/playground/assets/{index-Dces8BDp.js → index-6wW6SAc4.js} +32 -32
- package/dist/playground/assets/index-CSRYDAFw.css +1 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage-backends/cursor-hosted.d.ts +5 -0
- package/dist/storage-backends/cursor-hosted.d.ts.map +1 -1
- package/dist/storage-backends/cursor-hosted.js +6 -0
- package/dist/types.d.ts +19 -8
- package/dist/types.d.ts.map +1 -1
- package/docs/guides/github.md +23 -18
- package/docs/reference/agent-config.md +31 -36
- package/docs/reference/hooks.md +1 -1
- package/docs/storage.md +26 -9
- package/package.json +1 -1
- package/src/channels/github/api.ts +122 -0
- package/src/channels/github/cursor-account.ts +23 -0
- package/src/channels/github/defaults.ts +1 -1
- package/src/channels/github/github-channel.ts +5 -1
- package/src/channels/github/progress.ts +84 -19
- package/src/channels/github/state.ts +14 -0
- package/src/channels/github/types.ts +3 -3
- package/src/index.ts +1 -0
- package/src/internal/auth.ts +10 -0
- package/src/internal/durable-session-store.ts +66 -27
- package/src/internal/ledger-serving.ts +439 -148
- package/src/internal/server.ts +6 -2
- package/src/internal/session-engine.ts +95 -37
- package/src/kv/memory-kv.ts +8 -0
- package/src/ledger/janitor.ts +193 -0
- package/src/ledger/session-ledger.ts +372 -68
- package/src/ledger.ts +21 -6
- package/src/storage-backends/cursor-hosted.ts +17 -2
- package/src/types.ts +19 -8
- package/dist/docs/assets/chunks/@localSearchIndexroot.BMT0xM4I.js +0 -1
- package/dist/playground/assets/index-CZH9EFvO.css +0 -1
- /package/dist/docs/assets/{reference_hooks.md.4cbRRIIu.lean.js → reference_hooks.md.DJE5DXcT.lean.js} +0 -0
|
@@ -1,100 +1,168 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Ledger-mode serving seam (`serving: "ledger"` on `defineAgent`):
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* it completes, so cross-pod mutual exclusion, generation fencing, and
|
|
6
|
-
* the committed head sequence are real.
|
|
2
|
+
* Ledger-mode serving seam (`serving: "ledger"` on `defineAgent`): an event
|
|
3
|
+
* pump that routes every engine `send` through the KV session ledger
|
|
4
|
+
* instead of starting turns directly.
|
|
7
5
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
6
|
+
* Delivery: ensureSession (continuation key, as today) → principal gate
|
|
7
|
+
* (an existing session rejects a sender that is not its principal BEFORE
|
|
8
|
+
* anything is parked; mirrors the resident `samePrincipal` check) →
|
|
9
|
+
* appendEvent (payload + CAS — the source ack point moves after this) →
|
|
10
|
+
* claim → drain → run the drained turns through the resident engine path →
|
|
11
|
+
* commit (heartbeats while turns run) → repeat while the commit reports
|
|
12
|
+
* pending. A deliver that finds the lease held walks away (the holder's
|
|
13
|
+
* commit sees the append); the janitor recovers sessions whose holder
|
|
14
|
+
* died. A foreign-principal envelope that reaches the mailbox anyway is
|
|
15
|
+
* consumed and committed away at drain (warn log), never replayed.
|
|
17
16
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
17
|
+
* v1 scope: the mailbox envelope carries `message`, `auth`, `title`,
|
|
18
|
+
* `state`, `mode`, `purpose`, and the isolation-relevant per-send
|
|
19
|
+
* overrides `workspaceDir` and `cloud` — the two options
|
|
20
|
+
* `resolveSessionRuntime` and harness-cwd selection read. Dropping
|
|
21
|
+
* those is a sandbox escape, not a feature gap: without them a drained
|
|
22
|
+
* GitHub/Slack turn falls back to the local runtime with the default
|
|
23
|
+
* harness cwd, so untrusted channel content drives tools on the serve
|
|
24
|
+
* host instead of the cloud VM / channel worktree. `coalesceSourceTs`
|
|
25
|
+
* (when present) is used as the drain-ordering `sourceTs`. Deferred
|
|
26
|
+
* (documented, not silently faked — deliver logs a warning naming what
|
|
27
|
+
* it dropped): `workspaceFiles` and per-turn `images` (content
|
|
28
|
+
* injection, and their base64 payloads can blow the mailbox blob past
|
|
29
|
+
* hosted KV value caps), `sdkAgentId` seeding, and `admission`
|
|
30
|
+
* semantics (both `"preempt"` and Slack `"coalesce"` nudge bookkeeping
|
|
31
|
+
* — ledger draining already serializes turns, but nothing is
|
|
32
|
+
* interrupted or coalesced through the mailbox).
|
|
22
33
|
*/
|
|
23
34
|
import type { SessionLedger } from "../ledger/session-ledger.js";
|
|
24
|
-
import type { ChannelSession, SendMessageOptions } from "../types.js";
|
|
25
|
-
/**
|
|
26
|
-
export
|
|
27
|
-
/**
|
|
28
|
-
* Give up waiting for the lease after this long — two full lease TTLs,
|
|
29
|
-
* so a dead holder's expiry (~30s) is always survived with margin.
|
|
30
|
-
*/
|
|
31
|
-
export declare const CLAIM_WAIT_TIMEOUT_MS: number;
|
|
32
|
-
/** The `send` options a ledger delivery carries to the resident turn. */
|
|
33
|
-
export type LedgerDeliverOptions = SendMessageOptions & {
|
|
34
|
-
mode?: "chat" | "task";
|
|
35
|
-
};
|
|
36
|
-
/** One delivery handed back to the engine's resident path. */
|
|
37
|
-
export interface LedgerTurnRequest {
|
|
35
|
+
import type { AgentCloudOptions, AuthContext, ChannelSession, JsonValue, SendMessageOptions, SessionPurpose } from "../types.js";
|
|
36
|
+
/** The JSON payload stored in `mailbox/<sessionId>/<eventId>`. */
|
|
37
|
+
export interface LedgerDeliveryEnvelope {
|
|
38
38
|
channelId: string;
|
|
39
39
|
continuationToken: string;
|
|
40
40
|
message: string;
|
|
41
|
-
|
|
41
|
+
auth: AuthContext | null;
|
|
42
|
+
title?: string;
|
|
43
|
+
state?: JsonValue;
|
|
44
|
+
mode?: "chat" | "task";
|
|
45
|
+
purpose?: SessionPurpose;
|
|
46
|
+
/**
|
|
47
|
+
* Isolation-relevant per-send overrides, reapplied on the resident
|
|
48
|
+
* send at drain. Absent on envelopes parked by earlier builds — the
|
|
49
|
+
* drain then behaves as those builds did (agent-default runtime/cwd).
|
|
50
|
+
*/
|
|
51
|
+
workspaceDir?: string;
|
|
52
|
+
cloud?: AgentCloudOptions;
|
|
42
53
|
}
|
|
54
|
+
/** The `send` options the envelope can carry through the mailbox. */
|
|
55
|
+
export type LedgerDeliverOptions = SendMessageOptions & {
|
|
56
|
+
mode?: "chat" | "task";
|
|
57
|
+
};
|
|
43
58
|
export interface LedgerServingOptions {
|
|
44
59
|
ledger: SessionLedger;
|
|
45
60
|
/**
|
|
46
|
-
* Run one
|
|
47
|
-
* the internal
|
|
48
|
-
* admitted; the pump awaits `waitForCompletion` itself.
|
|
61
|
+
* Run one drained event as a resident-path turn (the engine's `send`
|
|
62
|
+
* with the internal `fromLedgerPump` flag). Must resolve once the turn
|
|
63
|
+
* is admitted; the pump awaits `waitForCompletion` itself.
|
|
49
64
|
*/
|
|
50
|
-
deliverTurn: (
|
|
65
|
+
deliverTurn: (envelope: LedgerDeliveryEnvelope) => Promise<ChannelSession>;
|
|
66
|
+
/** Engine continuation lookup (local index + lazy storage restore). */
|
|
67
|
+
findSession: (channelId: string, continuationToken: string) => Promise<ChannelSession | undefined>;
|
|
51
68
|
logger?: (line: string) => void;
|
|
52
|
-
/** Lease heartbeat cadence while
|
|
69
|
+
/** Lease heartbeat cadence while turns run (default 10s). */
|
|
53
70
|
heartbeatIntervalMs?: number;
|
|
54
|
-
/**
|
|
55
|
-
|
|
56
|
-
/** Give-up bound for lease waiting (default 2× lease TTL). */
|
|
57
|
-
claimWaitTimeoutMs?: number;
|
|
71
|
+
/** Janitor scan cadence (default `DEFAULT_JANITOR_INTERVAL_MS`). */
|
|
72
|
+
janitorIntervalMs?: number;
|
|
58
73
|
clock?: () => number;
|
|
59
|
-
/** Injectable wait (tests use short real delays; keep them tiny). */
|
|
60
|
-
sleep?: (ms: number) => Promise<void>;
|
|
61
74
|
}
|
|
62
75
|
export declare class LedgerServing {
|
|
63
76
|
private readonly ledger;
|
|
64
77
|
private readonly deliverTurn;
|
|
78
|
+
private readonly findSession;
|
|
65
79
|
private readonly logger;
|
|
66
80
|
private readonly heartbeatIntervalMs;
|
|
67
|
-
private readonly claimRetryDelayMs;
|
|
68
|
-
private readonly claimWaitTimeoutMs;
|
|
69
81
|
private readonly clock;
|
|
70
|
-
private readonly
|
|
71
|
-
/**
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
private readonly chains;
|
|
82
|
+
private readonly janitor;
|
|
83
|
+
/** One pump per ledger session — the in-process face of the lease. */
|
|
84
|
+
private readonly pumps;
|
|
85
|
+
/** Fire-and-forget re-pump checks, awaited on close. */
|
|
86
|
+
private readonly background;
|
|
76
87
|
constructor(options: LedgerServingOptions);
|
|
77
|
-
/**
|
|
88
|
+
/** Start the janitor loop (recovers expired-lease sessions). */
|
|
89
|
+
start(): void;
|
|
90
|
+
/** Stop the janitor and settle in-flight pumps and re-pump checks. */
|
|
78
91
|
close(): Promise<void>;
|
|
79
92
|
/**
|
|
80
|
-
* Ledger-mode `send`:
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
93
|
+
* Ledger-mode `send`: append the message to the session mailbox, then
|
|
94
|
+
* serve pending events (or walk away if another holder is already
|
|
95
|
+
* serving them). Resolves with the engine session handle once one
|
|
96
|
+
* exists — the ack point is the durable append, not turn completion —
|
|
97
|
+
* so HTTP create/follow-up can return a session id while the holder is
|
|
98
|
+
* still in flight. When this process wins the claim, the pump keeps
|
|
99
|
+
* draining in the background; callers that need the turn to finish use
|
|
100
|
+
* `waitForCompletion` (and the lease releases on the pump's commit).
|
|
101
|
+
* When another holder is serving the session and no engine session
|
|
102
|
+
* exists on this pod, the delivery is still a success — the event is
|
|
103
|
+
* durably parked and the holder's commit (or the janitor) drains it —
|
|
104
|
+
* so the resolved handle is a parked stand-in carrying the durable
|
|
105
|
+
* session identity.
|
|
84
106
|
*/
|
|
85
107
|
deliver(channelId: string, message: string, options: LedgerDeliverOptions): Promise<ChannelSession>;
|
|
86
|
-
/** Chain a delivery behind the session's in-flight ones. */
|
|
87
|
-
private enqueue;
|
|
88
|
-
/** claim (waiting) → resident turn → commit-release. */
|
|
89
|
-
private serveOne;
|
|
90
108
|
/**
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
109
|
+
* The stand-in handle for a delivery whose event is parked while
|
|
110
|
+
* another holder serves the session: real durable identity, no local
|
|
111
|
+
* turn. `waitForCompletion` resolves immediately — the parked event's
|
|
112
|
+
* turn runs on the holder, so there is nothing local to await (the
|
|
113
|
+
* same contract as a coalesced send, whose outcome is not its own
|
|
114
|
+
* message's turn). The event stream and re-keying live wherever the
|
|
115
|
+
* turn runs, so both fail loudly here.
|
|
116
|
+
*/
|
|
117
|
+
private parkedSession;
|
|
118
|
+
/**
|
|
119
|
+
* Return a handle as soon as the engine session exists, without waiting
|
|
120
|
+
* for the pump to commit. If the pump settles without creating a
|
|
121
|
+
* session (walk-away, or a throw before admit), surface that: rethrow
|
|
122
|
+
* a failed claimant turn, otherwise the parked stand-in.
|
|
123
|
+
*/
|
|
124
|
+
private resolveDeliverHandle;
|
|
125
|
+
/**
|
|
126
|
+
* Drain ordering: prefer the real source time over this pod's receipt
|
|
127
|
+
* time. `coalesceSourceTs` is a Slack-style seconds string
|
|
128
|
+
* (`"1712345678.000100"`); normalize sub-epoch-ms values to ms so they
|
|
129
|
+
* stay comparable with the `Date.now()` fallback.
|
|
130
|
+
*/
|
|
131
|
+
private resolveSourceTs;
|
|
132
|
+
/**
|
|
133
|
+
* One warning per delivery naming the send options the mailbox does not
|
|
134
|
+
* replay — better a loud line than an author silently losing images or
|
|
135
|
+
* admission semantics on a ledger-mode agent.
|
|
136
|
+
*/
|
|
137
|
+
private warnOnDroppedOptions;
|
|
138
|
+
/**
|
|
139
|
+
* Serve a session's pending events. When a pump is already running the
|
|
140
|
+
* caller walks away (the holder's commit re-reads pending) — except
|
|
141
|
+
* that the holder's *final* commit may have released before this
|
|
142
|
+
* append landed, so a re-check is chained behind it. Deliver never
|
|
143
|
+
* awaits this promise for its full lifetime: awaiting a new pump would
|
|
144
|
+
* block HTTP until the turn committed, and awaiting a running pump
|
|
145
|
+
* would deadlock a send issued from inside one of its turns.
|
|
146
|
+
*/
|
|
147
|
+
private servePending;
|
|
148
|
+
/** Claim-or-defer entry used after an append and after a pump settles. */
|
|
149
|
+
private runPump;
|
|
150
|
+
/** Janitor hand-off: the claim already happened, just run the turns. */
|
|
151
|
+
private serveClaimed;
|
|
152
|
+
/**
|
|
153
|
+
* Re-pump after the previous holder settled, covering the release window
|
|
154
|
+
* where an append landed after that holder's final commit.
|
|
155
|
+
*/
|
|
156
|
+
private repumpIfPending;
|
|
157
|
+
/** Register a pump in the per-session map for its lifetime. */
|
|
158
|
+
private track;
|
|
159
|
+
/**
|
|
160
|
+
* The drain → turn → commit loop for a held lease. Heartbeats extend the
|
|
161
|
+
* lease while turns run; a fenced heartbeat (or fenced commit) means a
|
|
162
|
+
* new holder took over — discard without committing; the new holder
|
|
163
|
+
* re-drains (at-least-once actuation, exactly-once ledger apply).
|
|
96
164
|
*/
|
|
97
|
-
private
|
|
165
|
+
private runClaimedTurns;
|
|
98
166
|
}
|
|
99
167
|
/** Mint the lease holder id for this process. */
|
|
100
168
|
export declare function newLedgerPodId(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger-serving.d.ts","sourceRoot":"","sources":["../../src/internal/ledger-serving.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ledger-serving.d.ts","sourceRoot":"","sources":["../../src/internal/ledger-serving.ts"],"names":[],"mappings":"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"}
|