@cursor/july 0.1.8 → 0.1.9
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/dist/bin/agent-serve.js +0 -0
- package/dist/channels/slack/post-update-delivery.d.ts +85 -0
- package/dist/channels/slack/post-update-delivery.d.ts.map +1 -0
- package/dist/channels/slack/post-update-delivery.js +318 -0
- package/dist/docs/404.html +2 -2
- package/dist/docs/ab.html +3 -3
- package/dist/docs/assets/{app.BP8mAVMW.js → app.Ciosf24M.js} +1 -1
- package/dist/docs/assets/chunks/@localSearchIndexroot.D154Detj.js +1 -0
- package/dist/docs/assets/chunks/{VPLocalSearchBox.1FXIZbz8.js → VPLocalSearchBox.BcRDly7n.js} +1 -1
- package/dist/docs/assets/chunks/{theme.Dm1R02v9.js → theme.CMpbjdfx.js} +2 -2
- package/dist/docs/assets/{deployment.md.BtfEsc9S.js → deployment.md.DC5-ImcM.js} +1 -1
- package/dist/docs/assets/{example-agents_approval-buddy.md.8R5phXb5.js → example-agents_approval-buddy.md.DFGBYLcc.js} +2 -2
- package/dist/docs/assets/{example-agents_approval-buddy.md.8R5phXb5.lean.js → example-agents_approval-buddy.md.DFGBYLcc.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_index.md.CwtWu5ix.js → example-agents_index.md.BPXjUtRB.js} +2 -2
- package/dist/docs/assets/{example-agents_index.md.CwtWu5ix.lean.js → example-agents_index.md.BPXjUtRB.lean.js} +1 -1
- package/dist/docs/assets/{example-agents_security-reviewer.md.D2rtwDTO.js → example-agents_security-reviewer.md.CE9v-aKm.js} +2 -2
- package/dist/docs/assets/{example-agents_security-reviewer.md.D2rtwDTO.lean.js → example-agents_security-reviewer.md.CE9v-aKm.lean.js} +1 -1
- package/dist/docs/assets/{storage.md.Cu3MwM2a.js → storage.md.DRTdnFvd.js} +7 -1
- package/dist/docs/assets/{storage.md.Cu3MwM2a.lean.js → storage.md.DRTdnFvd.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 +5 -5
- package/dist/docs/evals.html +3 -3
- package/dist/docs/example-agents/approval-buddy.html +5 -5
- 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 +5 -5
- 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 +6 -6
- 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 +3 -3
- package/dist/docs/guides/human-in-the-loop.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 +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 +3 -3
- 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/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 +11 -5
- package/dist/docs/troubleshooting.html +3 -3
- package/dist/internal/cli-deploy.d.ts.map +1 -1
- package/dist/internal/cli-deploy.js +45 -18
- package/dist/internal/deploy-client.d.ts +7 -1
- package/dist/internal/deploy-client.d.ts.map +1 -1
- package/dist/internal/deploy-client.js +3 -0
- package/dist/internal/deploy-source.d.ts +3 -0
- package/dist/internal/deploy-source.d.ts.map +1 -1
- package/dist/internal/deploy-source.js +25 -7
- package/dist/internal/discovery.js +1 -1
- package/dist/internal/distribution.d.ts.map +1 -1
- package/dist/internal/distribution.js +1 -0
- package/dist/internal/hosting.d.ts +12 -2
- package/dist/internal/hosting.d.ts.map +1 -1
- package/dist/internal/hosting.js +21 -4
- package/dist/internal/json-dir-store.d.ts +32 -0
- package/dist/internal/json-dir-store.d.ts.map +1 -0
- package/dist/internal/json-dir-store.js +100 -0
- package/dist/internal/logs-client.d.ts +16 -2
- package/dist/internal/logs-client.d.ts.map +1 -1
- package/dist/internal/logs-client.js +51 -16
- package/dist/internal/session-engine.d.ts.map +1 -1
- package/dist/internal/session-engine.js +29 -15
- package/dist/internal/workspace.d.ts +19 -0
- package/dist/internal/workspace.d.ts.map +1 -1
- package/dist/internal/workspace.js +47 -13
- package/dist/playground/assets/index-C0-QEG4O.js +86 -0
- package/dist/playground/assets/index-z3JY9O2x.css +1 -0
- package/dist/playground/index.html +2 -2
- package/dist/storage-backends/cursor-hosted.d.ts +65 -0
- package/dist/storage-backends/cursor-hosted.d.ts.map +1 -0
- package/dist/storage-backends/cursor-hosted.js +203 -0
- package/dist/storage-backends/postgres-kv.d.ts +5 -0
- package/dist/storage-backends/postgres-kv.d.ts.map +1 -1
- package/dist/storage-backends/postgres-kv.js +5 -0
- package/docs/.vitepress/cache/deps/package.json +3 -0
- package/docs/deployment.md +7 -3
- package/docs/example-agents/approval-buddy.md +1 -1
- package/docs/example-agents/index.md +1 -1
- package/docs/example-agents/security-reviewer.md +5 -5
- package/docs/storage.md +18 -4
- package/package.json +8 -1
- package/src/internal/cli-deploy.ts +58 -20
- package/src/internal/deploy-client.ts +11 -0
- package/src/internal/deploy-source.ts +24 -6
- package/src/internal/discovery.ts +1 -1
- package/src/internal/distribution.ts +1 -0
- package/src/internal/hosting.ts +24 -4
- package/src/internal/logs-client.ts +67 -21
- package/src/internal/session-engine.ts +28 -11
- package/src/internal/workspace.ts +48 -11
- package/src/storage-backends/cursor-hosted.ts +246 -0
- package/src/storage-backends/postgres-kv.ts +5 -0
- package/dist/docs/assets/chunks/@localSearchIndexroot.DevOabKJ.js +0 -1
- package/dist/playground/assets/index-7GJIUFQj.css +0 -1
- package/dist/playground/assets/index-Bpr4Th4M.js +0 -319
- /package/dist/docs/assets/{deployment.md.BtfEsc9S.lean.js → deployment.md.DC5-ImcM.lean.js} +0 -0
|
@@ -24,7 +24,9 @@ function isAborted(signal) {
|
|
|
24
24
|
const PROGRESS_MESSAGES = {
|
|
25
25
|
queued: "Waiting to start…",
|
|
26
26
|
preparing: "Preparing runtime…",
|
|
27
|
-
|
|
27
|
+
creating: "Creating runtime…",
|
|
28
|
+
building: "Checking out source and installing dependencies…",
|
|
29
|
+
starting: "Starting agent and waiting for health…",
|
|
28
30
|
finalizing: "Finishing deployment…",
|
|
29
31
|
running: "Deployment running",
|
|
30
32
|
failed: "Deploy failed",
|
|
@@ -32,7 +34,12 @@ const PROGRESS_MESSAGES = {
|
|
|
32
34
|
stopped: "Deployment stopped",
|
|
33
35
|
degraded: "Deployment degraded",
|
|
34
36
|
};
|
|
35
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Customer-facing line for the current deploy step. Prefer the live
|
|
39
|
+
* `statusMessage` from the API when present; otherwise the progress
|
|
40
|
+
* vocabulary. Failed/degraded always append sanitized `lastError`.
|
|
41
|
+
*/
|
|
42
|
+
export function progressMessage(progress, lastError, statusMessage) {
|
|
36
43
|
if (progress === "failed") {
|
|
37
44
|
const detail = lastError === null || lastError === undefined || lastError.trim() === ""
|
|
38
45
|
? ""
|
|
@@ -45,6 +52,11 @@ export function progressMessage(progress, lastError) {
|
|
|
45
52
|
: `: ${sanitizeCustomerError(lastError)}`;
|
|
46
53
|
return `Deployment degraded${detail}`;
|
|
47
54
|
}
|
|
55
|
+
if (statusMessage !== null &&
|
|
56
|
+
statusMessage !== undefined &&
|
|
57
|
+
statusMessage.trim() !== "") {
|
|
58
|
+
return statusMessage.trim();
|
|
59
|
+
}
|
|
48
60
|
return PROGRESS_MESSAGES[progress];
|
|
49
61
|
}
|
|
50
62
|
/** Strip obvious hosting internals from error text shown to customers. */
|
|
@@ -56,7 +68,31 @@ export function sanitizeCustomerError(message) {
|
|
|
56
68
|
.replace(/\bcursorvm\.com\b/gi, "host")
|
|
57
69
|
.replace(/\bx-anyrun-[a-z0-9-]+\b/gi, "header")
|
|
58
70
|
.replace(/\bPROVISIONING\b/g, "building")
|
|
59
|
-
.replace(/\bPLANNED\b/g, "preparing")
|
|
71
|
+
.replace(/\bPLANNED\b/g, "preparing")
|
|
72
|
+
.replace(/\bgitCloneCheckout\b/gi, "git clone")
|
|
73
|
+
.replace(/\bgitFetchCheckout\b/gi, "git fetch")
|
|
74
|
+
.replace(/\bgitCheckout:clone\b/gi, "checkout")
|
|
75
|
+
.replace(/\bgitCheckout:fetch\b/gi, "checkout");
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* One-line label for `agentkit deploy` polling (TTY spinner / non-TTY
|
|
79
|
+
* transitions). Uses statusMessage → progress → raw status.
|
|
80
|
+
*/
|
|
81
|
+
export function deployProgressLabel(detail) {
|
|
82
|
+
if (detail.statusMessage !== null &&
|
|
83
|
+
detail.statusMessage !== undefined &&
|
|
84
|
+
detail.statusMessage.trim() !== "") {
|
|
85
|
+
return detail.statusMessage
|
|
86
|
+
.trim()
|
|
87
|
+
.replace(/…$/, "")
|
|
88
|
+
.replace(/\.\.\.$/, "");
|
|
89
|
+
}
|
|
90
|
+
if (detail.progress !== undefined) {
|
|
91
|
+
return PROGRESS_MESSAGES[detail.progress]
|
|
92
|
+
.replace(/…$/, "")
|
|
93
|
+
.replace(/\.\.\.$/, "");
|
|
94
|
+
}
|
|
95
|
+
return detail.status;
|
|
60
96
|
}
|
|
61
97
|
export function fetchLogs(args) {
|
|
62
98
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -139,7 +175,7 @@ function followProdLogs(args) {
|
|
|
139
175
|
// cmdLogs (which wires deploy auth).
|
|
140
176
|
throw new Error("Internal error: deploy progress requires a deployment lookup.");
|
|
141
177
|
}));
|
|
142
|
-
let
|
|
178
|
+
let lastEmittedKey;
|
|
143
179
|
const slugHint = args.slug !== undefined && args.slug !== "" ? args.slug : "";
|
|
144
180
|
if (args.once !== true) {
|
|
145
181
|
const label = slugHint !== "" ? slugHint : "deployment";
|
|
@@ -157,27 +193,27 @@ function followProdLogs(args) {
|
|
|
157
193
|
throw customerDeployLookupError(error);
|
|
158
194
|
}
|
|
159
195
|
const progress = resolveProgress(detail);
|
|
196
|
+
const message = progressMessage(progress, detail.lastError, detail.statusMessage);
|
|
197
|
+
const emitKey = `${progress}\0${message}`;
|
|
160
198
|
if (progress === "failed") {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
lastProgress = progress;
|
|
199
|
+
if (emitKey !== lastEmittedKey) {
|
|
200
|
+
lastEmittedKey = emitKey;
|
|
164
201
|
emitProgress(args.write, args.json === true, progress, message);
|
|
165
202
|
}
|
|
166
203
|
throw new Error(`Deployment "${detail.slug}" failed.`);
|
|
167
204
|
}
|
|
168
205
|
if (progress === "stopped") {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
lastProgress = progress;
|
|
206
|
+
if (emitKey !== lastEmittedKey) {
|
|
207
|
+
lastEmittedKey = emitKey;
|
|
172
208
|
emitProgress(args.write, args.json === true, progress, message);
|
|
173
209
|
}
|
|
174
210
|
throw new Error(`Deployment "${detail.slug}" is stopped.`);
|
|
175
211
|
}
|
|
176
212
|
if (progress === "running" || progress === "degraded") {
|
|
177
213
|
// Hand off to runtime logs. Print degraded once; skip a "running" line.
|
|
178
|
-
if (progress === "degraded" &&
|
|
179
|
-
|
|
180
|
-
emitProgress(args.write, args.json === true, progress,
|
|
214
|
+
if (progress === "degraded" && emitKey !== lastEmittedKey) {
|
|
215
|
+
lastEmittedKey = emitKey;
|
|
216
|
+
emitProgress(args.write, args.json === true, progress, message);
|
|
181
217
|
}
|
|
182
218
|
const runtime = yield resolveRuntime();
|
|
183
219
|
yield followRuntimeLogs({
|
|
@@ -196,9 +232,8 @@ function followProdLogs(args) {
|
|
|
196
232
|
});
|
|
197
233
|
return;
|
|
198
234
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
lastProgress = progress;
|
|
235
|
+
if (emitKey !== lastEmittedKey) {
|
|
236
|
+
lastEmittedKey = emitKey;
|
|
202
237
|
emitProgress(args.write, args.json === true, progress, message);
|
|
203
238
|
}
|
|
204
239
|
if (args.once === true) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-engine.d.ts","sourceRoot":"","sources":["../../src/internal/session-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,OAAO,EACL,mBAAmB,EACnB,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EAEtB,KAAK,cAAc,EAInB,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAG1B,KAAK,eAAe,EACpB,KAAK,YAAY,EAIjB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EAEjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,KAAK,eAAe,EAGpB,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,kBAAkB,CAAC;AAQpE,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-engine.d.ts","sourceRoot":"","sources":["../../src/internal/session-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,12 +46,12 @@ import { createHostPlatforms } from "./host-platforms.js";
|
|
|
46
46
|
import { formatContinuationToken, newContinuationKey, newSessionId, newToolCallId, } from "./ids.js";
|
|
47
47
|
import { validateToolInput } from "./json-schema.js";
|
|
48
48
|
import { McpHost } from "./mcp-host.js";
|
|
49
|
-
import {
|
|
49
|
+
import { buildSessionContextBlock, SCHEDULE_CHANNEL_PREFIX, } from "./prompt-context.js";
|
|
50
50
|
import { assertCloudCanHonorAccountServersFilters } from "./resolved-connections.js";
|
|
51
51
|
import { SessionStore } from "./session-store.js";
|
|
52
52
|
import { StorageCoordinator } from "./storage-coordinator.js";
|
|
53
53
|
import { normalizeToolResult, toolCallErrorMessage } from "./tool-result.js";
|
|
54
|
-
import {
|
|
54
|
+
import { buildAgentsMdContent, isNestedInGitRepo, materializeWorkspace, writeWorkspaceFiles, } from "./workspace.js";
|
|
55
55
|
export const HTTP_CHANNEL_ID = "http";
|
|
56
56
|
export { SCHEDULE_CHANNEL_PREFIX } from "./prompt-context.js";
|
|
57
57
|
export class SessionBusyError extends Error {
|
|
@@ -726,7 +726,15 @@ export class SessionEngine {
|
|
|
726
726
|
return rest;
|
|
727
727
|
});
|
|
728
728
|
}
|
|
729
|
-
|
|
729
|
+
// The harness only loads the scaffolded AGENTS.md when the session
|
|
730
|
+
// workspace is its own project root. With a per-session cwd override
|
|
731
|
+
// (PR worktree) the scaffold lands elsewhere, and a workspace nested
|
|
732
|
+
// inside a git repo re-roots harness rules at that repo — in both
|
|
733
|
+
// cases deliver instructions inline on the first turn instead.
|
|
734
|
+
const instructionsInvisibleToHarness = isFirstTurn &&
|
|
735
|
+
(record.workspaceOverride !== undefined ||
|
|
736
|
+
(yield isNestedInGitRepo(harnessCwd)));
|
|
737
|
+
const request = this.buildTurnRequest(record, agent, turnId, message, isFirstTurn, instructionsInvisibleToHarness, emit, (update) => __awaiter(this, void 0, void 0, function* () {
|
|
730
738
|
mapper.handleUpdate(update);
|
|
731
739
|
// Yield so the HTTP NDJSON writer can flush tool start/result
|
|
732
740
|
// events while sibling parallel tools are still executing.
|
|
@@ -797,9 +805,8 @@ export class SessionEngine {
|
|
|
797
805
|
return Object.assign(Object.assign(Object.assign({}, outcome), (finalResult === undefined ? {} : { result: finalResult })), (finalUsage === undefined ? {} : { usage: finalUsage }));
|
|
798
806
|
});
|
|
799
807
|
}
|
|
800
|
-
buildTurnRequest(record, agent, turnId, prompt, isFirstTurn, emit, onUpdate, signal) {
|
|
801
|
-
var _a, _b
|
|
802
|
-
var _d;
|
|
808
|
+
buildTurnRequest(record, agent, turnId, prompt, isFirstTurn, instructionsInvisibleToHarness, emit, onUpdate, signal) {
|
|
809
|
+
var _a, _b;
|
|
803
810
|
// Per-session cloud attach (channel/tool handoff) forces cloud runtime
|
|
804
811
|
// even when the agent defaults to local for chat server tools.
|
|
805
812
|
const runtime = resolveSessionRuntime({
|
|
@@ -822,15 +829,22 @@ export class SessionEngine {
|
|
|
822
829
|
});
|
|
823
830
|
turnPrompt = `${contextBlock}\n\n${prompt}`;
|
|
824
831
|
}
|
|
825
|
-
if (
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
832
|
+
if (isFirstTurn) {
|
|
833
|
+
if (runtime === "cloud") {
|
|
834
|
+
// Cloud VMs have no materialized workspace: ship the full context,
|
|
835
|
+
// including agent tool script bodies.
|
|
836
|
+
const preamble = buildAgentsMdContent(agent, { includeScripts: true });
|
|
837
|
+
turnPrompt = `${preamble}\n\n${turnPrompt}`;
|
|
838
|
+
}
|
|
839
|
+
else if (instructionsInvisibleToHarness) {
|
|
840
|
+
// Local workspace whose AGENTS.md the harness will not load. With a
|
|
841
|
+
// per-session harness cwd override, agent tool scripts live only in
|
|
842
|
+
// the durable scaffold dir — embed bodies like cloud. Otherwise the
|
|
843
|
+
// catalog can reference on-disk paths under the harness cwd.
|
|
844
|
+
const includeScripts = record.workspaceOverride !== undefined;
|
|
845
|
+
const preamble = buildAgentsMdContent(agent, { includeScripts });
|
|
846
|
+
turnPrompt = `${preamble}\n\n${turnPrompt}`;
|
|
847
|
+
}
|
|
834
848
|
}
|
|
835
849
|
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ sessionId: record.sessionId }, (record.sdkAgentId === undefined
|
|
836
850
|
? {}
|
|
@@ -38,6 +38,25 @@ export declare function withIdentityPreamble(name: string, instructions: string
|
|
|
38
38
|
export declare function buildAgentToolsCatalog(tools: DiscoveredTool[], options?: {
|
|
39
39
|
includeScripts: boolean;
|
|
40
40
|
}): string;
|
|
41
|
+
/**
|
|
42
|
+
* The full AGENTS.md-equivalent context for an agent: instructions, identity
|
|
43
|
+
* section, and the agent-side tool catalog. Written to the session workspace
|
|
44
|
+
* as `AGENTS.md`, and inlined into the first turn's prompt when the harness
|
|
45
|
+
* cannot discover that file (cloud runtime, or a local workspace the harness
|
|
46
|
+
* will not treat as the project root — see {@link isNestedInGitRepo}).
|
|
47
|
+
*/
|
|
48
|
+
export declare function buildAgentsMdContent(agent: ResolvedAgent, options: {
|
|
49
|
+
includeScripts: boolean;
|
|
50
|
+
}): string;
|
|
51
|
+
/**
|
|
52
|
+
* True when `dir` sits strictly inside a git repository (a `.git` exists in
|
|
53
|
+
* an ancestor directory but not in `dir` itself). The Cursor harness resolves
|
|
54
|
+
* its project root by walking up to the nearest git root, so a nested session
|
|
55
|
+
* workspace loses its own `AGENTS.md` / `.cursor` scaffold: the enclosing
|
|
56
|
+
* repo's rules load instead, and the (necessarily gitignored) workspace files
|
|
57
|
+
* are skipped by nested rule discovery.
|
|
58
|
+
*/
|
|
59
|
+
export declare function isNestedInGitRepo(dir: string): Promise<boolean>;
|
|
41
60
|
export declare function materializeWorkspace(options: MaterializeWorkspaceOptions): Promise<void>;
|
|
42
61
|
/**
|
|
43
62
|
* Generate the SKILL.md the harness reads: `name` + `description`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/internal/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACd,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,IAAI,EAAE,OAAO,CAAC;CACf;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,MAAM,GAAG,SAAS,CAapB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,GAAE;IAAE,cAAc,EAAE,OAAO,CAAA;CAA8B,GAC/D,MAAM,CA6CR;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/internal/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACd,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,IAAI,EAAE,OAAO,CAAC;CACf;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,MAAM,GAAG,SAAS,CAapB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,GAAE;IAAE,cAAc,EAAE,OAAO,CAAA;CAA8B,GAC/D,MAAM,CA6CR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE;IAAE,cAAc,EAAE,OAAO,CAAA;CAAE,GACnC,MAAM,CAUR;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAcrE;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAmDD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAO3D;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,OAAO,CAAC,IAAI,CAAC,CAMf"}
|
|
@@ -16,7 +16,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
16
16
|
});
|
|
17
17
|
};
|
|
18
18
|
import { chmod, copyFile, mkdir, stat, writeFile } from "node:fs/promises";
|
|
19
|
-
import { dirname, join, relative, resolve } from "node:path";
|
|
19
|
+
import { dirname, join, parse, relative, resolve } from "node:path";
|
|
20
20
|
import { parseFrontmatter, serializeFrontmatter } from "./frontmatter.js";
|
|
21
21
|
import { buildIdentitySection } from "./prompt-context.js";
|
|
22
22
|
/** Relative path of an agent-side tool script inside the session workspace. */
|
|
@@ -103,22 +103,56 @@ export function buildAgentToolsCatalog(tools, options = { includeScripts: false
|
|
|
103
103
|
}
|
|
104
104
|
return `${parts.join("\n").trimEnd()}\n`;
|
|
105
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* The full AGENTS.md-equivalent context for an agent: instructions, identity
|
|
108
|
+
* section, and the agent-side tool catalog. Written to the session workspace
|
|
109
|
+
* as `AGENTS.md`, and inlined into the first turn's prompt when the harness
|
|
110
|
+
* cannot discover that file (cloud runtime, or a local workspace the harness
|
|
111
|
+
* will not treat as the project root — see {@link isNestedInGitRepo}).
|
|
112
|
+
*/
|
|
113
|
+
export function buildAgentsMdContent(agent, options) {
|
|
114
|
+
var _a;
|
|
115
|
+
var _b;
|
|
116
|
+
return [
|
|
117
|
+
(_b = (_a = agent.instructions) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : "",
|
|
118
|
+
buildIdentitySection(agent),
|
|
119
|
+
buildAgentToolsCatalog(agent.tools, {
|
|
120
|
+
includeScripts: options.includeScripts,
|
|
121
|
+
}),
|
|
122
|
+
]
|
|
123
|
+
.filter((part) => part !== "")
|
|
124
|
+
.join("\n\n");
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* True when `dir` sits strictly inside a git repository (a `.git` exists in
|
|
128
|
+
* an ancestor directory but not in `dir` itself). The Cursor harness resolves
|
|
129
|
+
* its project root by walking up to the nearest git root, so a nested session
|
|
130
|
+
* workspace loses its own `AGENTS.md` / `.cursor` scaffold: the enclosing
|
|
131
|
+
* repo's rules load instead, and the (necessarily gitignored) workspace files
|
|
132
|
+
* are skipped by nested rule discovery.
|
|
133
|
+
*/
|
|
134
|
+
export function isNestedInGitRepo(dir) {
|
|
135
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
136
|
+
let current = resolve(dir);
|
|
137
|
+
if (yield exists(join(current, ".git"))) {
|
|
138
|
+
// The workspace is itself a repo root; the harness roots rules here.
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
const { root } = parse(current);
|
|
142
|
+
while (current !== root) {
|
|
143
|
+
current = dirname(current);
|
|
144
|
+
if (yield exists(join(current, ".git"))) {
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return false;
|
|
149
|
+
});
|
|
150
|
+
}
|
|
106
151
|
export function materializeWorkspace(options) {
|
|
107
152
|
return __awaiter(this, void 0, void 0, function* () {
|
|
108
|
-
var _a;
|
|
109
|
-
var _b;
|
|
110
153
|
const { agent, workspaceDir, seed } = options;
|
|
111
154
|
yield mkdir(workspaceDir, { recursive: true });
|
|
112
|
-
const
|
|
113
|
-
includeScripts: false,
|
|
114
|
-
});
|
|
115
|
-
const agentsMd = [
|
|
116
|
-
(_b = (_a = agent.instructions) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : "",
|
|
117
|
-
buildIdentitySection(agent),
|
|
118
|
-
agentToolsSection,
|
|
119
|
-
]
|
|
120
|
-
.filter((part) => part !== "")
|
|
121
|
-
.join("\n\n");
|
|
155
|
+
const agentsMd = buildAgentsMdContent(agent, { includeScripts: false });
|
|
122
156
|
yield writeFile(join(workspaceDir, "AGENTS.md"), agentsMd, "utf8");
|
|
123
157
|
for (const tool of agent.tools) {
|
|
124
158
|
if (tool.execution !== "agent" || tool.script === undefined) {
|