@paperclipai/shared 2026.1012.0 → 2026.1012.1-beta.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 (284) hide show
  1. package/dist/.paperclip-build-complete +1 -1
  2. package/dist/accounting.d.ts +178 -0
  3. package/dist/accounting.d.ts.map +1 -0
  4. package/dist/accounting.js +68 -0
  5. package/dist/accounting.js.map +1 -0
  6. package/dist/agent-appearance.d.ts +6 -1
  7. package/dist/agent-appearance.d.ts.map +1 -1
  8. package/dist/agent-appearance.js +8 -2
  9. package/dist/agent-appearance.js.map +1 -1
  10. package/dist/agent-appearance.test.js +11 -0
  11. package/dist/agent-appearance.test.js.map +1 -1
  12. package/dist/agent-avatar-upload.d.ts +8 -0
  13. package/dist/agent-avatar-upload.d.ts.map +1 -0
  14. package/dist/agent-avatar-upload.js +9 -0
  15. package/dist/agent-avatar-upload.js.map +1 -0
  16. package/dist/agent-commentary.test.d.ts +2 -0
  17. package/dist/agent-commentary.test.d.ts.map +1 -0
  18. package/dist/agent-commentary.test.js +18 -0
  19. package/dist/agent-commentary.test.js.map +1 -0
  20. package/dist/ai-connection-router.d.ts +29 -20
  21. package/dist/ai-connection-router.d.ts.map +1 -1
  22. package/dist/ai-connections.d.ts +67 -5
  23. package/dist/ai-connections.d.ts.map +1 -1
  24. package/dist/ai-connections.js +25 -17
  25. package/dist/ai-connections.js.map +1 -1
  26. package/dist/ai-provider-routing.d.ts +42 -0
  27. package/dist/ai-provider-routing.d.ts.map +1 -0
  28. package/dist/ai-provider-routing.js +125 -0
  29. package/dist/ai-provider-routing.js.map +1 -0
  30. package/dist/app-definitions/airtable.json +39 -0
  31. package/dist/app-definitions/anthropic.json +3 -0
  32. package/dist/app-definitions/bedrock.json +53 -0
  33. package/dist/app-definitions/bitly.json +17 -12
  34. package/dist/app-definitions/calendly.json +46 -0
  35. package/dist/app-definitions/chat-completions-api.json +53 -0
  36. package/dist/app-definitions/clickup.json +53 -0
  37. package/dist/app-definitions/context7.json +13 -5
  38. package/dist/app-definitions/enterpret.json +92 -0
  39. package/dist/app-definitions/exa.json +34 -0
  40. package/dist/app-definitions/firecrawl.json +93 -0
  41. package/dist/app-definitions/gauge.json +94 -0
  42. package/dist/app-definitions/github-code-review-bot.json +1 -1
  43. package/dist/app-definitions/google.json +55 -0
  44. package/dist/app-definitions/gsc-wizard.json +78 -0
  45. package/dist/app-definitions/hugging-face.json +22 -0
  46. package/dist/app-definitions/klaviyo.json +59 -0
  47. package/dist/app-definitions/linear.json +45 -2
  48. package/dist/app-definitions/local.json +53 -0
  49. package/dist/app-definitions/make.json +53 -1
  50. package/dist/app-definitions/messages-api.json +53 -0
  51. package/dist/app-definitions/monday.json +46 -0
  52. package/dist/app-definitions/openai.json +3 -0
  53. package/dist/app-definitions/openrouter.json +3 -0
  54. package/dist/app-definitions/parallel-search.json +35 -0
  55. package/dist/app-definitions/resend.json +3 -3
  56. package/dist/app-definitions/responses-api.json +53 -0
  57. package/dist/app-definitions/sentry.json +1 -1
  58. package/dist/app-definitions/superagent.json +57 -0
  59. package/dist/app-definitions/tavily.json +47 -0
  60. package/dist/app-definitions/telem.json +144 -0
  61. package/dist/app-definitions/windsor-ai.json +80 -0
  62. package/dist/app-definitions/xai.json +3 -0
  63. package/dist/app-definitions-url.test.js +11 -1
  64. package/dist/app-definitions-url.test.js.map +1 -1
  65. package/dist/app-definitions.d.ts.map +1 -1
  66. package/dist/app-definitions.generated.d.ts.map +1 -1
  67. package/dist/app-definitions.generated.js +81 -61
  68. package/dist/app-definitions.generated.js.map +1 -1
  69. package/dist/app-definitions.js +20 -11
  70. package/dist/app-definitions.js.map +1 -1
  71. package/dist/app-definitions.test.js +261 -14
  72. package/dist/app-definitions.test.js.map +1 -1
  73. package/dist/connection-instructions.test.js +1 -0
  74. package/dist/connection-instructions.test.js.map +1 -1
  75. package/dist/connection-routing.d.ts +3 -1
  76. package/dist/connection-routing.d.ts.map +1 -1
  77. package/dist/connection-routing.js +13 -0
  78. package/dist/connection-routing.js.map +1 -1
  79. package/dist/constants.d.ts +2 -2
  80. package/dist/constants.d.ts.map +1 -1
  81. package/dist/constants.js +2 -1
  82. package/dist/constants.js.map +1 -1
  83. package/dist/customer-success.d.ts +58 -0
  84. package/dist/customer-success.d.ts.map +1 -0
  85. package/dist/customer-success.js +160 -0
  86. package/dist/customer-success.js.map +1 -0
  87. package/dist/decision-models.d.ts +134 -0
  88. package/dist/decision-models.d.ts.map +1 -0
  89. package/dist/decision-models.js +43 -0
  90. package/dist/decision-models.js.map +1 -0
  91. package/dist/dot-invitations.d.ts +34 -0
  92. package/dist/dot-invitations.d.ts.map +1 -0
  93. package/dist/dot-invitations.js +2 -0
  94. package/dist/dot-invitations.js.map +1 -0
  95. package/dist/easy-mcp-connectors.test.d.ts +2 -0
  96. package/dist/easy-mcp-connectors.test.d.ts.map +1 -0
  97. package/dist/easy-mcp-connectors.test.js +63 -0
  98. package/dist/easy-mcp-connectors.test.js.map +1 -0
  99. package/dist/external-agent-guidance.d.ts +5 -0
  100. package/dist/external-agent-guidance.d.ts.map +1 -0
  101. package/dist/external-agent-guidance.js +5 -0
  102. package/dist/external-agent-guidance.js.map +1 -0
  103. package/dist/fast-response.d.ts +54 -0
  104. package/dist/fast-response.d.ts.map +1 -0
  105. package/dist/fast-response.js +28 -0
  106. package/dist/fast-response.js.map +1 -0
  107. package/dist/feature-catalog.d.ts.map +1 -1
  108. package/dist/feature-catalog.js +22 -1
  109. package/dist/feature-catalog.js.map +1 -1
  110. package/dist/index.d.ts +20 -2
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +16 -1
  113. package/dist/index.js.map +1 -1
  114. package/dist/mcp-setup.js +2 -2
  115. package/dist/mcp-setup.js.map +1 -1
  116. package/dist/money.d.ts +20 -0
  117. package/dist/money.d.ts.map +1 -0
  118. package/dist/money.js +58 -0
  119. package/dist/money.js.map +1 -0
  120. package/dist/primary-agent.d.ts +12 -0
  121. package/dist/primary-agent.d.ts.map +1 -0
  122. package/dist/primary-agent.js +5 -0
  123. package/dist/primary-agent.js.map +1 -0
  124. package/dist/public-mcp.d.ts +25 -1
  125. package/dist/public-mcp.d.ts.map +1 -1
  126. package/dist/public-mcp.js +4 -1
  127. package/dist/public-mcp.js.map +1 -1
  128. package/dist/self-serve-mcp-research.json +18 -4
  129. package/dist/slack-app-manifest.d.ts +128 -0
  130. package/dist/slack-app-manifest.d.ts.map +1 -0
  131. package/dist/slack-app-manifest.js +88 -0
  132. package/dist/slack-app-manifest.js.map +1 -0
  133. package/dist/slack-app-manifest.test.d.ts +2 -0
  134. package/dist/slack-app-manifest.test.d.ts.map +1 -0
  135. package/dist/slack-app-manifest.test.js +44 -0
  136. package/dist/slack-app-manifest.test.js.map +1 -0
  137. package/dist/slack-tools.js +2 -2
  138. package/dist/slack-tools.js.map +1 -1
  139. package/dist/subscriptions.d.ts +104 -0
  140. package/dist/subscriptions.d.ts.map +1 -0
  141. package/dist/subscriptions.js +40 -0
  142. package/dist/subscriptions.js.map +1 -0
  143. package/dist/types/agent-lifecycle.d.ts +27 -0
  144. package/dist/types/agent-lifecycle.d.ts.map +1 -0
  145. package/dist/types/agent-lifecycle.js +6 -0
  146. package/dist/types/agent-lifecycle.js.map +1 -0
  147. package/dist/types/agent.d.ts +11 -0
  148. package/dist/types/agent.d.ts.map +1 -1
  149. package/dist/types/agent.js.map +1 -1
  150. package/dist/types/app-definition.d.ts +6 -2
  151. package/dist/types/app-definition.d.ts.map +1 -1
  152. package/dist/types/budget.d.ts +10 -1
  153. package/dist/types/budget.d.ts.map +1 -1
  154. package/dist/types/chat-channels.d.ts +31 -2
  155. package/dist/types/chat-channels.d.ts.map +1 -1
  156. package/dist/types/chat-channels.js +1 -0
  157. package/dist/types/chat-channels.js.map +1 -1
  158. package/dist/types/chat-github.d.ts +26 -1
  159. package/dist/types/chat-github.d.ts.map +1 -1
  160. package/dist/types/chat-github.js +2 -0
  161. package/dist/types/chat-github.js.map +1 -1
  162. package/dist/types/connection-intent.d.ts +3 -1
  163. package/dist/types/connection-intent.d.ts.map +1 -1
  164. package/dist/types/cost.d.ts +81 -3
  165. package/dist/types/cost.d.ts.map +1 -1
  166. package/dist/types/execution-projection.d.ts +2 -0
  167. package/dist/types/execution-projection.d.ts.map +1 -1
  168. package/dist/types/execution-projection.js.map +1 -1
  169. package/dist/types/finance.d.ts +35 -0
  170. package/dist/types/finance.d.ts.map +1 -1
  171. package/dist/types/github-app-setup.d.ts +55 -0
  172. package/dist/types/github-app-setup.d.ts.map +1 -0
  173. package/dist/types/github-app-setup.js +2 -0
  174. package/dist/types/github-app-setup.js.map +1 -0
  175. package/dist/types/heartbeat.d.ts +6 -0
  176. package/dist/types/heartbeat.d.ts.map +1 -1
  177. package/dist/types/index.d.ts +5 -4
  178. package/dist/types/index.d.ts.map +1 -1
  179. package/dist/types/index.js +1 -0
  180. package/dist/types/index.js.map +1 -1
  181. package/dist/types/instance.d.ts +6 -0
  182. package/dist/types/instance.d.ts.map +1 -1
  183. package/dist/types/instance.js.map +1 -1
  184. package/dist/types/issue.d.ts +72 -2
  185. package/dist/types/issue.d.ts.map +1 -1
  186. package/dist/types/plugin.d.ts +2 -0
  187. package/dist/types/plugin.d.ts.map +1 -1
  188. package/dist/types/project.d.ts +20 -0
  189. package/dist/types/project.d.ts.map +1 -1
  190. package/dist/types/quota.d.ts +4 -0
  191. package/dist/types/quota.d.ts.map +1 -1
  192. package/dist/types/tool-access.d.ts +16 -1
  193. package/dist/types/tool-access.d.ts.map +1 -1
  194. package/dist/types/tool-access.js.map +1 -1
  195. package/dist/types/user-profile.d.ts +1 -1
  196. package/dist/types/user-profile.d.ts.map +1 -1
  197. package/dist/types/voice-sessions.d.ts +103 -0
  198. package/dist/types/voice-sessions.d.ts.map +1 -0
  199. package/dist/types/voice-sessions.js +5 -0
  200. package/dist/types/voice-sessions.js.map +1 -0
  201. package/dist/validators/adapter-auth-session.d.ts +0 -2
  202. package/dist/validators/adapter-auth-session.d.ts.map +1 -1
  203. package/dist/validators/agent-commentary.d.ts +25 -0
  204. package/dist/validators/agent-commentary.d.ts.map +1 -0
  205. package/dist/validators/agent-commentary.js +12 -0
  206. package/dist/validators/agent-commentary.js.map +1 -0
  207. package/dist/validators/agent.d.ts +19 -5
  208. package/dist/validators/agent.d.ts.map +1 -1
  209. package/dist/validators/agent.js +3 -3
  210. package/dist/validators/agent.js.map +1 -1
  211. package/dist/validators/agent.test.d.ts +2 -0
  212. package/dist/validators/agent.test.d.ts.map +1 -0
  213. package/dist/validators/agent.test.js +27 -0
  214. package/dist/validators/agent.test.js.map +1 -0
  215. package/dist/validators/app-definition.d.ts +92 -0
  216. package/dist/validators/app-definition.d.ts.map +1 -1
  217. package/dist/validators/app-definition.js +9 -6
  218. package/dist/validators/app-definition.js.map +1 -1
  219. package/dist/validators/budget.d.ts +10 -5
  220. package/dist/validators/budget.d.ts.map +1 -1
  221. package/dist/validators/budget.js +9 -6
  222. package/dist/validators/budget.js.map +1 -1
  223. package/dist/validators/chat-channels.d.ts +26 -5
  224. package/dist/validators/chat-channels.d.ts.map +1 -1
  225. package/dist/validators/chat-channels.js +20 -6
  226. package/dist/validators/chat-channels.js.map +1 -1
  227. package/dist/validators/chat-github.d.ts +16 -6
  228. package/dist/validators/chat-github.d.ts.map +1 -1
  229. package/dist/validators/chat-github.js +4 -1
  230. package/dist/validators/chat-github.js.map +1 -1
  231. package/dist/validators/claude-setup-token-session.d.ts +0 -2
  232. package/dist/validators/claude-setup-token-session.d.ts.map +1 -1
  233. package/dist/validators/company-portability.d.ts +2 -0
  234. package/dist/validators/company-portability.d.ts.map +1 -1
  235. package/dist/validators/company-skill.js +1 -1
  236. package/dist/validators/company-skill.js.map +1 -1
  237. package/dist/validators/cost.d.ts +176 -6
  238. package/dist/validators/cost.d.ts.map +1 -1
  239. package/dist/validators/cost.js +17 -6
  240. package/dist/validators/cost.js.map +1 -1
  241. package/dist/validators/finance.d.ts +7 -4
  242. package/dist/validators/finance.d.ts.map +1 -1
  243. package/dist/validators/finance.js +4 -2
  244. package/dist/validators/finance.js.map +1 -1
  245. package/dist/validators/index.d.ts +4 -3
  246. package/dist/validators/index.d.ts.map +1 -1
  247. package/dist/validators/index.js +4 -3
  248. package/dist/validators/index.js.map +1 -1
  249. package/dist/validators/instance.d.ts +10 -0
  250. package/dist/validators/instance.d.ts.map +1 -1
  251. package/dist/validators/instance.js +6 -1
  252. package/dist/validators/instance.js.map +1 -1
  253. package/dist/validators/instance.test.js +4 -0
  254. package/dist/validators/instance.test.js.map +1 -1
  255. package/dist/validators/issue.d.ts +38 -3
  256. package/dist/validators/issue.d.ts.map +1 -1
  257. package/dist/validators/issue.js +22 -3
  258. package/dist/validators/issue.js.map +1 -1
  259. package/dist/validators/issue.test.js +60 -1
  260. package/dist/validators/issue.test.js.map +1 -1
  261. package/dist/validators/plugin.d.ts +2 -0
  262. package/dist/validators/plugin.d.ts.map +1 -1
  263. package/dist/validators/plugin.js +4 -0
  264. package/dist/validators/plugin.js.map +1 -1
  265. package/dist/validators/plugin.test.js +5 -0
  266. package/dist/validators/plugin.test.js.map +1 -1
  267. package/dist/validators/project.d.ts +16 -0
  268. package/dist/validators/project.d.ts.map +1 -1
  269. package/dist/validators/project.js +5 -0
  270. package/dist/validators/project.js.map +1 -1
  271. package/dist/validators/status-card.js +2 -2
  272. package/dist/validators/status-card.js.map +1 -1
  273. package/dist/validators/text.d.ts.map +1 -1
  274. package/dist/validators/text.js +5 -0
  275. package/dist/validators/text.js.map +1 -1
  276. package/dist/validators/tool-access.d.ts +9 -0
  277. package/dist/validators/tool-access.d.ts.map +1 -1
  278. package/dist/validators/tool-access.js +4 -1
  279. package/dist/validators/tool-access.js.map +1 -1
  280. package/dist/validators/voice-sessions.d.ts +27 -0
  281. package/dist/validators/voice-sessions.d.ts.map +1 -0
  282. package/dist/validators/voice-sessions.js +16 -0
  283. package/dist/validators/voice-sessions.js.map +1 -0
  284. package/package.json +1 -1
@@ -0,0 +1,128 @@
1
+ import { z } from "zod";
2
+ import type { SlackAppConfiguration } from "./types/chat-channels.js";
3
+ export declare const SLACK_CHAT_BOT_SCOPES: readonly ["app_mentions:read", "assistant:write", "channels:history", "channels:read", "chat:write", "commands", "files:read", "files:write", "groups:history", "groups:read", "im:history", "im:read", "mpim:history", "mpim:read", "reactions:read", "reactions:write", "users:read"];
4
+ export declare function defaultSlackAppConfiguration(agentName: string): SlackAppConfiguration;
5
+ export declare function buildSlackAppManifest(input: {
6
+ app: SlackAppConfiguration;
7
+ agentName: string;
8
+ webhookUrl: string;
9
+ redirectUri?: string;
10
+ }): {
11
+ display_information: {
12
+ name: string;
13
+ };
14
+ features: {
15
+ app_home: {
16
+ home_tab_enabled: boolean;
17
+ messages_tab_enabled: boolean;
18
+ messages_tab_read_only_enabled: boolean;
19
+ };
20
+ agent_view: {
21
+ agent_description: string;
22
+ };
23
+ bot_user: {
24
+ display_name: string;
25
+ };
26
+ slash_commands: {
27
+ command: string;
28
+ description: string;
29
+ usage_hint: string;
30
+ should_escape: boolean;
31
+ url: string;
32
+ }[];
33
+ };
34
+ oauth_config: {
35
+ scopes: {
36
+ bot: ("app_mentions:read" | "assistant:write" | "bookmarks:read" | "bookmarks:write" | "canvases:read" | "canvases:write" | "channels:history" | "channels:manage" | "channels:read" | "channels:write.topic" | "chat:write" | "commands" | "emoji:read" | "files:read" | "files:write" | "groups:history" | "groups:read" | "groups:write" | "groups:write.topic" | "im:history" | "im:read" | "im:write" | "lists:read" | "lists:write" | "mpim:history" | "mpim:read" | "pins:read" | "pins:write" | "reactions:read" | "reactions:write" | "users:read")[];
37
+ };
38
+ redirect_urls?: string[] | undefined;
39
+ };
40
+ settings: {
41
+ org_deploy_enabled: boolean;
42
+ socket_mode_enabled: boolean;
43
+ token_rotation_enabled: boolean;
44
+ event_subscriptions: {
45
+ request_url: string;
46
+ bot_events: string[];
47
+ };
48
+ interactivity: {
49
+ is_enabled: boolean;
50
+ request_url: string;
51
+ };
52
+ };
53
+ };
54
+ export declare const slackRegistrationSchema: z.ZodObject<{
55
+ requestId: z.ZodString;
56
+ credentials: z.ZodObject<{
57
+ configurationToken: z.ZodString;
58
+ }, z.core.$strict>;
59
+ confirmedNoAppCreated: z.ZodOptional<z.ZodBoolean>;
60
+ }, z.core.$strict>;
61
+ export type SlackRegistrationInput = z.infer<typeof slackRegistrationSchema>;
62
+ export declare const slackRegistrationStatusSchema: z.ZodEnum<{
63
+ configured: "configured";
64
+ creating: "creating";
65
+ credentials_saved: "credentials_saved";
66
+ failed: "failed";
67
+ install: "install";
68
+ removed: "removed";
69
+ uncertain: "uncertain";
70
+ }>;
71
+ export type SlackRegistrationStatus = z.infer<typeof slackRegistrationStatusSchema>;
72
+ export declare const slackRegistrationStateSchema: z.ZodObject<{
73
+ status: z.ZodEnum<{
74
+ configured: "configured";
75
+ creating: "creating";
76
+ credentials_saved: "credentials_saved";
77
+ failed: "failed";
78
+ install: "install";
79
+ removed: "removed";
80
+ uncertain: "uncertain";
81
+ }>;
82
+ appId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
83
+ managementUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
84
+ errorCode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
85
+ }, z.core.$strict>;
86
+ export type SlackRegistrationState = z.infer<typeof slackRegistrationStateSchema>;
87
+ export declare const slackAvatarStateSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
88
+ status: z.ZodLiteral<"pending">;
89
+ }, z.core.$strict>, z.ZodObject<{
90
+ status: z.ZodLiteral<"uploaded">;
91
+ uploadedAt: z.ZodString;
92
+ }, z.core.$strict>, z.ZodObject<{
93
+ status: z.ZodLiteral<"failed">;
94
+ errorCode: z.ZodLiteral<"slack_avatar_upload_failed">;
95
+ }, z.core.$strict>], "status">;
96
+ export type SlackAvatarState = z.infer<typeof slackAvatarStateSchema>;
97
+ export declare const slackAccountStateSchema: z.ZodObject<{
98
+ externalUserId: z.ZodString;
99
+ paperclipUserId: z.ZodString;
100
+ status: z.ZodEnum<{
101
+ linked: "linked";
102
+ pending: "pending";
103
+ }>;
104
+ welcomeStatus: z.ZodEnum<{
105
+ failed: "failed";
106
+ pending: "pending";
107
+ sending: "sending";
108
+ sent: "sent";
109
+ uncertain: "uncertain";
110
+ }>;
111
+ verificationStatus: z.ZodOptional<z.ZodEnum<{
112
+ failed: "failed";
113
+ pending: "pending";
114
+ sending: "sending";
115
+ sent: "sent";
116
+ uncertain: "uncertain";
117
+ }>>;
118
+ dmChannelId: z.ZodOptional<z.ZodString>;
119
+ }, z.core.$strict>;
120
+ export type SlackAccountState = z.infer<typeof slackAccountStateSchema>;
121
+ export declare const slackInstallAuthorizationSchema: z.ZodObject<{
122
+ authorizationUrl: z.ZodString;
123
+ expiresAt: z.ZodString;
124
+ }, z.core.$strip>;
125
+ export type SlackInstallAuthorization = z.infer<typeof slackInstallAuthorizationSchema>;
126
+ export declare const slackSetupActionSchema: z.ZodObject<{}, z.core.$strict>;
127
+ export declare function slackRegistrationErrorMessage(code: string): string;
128
+ //# sourceMappingURL=slack-app-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack-app-manifest.d.ts","sourceRoot":"","sources":["../src/slack-app-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtE,eAAO,MAAM,qBAAqB,YAChC,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAC3E,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EACvE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EACnE,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,CACzC,CAAC;AAEX,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,qBAAqB,CAIrF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,GAAG,EAAE,qBAAqB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;;QAE0B,IAAI;;;;YAEb,gBAAgB;YAAS,oBAAoB;YAAQ,8BAA8B;;;YACjF,iBAAiB;;;YACnB,YAAY;;;;;;;;;;;;YAKd,GAAG;;;;;QAIb,kBAAkB;QAAS,mBAAmB;QAAS,sBAAsB;QAC7E,mBAAmB;YACjB,WAAW;YACX,UAAU;;QAKZ,aAAa;YAAI,UAAU;YAAQ,WAAW;;;EAGnD;AAED,eAAO,MAAM,uBAAuB;;;;;;kBAIzB,CAAC;AACZ,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC7E,eAAO,MAAM,6BAA6B;;;;;;;;EAAuG,CAAC;AAClJ,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACpF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;kBAK9B,CAAC;AACZ,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,eAAO,MAAM,sBAAsB;;;;;;;;8BAIjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;kBAOzB,CAAC;AACZ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,eAAO,MAAM,+BAA+B;;;iBAAqF,CAAC;AAClI,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,eAAO,MAAM,sBAAsB,iCAAwB,CAAC;AAE5D,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmBlE"}
@@ -0,0 +1,88 @@
1
+ import { z } from "zod";
2
+ import { SLACK_BOT_TOOL_SCOPES } from "./slack-tools.js";
3
+ export const SLACK_CHAT_BOT_SCOPES = [
4
+ "app_mentions:read", "assistant:write", "channels:history", "channels:read",
5
+ "chat:write", "commands", "files:read", "files:write", "groups:history",
6
+ "groups:read", "im:history", "im:read", "mpim:history", "mpim:read",
7
+ "reactions:read", "reactions:write", "users:read",
8
+ ];
9
+ export function defaultSlackAppConfiguration(agentName) {
10
+ const botName = agentName.normalize("NFKD").toLowerCase()
11
+ .replace(/[^a-z0-9._-]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 24) || "paperclip-agent";
12
+ return { appName: `${botName}-paperclip`, botName, command: `/${botName.replace(/[._]+/g, "-")}` };
13
+ }
14
+ export function buildSlackAppManifest(input) {
15
+ return {
16
+ display_information: { name: input.app.appName },
17
+ features: {
18
+ app_home: { home_tab_enabled: false, messages_tab_enabled: true, messages_tab_read_only_enabled: false },
19
+ agent_view: { agent_description: "Work with a Paperclip agent in a task-backed conversation." },
20
+ bot_user: { display_name: input.app.botName },
21
+ slash_commands: [{ command: input.app.command, description: `Start or manage work with ${input.agentName}`,
22
+ usage_hint: "status | new | close | <task>", should_escape: false, url: input.webhookUrl }],
23
+ },
24
+ oauth_config: {
25
+ scopes: { bot: [...SLACK_CHAT_BOT_SCOPES, ...SLACK_BOT_TOOL_SCOPES] },
26
+ ...(input.redirectUri ? { redirect_urls: [input.redirectUri] } : {}),
27
+ },
28
+ settings: {
29
+ org_deploy_enabled: false, socket_mode_enabled: false, token_rotation_enabled: false,
30
+ event_subscriptions: {
31
+ request_url: input.webhookUrl,
32
+ bot_events: ["agent_session_stopped", "app_mention", "message.channels", "message.groups", "message.im", "message.mpim",
33
+ "member_joined_channel", "member_left_channel", "channel_left", "group_left", "reaction_added", "reaction_removed",
34
+ "channel_archive", "group_archive", "channel_unarchive", "group_unarchive", "channel_deleted", "channel_rename",
35
+ "group_rename", "app_uninstalled", "tokens_revoked"],
36
+ },
37
+ interactivity: { is_enabled: true, request_url: input.webhookUrl },
38
+ },
39
+ };
40
+ }
41
+ export const slackRegistrationSchema = z.object({
42
+ requestId: z.string().uuid(),
43
+ credentials: z.object({ configurationToken: z.string().trim().min(1).max(4096) }).strict(),
44
+ confirmedNoAppCreated: z.boolean().optional(),
45
+ }).strict();
46
+ export const slackRegistrationStatusSchema = z.enum(["creating", "uncertain", "failed", "install", "credentials_saved", "configured", "removed"]);
47
+ export const slackRegistrationStateSchema = z.object({
48
+ status: slackRegistrationStatusSchema,
49
+ appId: z.string().nullable().optional(),
50
+ managementUrl: z.string().url().nullable().optional(),
51
+ errorCode: z.string().nullable().optional(),
52
+ }).strict();
53
+ export const slackAvatarStateSchema = z.discriminatedUnion("status", [
54
+ z.object({ status: z.literal("pending") }).strict(),
55
+ z.object({ status: z.literal("uploaded"), uploadedAt: z.string().datetime() }).strict(),
56
+ z.object({ status: z.literal("failed"), errorCode: z.literal("slack_avatar_upload_failed") }).strict(),
57
+ ]);
58
+ export const slackAccountStateSchema = z.object({
59
+ externalUserId: z.string().regex(/^[UW][A-Z0-9]+$/),
60
+ paperclipUserId: z.string().min(1),
61
+ status: z.enum(["pending", "linked"]),
62
+ welcomeStatus: z.enum(["pending", "sending", "sent", "failed", "uncertain"]),
63
+ verificationStatus: z.enum(["pending", "sending", "sent", "failed", "uncertain"]).optional(),
64
+ dmChannelId: z.string().regex(/^D[A-Z0-9]+$/).optional(),
65
+ }).strict();
66
+ export const slackInstallAuthorizationSchema = z.object({ authorizationUrl: z.string().url(), expiresAt: z.string().datetime() });
67
+ export const slackSetupActionSchema = z.object({}).strict();
68
+ export function slackRegistrationErrorMessage(code) {
69
+ const messages = {
70
+ slack_configuration_token_invalid: "Slack rejected the app configuration access token. Generate a new access token and try again.",
71
+ slack_manifest_invalid: "Slack rejected this app configuration. Check the app details or use manual setup.",
72
+ slack_manifest_update_pending: "Your Slack app is saved, but its event settings still need to be applied. Enter an app configuration access token to retry configuring the same app.",
73
+ slack_setup_rate_limited: "Slack is limiting setup requests. Wait a minute and try again.",
74
+ slack_setup_permission_denied: "Slack requires permission to create or install this app. Ask your workspace administrator.",
75
+ slack_creation_uncertain: "Slack may have created the app. Check your Slack app settings before trying again, or connect the existing app manually.",
76
+ slack_install_declined: "Installation was not approved. You can install the same app when you are ready.",
77
+ slack_install_expired: "Slack authorization expired. Install the same app again to continue.",
78
+ slack_install_failed: "Slack installation could not be completed. Authorize the same app again.",
79
+ slack_install_identity_mismatch: "Slack returned a different app, workspace, or bot. Install the app created for this connection.",
80
+ slack_install_scopes_missing: "Slack did not grant all required bot permissions. Install the app again and approve its requested permissions.",
81
+ slack_bot_already_connected: "This Slack bot is already connected to Paperclip. Resume its existing connection or use a different app.",
82
+ slack_configuration_incomplete: "The app is installed, but Paperclip could not finish connecting it. Retry connecting the saved installation.",
83
+ slack_install_account_missing: "Slack did not identify your account. Authorize the same app again to connect your Slack account.",
84
+ slack_install_account_conflict: "This Slack account already has an existing link. Manage account links in connection settings, or authorize with your own Slack account.",
85
+ };
86
+ return messages[code] ?? "Slack setup could not be completed. Resume setup and try again.";
87
+ }
88
+ //# sourceMappingURL=slack-app-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack-app-manifest.js","sourceRoot":"","sources":["../src/slack-app-manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=slack-app-manifest.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack-app-manifest.test.d.ts","sourceRoot":"","sources":["../src/slack-app-manifest.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,44 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { buildSlackAppManifest, defaultSlackAppConfiguration, slackRegistrationSchema, slackAccountStateSchema } from "./slack-app-manifest.js";
3
+ import { createChatEndpointSchema, slackAppConfigurationSchema } from "./validators/chat-channels.js";
4
+ describe("Slack app manifest", () => {
5
+ it("preserves older account setup state and validates optional verification delivery state", () => {
6
+ const account = { externalUserId: "UINSTALLER", paperclipUserId: "board-user", status: "linked", welcomeStatus: "sent" };
7
+ expect(slackAccountStateSchema.safeParse(account).success).toBe(true);
8
+ for (const verificationStatus of ["pending", "sending", "sent", "failed", "uncertain"]) {
9
+ expect(slackAccountStateSchema.safeParse({ ...account, verificationStatus }).success).toBe(true);
10
+ }
11
+ expect(slackAccountStateSchema.safeParse({ ...account, verificationStatus: "delivered" }).success).toBe(false);
12
+ });
13
+ it("uses readable, valid agent defaults and accepts them atomically with a new Slack draft", () => {
14
+ expect(defaultSlackAppConfiguration("Maya")).toEqual({ appName: "maya-paperclip", botName: "maya", command: "/maya" });
15
+ for (const name of ["Research Lead", "Áda Lovelace", "A.B_C", "", "Very long agent name that needs truncating"]) {
16
+ expect(slackAppConfigurationSchema.safeParse(defaultSlackAppConfiguration(name)).success).toBe(true);
17
+ }
18
+ const request = { provider: "slack", assignedAgentId: "12345678-1234-4123-8123-123456789abc", slackApp: defaultSlackAppConfiguration("Maya") };
19
+ expect(createChatEndpointSchema.safeParse(request).success).toBe(true);
20
+ expect(createChatEndpointSchema.safeParse({ ...request, provider: "discord" }).success).toBe(false);
21
+ });
22
+ const input = { app: { appName: 'Research "Ops"', botName: "research-ops", command: "/research" }, agentName: "Maya", webhookUrl: "https://ingress.example/api/chat-webhooks/public/slack" };
23
+ it("uses identical manual and automatic configuration except the OAuth redirect", () => {
24
+ const manual = buildSlackAppManifest(input);
25
+ const automatic = buildSlackAppManifest({ ...input, redirectUri: "https://board.example/api/chat-slack/oauth/callback" });
26
+ expect(automatic).toEqual({ ...manual, oauth_config: { ...manual.oauth_config, redirect_urls: ["https://board.example/api/chat-slack/oauth/callback"] } });
27
+ expect(manual.features.bot_user.display_name).toBe("research-ops");
28
+ expect(manual.features.slash_commands[0]).toMatchObject({ command: "/research", url: input.webhookUrl, should_escape: false });
29
+ expect(manual.settings.event_subscriptions.request_url).toBe(input.webhookUrl);
30
+ expect(manual.settings.interactivity).toEqual({ is_enabled: true, request_url: input.webhookUrl });
31
+ expect(manual.settings.socket_mode_enabled).toBe(false);
32
+ // The reviewed provider permissions/events stay pinned across both creation paths.
33
+ expect(manual.oauth_config.scopes.bot).toMatchSnapshot();
34
+ expect(manual.settings.event_subscriptions.bot_events).toMatchSnapshot();
35
+ });
36
+ it("rejects arbitrary manifests, scopes, callback destinations, and refresh tokens", () => {
37
+ const request = { requestId: "12345678-1234-4123-8123-123456789abc", credentials: { configurationToken: "temporary" } };
38
+ expect(slackRegistrationSchema.safeParse(request).success).toBe(true);
39
+ for (const key of ["manifest", "scopes", "callbackUri", "configurationRefreshToken", "avatarUrl"])
40
+ expect(slackRegistrationSchema.safeParse({ ...request, [key]: "untrusted" }).success).toBe(false);
41
+ expect(slackRegistrationSchema.safeParse({ ...request, credentials: { ...request.credentials, refreshToken: "untrusted" } }).success).toBe(false);
42
+ });
43
+ });
44
+ //# sourceMappingURL=slack-app-manifest.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack-app-manifest.test.js","sourceRoot":"","sources":["../src/slack-app-manifest.test.ts"],"names":[],"mappings":"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"}
@@ -86,10 +86,10 @@ export const SLACK_TOOLS = [
86
86
  .describe("Maximum matches per channel in bounded-history mode")
87
87
  .optional(),
88
88
  }),
89
- tool("post_message", "chat.postMessage", ["chat:write"], "write", "Send a requested message or thread reply as the bot in an allowed destination. Preserve the same idempotency key and arguments on retries. Delivery is separate from the final reply.", { channel, text, thread_ts: timestamp.optional(), ...write }),
89
+ tool("post_message", "chat.postMessage", ["chat:write"], "write", "Send an explicitly requested message or thread reply as the bot in an allowed destination. Paperclip delivers the normal final reply to the current chat automatically; do not post a second copy here. Preserve the same idempotency key and arguments on retries; inspect slack_delivery for queued or uncertain operations.", { channel, text, thread_ts: timestamp.optional(), ...write }),
90
90
  tool("update_message", "chat.update", ["chat:write"], "write", "Edit a message authored by this bot.", { ...message, text, ...write }),
91
91
  tool("delete_message", "chat.delete", ["chat:write"], "approval", "Delete this bot's message after approval.", { ...message, ...write }),
92
- tool("upload_file", "files.completeUploadExternal", ["files:write"], "write", "Upload a task attachment to an allowed Slack destination. Use a Paperclip attachment ID, never a local path or arbitrary URL.", {
92
+ tool("upload_file", "files.completeUploadExternal", ["files:write"], "write", "Upload an existing task attachment to an explicitly requested allowed Slack destination. Use a Paperclip attachment ID, never a local path or arbitrary URL. For a file requested in the current chat, use its external-chat file-delivery contract instead of uploading a second copy.", {
93
93
  channel,
94
94
  attachmentId: z.string().uuid(),
95
95
  title: text.optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"slack-tools.js","sourceRoot":"","sources":["../src/slack-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slack-tools.js","sourceRoot":"","sources":["../src/slack-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ import { z } from "zod";
2
+ export declare const SUBSCRIPTION_CURRENCIES: readonly ["USD", "EUR", "GBP", "CAD", "AUD", "CHF"];
3
+ export declare const subscriptionPriceSchema: z.ZodObject<{
4
+ expectedRevision: z.ZodNumber;
5
+ plan: z.ZodString;
6
+ amountCents: z.ZodNullable<z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>, z.ZodTransform<string, string | number>>>;
7
+ currency: z.ZodEnum<{
8
+ AUD: "AUD";
9
+ CAD: "CAD";
10
+ CHF: "CHF";
11
+ EUR: "EUR";
12
+ GBP: "GBP";
13
+ USD: "USD";
14
+ }>;
15
+ cadence: z.ZodEnum<{
16
+ month: "month";
17
+ year: "year";
18
+ }>;
19
+ status: z.ZodEnum<{
20
+ active: "active";
21
+ ended: "ended";
22
+ excluded: "excluded";
23
+ }>;
24
+ }, z.core.$strict>;
25
+ export type UpdateSubscriptionPrice = z.input<typeof subscriptionPriceSchema>;
26
+ export declare const mergeSubscriptionsSchema: z.ZodObject<{
27
+ targetId: z.ZodString;
28
+ expectedRevision: z.ZodNumber;
29
+ targetRevision: z.ZodNumber;
30
+ }, z.core.$strict>;
31
+ export interface SubscriptionPlan {
32
+ id: string;
33
+ provider: string;
34
+ name: string;
35
+ monthlyCents: string;
36
+ currency: "USD";
37
+ sourceUrl: string;
38
+ checkedAt: string;
39
+ }
40
+ export declare const SUBSCRIPTION_PLANS: readonly SubscriptionPlan[];
41
+ export declare function subscriptionPlan(provider: string, plan: string | null): SubscriptionPlan | null;
42
+ export declare function monthlySubscriptionCents(amount: string, cadence: "month" | "year"): string;
43
+ export interface SubscriptionPrice {
44
+ revision: number;
45
+ plan: string;
46
+ amountCents: string | null;
47
+ monthlyCents: string | null;
48
+ currency: string;
49
+ cadence: "month" | "year";
50
+ status: "active" | "ended" | "excluded";
51
+ source: "catalog" | "user" | "unknown";
52
+ sourceUrl: string | null;
53
+ effectiveAt: string;
54
+ }
55
+ export interface SubscriptionUsage {
56
+ inputTokens: number;
57
+ cachedInputTokens: number;
58
+ outputTokens: number;
59
+ costCents: string;
60
+ eventCount: number;
61
+ estimatedEventCount: number;
62
+ unpricedEventCount: number;
63
+ }
64
+ export interface SubscriptionAccountReport {
65
+ id: string;
66
+ provider: string;
67
+ name: string;
68
+ ownerUserId: string | null;
69
+ ownerName: string | null;
70
+ shared: boolean;
71
+ identityVerified: boolean;
72
+ detectedPlan: string | null;
73
+ observedAt: string | null;
74
+ lastCheckedAt: string | null;
75
+ refreshStatus: "ok" | "unavailable" | null;
76
+ canEdit: boolean;
77
+ price: SubscriptionPrice;
78
+ usage: SubscriptionUsage;
79
+ agents: {
80
+ id: string;
81
+ name: string;
82
+ }[];
83
+ }
84
+ export interface SubscriptionCostReport {
85
+ canRefresh: boolean;
86
+ /** Current monthly commitment for accounts visible to the caller;
87
+ * independent of the usage date filter. Aggregate run usage is company-wide. */
88
+ asOf: string;
89
+ accounts: SubscriptionAccountReport[];
90
+ monthlyTotals: {
91
+ currency: string;
92
+ amountCents: string;
93
+ estimatedCount: number;
94
+ }[];
95
+ activeCount: number;
96
+ unknownPriceCount: number;
97
+ unidentifiedAccountCount: number;
98
+ api: SubscriptionUsage;
99
+ subscription: SubscriptionUsage;
100
+ /** Other billing types (credits, fixed, or unknown), outside API/subscription totals. */
101
+ unknown: SubscriptionUsage;
102
+ unattributedSubscription: SubscriptionUsage;
103
+ }
104
+ //# sourceMappingURL=subscriptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions.d.ts","sourceRoot":"","sources":["../src/subscriptions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { z } from "zod";
2
+ import { exactCentsSchema } from "./accounting.js";
3
+ import { centsToUnits, unitsToCents } from "./money.js";
4
+ export const SUBSCRIPTION_CURRENCIES = ["USD", "EUR", "GBP", "CAD", "AUD", "CHF"];
5
+ export const subscriptionPriceSchema = z.object({
6
+ expectedRevision: z.number().int().nonnegative(),
7
+ plan: z.string().trim().min(1).max(100),
8
+ amountCents: exactCentsSchema.nullable(),
9
+ currency: z.enum(SUBSCRIPTION_CURRENCIES),
10
+ cadence: z.enum(["month", "year"]),
11
+ status: z.enum(["active", "ended", "excluded"]),
12
+ }).strict();
13
+ export const mergeSubscriptionsSchema = z.object({
14
+ targetId: z.string().uuid(),
15
+ expectedRevision: z.number().int().nonnegative(),
16
+ targetRevision: z.number().int().nonnegative(),
17
+ }).strict();
18
+ // Web list prices, before tax, assuming monthly billing. These are estimates,
19
+ // never invoices. Generic Pro/Max/team entitlements do not identify a price.
20
+ export const SUBSCRIPTION_PLANS = [
21
+ ["openai", "free", "ChatGPT Free", "0", "https://learn.chatgpt.com/docs/pricing"],
22
+ ["openai", "go", "ChatGPT Go", "800", "https://learn.chatgpt.com/docs/pricing"],
23
+ ["openai", "plus", "ChatGPT Plus", "2000", "https://learn.chatgpt.com/docs/pricing"],
24
+ ["anthropic", "pro", "Claude Pro", "2000", "https://claude.com/pricing"],
25
+ ["anthropic", "max_5x", "Claude Max 5x", "10000", "https://claude.com/pricing"],
26
+ ["anthropic", "max_20x", "Claude Max 20x", "20000", "https://claude.com/pricing"],
27
+ ["xai", "supergrok", "SuperGrok", "3000", "https://x.ai/pricing"],
28
+ ["xai", "supergrok_plus", "SuperGrok Plus", "10000", "https://x.ai/pricing"],
29
+ ].map(([provider, id, name, monthlyCents, sourceUrl]) => ({
30
+ provider, id, name, monthlyCents, sourceUrl, currency: "USD", checkedAt: "2026-10-08",
31
+ }));
32
+ export function subscriptionPlan(provider, plan) {
33
+ const key = plan?.trim().toLowerCase().replaceAll(" ", "_");
34
+ return SUBSCRIPTION_PLANS.find(item => item.provider === provider && item.id === key) ?? null;
35
+ }
36
+ export function monthlySubscriptionCents(amount, cadence) {
37
+ const units = centsToUnits(amount);
38
+ return unitsToCents(cadence === "year" ? (units + 6n) / 12n : units);
39
+ }
40
+ //# sourceMappingURL=subscriptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions.js","sourceRoot":"","sources":["../src/subscriptions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /** The lifecycle controls admission. Execution status describes current work. */
2
+ export declare const AGENT_LIFECYCLE_STATES: readonly ["pending_approval", "preparing", "verifying", "ready", "pausing", "paused", "resuming", "terminating", "cleaning_up", "terminated", "rejected"];
3
+ export type AgentLifecycleState = typeof AGENT_LIFECYCLE_STATES[number];
4
+ export interface AgentLifecycleOperation {
5
+ id: string;
6
+ resumeState?: "preparing" | "verifying" | "ready";
7
+ hostComplete: boolean;
8
+ completedPluginIds: string[];
9
+ leaseOwner?: string;
10
+ leaseUntil?: string;
11
+ retryAt?: string;
12
+ attempts: number;
13
+ responsibleUserId?: string | null;
14
+ }
15
+ export interface AgentLifecycleRequest {
16
+ companyId: string;
17
+ agentId: string;
18
+ operationId: string;
19
+ version: number;
20
+ phase: AgentLifecycleState;
21
+ }
22
+ export interface AgentLifecycleResult {
23
+ operationId: string;
24
+ version: number;
25
+ status: "complete" | "pending";
26
+ }
27
+ //# sourceMappingURL=agent-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-lifecycle.d.ts","sourceRoot":"","sources":["../../src/types/agent-lifecycle.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,eAAO,MAAM,sBAAsB,YACjC,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAC1E,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,CAC1D,CAAC;AACX,MAAM,MAAM,mBAAmB,GAAG,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAExE,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,OAAO,CAAC;IAClD,YAAY,EAAE,OAAO,CAAC;IACtB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,mBAAmB,CAAC;CAC5B;AACD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;CAChC"}
@@ -0,0 +1,6 @@
1
+ /** The lifecycle controls admission. Execution status describes current work. */
2
+ export const AGENT_LIFECYCLE_STATES = [
3
+ "pending_approval", "preparing", "verifying", "ready", "pausing", "paused",
4
+ "resuming", "terminating", "cleaning_up", "terminated", "rejected",
5
+ ];
6
+ //# sourceMappingURL=agent-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-lifecycle.js","sourceRoot":"","sources":["../../src/types/agent-lifecycle.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ;IAC1E,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU;CAC1D,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { AgentLifecycleState } from "./agent-lifecycle.js";
1
2
  import type { AgentAppearance } from "../agent-appearance.js";
2
3
  import type { AiConnectionLoginIntent } from "../ai-connections.js";
3
4
  import type { AgentAdapterType, PauseReason, AgentRole, AgentStatus } from "../constants.js";
@@ -70,6 +71,9 @@ export interface Agent {
70
71
  appearance?: AgentAppearance | null;
71
72
  avatarUrl?: string;
72
73
  status: AgentStatus;
74
+ lifecycleState?: AgentLifecycleState;
75
+ lifecycleVersion?: number;
76
+ lifecycleError?: string | null;
73
77
  reportsTo: string | null;
74
78
  capabilities: string | null;
75
79
  adapterType: AgentAdapterType;
@@ -257,4 +261,11 @@ export interface AgentInstructionCandidate {
257
261
  createdAt: string;
258
262
  updatedAt: string;
259
263
  }
264
+ /** Public cryptographic identity; private material is runtime-only. */
265
+ export interface AgentPublicIdentity {
266
+ algorithm: "Ed25519";
267
+ keyId: string;
268
+ publicKeyPem: string;
269
+ createdAt: string;
270
+ }
260
271
  //# sourceMappingURL=agent.d.ts.map