@sentry/junior 0.146.0 → 0.147.0

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 (155) hide show
  1. package/dist/{agent-hooks-SLJADYE5.js → agent-hooks-HS6VGUPM.js} +10 -10
  2. package/dist/api/conversations/detail.d.ts +1 -0
  3. package/dist/api/conversations/event-list.d.ts +1 -0
  4. package/dist/api/schema/conversation.d.ts +4 -0
  5. package/dist/api/schema.js +1 -1
  6. package/dist/api.js +26 -22
  7. package/dist/app.js +220 -238
  8. package/dist/{catalog-runtime-RQIMSDPR.js → catalog-runtime-M6ZTPYRV.js} +5 -5
  9. package/dist/chat/agent/prompt.d.ts +0 -2
  10. package/dist/chat/agent/request.d.ts +2 -5
  11. package/dist/chat/agent/sandbox.d.ts +2 -2
  12. package/dist/chat/agent/tools.d.ts +0 -2
  13. package/dist/chat/agent-dispatch/types.d.ts +2 -2
  14. package/dist/chat/capabilities/jr-rpc-command.d.ts +2 -2
  15. package/dist/chat/configuration/service.d.ts +5 -2
  16. package/dist/chat/configuration/sql.d.ts +9 -0
  17. package/dist/chat/configuration/types.d.ts +17 -13
  18. package/dist/chat/conversations/history.d.ts +3 -0
  19. package/dist/chat/conversations/projection.d.ts +10 -0
  20. package/dist/chat/credentials/unlink-provider.d.ts +2 -1
  21. package/dist/chat/credentials/user-token-store.d.ts +2 -0
  22. package/dist/chat/event-tasks/tool-support.d.ts +2 -0
  23. package/dist/chat/identities/sql.d.ts +8 -0
  24. package/dist/chat/logging.d.ts +2 -0
  25. package/dist/chat/mcp/auth-store.d.ts +0 -2
  26. package/dist/chat/mcp/oauth.d.ts +0 -2
  27. package/dist/chat/oauth-flow.d.ts +3 -1
  28. package/dist/chat/pi/client.d.ts +2 -0
  29. package/dist/chat/plugins/credential-hooks.d.ts +2 -0
  30. package/dist/chat/prompt.d.ts +0 -2
  31. package/dist/chat/resource-events/notification.d.ts +2 -1
  32. package/dist/chat/runtime/delivered-turn-state.d.ts +1 -4
  33. package/dist/chat/runtime/thread-state.d.ts +8 -11
  34. package/dist/chat/runtime/turn-input.d.ts +4 -2
  35. package/dist/chat/runtime/turn-preparation.d.ts +2 -4
  36. package/dist/chat/sandbox/command-result.d.ts +2 -0
  37. package/dist/chat/sandbox/egress/schemas.d.ts +6 -0
  38. package/dist/chat/scheduled-tasks/tool-support.d.ts +2 -0
  39. package/dist/chat/scheduled-tasks/tools/create.d.ts +2 -0
  40. package/dist/chat/scheduled-tasks/tools/delete.d.ts +2 -0
  41. package/dist/chat/scheduled-tasks/tools/list.d.ts +2 -0
  42. package/dist/chat/scheduled-tasks/tools/run-now.d.ts +2 -0
  43. package/dist/chat/scheduled-tasks/tools/update.d.ts +2 -0
  44. package/dist/chat/services/mcp-auth-orchestration.d.ts +0 -3
  45. package/dist/chat/services/plugin-auth-orchestration.d.ts +2 -1
  46. package/dist/chat/services/provider-default-config.d.ts +2 -2
  47. package/dist/chat/services/subscribed-decision.d.ts +3 -0
  48. package/dist/chat/services/subscribed-reply-policy.d.ts +1 -0
  49. package/dist/chat/services/turn-result.d.ts +0 -3
  50. package/dist/chat/services/turn-router.d.ts +3 -0
  51. package/dist/chat/slack/assistant-thread/lifecycle.d.ts +0 -1
  52. package/dist/chat/slack/assistant-thread/title.d.ts +0 -3
  53. package/dist/chat/slack/dispatch-turn.d.ts +1 -1
  54. package/dist/chat/slack/tools/canvas/context.d.ts +0 -10
  55. package/dist/chat/slack/tools/canvas/create.d.ts +2 -0
  56. package/dist/chat/slack/tools/canvas/edit.d.ts +2 -0
  57. package/dist/chat/slack/tools/canvas/read.d.ts +2 -0
  58. package/dist/chat/slack/tools/canvas/write.d.ts +2 -0
  59. package/dist/chat/slack/tools/channel-list-messages.d.ts +2 -0
  60. package/dist/chat/slack/tools/conversation-message-search.d.ts +2 -0
  61. package/dist/chat/slack/tools/list/add-items.d.ts +4 -1
  62. package/dist/chat/slack/tools/list/api.d.ts +8 -1
  63. package/dist/chat/slack/tools/list/create.d.ts +2 -0
  64. package/dist/chat/slack/tools/list/get-items.d.ts +5 -3
  65. package/dist/chat/slack/tools/list/update-item.d.ts +5 -1
  66. package/dist/chat/slack/tools/message-add-reaction.d.ts +2 -0
  67. package/dist/chat/slack/tools/public-search.d.ts +2 -0
  68. package/dist/chat/slack/tools/send-files.d.ts +2 -0
  69. package/dist/chat/slack/tools/thread-read.d.ts +2 -0
  70. package/dist/chat/slack/vision-cache.d.ts +5 -0
  71. package/dist/chat/state/conversation.d.ts +4 -5
  72. package/dist/chat/tool-support/structured-result.d.ts +1 -0
  73. package/dist/chat/tool-support/timed-out-tool-result.d.ts +11 -0
  74. package/dist/chat/tools/create-event-task.d.ts +2 -0
  75. package/dist/chat/tools/delete-event-task.d.ts +2 -0
  76. package/dist/chat/tools/handoff/tool.d.ts +2 -0
  77. package/dist/chat/tools/list-event-tasks.d.ts +2 -0
  78. package/dist/chat/tools/list-resource-event-subscriptions.d.ts +2 -0
  79. package/dist/chat/tools/runtime/report-progress.d.ts +2 -0
  80. package/dist/chat/tools/runtime/spawn-agent.d.ts +2 -0
  81. package/dist/chat/tools/search-conversation-events.d.ts +2 -0
  82. package/dist/chat/tools/search-resource-event-types.d.ts +2 -0
  83. package/dist/chat/tools/search-tools.d.ts +2 -0
  84. package/dist/chat/tools/skill/load-skill.d.ts +2 -0
  85. package/dist/chat/tools/skill/search-mcp-tools.d.ts +2 -0
  86. package/dist/chat/tools/stop-watching-resources.d.ts +2 -0
  87. package/dist/chat/tools/system-time.d.ts +2 -0
  88. package/dist/chat/tools/types.d.ts +0 -6
  89. package/dist/chat/tools/update-event-task.d.ts +2 -0
  90. package/dist/chat/tools/user-lookup.d.ts +29 -0
  91. package/dist/chat/tools/watch-resource-events.d.ts +2 -0
  92. package/dist/chat/tools/web/fetch-tool.d.ts +2 -0
  93. package/dist/chat/tools/web/image-generate.d.ts +2 -0
  94. package/dist/chat/tools/web/search.d.ts +2 -0
  95. package/dist/{chunk-LVW7BLLT.js → chunk-34GS7B6L.js} +2 -2
  96. package/dist/{chunk-B63BF443.js → chunk-4LJO56OJ.js} +9 -1
  97. package/dist/{chunk-H6U2U3EP.js → chunk-6H5SZR24.js} +16 -20
  98. package/dist/{chunk-M6ZWP4RI.js → chunk-745QJ3ZA.js} +1 -1
  99. package/dist/{chunk-BLETMLRX.js → chunk-7A4M7PCV.js} +231 -472
  100. package/dist/{chunk-MKRIZ4VG.js → chunk-7NVJVJID.js} +4 -2
  101. package/dist/{chunk-ZDGHGY74.js → chunk-7UQIVT6G.js} +13 -6
  102. package/dist/{chunk-GDQEU4I7.js → chunk-AIOK6LAG.js} +28 -489
  103. package/dist/{chunk-QSXZ42KX.js → chunk-AVOCH2Z5.js} +3 -3
  104. package/dist/{chunk-FXDDDSPL.js → chunk-AVZDSUFB.js} +4 -4
  105. package/dist/{chunk-OFPYOC3M.js → chunk-AYU72WO7.js} +102 -72
  106. package/dist/chunk-AZ7EAOBE.js +566 -0
  107. package/dist/{chunk-PH4Q3A6W.js → chunk-CSZINQJ2.js} +1 -1
  108. package/dist/{chunk-X2WMBTS3.js → chunk-CWP5RHVX.js} +4 -4
  109. package/dist/{chunk-HQE6EJS5.js → chunk-DLDRQHG5.js} +1 -1
  110. package/dist/{chunk-MCFIXAV5.js → chunk-DU74WPIC.js} +55 -37
  111. package/dist/{chunk-X22KCSCO.js → chunk-EFLJ2WJH.js} +6 -4
  112. package/dist/{chunk-37JJDS4H.js → chunk-GGB4WL5A.js} +1 -1
  113. package/dist/{chunk-F7REGDKO.js → chunk-IIOOO4FQ.js} +1 -1
  114. package/dist/{chunk-PB222GIA.js → chunk-JUUKWRBE.js} +1 -1
  115. package/dist/{chunk-T5GXFFLA.js → chunk-K4SZAP3K.js} +1 -1
  116. package/dist/{chunk-GYEKOX7N.js → chunk-ORO3PWKQ.js} +1 -1
  117. package/dist/{chunk-AISNSNDV.js → chunk-PVNG6UMU.js} +3 -3
  118. package/dist/{chunk-47OSH2ZO.js → chunk-Q4R73I43.js} +365 -206
  119. package/dist/{chunk-QG7OOKIN.js → chunk-RXBVB2JM.js} +1 -1
  120. package/dist/{chunk-V6SRLKUB.js → chunk-SGZO7UWH.js} +2 -2
  121. package/dist/{chunk-JLMVCNXL.js → chunk-SVHUEHUL.js} +1 -0
  122. package/dist/{chunk-FEKQHPVA.js → chunk-X5UY34KT.js} +6 -5
  123. package/dist/{chunk-FGHADGIC.js → chunk-YBVXBNSV.js} +2 -2
  124. package/dist/{chunk-JUA6VU2Z.js → chunk-YEO3VX72.js} +10 -23
  125. package/dist/{chunk-SCGVWUZX.js → chunk-YHDERDRO.js} +7 -6
  126. package/dist/{chunk-TCEJ7XXM.js → chunk-YNTTROJT.js} +1 -1
  127. package/dist/{chunk-37EVZP66.js → chunk-YSB2N563.js} +49 -8
  128. package/dist/{chunk-W65V465O.js → chunk-Z4YU7Z4L.js} +3 -2
  129. package/dist/cli/chat.js +32 -32
  130. package/dist/cli/check.js +6 -6
  131. package/dist/cli/plugins.js +13 -13
  132. package/dist/cli/snapshot-create.js +9 -9
  133. package/dist/cli/upgrade.js +7 -7
  134. package/dist/db/schema/location-configurations.d.ts +127 -0
  135. package/dist/db/schema.d.ts +128 -1
  136. package/dist/{db-WWOMXWTT.js → db-CSEW4RII.js} +7 -7
  137. package/dist/instrumentation.js +4 -4
  138. package/dist/nitro.js +2 -2
  139. package/dist/{oauth-callback-server-A6ZZX74U.js → oauth-callback-server-FUEV5HNG.js} +24 -24
  140. package/dist/{runner-KSGB2UAV.js → runner-U3XHSKSH.js} +21 -39
  141. package/dist/{skills-26QPWKVS.js → skills-AKE6W3WI.js} +6 -6
  142. package/dist/spawn-B6GDTWJ4.js +39 -0
  143. package/dist/{validation-OPSRGFGH.js → validation-WDTAULUF.js} +6 -6
  144. package/dist/version.js +1 -1
  145. package/dist/{work-VMSW7STJ.js → work-C3HAO2BG.js} +17 -17
  146. package/dist/{worker-2JNFB7C7.js → worker-LNP4YKBM.js} +10 -10
  147. package/migrations/0024_misty_typhoid_mary.sql +12 -0
  148. package/migrations/meta/0024_snapshot.json +2275 -0
  149. package/migrations/meta/_journal.json +7 -0
  150. package/package.json +5 -5
  151. package/dist/chat/slack/tools/user-lookup.d.ts +0 -27
  152. package/dist/chat/state/artifacts.d.ts +0 -30
  153. package/dist/chat/tool-support/turn-deadline-result.d.ts +0 -3
  154. package/dist/chunk-Q6QZTTLS.js +0 -55
  155. package/dist/spawn-5LAJXZ2P.js +0 -39
@@ -31,6 +31,7 @@ export declare function createSlackScheduleRunTaskNowTool(context: SchedulerTool
31
31
  run_now_at: string | null;
32
32
  };
33
33
  truncated?: boolean | undefined;
34
+ timed_out?: boolean | undefined;
34
35
  continuation?: {
35
36
  arguments: Record<string, unknown>;
36
37
  reason?: string | undefined;
@@ -60,6 +61,7 @@ export declare function createSlackScheduleRunTaskNowTool(context: SchedulerTool
60
61
  run_now_at: string | null;
61
62
  };
62
63
  truncated?: boolean | undefined;
64
+ timed_out?: boolean | undefined;
63
65
  continuation?: {
64
66
  arguments: Record<string, unknown>;
65
67
  reason?: string | undefined;
@@ -58,6 +58,7 @@ export declare function createSlackScheduleUpdateTaskTool(context: SchedulerTool
58
58
  run_now_at: string | null;
59
59
  };
60
60
  truncated?: boolean | undefined;
61
+ timed_out?: boolean | undefined;
61
62
  continuation?: {
62
63
  arguments: Record<string, unknown>;
63
64
  reason?: string | undefined;
@@ -87,6 +88,7 @@ export declare function createSlackScheduleUpdateTaskTool(context: SchedulerTool
87
88
  run_now_at: string | null;
88
89
  };
89
90
  truncated?: boolean | undefined;
91
+ timed_out?: boolean | undefined;
90
92
  continuation?: {
91
93
  arguments: Record<string, unknown>;
92
94
  reason?: string | undefined;
@@ -10,7 +10,6 @@ import type { OAuthClientProvider } from "@modelcontextprotocol/sdk/client/auth.
10
10
  import type { Destination, Source } from "@sentry/junior-plugin-api";
11
11
  import { type OAuthAuthorization } from "@/chat/oauth-authorization";
12
12
  import { AuthorizationPauseError } from "@/chat/services/auth-pause";
13
- import type { ThreadArtifactsState } from "@/chat/state/artifacts";
14
13
  import type { ConversationPendingAuthState } from "@/chat/state/conversation";
15
14
  import type { PluginDefinition } from "@/chat/plugins/types";
16
15
  export declare class McpAuthorizationPauseError extends AuthorizationPauseError {
@@ -29,8 +28,6 @@ export interface McpAuthOrchestrationInput {
29
28
  userMessage: string;
30
29
  pendingAuth?: ConversationPendingAuthState;
31
30
  getConfiguration: () => Record<string, unknown>;
32
- getArtifactState: () => ThreadArtifactsState | undefined;
33
- getMergedArtifactState: () => ThreadArtifactsState;
34
31
  recordPendingAuth?: (pendingAuth: ConversationPendingAuthState | undefined) => void | Promise<void>;
35
32
  /** When false, required auth hard-fails instead of pausing for an OAuth link. */
36
33
  interactiveAuthEnabled?: boolean;
@@ -10,7 +10,7 @@
10
10
  * signal emitted by the egress proxy — never inferred from bash command text,
11
11
  * stdout patterns, or exit codes.
12
12
  */
13
- import type { Destination, Source } from "@sentry/junior-plugin-api";
13
+ import type { Actor, Destination, Source } from "@sentry/junior-plugin-api";
14
14
  import type { UserTokenStore } from "@/chat/credentials/user-token-store";
15
15
  import { AuthorizationPauseError } from "@/chat/services/auth-pause";
16
16
  import type { ConversationPendingAuthState } from "@/chat/state/conversation";
@@ -27,6 +27,7 @@ export interface PluginAuthOrchestrationInput {
27
27
  conversationId?: string;
28
28
  sessionId?: string;
29
29
  actorId?: string;
30
+ actor?: Actor;
30
31
  channelId?: string;
31
32
  destination?: Destination;
32
33
  source?: Source;
@@ -1,7 +1,7 @@
1
- import type { ChannelConfigurationService } from "@/chat/configuration/types";
1
+ import type { LocationConfigurationService } from "@/chat/configuration/types";
2
2
  /** Apply explicit provider-default config requests that do not need agent reasoning. */
3
3
  export declare function maybeApplyProviderDefaultConfigRequest(args: {
4
- channelConfiguration?: ChannelConfigurationService;
4
+ locationConfiguration?: LocationConfigurationService;
5
5
  actorId?: string;
6
6
  text: string;
7
7
  }): Promise<{
@@ -24,6 +24,7 @@ export interface SubscribedDecisionInput {
24
24
  };
25
25
  }
26
26
  export interface SubscribedDecisionResult {
27
+ costUsd?: number;
27
28
  shouldReply: boolean;
28
29
  shouldUnsubscribe?: boolean;
29
30
  reason: SubscribedReplyReason;
@@ -55,7 +56,9 @@ export declare function decideSubscribedThreadReply(args: {
55
56
  system: string;
56
57
  prompt: string;
57
58
  metadata: Record<string, string>;
59
+ promptName?: string;
58
60
  }) => Promise<{
61
+ costUsd?: number;
59
62
  object: unknown;
60
63
  }>;
61
64
  logClassifierFailure: (error: unknown, input: SubscribedDecisionInput) => void;
@@ -4,6 +4,7 @@ export interface SubscribedReplyPolicyDeps {
4
4
  completeObject: typeof completeObject;
5
5
  }
6
6
  export interface SubscribedReplyDecision {
7
+ costUsd?: number;
7
8
  reason: string;
8
9
  shouldReply: boolean;
9
10
  shouldUnsubscribe?: boolean;
@@ -1,7 +1,6 @@
1
1
  import type { PiMessage } from "@/chat/pi/messages";
2
2
  import type { TurnRoute } from "@/chat/services/turn-router";
3
3
  import type { AgentTurnUsage } from "@/chat/usage";
4
- import type { ThreadArtifactsState } from "@/chat/state/artifacts";
5
4
  import type { SandboxRef } from "@/chat/sandbox/ref";
6
5
  export interface AgentTurnDiagnostics {
7
6
  assistantMessageCount: number;
@@ -21,7 +20,6 @@ export interface AgentTurnDiagnostics {
21
20
  export interface AgentRunResult {
22
21
  /** Sanitized terminal text for diagnostics and failure fallback, not success delivery. */
23
22
  text: string;
24
- artifactStatePatch?: Partial<ThreadArtifactsState>;
25
23
  sandboxRef?: SandboxRef;
26
24
  piMessages?: PiMessage[];
27
25
  diagnostics: AgentTurnDiagnostics;
@@ -29,7 +27,6 @@ export interface AgentRunResult {
29
27
  export interface TurnResultInput {
30
28
  newMessages: unknown[];
31
29
  userInput: string;
32
- artifactStatePatch: Partial<ThreadArtifactsState>;
33
30
  toolCalls: string[];
34
31
  sandboxRef?: SandboxRef;
35
32
  piMessages?: PiMessage[];
@@ -17,6 +17,7 @@ declare function createTurnRouteSchema(profiles: Readonly<Record<string, Executi
17
17
  }, z.core.$strip>;
18
18
  export interface TurnRoute {
19
19
  confidence?: number;
20
+ costUsd?: number;
20
21
  profile: ModelProfile;
21
22
  reasoningLevel: TurnReasoningLevel;
22
23
  reason: string;
@@ -35,7 +36,9 @@ export declare function selectTurnRoute(args: {
35
36
  thinkingLevel?: ProviderThinkingLevel;
36
37
  system: string;
37
38
  temperature: number;
39
+ promptName?: string;
38
40
  }) => Promise<{
41
+ costUsd?: number;
39
42
  object: unknown;
40
43
  }>;
41
44
  conversationContext?: string;
@@ -4,7 +4,6 @@ interface AssistantThreadLifecycleEvent {
4
4
  threadTs: string;
5
5
  sourceChannelId?: string;
6
6
  getSlackAdapter: () => SlackAdapter;
7
- onContextChannelResolved: (sourceChannelId: string) => Promise<void>;
8
7
  }
9
8
  /** Initialize a newly started Slack assistant thread. */
10
9
  export declare function initializeAssistantThread(event: AssistantThreadLifecycleEvent): Promise<void>;
@@ -1,6 +1,5 @@
1
1
  import type { SlackAdapter } from "@chat-adapter/slack";
2
2
  import { type ConversationMemoryService } from "@/chat/services/conversation-memory";
3
- import type { ThreadArtifactsState } from "@/chat/state/artifacts";
4
3
  import type { ThreadConversationState } from "@/chat/state/conversation";
5
4
  /**
6
5
  * Best-effort conversation title generation for all Slack conversations.
@@ -21,7 +20,6 @@ export declare function maybeUpdateAssistantTitle(args: {
21
20
  threadTs: string;
22
21
  };
23
22
  assistantUserName: string;
24
- artifacts: ThreadArtifactsState;
25
23
  channelId?: string;
26
24
  conversation: ThreadConversationState;
27
25
  generateThreadTitle: ConversationMemoryService["generateThreadTitle"];
@@ -31,6 +29,5 @@ export declare function maybeUpdateAssistantTitle(args: {
31
29
  runId?: string;
32
30
  threadId?: string;
33
31
  }): Promise<{
34
- sourceMessageId: string;
35
32
  title?: string;
36
33
  } | undefined>;
@@ -16,7 +16,7 @@ interface DispatchReplyToThread {
16
16
  }
17
17
  /** Build the Slack provider adapter for agent-dispatched conversation turns. */
18
18
  export declare function createSlackDispatchTurnRunner(options: {
19
- getChannelConfiguration: (channelId: string) => DispatchTurnContext["channelConfiguration"];
19
+ getLocationConfiguration: (destination: DispatchRecord["destination"]) => DispatchTurnContext["locationConfiguration"];
20
20
  getSlackAdapter: () => SlackAdapter;
21
21
  replyToThread: DispatchReplyToThread;
22
22
  }): (dispatch: DispatchRecord, hooks: {
@@ -1,11 +1,3 @@
1
- import type { CanvasArtifactSummary } from "@/chat/state/artifacts";
2
- import type { ToolState } from "@/chat/tools/types";
3
- /** Merge a created canvas into artifact state without growing context forever. */
4
- export declare function mergeRecentCanvases(existing: CanvasArtifactSummary[] | undefined, created: {
5
- id: string;
6
- title: string;
7
- url?: string;
8
- }): CanvasArtifactSummary[];
9
1
  /** Resolve model-provided canvas references before Slack API calls. */
10
2
  export declare function resolveCanvasTarget(canvas: string): {
11
3
  ok: true;
@@ -14,5 +6,3 @@ export declare function resolveCanvasTarget(canvas: string): {
14
6
  ok: false;
15
7
  error: string;
16
8
  };
17
- /** Preserve known canvas permalinks when tools only receive an ID. */
18
- export declare function storedCanvasUrl(state: ToolState, canvasId: string): string | undefined;
@@ -12,6 +12,7 @@ export declare function createSlackCanvasCreateTool(context: SlackToolContext, s
12
12
  [x: string]: unknown;
13
13
  target?: string | undefined;
14
14
  truncated?: boolean | undefined;
15
+ timed_out?: boolean | undefined;
15
16
  continuation?: {
16
17
  arguments: Record<string, unknown>;
17
18
  reason?: string | undefined;
@@ -20,6 +21,7 @@ export declare function createSlackCanvasCreateTool(context: SlackToolContext, s
20
21
  [x: string]: unknown;
21
22
  target?: string | undefined;
22
23
  truncated?: boolean | undefined;
24
+ timed_out?: boolean | undefined;
23
25
  continuation?: {
24
26
  arguments: Record<string, unknown>;
25
27
  reason?: string | undefined;
@@ -13,6 +13,7 @@ export declare function createSlackCanvasEditTool(state: ToolState): Omit<import
13
13
  execute?: ((input: unknown, options: import("../../../tools/definition").ToolExecuteOptions) => {
14
14
  target?: string | undefined;
15
15
  truncated?: boolean | undefined;
16
+ timed_out?: boolean | undefined;
16
17
  continuation?: {
17
18
  arguments: Record<string, unknown>;
18
19
  reason?: string | undefined;
@@ -29,6 +30,7 @@ export declare function createSlackCanvasEditTool(state: ToolState): Omit<import
29
30
  } | Promise<{
30
31
  target?: string | undefined;
31
32
  truncated?: boolean | undefined;
33
+ timed_out?: boolean | undefined;
32
34
  continuation?: {
33
35
  arguments: Record<string, unknown>;
34
36
  reason?: string | undefined;
@@ -14,6 +14,7 @@ export declare function createSlackCanvasReadTool(): Omit<import("../../../tools
14
14
  execute?: ((input: unknown, options: import("../../../tools/definition").ToolExecuteOptions) => {
15
15
  target?: string | undefined;
16
16
  truncated?: boolean | undefined;
17
+ timed_out?: boolean | undefined;
17
18
  continuation?: {
18
19
  arguments: Record<string, unknown>;
19
20
  reason?: string | undefined;
@@ -31,6 +32,7 @@ export declare function createSlackCanvasReadTool(): Omit<import("../../../tools
31
32
  } | Promise<{
32
33
  target?: string | undefined;
33
34
  truncated?: boolean | undefined;
35
+ timed_out?: boolean | undefined;
34
36
  continuation?: {
35
37
  arguments: Record<string, unknown>;
36
38
  reason?: string | undefined;
@@ -11,6 +11,7 @@ export declare function createSlackCanvasWriteTool(state: ToolState): Omit<impor
11
11
  [x: string]: unknown;
12
12
  target?: string | undefined;
13
13
  truncated?: boolean | undefined;
14
+ timed_out?: boolean | undefined;
14
15
  continuation?: {
15
16
  arguments: Record<string, unknown>;
16
17
  reason?: string | undefined;
@@ -19,6 +20,7 @@ export declare function createSlackCanvasWriteTool(state: ToolState): Omit<impor
19
20
  [x: string]: unknown;
20
21
  target?: string | undefined;
21
22
  truncated?: boolean | undefined;
23
+ timed_out?: boolean | undefined;
22
24
  continuation?: {
23
25
  arguments: Record<string, unknown>;
24
26
  reason?: string | undefined;
@@ -15,6 +15,7 @@ export declare function createSlackChannelListMessagesTool(context: SlackToolCon
15
15
  [x: string]: unknown;
16
16
  target?: string | undefined;
17
17
  truncated?: boolean | undefined;
18
+ timed_out?: boolean | undefined;
18
19
  continuation?: {
19
20
  arguments: Record<string, unknown>;
20
21
  reason?: string | undefined;
@@ -23,6 +24,7 @@ export declare function createSlackChannelListMessagesTool(context: SlackToolCon
23
24
  [x: string]: unknown;
24
25
  target?: string | undefined;
25
26
  truncated?: boolean | undefined;
27
+ timed_out?: boolean | undefined;
26
28
  continuation?: {
27
29
  arguments: Record<string, unknown>;
28
30
  reason?: string | undefined;
@@ -29,6 +29,7 @@ export declare function createSlackConversationMessageSearchTool(scope: Conversa
29
29
  }[];
30
30
  target?: string | undefined;
31
31
  truncated?: boolean | undefined;
32
+ timed_out?: boolean | undefined;
32
33
  continuation?: {
33
34
  arguments: Record<string, unknown>;
34
35
  reason?: string | undefined;
@@ -51,6 +52,7 @@ export declare function createSlackConversationMessageSearchTool(scope: Conversa
51
52
  }[];
52
53
  target?: string | undefined;
53
54
  truncated?: boolean | undefined;
55
+ timed_out?: boolean | undefined;
54
56
  continuation?: {
55
57
  arguments: Record<string, unknown>;
56
58
  reason?: string | undefined;
@@ -1,9 +1,10 @@
1
1
  import type { ToolState } from "@/chat/tools/types";
2
- /** Create a tool that appends items to the active Slack list. */
2
+ /** Create a tool that appends items to an explicit Slack list. */
3
3
  export declare function createSlackListAddItemsTool(state: ToolState): Omit<import("../../../tools/definition").AnyToolDefinition, "inputSchema" | "outputSchema" | "prepareArguments" | "execute"> & {
4
4
  inputSchema: import("../../../tools/definition").JsonSchemaObject;
5
5
  outputSchema: import("../../../tools/definition").JsonSchemaObject;
6
6
  prepareArguments(args: unknown): {
7
+ list_id: string;
7
8
  items: string[];
8
9
  assignee_user_id?: string | undefined;
9
10
  due_date?: string | undefined;
@@ -12,6 +13,7 @@ export declare function createSlackListAddItemsTool(state: ToolState): Omit<impo
12
13
  [x: string]: unknown;
13
14
  target?: string | undefined;
14
15
  truncated?: boolean | undefined;
16
+ timed_out?: boolean | undefined;
15
17
  continuation?: {
16
18
  arguments: Record<string, unknown>;
17
19
  reason?: string | undefined;
@@ -20,6 +22,7 @@ export declare function createSlackListAddItemsTool(state: ToolState): Omit<impo
20
22
  [x: string]: unknown;
21
23
  target?: string | undefined;
22
24
  truncated?: boolean | undefined;
25
+ timed_out?: boolean | undefined;
23
26
  continuation?: {
24
27
  arguments: Record<string, unknown>;
25
28
  reason?: string | undefined;
@@ -1,5 +1,10 @@
1
1
  import type { SlackUserId } from "@/chat/slack/ids";
2
- import type { ListColumnMap } from "@/chat/state/artifacts";
2
+ export interface ListColumnMap {
3
+ titleColumnId?: string;
4
+ completedColumnId?: string;
5
+ assigneeColumnId?: string;
6
+ dueDateColumnId?: string;
7
+ }
3
8
  interface SlackListsSchemaColumnResponse {
4
9
  id: string;
5
10
  key: string;
@@ -19,6 +24,8 @@ export declare function createTodoList(name: string): Promise<{
19
24
  listColumnMap: ListColumnMap;
20
25
  permalink?: string;
21
26
  }>;
27
+ /** Read a Slack list schema and map its standard columns. */
28
+ export declare function getListColumnMap(listId: string): Promise<ListColumnMap>;
22
29
  /** Add one or more items to an existing Slack list. */
23
30
  export declare function addListItems(input: {
24
31
  listId: string;
@@ -10,6 +10,7 @@ export declare function createSlackListCreateTool(state: ToolState): Omit<import
10
10
  [x: string]: unknown;
11
11
  target?: string | undefined;
12
12
  truncated?: boolean | undefined;
13
+ timed_out?: boolean | undefined;
13
14
  continuation?: {
14
15
  arguments: Record<string, unknown>;
15
16
  reason?: string | undefined;
@@ -18,6 +19,7 @@ export declare function createSlackListCreateTool(state: ToolState): Omit<import
18
19
  [x: string]: unknown;
19
20
  target?: string | undefined;
20
21
  truncated?: boolean | undefined;
22
+ timed_out?: boolean | undefined;
21
23
  continuation?: {
22
24
  arguments: Record<string, unknown>;
23
25
  reason?: string | undefined;
@@ -1,15 +1,16 @@
1
- import type { ToolState } from "@/chat/tools/types";
2
- /** Create a tool that reads items from the active Slack list. */
3
- export declare function createSlackListGetItemsTool(state: ToolState): Omit<import("../../../tools/definition").AnyToolDefinition, "inputSchema" | "outputSchema" | "prepareArguments" | "execute"> & {
1
+ /** Create a tool that reads items from an explicit Slack list. */
2
+ export declare function createSlackListGetItemsTool(): Omit<import("../../../tools/definition").AnyToolDefinition, "inputSchema" | "outputSchema" | "prepareArguments" | "execute"> & {
4
3
  inputSchema: import("../../../tools/definition").JsonSchemaObject;
5
4
  outputSchema: import("../../../tools/definition").JsonSchemaObject;
6
5
  prepareArguments(args: unknown): {
6
+ list_id: string;
7
7
  limit?: number | undefined;
8
8
  };
9
9
  execute?: ((input: unknown, options: import("../../../tools/definition").ToolExecuteOptions) => {
10
10
  [x: string]: unknown;
11
11
  target?: string | undefined;
12
12
  truncated?: boolean | undefined;
13
+ timed_out?: boolean | undefined;
13
14
  continuation?: {
14
15
  arguments: Record<string, unknown>;
15
16
  reason?: string | undefined;
@@ -18,6 +19,7 @@ export declare function createSlackListGetItemsTool(state: ToolState): Omit<impo
18
19
  [x: string]: unknown;
19
20
  target?: string | undefined;
20
21
  truncated?: boolean | undefined;
22
+ timed_out?: boolean | undefined;
21
23
  continuation?: {
22
24
  arguments: Record<string, unknown>;
23
25
  reason?: string | undefined;
@@ -1,13 +1,15 @@
1
1
  import type { ToolState } from "@/chat/tools/types";
2
- /** Create a tool that updates an item in the active Slack list. */
2
+ /** Create a tool that updates an item in an explicit Slack list. */
3
3
  export declare function createSlackListUpdateItemTool(state: ToolState): Omit<import("../../../tools/definition").AnyToolDefinition, "inputSchema" | "outputSchema" | "prepareArguments" | "execute"> & {
4
4
  inputSchema: import("../../../tools/definition").JsonSchemaObject;
5
5
  outputSchema: import("../../../tools/definition").JsonSchemaObject;
6
6
  prepareArguments(args: unknown): {
7
+ list_id: string;
7
8
  item_id: string;
8
9
  completed: boolean;
9
10
  title?: string | undefined;
10
11
  } | {
12
+ list_id: string;
11
13
  item_id: string;
12
14
  title: string;
13
15
  completed?: boolean | undefined;
@@ -16,6 +18,7 @@ export declare function createSlackListUpdateItemTool(state: ToolState): Omit<im
16
18
  [x: string]: unknown;
17
19
  target?: string | undefined;
18
20
  truncated?: boolean | undefined;
21
+ timed_out?: boolean | undefined;
19
22
  continuation?: {
20
23
  arguments: Record<string, unknown>;
21
24
  reason?: string | undefined;
@@ -24,6 +27,7 @@ export declare function createSlackListUpdateItemTool(state: ToolState): Omit<im
24
27
  [x: string]: unknown;
25
28
  target?: string | undefined;
26
29
  truncated?: boolean | undefined;
30
+ timed_out?: boolean | undefined;
27
31
  continuation?: {
28
32
  arguments: Record<string, unknown>;
29
33
  reason?: string | undefined;
@@ -11,6 +11,7 @@ export declare function createSlackMessageAddReactionTool(context: SlackToolCont
11
11
  [x: string]: unknown;
12
12
  target?: string | undefined;
13
13
  truncated?: boolean | undefined;
14
+ timed_out?: boolean | undefined;
14
15
  continuation?: {
15
16
  arguments: Record<string, unknown>;
16
17
  reason?: string | undefined;
@@ -19,6 +20,7 @@ export declare function createSlackMessageAddReactionTool(context: SlackToolCont
19
20
  [x: string]: unknown;
20
21
  target?: string | undefined;
21
22
  truncated?: boolean | undefined;
23
+ timed_out?: boolean | undefined;
22
24
  continuation?: {
23
25
  arguments: Record<string, unknown>;
24
26
  reason?: string | undefined;
@@ -28,6 +28,7 @@ export declare function createSlackPublicSearchTool(actionToken: SlackActionToke
28
28
  }[];
29
29
  target?: string | undefined;
30
30
  truncated?: boolean | undefined;
31
+ timed_out?: boolean | undefined;
31
32
  continuation?: {
32
33
  arguments: Record<string, unknown>;
33
34
  reason?: string | undefined;
@@ -49,6 +50,7 @@ export declare function createSlackPublicSearchTool(actionToken: SlackActionToke
49
50
  }[];
50
51
  target?: string | undefined;
51
52
  truncated?: boolean | undefined;
53
+ timed_out?: boolean | undefined;
52
54
  continuation?: {
53
55
  arguments: Record<string, unknown>;
54
56
  reason?: string | undefined;
@@ -22,6 +22,7 @@ export declare function createSendFilesTool(context: SlackToolContext, state: To
22
22
  file_count: number;
23
23
  thread_ts: string;
24
24
  truncated?: boolean | undefined;
25
+ timed_out?: boolean | undefined;
25
26
  continuation?: {
26
27
  arguments: Record<string, unknown>;
27
28
  reason?: string | undefined;
@@ -35,6 +36,7 @@ export declare function createSendFilesTool(context: SlackToolContext, state: To
35
36
  file_count: number;
36
37
  thread_ts: string;
37
38
  truncated?: boolean | undefined;
39
+ timed_out?: boolean | undefined;
38
40
  continuation?: {
39
41
  arguments: Record<string, unknown>;
40
42
  reason?: string | undefined;
@@ -17,6 +17,7 @@ export declare function createSlackThreadReadTool(context: SlackToolContext, dep
17
17
  [x: string]: unknown;
18
18
  target?: string | undefined;
19
19
  truncated?: boolean | undefined;
20
+ timed_out?: boolean | undefined;
20
21
  continuation?: {
21
22
  arguments: Record<string, unknown>;
22
23
  reason?: string | undefined;
@@ -25,6 +26,7 @@ export declare function createSlackThreadReadTool(context: SlackToolContext, dep
25
26
  [x: string]: unknown;
26
27
  target?: string | undefined;
27
28
  truncated?: boolean | undefined;
29
+ timed_out?: boolean | undefined;
28
30
  continuation?: {
29
31
  arguments: Record<string, unknown>;
30
32
  reason?: string | undefined;
@@ -0,0 +1,5 @@
1
+ import type { ConversationVisionState } from "@/chat/state/conversation";
2
+ /** Load the disposable image-analysis cache for one conversation. */
3
+ export declare function loadConversationVisionCache(conversationId: string): Promise<ConversationVisionState>;
4
+ /** Replace the disposable image-analysis cache with a bounded snapshot. */
5
+ export declare function persistConversationVisionCache(conversationId: string, vision: ConversationVisionState): Promise<void>;
@@ -66,13 +66,12 @@ export interface ThreadConversationState {
66
66
  /** Safely coerce an unknown persisted value into a ThreadConversationState. */
67
67
  export declare function coerceThreadConversationState(value: unknown): ThreadConversationState;
68
68
  /**
69
- * Wrap conversation runtime scratch into the storage envelope.
69
+ * Wrap active conversation control into the thread scratch envelope.
70
70
  *
71
- * Visible transcript and model history live in SQL. Redis only keeps
72
- * short-lived processing control and the vision cache, which has no other
73
- * authority yet.
71
+ * Visible history lives in SQL. Image summaries use a separate disposable
72
+ * cache, so thread scratch does not retain them.
74
73
  */
75
74
  export declare function buildConversationStatePatch(conversation: ThreadConversationState): {
76
- conversation: Pick<ThreadConversationState, "schemaVersion" | "processing" | "vision">;
75
+ conversation: Pick<ThreadConversationState, "schemaVersion" | "processing">;
77
76
  };
78
77
  export {};
@@ -13,6 +13,7 @@ export declare const juniorToolBoundContinuationSchema: z.ZodObject<{
13
13
  export declare const juniorToolOutputSchema: z.ZodObject<{
14
14
  target: z.ZodOptional<z.ZodString>;
15
15
  truncated: z.ZodOptional<z.ZodBoolean>;
16
+ timed_out: z.ZodOptional<z.ZodBoolean>;
16
17
  continuation: z.ZodOptional<z.ZodObject<{
17
18
  arguments: z.ZodRecord<z.ZodString, z.ZodUnknown>;
18
19
  reason: z.ZodOptional<z.ZodString>;
@@ -0,0 +1,11 @@
1
+ import type { AfterToolCallResult, AgentToolResult } from "@earendil-works/pi-agent-core";
2
+ /**
3
+ * Project a host-preempted tool attempt onto the normal tool-result shape.
4
+ *
5
+ * Only rewrite results that mark the attempt itself as aborted. A finished
6
+ * sibling tool that settles after the host abort signal must keep its real
7
+ * outcome. Host continuity stays in session state (`resumeReason: "timeout"`)
8
+ * and automatic continuation. The model only needs the same fact bash already
9
+ * reports for command timeouts: this attempt timed out.
10
+ */
11
+ export declare function projectTimedOutToolResult(result: AgentToolResult<unknown>): AfterToolCallResult | undefined;
@@ -35,6 +35,7 @@ export declare function createEventTaskTool(context: ToolRuntimeContext, catalog
35
35
  };
36
36
  target?: string | undefined;
37
37
  truncated?: boolean | undefined;
38
+ timed_out?: boolean | undefined;
38
39
  continuation?: {
39
40
  arguments: Record<string, unknown>;
40
41
  reason?: string | undefined;
@@ -58,6 +59,7 @@ export declare function createEventTaskTool(context: ToolRuntimeContext, catalog
58
59
  };
59
60
  target?: string | undefined;
60
61
  truncated?: boolean | undefined;
62
+ timed_out?: boolean | undefined;
61
63
  continuation?: {
62
64
  arguments: Record<string, unknown>;
63
65
  reason?: string | undefined;
@@ -26,6 +26,7 @@ export declare function createDeleteEventTaskTool(context: ToolRuntimeContext, c
26
26
  };
27
27
  target?: string | undefined;
28
28
  truncated?: boolean | undefined;
29
+ timed_out?: boolean | undefined;
29
30
  continuation?: {
30
31
  arguments: Record<string, unknown>;
31
32
  reason?: string | undefined;
@@ -49,6 +50,7 @@ export declare function createDeleteEventTaskTool(context: ToolRuntimeContext, c
49
50
  };
50
51
  target?: string | undefined;
51
52
  truncated?: boolean | undefined;
53
+ timed_out?: boolean | undefined;
52
54
  continuation?: {
53
55
  arguments: Record<string, unknown>;
54
56
  reason?: string | undefined;
@@ -12,6 +12,7 @@ export declare function createHandoffTool(handoff: NonNullable<ToolRuntimeContex
12
12
  model_profile: string;
13
13
  target?: string | undefined;
14
14
  truncated?: boolean | undefined;
15
+ timed_out?: boolean | undefined;
15
16
  continuation?: {
16
17
  arguments: Record<string, unknown>;
17
18
  reason?: string | undefined;
@@ -21,6 +22,7 @@ export declare function createHandoffTool(handoff: NonNullable<ToolRuntimeContex
21
22
  model_profile: string;
22
23
  target?: string | undefined;
23
24
  truncated?: boolean | undefined;
25
+ timed_out?: boolean | undefined;
24
26
  continuation?: {
25
27
  arguments: Record<string, unknown>;
26
28
  reason?: string | undefined;
@@ -24,6 +24,7 @@ export declare function createListEventTasksTool(context: ToolRuntimeContext, ca
24
24
  }[];
25
25
  truncated: boolean;
26
26
  target?: string | undefined;
27
+ timed_out?: boolean | undefined;
27
28
  continuation?: {
28
29
  arguments: Record<string, unknown>;
29
30
  reason?: string | undefined;
@@ -47,6 +48,7 @@ export declare function createListEventTasksTool(context: ToolRuntimeContext, ca
47
48
  }[];
48
49
  truncated: boolean;
49
50
  target?: string | undefined;
51
+ timed_out?: boolean | undefined;
50
52
  continuation?: {
51
53
  arguments: Record<string, unknown>;
52
54
  reason?: string | undefined;
@@ -17,6 +17,7 @@ export declare function createListResourceEventSubscriptionsTool(context: ToolRu
17
17
  }[];
18
18
  target?: string | undefined;
19
19
  truncated?: boolean | undefined;
20
+ timed_out?: boolean | undefined;
20
21
  continuation?: {
21
22
  arguments: Record<string, unknown>;
22
23
  reason?: string | undefined;
@@ -34,6 +35,7 @@ export declare function createListResourceEventSubscriptionsTool(context: ToolRu
34
35
  }[];
35
36
  target?: string | undefined;
36
37
  truncated?: boolean | undefined;
38
+ timed_out?: boolean | undefined;
37
39
  continuation?: {
38
40
  arguments: Record<string, unknown>;
39
41
  reason?: string | undefined;