@lore-co/cli 0.2.13 → 0.2.15

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 (85) hide show
  1. package/README.md +84 -11
  2. package/dist/capture-scope.d.ts +12 -0
  3. package/dist/capture-scope.d.ts.map +1 -0
  4. package/dist/capture-scope.js +45 -0
  5. package/dist/capture-scope.js.map +1 -0
  6. package/dist/cli.d.ts +7 -1
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +118 -36
  9. package/dist/cli.js.map +1 -1
  10. package/dist/command-help.d.ts +2 -1
  11. package/dist/command-help.d.ts.map +1 -1
  12. package/dist/command-help.js +4 -1
  13. package/dist/command-help.js.map +1 -1
  14. package/dist/connect-project.d.ts +15 -0
  15. package/dist/connect-project.d.ts.map +1 -0
  16. package/dist/connect-project.js +87 -0
  17. package/dist/connect-project.js.map +1 -0
  18. package/dist/connections.d.ts +3 -1
  19. package/dist/connections.d.ts.map +1 -1
  20. package/dist/connections.js +6 -1
  21. package/dist/connections.js.map +1 -1
  22. package/dist/devin-cli.d.ts.map +1 -1
  23. package/dist/devin-cli.js +14 -6
  24. package/dist/devin-cli.js.map +1 -1
  25. package/dist/devin.d.ts.map +1 -1
  26. package/dist/devin.js +5 -2
  27. package/dist/devin.js.map +1 -1
  28. package/dist/generated-assets.d.ts +7 -6
  29. package/dist/generated-assets.d.ts.map +1 -1
  30. package/dist/generated-assets.js +6 -5
  31. package/dist/generated-assets.js.map +1 -1
  32. package/dist/host.d.ts.map +1 -1
  33. package/dist/host.js +5 -5
  34. package/dist/host.js.map +1 -1
  35. package/dist/recovery-cloud.js +1 -1
  36. package/dist/recovery-cloud.js.map +1 -1
  37. package/dist/recovery-remote.d.ts +1 -1
  38. package/dist/recovery-remote.d.ts.map +1 -1
  39. package/dist/recovery-remote.js +4 -2
  40. package/dist/recovery-remote.js.map +1 -1
  41. package/dist/recovery-state.d.ts.map +1 -1
  42. package/dist/recovery-state.js +5 -0
  43. package/dist/recovery-state.js.map +1 -1
  44. package/dist/recovery.d.ts.map +1 -1
  45. package/dist/recovery.js +3 -3
  46. package/dist/recovery.js.map +1 -1
  47. package/dist/reliability-store.d.ts.map +1 -1
  48. package/dist/reliability-store.js +4 -1
  49. package/dist/reliability-store.js.map +1 -1
  50. package/dist/remember.d.ts.map +1 -1
  51. package/dist/remember.js +8 -1
  52. package/dist/remember.js.map +1 -1
  53. package/dist/retrieval-task.d.ts +20 -0
  54. package/dist/retrieval-task.d.ts.map +1 -0
  55. package/dist/retrieval-task.js +78 -0
  56. package/dist/retrieval-task.js.map +1 -0
  57. package/dist/runtime-redaction.d.ts +2 -0
  58. package/dist/runtime-redaction.d.ts.map +1 -0
  59. package/dist/runtime-redaction.js +69 -0
  60. package/dist/runtime-redaction.js.map +1 -0
  61. package/dist/runtime.d.ts +2 -2
  62. package/dist/runtime.d.ts.map +1 -1
  63. package/dist/runtime.js +45 -70
  64. package/dist/runtime.js.map +1 -1
  65. package/dist/self-host.d.ts +2 -1
  66. package/dist/self-host.d.ts.map +1 -1
  67. package/dist/self-host.js +6 -4
  68. package/dist/self-host.js.map +1 -1
  69. package/dist/signed-snapshot.d.ts.map +1 -1
  70. package/dist/signed-snapshot.js +2 -0
  71. package/dist/signed-snapshot.js.map +1 -1
  72. package/dist/skill-command.d.ts +20 -0
  73. package/dist/skill-command.d.ts.map +1 -0
  74. package/dist/skill-command.js +215 -0
  75. package/dist/skill-command.js.map +1 -0
  76. package/dist/skill-guidance.d.ts +2 -0
  77. package/dist/skill-guidance.d.ts.map +1 -0
  78. package/dist/skill-guidance.js +7 -0
  79. package/dist/skill-guidance.js.map +1 -0
  80. package/dist/skills.d.ts +16 -0
  81. package/dist/skills.d.ts.map +1 -0
  82. package/dist/skills.js +126 -0
  83. package/dist/skills.js.map +1 -0
  84. package/dist/update.js +3 -3
  85. package/package.json +7 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-redaction.js","sourceRoot":"","sources":["../src/runtime-redaction.ts"],"names":[],"mappings":"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"}
package/dist/runtime.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export { redactSecrets } from "./runtime-redaction.js";
1
2
  export declare const COMMAND_HOOK_AGENT_NAMES: readonly ["codex", "claude", "copilot-cli", "copilot-vscode", "cursor", "polytoken"];
2
3
  export type CommandHookAgentName = (typeof COMMAND_HOOK_AGENT_NAMES)[number];
3
4
  /** @deprecated Use CommandHookAgentName for native command-hook integrations. */
@@ -17,6 +18,7 @@ export interface TurnRequest {
17
18
  agent: CommandHookAgentName;
18
19
  sessionId: string;
19
20
  retainedReceiptIds?: string[];
21
+ task?: string;
20
22
  previousAssistant: {
21
23
  content: string;
22
24
  id?: string;
@@ -115,7 +117,6 @@ export interface LineageMetadata {
115
117
  * be attributed to the machine that produced them.
116
118
  */
117
119
  export declare function readLineageMetadata(home?: string, environment?: NodeJS.ProcessEnv): Promise<LineageMetadata>;
118
- export declare function redactSecrets(text: string): string;
119
120
  export declare function createTurnRequest(input: HookInput, agent: CommandHookAgentName, pending: PendingAssistantMessage, now: Date, lineage?: LineageMetadata): Promise<TurnRequest | null>;
120
121
  interface GuardTrigger {
121
122
  action: "edit" | "commit" | "deploy" | "command";
@@ -133,5 +134,4 @@ export declare function handleHookEvent(value: unknown, agent: CommandHookAgentN
133
134
  export declare function getCursorContext(sessionId: string, prompt: string, options?: HookRuntimeOptions): Promise<string>;
134
135
  export declare function completeCursorResponse(sessionId: string, response: string, options?: HookRuntimeOptions): Promise<void>;
135
136
  export declare function runHook(args?: readonly string[]): Promise<void>;
136
- export {};
137
137
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/dist/runtime.js CHANGED
@@ -1,6 +1,10 @@
1
+ import { redactSecrets } from "./runtime-redaction.js";
2
+ export { redactSecrets } from "./runtime-redaction.js";
1
3
  import { createHash, randomUUID } from "node:crypto";
2
4
  import { approachGuidance } from "./approach-guidance.js";
5
+ import { skillGuidance } from "./skill-guidance.js";
3
6
  import { retainedContextTexts, retainedReceiptIds, rememberDeliveredContext } from "./retained-context.js";
7
+ import { clearRetrievalTask, resolveRetrievalTask } from "./retrieval-task.js";
4
8
  import { access, chmod, mkdir, readFile, stat, } from "node:fs/promises";
5
9
  import { constants as fsConstants, realpathSync } from "node:fs";
6
10
  import { execFile as execFileCallback } from "node:child_process";
@@ -8,7 +12,7 @@ import { dirname, parse, relative, resolve } from "node:path";
8
12
  import { homedir } from "node:os";
9
13
  import { fileURLToPath, pathToFileURL } from "node:url";
10
14
  import { promisify } from "node:util";
11
- import { boundedUtf8Text, repositoryScopeFromGitRoot, } from "./repository.js";
15
+ import { boundedUtf8Text, defaultGitPushBranches, repositoryScopeFromGitRoot, } from "./repository.js";
12
16
  import { ReliabilityStore, ReliabilityStoreError, atomicWriteJson as durableAtomicWriteJson, classifyRetryFailure, createIntegrationInvocationAttempt, durableUnlink, recordLocalGuardMetric, recordLocalRetrievalMetric, } from "./reliability-store.js";
13
17
  import { writeInvocationAttemptBounded, writeInvocationCompletionBounded, } from "./invocation-health-writer.js";
14
18
  import { SignedSnapshotError, verifySignedSnapshot, } from "./signed-snapshot.js";
@@ -58,24 +62,6 @@ const RELIABILITY_REASON_CODES = new Set([
58
62
  "invalid_response",
59
63
  "integration_unsupported",
60
64
  ]);
61
- const NON_SECRET_TOKEN_VALUES = new Set([
62
- "available",
63
- "configured",
64
- "generated",
65
- "optional",
66
- "placeholder",
67
- "redacted",
68
- "required",
69
- "undefined",
70
- ]);
71
- function redactedCredential(value) {
72
- // Preserve markers from earlier token rules and repeated redaction passes.
73
- if (/^\[REDACTED(?::[A-Z_]+|_[A-Z_]+)?\][.,!?]*$/u.test(value)) {
74
- return value;
75
- }
76
- const trailing = /[.,!?]+$/u.exec(value)?.[0] ?? "";
77
- return `[REDACTED:CREDENTIAL]${trailing}`;
78
- }
79
65
  const execFile = promisify(execFileCallback);
80
66
  function homeDirectory(override) {
81
67
  return override ?? process.env.LORE_HOME ?? process.env.HOME ?? homedir();
@@ -339,52 +325,6 @@ function deterministicUuid(value) {
339
325
  joined.slice(20, 32),
340
326
  ].join("-");
341
327
  }
342
- // This standalone runtime cannot import @lore-co/core after it is copied to
343
- // ~/.lore. Keep these rules aligned with core/redaction.ts through parity tests.
344
- // Match invisible characters inside tokens without changing ordinary text;
345
- // real whitespace still separates token bodies and adjacent lines.
346
- const TOKEN_GAP = "(?:\\p{Cf}|(?!\\s)\\p{Cc})*";
347
- const tokenPrefix = (prefix) => Array.from(prefix, (character) => character.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&")).join(TOKEN_GAP);
348
- const tokenBody = (characters, minimum, maximum) => `${characters}(?:${TOKEN_GAP}${characters}){${minimum - 1},${maximum === undefined ? "" : maximum - 1}}`;
349
- const providerToken = (prefix, characters, minimum, maximum) => tokenPrefix(prefix) + TOKEN_GAP + tokenBody(characters, minimum, maximum);
350
- const AUTHORIZATION_TOKEN_PATTERN = new RegExp(`\\b(${tokenPrefix("Bearer")}|${tokenPrefix("Basic")})[\\s\\p{Cc}\\p{Cf}]+${tokenBody("[A-Za-z0-9._~+/=-]", 8)}`, "giu");
351
- const JWT_TOKEN_PATTERN = new RegExp(`\\b${tokenPrefix("eyJ")}${TOKEN_GAP}${tokenBody("[A-Za-z0-9_-]", 8)}(?:${TOKEN_GAP}\\.${TOKEN_GAP}${tokenBody("[A-Za-z0-9_-]", 8)}){2}\\b`, "gu");
352
- const PROVIDER_TOKEN_PATTERN = new RegExp(`\\b(?:${[
353
- ...["sk-", "glpat-", "npm_", "pypi-"].map((prefix) => providerToken(prefix, "[A-Za-z0-9_-]", 16)),
354
- ...["sk_live_", "sk_test_", "rk_live_", "rk_test_", "whsec_"].map((prefix) => providerToken(prefix, "[A-Za-z0-9]", 16)),
355
- ...["ghp_", "gho_", "ghu_", "ghs_", "ghr_", "github_pat_"].map((prefix) => providerToken(prefix, "[A-Za-z0-9_]", 20)),
356
- ...["xoxb-", "xoxa-", "xoxp-", "xoxr-", "xoxs-"].map((prefix) => providerToken(prefix, "[A-Za-z0-9-]", 10)),
357
- providerToken("AIza", "[A-Za-z0-9_-]", 20),
358
- providerToken("AKIA", "[0-9A-Z]", 16, 16),
359
- ].join("|")})\\b`, "gu");
360
- export function redactSecrets(text) {
361
- return text
362
- .replace(/-----BEGIN (?:RSA |EC |OPENSSH |DSA |ENCRYPTED )?PRIVATE KEY-----[\s\S]*?-----END (?:RSA |EC |OPENSSH |DSA |ENCRYPTED )?PRIVATE KEY-----/gu, "[REDACTED:PRIVATE_KEY]")
363
- .replace(AUTHORIZATION_TOKEN_PATTERN, (_match, scheme) => `${scheme.replace(/[\p{Cc}\p{Cf}]/gu, "")} [REDACTED:AUTHORIZATION]`)
364
- .replace(/\b((?:postgres(?:ql)?|mysql|mariadb|mongodb(?:\+srv)?|redis|amqps?):\/\/[^:\s/@]+:)[^@\s/]+@/giu, (_match, prefix) => `${prefix}[REDACTED:PASSWORD]@`)
365
- .replace(JWT_TOKEN_PATTERN, "[REDACTED:JWT]")
366
- .replace(PROVIDER_TOKEN_PATTERN, "[REDACTED:API_KEY]")
367
- .replace(/(["']?)\b((?:(?:[A-Za-z][A-Za-z0-9]*[_-])*(?:api[_-]?key|access[_-]?token|auth[_-]?token|client[_-]?secret|private[_-]?key|connection[_-]?(?:string|url)|database[_-]?url|token|secret|password|passwd|credential)|[A-Za-z][A-Za-z0-9]*(?:token|secret|password|passwd|credential|apiKey|privateKey|connectionString|databaseUrl)))\b\1(\s*[:=]\s*)(["']?)([^\s,"'};]{4,})\4/giu, (_match, keyQuote, name, separator, valueQuote, value) => `${keyQuote}${name}${keyQuote}${separator}${valueQuote}${redactedCredential(value)}${valueQuote}`)
368
- .replace(/(["']?)\b(api[ _-]?key|access[ _-]?token|auth[ _-]?token|client[ _-]?secret|private[ _-]?key|verification[ _-]?token|password|passwd|secret|credential)\b\1(\s+(?:is|was|equals?)\s+)(["']?)([^\s,"'};]{4,})\4/giu, (_match, keyQuote, name, separator, valueQuote, value) => `${keyQuote}${name}${keyQuote}${separator}${valueQuote}${redactedCredential(value)}${valueQuote}`)
369
- .replace(/\b(token|credential)\b(\s+(?:is|was|equals?)\s+)(["']?)([^\s,"'};]{8,})\3/giu, (match, name, separator, valueQuote, value) => {
370
- const normalized = value
371
- .replace(/^["']|["']$/gu, "")
372
- .replace(/[.,!?]+$/gu, "");
373
- const knownPlaceholder = NON_SECRET_TOKEN_VALUES.has(normalized.toLowerCase());
374
- const classes = [
375
- /[a-z]/u,
376
- /[A-Z]/u,
377
- /[0-9]/u,
378
- /[^A-Za-z0-9]/u,
379
- ].filter((pattern) => pattern.test(normalized)).length;
380
- return !knownPlaceholder &&
381
- (normalized.length >= 16 ||
382
- (normalized.length >= 10 && classes >= 2))
383
- ? `${name}${separator}${valueQuote}${redactedCredential(value)}${valueQuote}`
384
- : match;
385
- })
386
- .replace(/\b((?:set-)?cookie\s*:\s*)[^\r\n]+/giu, (_match, prefix) => `${prefix}[REDACTED:AUTHORIZATION]`);
387
- }
388
328
  async function atomicWriteJson(path, value) {
389
329
  await mkdir(dirname(path), { recursive: true, mode: 0o700 });
390
330
  await chmod(dirname(path), 0o700);
@@ -839,6 +779,10 @@ function deliveryFromResponse(value) {
839
779
  : memorySummaries(value.memories);
840
780
  return {
841
781
  context: boundedContext(context),
782
+ ...(typeof value.relatedContext === "string" ? { relatedContext: redactSecrets(value.relatedContext).slice(0, 2_500) }
783
+ : isObject(value.context) && typeof value.context.relatedContext === "string" ? { relatedContext: redactSecrets(value.context.relatedContext).slice(0, 2_500) } : {}),
784
+ ...(typeof value.skillContext === "string" && value.skillContext.length <= 72_000 ? { skillContext: redactSecrets(value.skillContext) }
785
+ : isObject(value.context) && typeof value.context.skillContext === "string" && value.context.skillContext.length <= 72_000 ? { skillContext: redactSecrets(value.context.skillContext) } : {}),
842
786
  completeContext: context.length <= MAX_CONTEXT_CHARS,
843
787
  ...(receiptId === undefined ? {} : { receiptId }),
844
788
  learned,
@@ -891,6 +835,8 @@ function deliveryFromSignedContext(payload, expectedRequest) {
891
835
  }
892
836
  return deliveryFromResponse({
893
837
  context: payload.context,
838
+ relatedContext: payload.relatedContext,
839
+ skillContext: payload.skillContext,
894
840
  receipt: { id: payload.receiptId },
895
841
  memories: payload.memories,
896
842
  hits: payload.hits,
@@ -1137,6 +1083,8 @@ async function postTurn(config, request, fetchImplementation, store) {
1137
1083
  const response = await fetchImplementation(turnsUrl(config.apiUrl), {
1138
1084
  method: "POST",
1139
1085
  headers: {
1086
+ "x-lore-context": "related-work-v1",
1087
+ "x-lore-skills": "skills-v1",
1140
1088
  accept: runtimeAccept(config),
1141
1089
  authorization: `Bearer ${config.token}`,
1142
1090
  "content-type": "application/json",
@@ -1202,7 +1150,7 @@ async function postTurn(config, request, fetchImplementation, store) {
1202
1150
  task: {
1203
1151
  agent: request.agent,
1204
1152
  ...(request.scope === undefined ? {} : { scope: request.scope }),
1205
- task: request.currentUser.content.trim(),
1153
+ task: request.task ?? request.currentUser.content.trim(),
1206
1154
  },
1207
1155
  });
1208
1156
  await store
@@ -1284,6 +1232,8 @@ async function getPromptContext(config, agent, sessionId, sourceEventId, prompt,
1284
1232
  const response = await fetchImplementation(contextDeliveriesUrl(config.apiUrl), {
1285
1233
  method: "POST",
1286
1234
  headers: {
1235
+ "x-lore-context": "related-work-v1",
1236
+ "x-lore-skills": "skills-v1",
1287
1237
  accept: runtimeAccept(config),
1288
1238
  authorization: `Bearer ${config.token}`,
1289
1239
  "content-type": "application/json",
@@ -1414,6 +1364,7 @@ async function getCachedPromptContext(config, prompt, gitContext, store, now, re
1414
1364
  }
1415
1365
  return {
1416
1366
  context: retained.includes(String(selected.payload.receiptId)) ? "" : selected.context,
1367
+ skillContext: "Lore is using saved learning context. Enabled skills could not be checked and saved skill instructions have not been reapplied. Reconnect to Lore before relying on skills for this task.",
1417
1368
  learned: [],
1418
1369
  delivered: [],
1419
1370
  reliability: {
@@ -1904,6 +1855,7 @@ async function offlineGuard(config, store, request, now, previouslyEnforced, all
1904
1855
  ...(typeof request.repo === "string" ? { repo: request.repo } : {}),
1905
1856
  ...(typeof request.path === "string" ? { path: request.path } : {}),
1906
1857
  ...(typeof request.command === "string" ? { command: request.command } : {}),
1858
+ ...(Array.isArray(request.defaultPushBranches) ? { defaultPushBranches: request.defaultPushBranches.filter((branch) => typeof branch === "string") } : {}),
1907
1859
  ...(Array.isArray(request.files) ? { files: request.files.filter((file) => typeof file === "string") } : {}),
1908
1860
  }) !== null) : [];
1909
1861
  return {
@@ -1976,6 +1928,12 @@ async function handleGuardEvent(input, agent, config, sessionId, options, now) {
1976
1928
  const startedAt = Date.now();
1977
1929
  let result;
1978
1930
  const guardRequest = {
1931
+ ...await (async () => {
1932
+ const args = isObject(input.tool_input) ? input.tool_input : {};
1933
+ const changesContext = ["cwd", "workdir", "working_directory", "env", "environment"].some(key => args[key] !== undefined);
1934
+ const defaultPushBranches = changesContext ? undefined : await defaultGitPushBranches(trigger.command, cwd);
1935
+ return defaultPushBranches ? { defaultPushBranches } : {};
1936
+ })(),
1979
1937
  connector: "lore-cli",
1980
1938
  agent,
1981
1939
  sessionId,
@@ -2103,6 +2061,9 @@ export async function handleHookEvent(value, agent, options = {}) {
2103
2061
  const access = await checkLoreAccess(stringField(input.cwd), options.home, config, options.fetch ?? globalThis.fetch);
2104
2062
  if (!access.allowed) {
2105
2063
  await clearPending(agent, sessionId, options.home, config.connectionId);
2064
+ await runtimeStore(config, options.home).then(store => clearRetrievalTask(store, {
2065
+ agent, sessionId, connectionKey: credentialReliabilityWorkspaceKey(config),
2066
+ })).catch(() => undefined);
2106
2067
  // A policy outage must not silently bypass an already enforced Guard.
2107
2068
  if (eventName === "PreToolUse" && access.reason === "Workspace repository settings are unavailable") {
2108
2069
  const prior = await readGuardState(agent, sessionId, options.home, config.connectionId).catch(() => null);
@@ -2239,8 +2200,10 @@ async function cursorSession(sessionId, options) {
2239
2200
  throw new Error("Start a new Cursor conversation to register this Lore session.");
2240
2201
  }
2241
2202
  const access = await checkLoreAccess(stringField(state.cwd), options.home, config, options.fetch ?? globalThis.fetch);
2242
- if (!access.allowed)
2203
+ if (!access.allowed) {
2204
+ await clearRetrievalTask(store, { agent: "cursor", sessionId, connectionKey: credentialReliabilityWorkspaceKey(config) }).catch(() => undefined);
2243
2205
  throw new Error(`Lore is off: ${access.reason}.`);
2206
+ }
2244
2207
  return { config, store, state, cwd: stringField(state.cwd) };
2245
2208
  }
2246
2209
  export async function getCursorContext(sessionId, prompt, options = {}) {
@@ -2327,12 +2290,20 @@ async function handlePromptEvent(input, agent, sessionId, config, options, now,
2327
2290
  };
2328
2291
  const lineage = await readLineageMetadata(options.home, options.environment ?? process.env);
2329
2292
  let delivery = emptyDelivery();
2293
+ const retrievalTask = (repo) => resolveRetrievalTask(store, {
2294
+ agent, sessionId, connectionKey: credentialReliabilityWorkspaceKey(config),
2295
+ cwd: stringField(input.cwd), repo,
2296
+ }, prompt, now, pending?.cwd === stringField(input.cwd) && pending
2297
+ ? { content: pending.assistantMessage, capturedAt: pending.capturedAt } : undefined);
2330
2298
  if (pending !== null) {
2331
2299
  let receivedTurnContext = false;
2332
2300
  const request = await createTurnRequest(input, agent, pending, now, lineage);
2333
2301
  if (request === null) {
2334
2302
  return undefined;
2335
2303
  }
2304
+ const task = await retrievalTask(request.scope?.repo);
2305
+ if (task !== request.currentUser.content.trim())
2306
+ request.task = task;
2336
2307
  if (retained.length)
2337
2308
  request.retainedReceiptIds = retained;
2338
2309
  let enqueued = false;
@@ -2370,7 +2341,7 @@ async function handlePromptEvent(input, agent, sessionId, config, options, now,
2370
2341
  }
2371
2342
  if (retrieve && !receivedTurnContext) {
2372
2343
  try {
2373
- delivery = await getPromptContextWithFallback(config, agent, sessionId, request.eventId, prompt, {
2344
+ delivery = await getPromptContextWithFallback(config, agent, sessionId, request.eventId, task, {
2374
2345
  ...(request.scope === undefined ? {} : { scope: request.scope }),
2375
2346
  learningScope: request.learningScope,
2376
2347
  ...(request.diff === undefined ? {} : { diff: request.diff }),
@@ -2399,6 +2370,7 @@ async function handlePromptEvent(input, agent, sessionId, config, options, now,
2399
2370
  }
2400
2371
  else {
2401
2372
  const gitContext = await collectGitContext(stringField(input.cwd));
2373
+ const task = await retrievalTask(gitContext.scope?.repo);
2402
2374
  const observation = createPromptObservationRequest(input, agent, sessionId, now, gitContext, lineage);
2403
2375
  if (observation === null) {
2404
2376
  return undefined;
@@ -2432,7 +2404,7 @@ async function handlePromptEvent(input, agent, sessionId, config, options, now,
2432
2404
  }
2433
2405
  if (retrieve) {
2434
2406
  try {
2435
- delivery = await getPromptContextWithFallback(config, agent, sessionId, observation.eventId, prompt, gitContext, fetchImplementation, store, now, retained);
2407
+ delivery = await getPromptContextWithFallback(config, agent, sessionId, observation.eventId, task, gitContext, fetchImplementation, store, now, retained);
2436
2408
  }
2437
2409
  catch {
2438
2410
  delivery = {
@@ -2480,7 +2452,10 @@ async function handlePromptEvent(input, agent, sessionId, config, options, now,
2480
2452
  const receipt = receiptMessage(config, agent, delivery);
2481
2453
  if (retrieve && delivery.completeContext)
2482
2454
  await rememberDeliveredContext(store, contextSession, delivery).catch(() => undefined);
2483
- const taskContext = [delivery.context, delivery.reliability?.status === "failed" ? undefined : approachGuidance(prompt, agent, redactSecrets(sessionId), retainedContext)].filter(Boolean).join("\n\n");
2455
+ const relatedContext = delivery.relatedContext && !retainedContext.some(text => text.includes(delivery.relatedContext))
2456
+ ? delivery.relatedContext : undefined;
2457
+ // Skills are fresh on every turn, even when learning context is retained.
2458
+ const taskContext = [delivery.skillContext, delivery.context, relatedContext, delivery.reliability?.status === "failed" ? undefined : approachGuidance(prompt, agent, redactSecrets(sessionId), retainedContext), delivery.skillContext === undefined && delivery.reliability?.status !== "failed" ? skillGuidance(retainedContext) : undefined].filter(Boolean).join("\n\n");
2484
2459
  const systemMessage = agent === "cursor" || agent === "polytoken"
2485
2460
  ? undefined
2486
2461
  : [receipt, reliabilityNotice].filter(Boolean).join(" · ") || undefined;