@stigmer/runner 3.12.0 → 3.12.2

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 (97) hide show
  1. package/dist/.build-fingerprint +1 -1
  2. package/dist/activities/execute-cursor/capture-flow.d.ts +5 -4
  3. package/dist/activities/execute-cursor/capture-flow.js +5 -4
  4. package/dist/activities/execute-cursor/capture-flow.js.map +1 -1
  5. package/dist/activities/execute-cursor/cas-observations.d.ts +10 -4
  6. package/dist/activities/execute-cursor/cas-observations.js +10 -4
  7. package/dist/activities/execute-cursor/cas-observations.js.map +1 -1
  8. package/dist/activities/execute-cursor/hook-script.js +39 -13
  9. package/dist/activities/execute-cursor/hook-script.js.map +1 -1
  10. package/dist/activities/execute-cursor/skill-resolver.d.ts +8 -0
  11. package/dist/activities/execute-cursor/skill-resolver.js +77 -26
  12. package/dist/activities/execute-cursor/skill-resolver.js.map +1 -1
  13. package/dist/activities/execute-deep-agent/attachment-injector.d.ts +23 -8
  14. package/dist/activities/execute-deep-agent/attachment-injector.js +104 -105
  15. package/dist/activities/execute-deep-agent/attachment-injector.js.map +1 -1
  16. package/dist/activities/execute-deep-agent/cas-capture-backend.d.ts +3 -1
  17. package/dist/activities/execute-deep-agent/cas-capture-backend.js +3 -1
  18. package/dist/activities/execute-deep-agent/cas-capture-backend.js.map +1 -1
  19. package/dist/activities/execute-deep-agent/prompt-builder.js +11 -1
  20. package/dist/activities/execute-deep-agent/prompt-builder.js.map +1 -1
  21. package/dist/activities/execute-deep-agent/setup.js +15 -3
  22. package/dist/activities/execute-deep-agent/setup.js.map +1 -1
  23. package/dist/activities/execute-deep-agent/subagent-wiring.js +16 -9
  24. package/dist/activities/execute-deep-agent/subagent-wiring.js.map +1 -1
  25. package/dist/activities/generate-session-subject.d.ts +80 -0
  26. package/dist/activities/generate-session-subject.js +283 -0
  27. package/dist/activities/generate-session-subject.js.map +1 -0
  28. package/dist/client/stigmer-client.d.ts +8 -0
  29. package/dist/client/stigmer-client.js +10 -0
  30. package/dist/client/stigmer-client.js.map +1 -1
  31. package/dist/middleware/approval-gate.d.ts +25 -10
  32. package/dist/middleware/approval-gate.js +33 -14
  33. package/dist/middleware/approval-gate.js.map +1 -1
  34. package/dist/middleware/otel-spans.d.ts +2 -1
  35. package/dist/middleware/otel-spans.js +2 -1
  36. package/dist/middleware/otel-spans.js.map +1 -1
  37. package/dist/middleware/path-normalization.d.ts +15 -2
  38. package/dist/middleware/path-normalization.js +39 -5
  39. package/dist/middleware/path-normalization.js.map +1 -1
  40. package/dist/runner-manager.js +3 -1
  41. package/dist/runner-manager.js.map +1 -1
  42. package/dist/runner.js +3 -1
  43. package/dist/runner.js.map +1 -1
  44. package/dist/shared/attachment-vision.js +9 -0
  45. package/dist/shared/attachment-vision.js.map +1 -1
  46. package/dist/shared/mcp-enabled-tools.d.ts +6 -2
  47. package/dist/shared/mcp-enabled-tools.js +6 -2
  48. package/dist/shared/mcp-enabled-tools.js.map +1 -1
  49. package/dist/shared/mcp-manager.js +8 -0
  50. package/dist/shared/mcp-manager.js.map +1 -1
  51. package/dist/shared/plan-mode-permissions.d.ts +46 -10
  52. package/dist/shared/plan-mode-permissions.js +56 -12
  53. package/dist/shared/plan-mode-permissions.js.map +1 -1
  54. package/dist/shared/zip-extract.d.ts +24 -6
  55. package/dist/shared/zip-extract.js +31 -90
  56. package/dist/shared/zip-extract.js.map +1 -1
  57. package/dist/shared/zip-structure.d.ts +61 -0
  58. package/dist/shared/zip-structure.js +128 -0
  59. package/dist/shared/zip-structure.js.map +1 -0
  60. package/package.json +2 -2
  61. package/src/__test-utils__/zip-fixtures.ts +206 -0
  62. package/src/activities/__tests__/generate-session-subject.test.ts +348 -0
  63. package/src/activities/execute-cursor/__tests__/hook-script.test.ts +60 -9
  64. package/src/activities/execute-cursor/__tests__/skill-resolver.test.ts +166 -49
  65. package/src/activities/execute-cursor/capture-flow.ts +5 -4
  66. package/src/activities/execute-cursor/cas-observations.ts +10 -4
  67. package/src/activities/execute-cursor/hook-script.ts +39 -13
  68. package/src/activities/execute-cursor/skill-resolver.ts +98 -31
  69. package/src/activities/execute-deep-agent/__tests__/attachment-injector.test.ts +165 -126
  70. package/src/activities/execute-deep-agent/__tests__/plan-mode-path-normalization.test.ts +246 -37
  71. package/src/activities/execute-deep-agent/__tests__/prompt-builder.test.ts +7 -2
  72. package/src/activities/execute-deep-agent/__tests__/subagent-plan-mode-permissions.test.ts +35 -4
  73. package/src/activities/execute-deep-agent/attachment-injector.ts +146 -142
  74. package/src/activities/execute-deep-agent/cas-capture-backend.ts +3 -1
  75. package/src/activities/execute-deep-agent/prompt-builder.ts +11 -1
  76. package/src/activities/execute-deep-agent/setup.ts +15 -3
  77. package/src/activities/execute-deep-agent/subagent-wiring.ts +16 -9
  78. package/src/activities/generate-session-subject.ts +370 -0
  79. package/src/client/stigmer-client.ts +11 -0
  80. package/src/middleware/__tests__/approval-gate.test.ts +130 -1
  81. package/src/middleware/__tests__/path-normalization.test.ts +29 -3
  82. package/src/middleware/approval-gate.ts +58 -24
  83. package/src/middleware/otel-spans.ts +2 -1
  84. package/src/middleware/path-normalization.ts +42 -5
  85. package/src/runner-manager.ts +3 -0
  86. package/src/runner.ts +3 -0
  87. package/src/shared/__tests__/attachment-vision.test.ts +4 -0
  88. package/src/shared/__tests__/mcp-manager.test.ts +7 -2
  89. package/src/shared/__tests__/plan-mode-permissions.test.ts +58 -0
  90. package/src/shared/__tests__/zip-extract.test.ts +106 -89
  91. package/src/shared/attachment-vision.ts +9 -0
  92. package/src/shared/filereview/__tests__/capture.test.ts +48 -0
  93. package/src/shared/mcp-enabled-tools.ts +6 -2
  94. package/src/shared/mcp-manager.ts +8 -0
  95. package/src/shared/plan-mode-permissions.ts +59 -12
  96. package/src/shared/zip-extract.ts +35 -117
  97. package/src/shared/zip-structure.ts +181 -0
@@ -65,18 +65,25 @@ export function buildSubAgentMiddleware(options = {}) {
65
65
  }));
66
66
  stack.push(createToolTruncationMiddleware(options.toolTruncation));
67
67
  if (options.approvalGate) {
68
- // captureIgnored (DD-19): a sub-agent flows gitignored writes into CAS iff a
69
- // CAS observer backs its filesystem backend (compileSubagents passes this as
68
+ // captureIgnored (DD-19): a sub-agent flows gitignored writes and, since
69
+ // issue #303, non-secret CAS-owned deletes into CAS iff a CAS observer
70
+ // backs its filesystem backend (compileSubagents passes this as
70
71
  // `!!casObserver`). When true, inherit the parent gate verbatim so its
71
- // captureIgnored + recordBlockedSecret feed the SAME shared observer that
72
- // backs the sub-agent's writes. When false (default; non-capture mode, or no
73
- // observer), force CAS routing off and drop the blocked-secret sink so
74
- // gitignored paths stay on the interrupt gate — a flowed gitignored edit on an
75
- // unobserved backend would apply unobserved, unreviewable bytes. Sub-agent
76
- // git-tracked edits are always captured by the backend-agnostic boundary diff.
72
+ // captureIgnored + recordBlockedSecret + captureDeleteBefore feed the SAME
73
+ // shared observer that backs the sub-agent's writes. When false (default;
74
+ // non-capture mode, or no observer), force CAS routing off and drop both
75
+ // observer sinks so gitignored paths stay on the interrupt gate — a flowed
76
+ // gitignored edit on an unobserved backend would apply unobserved,
77
+ // unreviewable bytes. Sub-agent git-tracked edits are always captured by
78
+ // the backend-agnostic boundary diff.
77
79
  stack.push(createApprovalGateMiddleware(options.captureIgnored
78
80
  ? options.approvalGate
79
- : { ...options.approvalGate, captureIgnored: false, recordBlockedSecret: undefined }));
81
+ : {
82
+ ...options.approvalGate,
83
+ captureIgnored: false,
84
+ recordBlockedSecret: undefined,
85
+ captureDeleteBefore: undefined,
86
+ }));
80
87
  }
81
88
  if (options.costCap) {
82
89
  stack.push(options.costCap.forSubAgent());
@@ -1 +1 @@
1
- {"version":3,"file":"subagent-wiring.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/subagent-wiring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAQH,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EACL,4BAA4B,GAE7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,MAAM,2BAA2B,GAAG,EAAE,CAAC;AACvC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AA4BnC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAqC,EAAE;IAEvC,MAAM,KAAK,GAAwB,EAAE,CAAC;IAEtC,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAE7D,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC;QACzC,eAAe,EAAE,2BAA2B;QAC5C,WAAW,EAAE,wBAAwB;KACtC,CAAC,CAAC,CAAC;IAEJ,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IAEnE,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,6EAA6E;QAC7E,6EAA6E;QAC7E,uEAAuE;QACvE,0EAA0E;QAC1E,6EAA6E;QAC7E,uEAAuE;QACvE,+EAA+E;QAC/E,2EAA2E;QAC3E,+EAA+E;QAC/E,KAAK,CAAC,IAAI,CAAC,4BAA4B,CACrC,OAAO,CAAC,cAAc;YACpB,CAAC,CAAC,OAAO,CAAC,YAAY;YACtB,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,CACvF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;IAEzC,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"subagent-wiring.js","sourceRoot":"","sources":["../../../src/activities/execute-deep-agent/subagent-wiring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAQH,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EACL,4BAA4B,GAE7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,MAAM,2BAA2B,GAAG,EAAE,CAAC;AACvC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AA4BnC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAqC,EAAE;IAEvC,MAAM,KAAK,GAAwB,EAAE,CAAC;IAEtC,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAE7D,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC;QACzC,eAAe,EAAE,2BAA2B;QAC5C,WAAW,EAAE,wBAAwB;KACtC,CAAC,CAAC,CAAC;IAEJ,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IAEnE,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,2EAA2E;QAC3E,yEAAyE;QACzE,gEAAgE;QAChE,uEAAuE;QACvE,2EAA2E;QAC3E,0EAA0E;QAC1E,yEAAyE;QACzE,2EAA2E;QAC3E,mEAAmE;QACnE,yEAAyE;QACzE,sCAAsC;QACtC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CACrC,OAAO,CAAC,cAAc;YACpB,CAAC,CAAC,OAAO,CAAC,YAAY;YACtB,CAAC,CAAC;gBACE,GAAG,OAAO,CAAC,YAAY;gBACvB,cAAc,EAAE,KAAK;gBACrB,mBAAmB,EAAE,SAAS;gBAC9B,mBAAmB,EAAE,SAAS;aAC/B,CACN,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;IAEzC,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * GenerateSessionSubject Temporal activity — replaces the sentinel subject of
3
+ * an auto-created session with a concise LLM-generated conversation title.
4
+ *
5
+ * Called fire-and-forget by the Go InvokeAgentExecutionWorkflow (Step 1.5 of
6
+ * BOTH the deep-agent and cursor flows) on the runner task queue, with a 60 s
7
+ * deadline and a single attempt. Failures are non-critical by contract: the
8
+ * session simply keeps its sentinel subject, and the workflow logs a warning.
9
+ *
10
+ * Cross-edition parity: this is the behavioral twin of stigmer-cloud's
11
+ * GenerateSessionSubjectActivityImpl (Java, runs in-process on the server
12
+ * because the Java server owns an LLM call service; the OSS LLM stack lives
13
+ * here in the runner). The system prompt, skip rules, 50-char cap, and the
14
+ * heuristic fallback are kept in lockstep so both editions title sessions
15
+ * identically. The previous owner was the retired Python agent-runner
16
+ * (stigmer/stigmer#665).
17
+ *
18
+ * Model + credential resolution follows ClassifyToolApprovals: the economy
19
+ * model for the configured primary (registry costTier=economy, graceful
20
+ * degrade to the primary), routed through the Stigmer proxy when one is
21
+ * configured, else called directly with the operator's provider key. Unlike
22
+ * classification — a security gate that fails closed — a missing credential
23
+ * here degrades to a heuristic title (the first words of the user message):
24
+ * a title is worth having even when no model is reachable.
25
+ *
26
+ * Activity contract (the Go stub dispatches exactly ONE argument — the cloud
27
+ * Java signature carries a second, invokerIdentityAccountId, that never
28
+ * crosses this wire):
29
+ * Name: "GenerateSessionSubject"
30
+ * Input: (executionId: string)
31
+ * Output: void
32
+ */
33
+ import type { Config } from "../config.js";
34
+ import type { AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
35
+ import type { Session } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
36
+ import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
37
+ import type { AgentInstance } from "@stigmer/protos/ai/stigmer/agentic/agentinstance/v1/api_pb";
38
+ /**
39
+ * The sentinel written by the server on auto-created sessions — byte-identical
40
+ * to `autoCreatedSessionSubject` in stigmer-server's agentexecution create
41
+ * pipeline and to AUTO_CREATED_SUBJECT in the cloud activity. Only sessions
42
+ * still carrying it (or an empty subject) are ever titled.
43
+ */
44
+ export declare const AUTO_CREATED_SUBJECT = "Auto-created session";
45
+ /** The client surface this activity needs — StigmerClient satisfies it. */
46
+ export interface SessionSubjectClient {
47
+ getExecution(executionId: string): Promise<AgentExecution>;
48
+ getSession(sessionId: string): Promise<Session>;
49
+ getAgent(agentId: string): Promise<Agent>;
50
+ getAgentInstance(instanceId: string): Promise<AgentInstance>;
51
+ updateSessionSubject(sessionId: string, subject: string): Promise<Session>;
52
+ }
53
+ export interface GenerateSessionSubjectOptions {
54
+ /** Null when the deployment has no proxy — the runner calls providers directly. */
55
+ proxyEndpoint: string | null;
56
+ stigmerToken: string | null;
57
+ primaryModel: string;
58
+ }
59
+ export declare function generateSessionSubject(executionId: string, client: SessionSubjectClient, options: GenerateSessionSubjectOptions): Promise<void>;
60
+ /**
61
+ * The agent behind the execution: the direct agent_id when the execution
62
+ * carries one, else resolved through the session's agent-instance chain.
63
+ * Empty string when unresolvable. Mirrors the cloud activity's resolveAgentId.
64
+ */
65
+ export declare function resolveAgentId(execution: AgentExecution, session: Session, client: Pick<SessionSubjectClient, "getAgentInstance">): Promise<string>;
66
+ /** Kept in lockstep with the cloud activity's buildUserPrompt. */
67
+ export declare function buildUserPrompt(userMessage: string, agentName: string, agentDescription: string): string;
68
+ /**
69
+ * Best-effort subject from the first few words of the user message. Used when
70
+ * the LLM is unavailable. Kept in lockstep with the cloud activity.
71
+ */
72
+ export declare function heuristicSubject(userMessage: string): string;
73
+ /**
74
+ * Strip one layer of wrapping quotes and enforce the length cap. Kept in
75
+ * lockstep with the cloud activity.
76
+ */
77
+ export declare function cleanSubject(raw: string): string;
78
+ export declare function createGenerateSessionSubjectActivities(config: Config): {
79
+ GenerateSessionSubject: (executionId: string) => Promise<void>;
80
+ };
@@ -0,0 +1,283 @@
1
+ /**
2
+ * GenerateSessionSubject Temporal activity — replaces the sentinel subject of
3
+ * an auto-created session with a concise LLM-generated conversation title.
4
+ *
5
+ * Called fire-and-forget by the Go InvokeAgentExecutionWorkflow (Step 1.5 of
6
+ * BOTH the deep-agent and cursor flows) on the runner task queue, with a 60 s
7
+ * deadline and a single attempt. Failures are non-critical by contract: the
8
+ * session simply keeps its sentinel subject, and the workflow logs a warning.
9
+ *
10
+ * Cross-edition parity: this is the behavioral twin of stigmer-cloud's
11
+ * GenerateSessionSubjectActivityImpl (Java, runs in-process on the server
12
+ * because the Java server owns an LLM call service; the OSS LLM stack lives
13
+ * here in the runner). The system prompt, skip rules, 50-char cap, and the
14
+ * heuristic fallback are kept in lockstep so both editions title sessions
15
+ * identically. The previous owner was the retired Python agent-runner
16
+ * (stigmer/stigmer#665).
17
+ *
18
+ * Model + credential resolution follows ClassifyToolApprovals: the economy
19
+ * model for the configured primary (registry costTier=economy, graceful
20
+ * degrade to the primary), routed through the Stigmer proxy when one is
21
+ * configured, else called directly with the operator's provider key. Unlike
22
+ * classification — a security gate that fails closed — a missing credential
23
+ * here degrades to a heuristic title (the first words of the user message):
24
+ * a title is worth having even when no model is reachable.
25
+ *
26
+ * Activity contract (the Go stub dispatches exactly ONE argument — the cloud
27
+ * Java signature carries a second, invokerIdentityAccountId, that never
28
+ * crosses this wire):
29
+ * Name: "GenerateSessionSubject"
30
+ * Input: (executionId: string)
31
+ * Output: void
32
+ */
33
+ import { SystemMessage, HumanMessage } from "@langchain/core/messages";
34
+ import { ConnectError, Code } from "@connectrpc/connect";
35
+ import { activityStarted, activityFinished } from "../idle-watchdog.js";
36
+ import { StigmerClient } from "../client/stigmer-client.js";
37
+ import { getSummarizationModel } from "../shared/model-registry.js";
38
+ import { buildChatModel } from "../shared/model-client.js";
39
+ import { checkDirectCredentials } from "../shared/llm-backend.js";
40
+ import { tryInferProvider } from "../shared/llm-proxy.js";
41
+ /**
42
+ * The sentinel written by the server on auto-created sessions — byte-identical
43
+ * to `autoCreatedSessionSubject` in stigmer-server's agentexecution create
44
+ * pipeline and to AUTO_CREATED_SUBJECT in the cloud activity. Only sessions
45
+ * still carrying it (or an empty subject) are ever titled.
46
+ */
47
+ export const AUTO_CREATED_SUBJECT = "Auto-created session";
48
+ const MAX_SUBJECT_LENGTH = 50;
49
+ /** Titles are tiny; matches the cloud activity's completion budget. */
50
+ const MAX_COMPLETION_TOKENS = 100;
51
+ const TEMPERATURE = 0.7;
52
+ /** Kept verbatim in lockstep with the cloud activity's SYSTEM_PROMPT. */
53
+ const SYSTEM_PROMPT = `\
54
+ You are a session title generator. Given a user's message and agent context, \
55
+ produce a concise conversation title.
56
+
57
+ Rules:
58
+ - 3 to 7 words, maximum 50 characters
59
+ - Capture the user's core intent or topic
60
+ - Be specific (e.g. "PostgreSQL Multi-AZ Setup" not "Database Help")
61
+ - No filler words ("help with", "question about", "I need")
62
+ - No quotes, no punctuation at the end
63
+ - Output ONLY the title, nothing else`;
64
+ export async function generateSessionSubject(executionId, client, options) {
65
+ const execution = await getOrSkip(() => client.getExecution(executionId), `execution not found: ${executionId}`);
66
+ if (execution === undefined)
67
+ return;
68
+ const sessionId = execution.spec?.sessionId ?? "";
69
+ const userMessage = execution.spec?.message ?? "";
70
+ if (sessionId === "") {
71
+ log(`no session_id on execution ${executionId}, skipping`);
72
+ return;
73
+ }
74
+ if (userMessage === "") {
75
+ log(`no user message on execution ${executionId}, skipping`);
76
+ return;
77
+ }
78
+ const session = await getOrSkip(() => client.getSession(sessionId), `session not found: ${sessionId}`);
79
+ if (session === undefined)
80
+ return;
81
+ const currentSubject = session.spec?.subject ?? "";
82
+ if (currentSubject !== "" && currentSubject !== AUTO_CREATED_SUBJECT) {
83
+ log(`subject is '${currentSubject}' (already set), skipping`);
84
+ return;
85
+ }
86
+ const agentId = await resolveAgentId(execution, session, client);
87
+ if (agentId === "") {
88
+ log(`cannot resolve agent_id for execution ${executionId}, skipping`);
89
+ return;
90
+ }
91
+ const agent = await getOrSkip(() => client.getAgent(agentId), `agent not found: ${agentId}`);
92
+ if (agent === undefined)
93
+ return;
94
+ const subject = await generateTitle({
95
+ userMessage,
96
+ agentName: agent.metadata?.name ?? "",
97
+ agentDescription: agent.spec?.description ?? "",
98
+ executionId,
99
+ options,
100
+ });
101
+ if (subject === "") {
102
+ log("subject is empty after generation, skipping");
103
+ return;
104
+ }
105
+ try {
106
+ await client.updateSessionSubject(sessionId, subject);
107
+ }
108
+ catch (err) {
109
+ log(`failed to persist subject for session ${sessionId}: ${message(err)}`);
110
+ return;
111
+ }
112
+ log(`updated session ${sessionId} subject to '${subject}'`);
113
+ }
114
+ /**
115
+ * The agent behind the execution: the direct agent_id when the execution
116
+ * carries one, else resolved through the session's agent-instance chain.
117
+ * Empty string when unresolvable. Mirrors the cloud activity's resolveAgentId.
118
+ */
119
+ export async function resolveAgentId(execution, session, client) {
120
+ const direct = execution.spec?.agentId ?? "";
121
+ if (direct !== "")
122
+ return direct;
123
+ const instanceId = session.spec?.agentInstanceId ?? "";
124
+ if (instanceId === "")
125
+ return "";
126
+ const instance = await getOrSkip(() => client.getAgentInstance(instanceId), `agent instance not found: ${instanceId}`);
127
+ return instance?.spec?.agentId ?? "";
128
+ }
129
+ /**
130
+ * LLM title with heuristic degrade. Every unavailability class — no direct
131
+ * credential, model build failure, provider error, empty completion — lands on
132
+ * the heuristic, matching the cloud activity (its LlmCallService swallows
133
+ * provider failures into a null completion; heuristicSubject documents the
134
+ * same "expired API key, rate limit, registry miss" cases).
135
+ */
136
+ async function generateTitle(params) {
137
+ const { userMessage, agentName, agentDescription, executionId, options } = params;
138
+ const model = await getSummarizationModel(options.primaryModel);
139
+ // Direct mode with no credential path degrades up front with one actionable
140
+ // message (the ClassifyToolApprovals idiom — the provider follows the
141
+ // economy-model resolution, not the operator's key, so the log names it).
142
+ if (!options.proxyEndpoint) {
143
+ const provider = tryInferProvider(model);
144
+ const missing = provider === null ? null : checkDirectCredentials(provider);
145
+ if (missing !== null) {
146
+ log(`title model '${model}' (${provider}) has no credential path — ` +
147
+ `using heuristic fallback. ${missing}`);
148
+ return heuristicSubject(userMessage);
149
+ }
150
+ }
151
+ try {
152
+ const { model: llm } = await buildChatModel({
153
+ modelName: model,
154
+ proxyEndpoint: options.proxyEndpoint ?? undefined,
155
+ stigmerToken: options.stigmerToken ?? undefined,
156
+ headerScope: { executionId },
157
+ maxTokens: MAX_COMPLETION_TOKENS,
158
+ temperature: TEMPERATURE,
159
+ });
160
+ const result = await llm.invoke([
161
+ new SystemMessage(SYSTEM_PROMPT),
162
+ new HumanMessage(buildUserPrompt(userMessage, agentName, agentDescription)),
163
+ ]);
164
+ const generated = contentToString(result.content).trim();
165
+ if (generated === "") {
166
+ log("LLM returned empty content, using heuristic fallback");
167
+ return heuristicSubject(userMessage);
168
+ }
169
+ return cleanSubject(generated);
170
+ }
171
+ catch (err) {
172
+ log(`LLM title generation failed, using heuristic fallback: ${message(err)}`);
173
+ return heuristicSubject(userMessage);
174
+ }
175
+ }
176
+ /** Kept in lockstep with the cloud activity's buildUserPrompt. */
177
+ export function buildUserPrompt(userMessage, agentName, agentDescription) {
178
+ let prompt = `User's first message:\n"${userMessage}"\n\n`;
179
+ prompt += `Agent: ${agentName}\n`;
180
+ if (agentDescription !== "") {
181
+ prompt += `Agent purpose: ${agentDescription}\n`;
182
+ }
183
+ prompt += "\nGenerate the title:";
184
+ return prompt;
185
+ }
186
+ /**
187
+ * Best-effort subject from the first few words of the user message. Used when
188
+ * the LLM is unavailable. Kept in lockstep with the cloud activity.
189
+ */
190
+ export function heuristicSubject(userMessage) {
191
+ const words = userMessage.trim().split(/\s+/);
192
+ let subject = words.slice(0, 7).join(" ");
193
+ if (subject.length > MAX_SUBJECT_LENGTH) {
194
+ subject = subject.slice(0, MAX_SUBJECT_LENGTH - 3) + "...";
195
+ }
196
+ return subject;
197
+ }
198
+ /**
199
+ * Strip one layer of wrapping quotes and enforce the length cap. Kept in
200
+ * lockstep with the cloud activity.
201
+ */
202
+ export function cleanSubject(raw) {
203
+ let subject = raw.trim();
204
+ if (subject.length > 1 && subject.startsWith('"') && subject.endsWith('"')) {
205
+ subject = subject.slice(1, -1);
206
+ }
207
+ if (subject.length > 1 && subject.startsWith("'") && subject.endsWith("'")) {
208
+ subject = subject.slice(1, -1);
209
+ }
210
+ subject = subject.trim();
211
+ if (subject.length > MAX_SUBJECT_LENGTH) {
212
+ subject = subject.slice(0, MAX_SUBJECT_LENGTH - 3) + "...";
213
+ }
214
+ return subject;
215
+ }
216
+ // ─────────────────────────────────────────────────────────────────────────────
217
+ // Helpers
218
+ // ─────────────────────────────────────────────────────────────────────────────
219
+ /**
220
+ * Run a lookup, translating NOT_FOUND into a logged skip (undefined) — the
221
+ * cloud activity's Optional.isEmpty branches. Anything else propagates as a
222
+ * genuine activity failure; the workflow's fire-and-forget wrapper logs it
223
+ * as non-critical.
224
+ */
225
+ async function getOrSkip(fetch, skipMessage) {
226
+ try {
227
+ return await fetch();
228
+ }
229
+ catch (err) {
230
+ if (err instanceof ConnectError && err.code === Code.NotFound) {
231
+ log(`${skipMessage}, skipping`);
232
+ return undefined;
233
+ }
234
+ throw err;
235
+ }
236
+ }
237
+ /** LangChain message content is a string or an array of typed parts. */
238
+ function contentToString(content) {
239
+ if (typeof content === "string")
240
+ return content;
241
+ if (Array.isArray(content)) {
242
+ return content
243
+ .map((part) => typeof part === "object" && part !== null && "text" in part
244
+ ? String(part.text)
245
+ : "")
246
+ .join("");
247
+ }
248
+ return "";
249
+ }
250
+ function message(err) {
251
+ return err instanceof Error ? err.message : String(err);
252
+ }
253
+ function log(msg) {
254
+ console.log(`[GenerateSessionSubject] ${msg}`);
255
+ }
256
+ // ─────────────────────────────────────────────────────────────────────────────
257
+ // Temporal Activity Factory
258
+ // ─────────────────────────────────────────────────────────────────────────────
259
+ export function createGenerateSessionSubjectActivities(config) {
260
+ const client = new StigmerClient({
261
+ endpoint: config.stigmerBackendEndpoint,
262
+ token: config.stigmerToken,
263
+ tokenRef: config.stigmerTokenRef,
264
+ runnerTokenRef: config.stigmerRunnerTokenRef,
265
+ });
266
+ return {
267
+ GenerateSessionSubject: async (executionId) => {
268
+ activityStarted();
269
+ try {
270
+ log(`started: execution=${executionId}`);
271
+ await generateSessionSubject(executionId, client, {
272
+ proxyEndpoint: config.proxyEndpoint,
273
+ stigmerToken: config.stigmerToken,
274
+ primaryModel: config.primaryModel,
275
+ });
276
+ }
277
+ finally {
278
+ activityFinished();
279
+ }
280
+ },
281
+ };
282
+ }
283
+ //# sourceMappingURL=generate-session-subject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-session-subject.js","sourceRoot":"","sources":["../../src/activities/generate-session-subject.ts"],"names":[],"mappings":"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"}
@@ -249,6 +249,14 @@ export declare class StigmerClient {
249
249
  listChannelTemplates(channel: string, scopedToken?: string): Promise<ChannelTemplate[]>;
250
250
  getSession(sessionId: string): Promise<Session>;
251
251
  updateSession(session: Session): Promise<Session>;
252
+ /**
253
+ * Race-safe, field-level subject write. The dedicated updateSubject RPC
254
+ * exists precisely so concurrent writers (title generation vs a user
255
+ * rename) cannot lose each other's updates the way full-resource
256
+ * {@link updateSession} round-trips can — always prefer it for subject
257
+ * changes.
258
+ */
259
+ updateSessionSubject(sessionId: string, subject: string): Promise<Session>;
252
260
  getAgent(agentId: string): Promise<Agent>;
253
261
  getAgentInstance(instanceId: string): Promise<AgentInstance>;
254
262
  getMcpServer(serverId: string): Promise<McpServer>;
@@ -359,6 +359,16 @@ export class StigmerClient {
359
359
  async updateSession(session) {
360
360
  return this.sessionCommand.update(session);
361
361
  }
362
+ /**
363
+ * Race-safe, field-level subject write. The dedicated updateSubject RPC
364
+ * exists precisely so concurrent writers (title generation vs a user
365
+ * rename) cannot lose each other's updates the way full-resource
366
+ * {@link updateSession} round-trips can — always prefer it for subject
367
+ * changes.
368
+ */
369
+ async updateSessionSubject(sessionId, subject) {
370
+ return this.sessionCommand.updateSubject({ id: sessionId, subject });
371
+ }
362
372
  async getAgent(agentId) {
363
373
  return this.agentQuery.get({ value: agentId });
364
374
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stigmer-client.js","sourceRoot":"","sources":["../../src/client/stigmer-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stigmer-client.js","sourceRoot":"","sources":["../../src/client/stigmer-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAA+B,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AAClH,OAAO,EAAE,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AAC9G,OAAO,EAAE,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AAClH,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACpG,OAAO,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AAChG,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,8DAA8D,CAAC;AAC5G,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACpG,OAAO,EAAE,0BAA0B,EAAE,MAAM,4DAA4D,CAAC;AACxG,OAAO,EAAE,yBAAyB,EAAE,MAAM,2DAA2D,CAAC;AAGtG,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAC;AAI5F,OAAO,EAAE,sCAAsC,EAAE,MAAM,8DAA8D,CAAC;AAQtH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uDAAuD,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,gEAAgE,CAAC;AACtG,OAAO,EAAE,qCAAqC,EAAE,MAAM,4DAA4D,CAAC;AAEnH,OAAO,EAAE,kCAAkC,EAAE,MAAM,oEAAoE,CAAC;AACxH,OAAO,EAAE,gCAAgC,EAAE,MAAM,kEAAkE,CAAC;AAEpH,OAAO,EAAE,wCAAwC,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,+DAA+D,CAAC;AAE1K,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAElG,OAAO,EAAE,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AAElH,OAAO,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,kBAAkB,EAAE,MAAM,uDAAuD,CAAC;AACrJ,OAAO,EAAE,6BAA6B,EAAE,MAAM,qEAAqE,CAAC;AAEpH,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AA8E9F;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,KAA6B;IAC7D,IAAI,kBAAkB,IAAI,KAAK,EAAE,CAAC;QAChC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,KAAK,CAAC,gBAAgB,EAAW,CAAC;IAC9E,CAAC;IACD,IAAI,qBAAqB,IAAI,KAAK,EAAE,CAAC;QACnC,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK,CAAC,mBAAmB,EAAW,CAAC;IACpF,CAAC;IACD,IAAI,oBAAoB,IAAI,KAAK,EAAE,CAAC;QAClC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,kBAAkB,EAAE,EAAW,CAAC;IACxF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAW,CAAC;AACzE,CAAC;AAwBD,MAAM,OAAO,aAAa;IACf,SAAS,CAAY;IACtB,YAAY,CAAgB;IACnB,cAAc,CAA+C;IAC7D,gBAAgB,CAAiD;IACjE,qBAAqB,CAAiD;IACtE,YAAY,CAAwC;IACpD,cAAc,CAA0C;IACxD,UAAU,CAAsC;IAChD,kBAAkB,CAA8C;IAChE,cAAc,CAA0C;IACxD,gBAAgB,CAA4C;IAC5D,UAAU,CAAsC;IAChD,cAAc,CAA0C;IACxD,eAAe,CAA2C;IAClE,wBAAwB,CAAoD;IACpE,sBAAsB,CAAkD;IACxE,aAAa,CAAyC;IACtD,qBAAqB,CAAiD;IACtE,aAAa,CAAyC;IACtD,mBAAmB,CAA+C;IAElE,QAAQ,CAAkB;IAC1B,cAAc,CAAkB;IAEjD,YAAY,OAA6B;QACvC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;QACrD,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC;YACnC,OAAO,EAAE,OAAO,CAAC,QAAQ;YACzB,YAAY,EAAE;gBACZ,oEAAoE;gBACpE,oEAAoE;gBACpE,kEAAkE;gBAClE,mEAAmE;gBACnE,mEAAmE;gBACnE,qEAAqE;gBACrE,oCAAoC;gBACpC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;oBACtB,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE;wBACnD,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;qBACtD,CAAC,CAAC;oBACH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;gBACD,uEAAuE;gBACvE,kCAAkC;gBAClC,EAAE;gBACF,sEAAsE;gBACtE,kEAAkE;gBAClE,sEAAsE;gBACtE,wEAAwE;gBACxE,oEAAoE;gBACpE,+CAA+C;gBAC/C,EAAE;gBACF,uEAAuE;gBACvE,oEAAoE;gBACpE,uEAAuE;gBACvE,mEAAmE;gBACnE,+DAA+D;gBAC/D,qEAAqE;gBACrE,sEAAsE;gBACtE,uBAAuB;gBACvB,EAAE;gBACF,iEAAiE;gBACjE,iEAAiE;gBACjE,+BAA+B;gBAC/B,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;oBACtB,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;wBACpC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnB,CAAC;oBACD,MAAM,oBAAoB,GACxB,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,+BAA+B,CAAC,QAAQ;wBACjE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,uBAAuB,CAAC,QAAQ;4BACxD,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,uBAAuB,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;oBAClF,MAAM,KAAK,GACT,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;2BACzD,IAAI,CAAC,QAAQ,EAAE,OAAO;2BACtB,IAAI,CAAC,YAAY,CAAC;oBACvB,IAAI,KAAK,EAAE,CAAC;wBACV,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,KAAK,EAAE,CAAC,CAAC;oBACrD,CAAC;oBACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,6BAA6B,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAClF,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,+BAA+B,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACtF,IAAI,CAAC,qBAAqB,GAAG,YAAY,CAAC,+BAA+B,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3F,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACzE,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7E,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,4BAA4B,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACrF,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7E,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,0BAA0B,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACjF,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7E,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,yBAAyB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/E,IAAI,CAAC,wBAAwB,GAAG,YAAY,CAAC,kCAAkC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACjG,IAAI,CAAC,sBAAsB,GAAG,YAAY,CAAC,gCAAgC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7F,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3E,IAAI,CAAC,qBAAqB,GAAG,YAAY,CAAC,+BAA+B,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3F,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3E,IAAI,CAAC,mBAAmB,GAAG,YAAY,CAAC,6BAA6B,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACzF,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,wBAAwB;QAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;QAClE,OAAO;YACL,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,sEAAsE;YACtE,oDAAoD;YACpD,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,IAAI,SAAS;YACrD,iCAAiC,EAC/B,GAAG,CAAC,iCAAiC,IAAI,SAAS;YACpD,sEAAsE;YACtE,oEAAoE;YACpE,uEAAuE;YACvE,uDAAuD;YACvD,iBAAiB,EAAE,GAAG,CAAC,oBAAoB;gBACzC,CAAC,CAAC;oBACE,GAAG,EAAE,GAAG,CAAC,oBAAoB;oBAC7B,KAAK,EAAE,GAAG,CAAC,sBAAsB;oBACjC,YAAY,EAAE,GAAG,CAAC,6BAA6B,IAAI,SAAS;oBAC5D,cAAc,EAAE,GAAG,CAAC,+BAA+B,IAAI,SAAS;iBACjE;gBACH,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,WAAmB;QACpC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,WAAmB,EACnB,MAA4B;QAE5B,MAAM,KAAK,GAAG,MAAM,CAAC,qCAAqC,EAAE;YAC1D,WAAW;YACX,MAAM;SACP,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,gCAAgC,CACpC,WAAmB,EACnB,WAAoB;QAEpB,OAAO,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAChD,MAAM,CAAC,sCAAsC,EAAE,EAAE,WAAW,EAAE,CAAC,EAC/D,WAAW;YACT,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE,EAAE;YACzD,CAAC,CAAC,SAAS,CACd,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,oBAAoB,CACxB,KAA6B,EAC7B,WAAoB;QAEpB,MAAM,KAAK,GAAG,MAAM,CAAC,+BAA+B,EAAE;YACpD,KAAK,EAAE,wBAAwB,CAAC,KAAK,CAAC;SACvC,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,oBAAoB,CACvD,KAAK,EACL,WAAW;YACT,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE,EAAE;YACzD,CAAC,CAAC,SAAS,CACd,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO;YACL,KAAK,EAAE,GAAG,CAAC,iBAAiB;YAC5B,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,IAAI,SAAS;SACpD,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,KAAK,CAAC,wBAAwB,CAC5B,KAA6B;QAE7B,yEAAyE;QACzE,MAAM,gBAAgB,GAAG,WAAW,CAClC,IAAI,CAAC,cAAc,EAAE,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI,CAAC,YAAY,CAC5E,CAAC;QACF,MAAM,gBAAgB,GAAG,gBAAgB,KAAK,0BAA0B,CAAC;QACzE,IAAI,gBAAgB,KAAK,SAAS,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxD,qDAAqD;YACrD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,gBAAgB,GACpB,kBAAkB,IAAI,KAAK;YACzB,CAAC,CAAC,mBAAmB,KAAK,CAAC,gBAAgB,EAAE;YAC7C,CAAC,CAAC,qBAAqB,IAAI,KAAK;gBAC9B,CAAC,CAAC,sBAAsB,KAAK,CAAC,mBAAmB,EAAE;gBACnD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,MAAqC,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,kEAAkE;gBAClE,iEAAiE;gBACjE,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,IAAI,KAAK,CACb,2CAA2C,gBAAgB,IAAI;gBAC/D,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI;gBACvD,gEAAgE;gBAChE,iEAAiE;gBACjE,8BAA8B,CAC/B,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,mEAAmE;gBACnE,gEAAgE;gBAChE,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,IAAI,KAAK,CACb,4CAA4C,gBAAgB,IAAI;gBAChE,gEAAgE;gBAChE,iEAAiE;gBACjE,8CAA8C,CAC/C,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,qBAAqB,CAAC,WAAoB;QAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAC9D,EAAE,EACF,WAAW;YACT,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE,EAAE;YACzD,CAAC,CAAC,SAAS,CACd,CAAC;QACF,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,oBAAoB,CAAC,OAAe,EAAE,WAAoB;QAC9D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,CACtD,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,EAC/B,WAAW;YACT,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,WAAW,EAAE,EAAE,EAAE;YACzD,CAAC,CAAC,SAAS,CACd,CAAC;QACF,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAgB;QAClC,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB,CAAC,SAAiB,EAAE,OAAe;QAC3D,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,UAAkB;QACvC,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,GAAyB;QACrD,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,WAAmB,EACnB,GAAW,EACX,UAAiE;QAEjE,MAAM,KAAK,GAAG,MAAM,CAAC,kBAAkB,EAAE;YACvC,WAAW;YACX,GAAG;SACJ,CAAC,CAAC;QACH,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtD,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,oBAAoB,EAAE;oBACnD,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,GAAyB;QACjD,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,kBAA0B;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAA0B;QAC7C,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,KAA8B;QACrD,OAAO,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,GAAyB;QACjD,2BAA2B,CAAC,GAAG,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAgB;QAClC,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAgB;QACjC,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,SAAyB;QAClD,wBAAwB,CAAC,SAAS,EAAE,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,6BAA6B,CACjC,WAAmB,EACnB,MAA+B,EAC/B,OAMC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,wCAAwC,EAAE;YAC7D,WAAW;YACX,MAAM;YACN,sBAAsB,EAAE,OAAO,EAAE,sBAAsB,IAAI,KAAK;YAChE,wBAAwB,EAAE,OAAO,EAAE,wBAAwB,IAAI,KAAK;YACpE,kCAAkC,EAAE,OAAO,EAAE,kCAAkC,IAAI,EAAE;SACtF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,kBAAkB,CACtB,WAAmB,EACnB,UAAkB,EAClB,OAA+B,EAC/B,OAAgC;QAEhC,MAAM,KAAK,GAAG,MAAM,CAAC,qBAAqB,EAAE;YAC1C,WAAW;YACX,UAAU;YACV,OAAO;SACR,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,KAAK,EAAE;YACrD,SAAS,EAAE,OAAO,EAAE,SAAS;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,WAAmB;QAC5C,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,wBAAwB,CAAC,WAAmB;QAChD,IAAI,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAE9B,SAAS,CAAC;YACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,CACxD,MAAM,CAAC,wBAAwB,EAAE;gBAC/B,WAAW;gBACX,aAAa;gBACb,QAAQ,EAAE,GAAG;aACd,CAAC,CACH,CAAC;YAEF,IAAI,IAAI,CAAC,cAAc,GAAG,aAAa,EAAE,CAAC;gBACxC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;YACtC,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,aAAa,CAAC;YACvB,CAAC;YAED,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;QACtC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,UAAkB;QAClC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,UAAkB,EAAE,WAAmB;QAC9D,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,UAAkB;QAC1C,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,WAAW,CAAC,KAAoB;QAC9B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;CACF"}
@@ -73,10 +73,11 @@ export interface ApprovalGateConfig {
73
73
  * `write`/`delete` whose target path is capturable (git-tracked — see
74
74
  * {@link isCapturablePath}) FLOWS instead of interrupting: the edit is reviewed
75
75
  * post-hoc as a captured `FileChangeSet`, not gated before it runs. A gitignored
76
- * path is NOT capturable, so it stays gated (the git substrate cannot capture or
77
- * revert it) — the exact twin of the Cursor hook's `__stigmer_is_gitignored`
78
- * allow-branch. `shell` and MCP tools are never bypassed by this flag. Off (the
79
- * default) keeps the classic true-pause gate for every mutation.
76
+ * path is NOT capturable by the git substrate, so it stays gated unless
77
+ * {@link captureIgnored} routes it into CAS capture — the exact twin of the
78
+ * Cursor hook's `__stigmer_is_gitignored` allow-branch. `shell` and MCP tools
79
+ * are never bypassed by this flag. Off (the default) keeps the classic
80
+ * true-pause gate for every mutation.
80
81
  */
81
82
  readonly fileCaptureMode?: boolean;
82
83
  /**
@@ -92,12 +93,12 @@ export interface ApprovalGateConfig {
92
93
  * instead of the interrupt gate, applying the DD-E secret gate. When off, a
93
94
  * gitignored path stays on the interrupt gate exactly as before.
94
95
  *
95
- * TRUE ONLY FOR THE PARENT GATE. Sub-agents build their own plain filesystem
96
- * backends, which the CAS observer does not wrap, so flowing their gitignored
97
- * edits would apply unobserved, unreviewable bytes. `buildSubAgentMiddleware`
98
- * therefore forces this to false for sub-agent gates — it must NOT be inherited
99
- * as true. (Sub-agent git-tracked edits are still captured by the turn-boundary
100
- * git diff, which is backend-agnostic.)
96
+ * True only for gates whose backend a CAS observer wraps: the parent gate
97
+ * always (setup.ts), and since DD-19 sub-agent gates too, because
98
+ * `compileSubagents` gives every sub-agent a CAS-observing backend wired to
99
+ * the SAME shared observer and `buildSubAgentMiddleware` then inherits this
100
+ * config verbatim. A gate over an UNOBSERVED backend must keep this false:
101
+ * flowing its gitignored edits would apply unobserved, unreviewable bytes.
101
102
  */
102
103
  readonly captureIgnored?: boolean;
103
104
  /**
@@ -107,6 +108,20 @@ export interface ApprovalGateConfig {
107
108
  * secret; the CONTENT never leaves the workspace). Absent ⇒ nothing recorded.
108
109
  */
109
110
  readonly recordBlockedSecret?: (rawPath: string) => void;
111
+ /**
112
+ * Capture a file's pre-delete bytes into the CAS observer so a CAS-owned
113
+ * (gitignored / non-git) DELETE can flow under {@link captureIgnored} and be
114
+ * reviewed post-hoc exactly like a write (issue #303) — the delete twin of the
115
+ * backend's `recordBefore` write observation. A delete is the one mutation the
116
+ * backend cannot observe (deepagents has no backend delete method to wrap), so
117
+ * the gate captures at authorization time instead: the file's bytes are still
118
+ * on disk here, and the turn boundary then reads after=null and authors a
119
+ * `FILE_CHANGE_KIND_DELETE` with the same discard-restores contract.
120
+ *
121
+ * Absent ⇒ deletes keep today's interrupt-gate behavior (fail-closed: a delete
122
+ * we cannot capture cannot be reviewed, so it must be approved up front).
123
+ */
124
+ readonly captureDeleteBefore?: (rawPath: string) => Promise<void>;
110
125
  /**
111
126
  * Unattended approval mode (ExecutionConfig.approval_mode = UNATTENDED):
112
127
  * the creating surface — a messaging channel, a guest share — has no