@desplega.ai/agent-swarm 1.145.0 → 1.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 (221) hide show
  1. package/README.md +2 -1
  2. package/dist/{acp-adapter-580t41c0.js → acp-adapter-9n319wqc.js} +61 -6
  3. package/dist/{actions-m662tjng.js → actions-2vxqvpr9.js} +9 -8
  4. package/dist/{app-zb3rndm8.js → app-w066xfy0.js} +6 -5
  5. package/dist/assistant-kt31dj2h.js +236 -0
  6. package/dist/{boot-reembed-072x00vn.js → boot-reembed-az5rassp.js} +7 -6
  7. package/dist/{boot-reembed-65zz2smt.js → boot-reembed-j3mm3rfz.js} +8 -7
  8. package/dist/{boot-scrub-logs-yz0ams04.js → boot-scrub-logs-b6h54817.js} +4 -4
  9. package/dist/{claude-adapter-paj270y2.js → claude-adapter-w1z04ann.js} +8 -6
  10. package/dist/{claude-managed-setup-w619jncn.js → claude-managed-setup-f5pmsyrp.js} +24 -3
  11. package/dist/{claude-sdk-session-swt80j9z.js → claude-sdk-session-f0cc1kec.js} +8 -6
  12. package/dist/{cli-dt553ktb.js → cli-0b6y7kxm.js} +1 -1
  13. package/dist/{cli-bxdhw615.js → cli-12fz972k.js} +4 -4
  14. package/dist/{cli-s2f20r5w.js → cli-1th1728g.js} +2 -2
  15. package/dist/{cli-rs6ec3b9.js → cli-3tgwnf43.js} +3 -3
  16. package/dist/{cli-gxnzc6wh.js → cli-4nr988h6.js} +1 -1
  17. package/dist/{cli-axs8e6d4.js → cli-53s590z8.js} +1 -1
  18. package/dist/{cli-ygbjp3z8.js → cli-54wwve05.js} +5 -4
  19. package/dist/{cli-v0asr5yv.js → cli-719k9j2c.js} +2 -2
  20. package/dist/{cli-anktweqr.js → cli-89xfd7f9.js} +21 -47
  21. package/dist/{cli-q34a0e10.js → cli-8v0g1yc8.js} +1 -1
  22. package/dist/cli-9d8ntetj.js +42 -0
  23. package/dist/{cli-z9fprcrf.js → cli-atcve9y8.js} +881 -738
  24. package/dist/{cli-jmb7g47h.js → cli-b5bq9crk.js} +14 -31
  25. package/dist/cli-d8brzxjb.js +190 -0
  26. package/dist/{cli-gzky0gkr.js → cli-de14znh8.js} +2 -2
  27. package/dist/{cli-xytwff7f.js → cli-dttph1bw.js} +2 -2
  28. package/dist/cli-ep19k3mb.js +19 -0
  29. package/dist/{cli-m1xa8be7.js → cli-f146mn5s.js} +7 -50
  30. package/dist/{cli-1fj0chdk.js → cli-f7dsy61y.js} +5 -3
  31. package/dist/{cli-f567d5c1.js → cli-ftht3zzj.js} +2782 -2589
  32. package/dist/{cli-a0g1gbt5.js → cli-hbv0kq6w.js} +2 -2
  33. package/dist/{cli-fhsz3twr.js → cli-jsp14b6c.js} +171 -1
  34. package/dist/{cli-7fnkj1hj.js → cli-kpv03zhj.js} +21 -17
  35. package/dist/{cli-m4j6trn4.js → cli-m8yrsg97.js} +2 -2
  36. package/dist/cli-m9sxbkhm.js +779 -0
  37. package/dist/cli-mmemxxdc.js +823 -0
  38. package/dist/{cli-tqtvj5pt.js → cli-n8508nre.js} +1 -1
  39. package/dist/{cli-z96t0thj.js → cli-p1d5b073.js} +37 -2
  40. package/dist/{cli-gh8y8f36.js → cli-rw51bq3j.js} +13 -10
  41. package/dist/{cli-59ej1c07.js → cli-smby5m17.js} +7 -6
  42. package/dist/{cli-65vqzz3v.js → cli-tzvk9haz.js} +94 -372
  43. package/dist/{cli-dc9k2ba9.js → cli-w9kb3bk1.js} +1 -1
  44. package/dist/{cli-kpev657q.js → cli-y6b6fb76.js} +25 -3
  45. package/dist/{cli-123q2get.js → cli-yz3djrm0.js} +9 -9
  46. package/dist/{cli-wvp6bvy4.js → cli-zhjmqxzh.js} +1 -1
  47. package/dist/cli.js +13 -13
  48. package/dist/{codex-adapter-k98vaw2r.js → codex-adapter-zw4dwsx7.js} +2 -2
  49. package/dist/{codex-hook-9pf19cks.js → codex-hook-bw8p5nh4.js} +2 -2
  50. package/dist/{codex-session-runner-tngtphx7.js → codex-session-runner-k981s65v.js} +2 -2
  51. package/dist/{commands-y8nbr3fv.js → commands-sykrxx7e.js} +4 -4
  52. package/dist/{db-30p4h2t1.js → db-sfbsc8wt.js} +6 -4
  53. package/dist/handlers-0aspcejm.js +603 -0
  54. package/dist/{hook-dcw4jfbj.js → hook-4nvqj2sb.js} +7 -5
  55. package/dist/{hook-21jexvfx.js → hook-hxccs7m5.js} +24 -49
  56. package/dist/{http-r4kq5g8d.js → http-y06z517d.js} +230 -94
  57. package/dist/{index-q3qja6ta.js → index-hssww7kj.js} +15 -14
  58. package/dist/{index-gay66b9w.js → index-k8znfx0z.js} +13 -12
  59. package/dist/{index-53zyht4z.js → index-tce1rss4.js} +371 -110
  60. package/dist/{index-nqvf26za.js → index-x5j894zf.js} +14 -13
  61. package/dist/{keepalive-xs8fa55y.js → keepalive-w733ax66.js} +6 -6
  62. package/dist/{lead-d9m2t4s0.js → lead-75bjqa9d.js} +29 -27
  63. package/dist/{maintenance-3zh82g6z.js → maintenance-w4f1zjck.js} +8 -7
  64. package/dist/{oauth-refresh-sweep-03snsye5.js → oauth-refresh-sweep-wdetky26.js} +5 -5
  65. package/dist/{onboard-0cg1925x.js → onboard-bb5net8s.js} +2 -2
  66. package/dist/{otel-impl-0ab95z27.js → otel-impl-0w7c14ap.js} +1 -1
  67. package/dist/{pi-mono-adapter-dtkz4e7j.js → pi-mono-adapter-2has4gnp.js} +12 -2
  68. package/dist/{pricing-refresh-e5jhzz4j.js → pricing-refresh-9nzsrgcq.js} +6 -6
  69. package/dist/{rbac-roles-p1mf40z3.js → rbac-roles-r3hqjp09.js} +5 -5
  70. package/dist/{rbac-roles-2w3cmrkc.js → rbac-roles-z1jrffbt.js} +4 -4
  71. package/dist/{registry-9kdck5ye.js → registry-v5wytg0s.js} +1 -2
  72. package/dist/{render-v2-xhawry3k.js → render-v2-vbr89fnb.js} +6 -5
  73. package/dist/{seed-pricing-t223sw91.js → seed-pricing-g62hy1pk.js} +7 -5
  74. package/dist/{setup-zcs0rce7.js → setup-gnfqnptp.js} +2 -2
  75. package/dist/{worker-qnp2ka62.js → worker-kznxp4qm.js} +29 -27
  76. package/openapi.json +263 -12
  77. package/package.json +1 -1
  78. package/plugin/commands/start-worker.md +4 -9
  79. package/plugin/pi-skills/start-worker/SKILL.md +4 -9
  80. package/src/be/db/agents.ts +556 -0
  81. package/src/be/db/context-versions.ts +117 -0
  82. package/src/be/db/runtime.ts +406 -0
  83. package/src/be/db/tasks/read.ts +1167 -0
  84. package/src/be/db/tasks/write.ts +953 -0
  85. package/src/be/db.ts +584 -3429
  86. package/src/be/migrations/147_scheduled_tasks_parent_task.sql +7 -0
  87. package/src/be/migrations/148_pages_svg.sql +123 -0
  88. package/src/be/migrations/149_session_tokens.sql +24 -0
  89. package/src/be/scripts/typecheck.ts +1 -0
  90. package/src/be/seed-pricing.ts +13 -8
  91. package/src/be/seed-scripts/catalog/ops-catalog-audit.inline.ts +1 -1
  92. package/src/be/seed-scripts/catalog/ops-catalog-audit.ts +1 -1
  93. package/src/be/seed-scripts/catalog/star-history-refresh.ts +101 -0
  94. package/src/be/seed-scripts/catalog/star-history-renderer.ts +119 -0
  95. package/src/be/seed-scripts/index.ts +17 -0
  96. package/src/be/seed-skills/index.ts +14 -0
  97. package/src/be/swarm-config-guard.ts +5 -2
  98. package/src/be/task-attachment-store.ts +70 -0
  99. package/src/be/users.ts +77 -0
  100. package/src/commands/attachments-section.ts +37 -0
  101. package/src/commands/claude-managed-setup.ts +45 -3
  102. package/src/commands/claude-md-session.ts +408 -0
  103. package/src/commands/context-preamble.ts +15 -3
  104. package/src/commands/profile-sync.ts +205 -5
  105. package/src/commands/provider-credentials.ts +60 -27
  106. package/src/commands/runner.ts +63 -58
  107. package/src/commands/templates.ts +25 -2
  108. package/src/hooks/hook.ts +26 -67
  109. package/src/http/agents.ts +40 -1
  110. package/src/http/auth.ts +13 -1
  111. package/src/http/fs.ts +21 -51
  112. package/src/http/index.ts +2 -0
  113. package/src/http/mcp.ts +32 -0
  114. package/src/http/pages-public.ts +20 -4
  115. package/src/http/pages.ts +11 -3
  116. package/src/http/poll.ts +4 -0
  117. package/src/http/repos.ts +3 -3
  118. package/src/http/sessions.ts +82 -0
  119. package/src/http/tasks.ts +10 -2
  120. package/src/http/utils.ts +79 -1
  121. package/src/prompts/session-templates.ts +12 -8
  122. package/src/providers/acp-adapter.ts +62 -8
  123. package/src/providers/pi-mono-adapter.ts +23 -6
  124. package/src/providers/pricing-sources.md +11 -0
  125. package/src/scheduler/scheduler.test.ts +49 -2
  126. package/src/scheduler/scheduler.ts +4 -0
  127. package/src/scripts-runtime/sdk-allowlist.ts +1 -0
  128. package/src/scripts-runtime/types/stdlib.d.ts +8 -0
  129. package/src/scripts-runtime/types/swarm-sdk.d.ts +8 -0
  130. package/src/server.ts +2 -0
  131. package/src/slack/assistant.ts +87 -46
  132. package/src/slack/handlers.test.ts +1 -3
  133. package/src/slack/handlers.ts +102 -87
  134. package/src/slack/inbound-files.ts +466 -0
  135. package/src/slack/templates.ts +14 -0
  136. package/src/tasks/task-terminal-effects.ts +158 -0
  137. package/src/tests/acp-adapter.test.ts +369 -117
  138. package/src/tests/budget-claim-gate.test.ts +1 -0
  139. package/src/tests/build-pi-skills.test.ts +5 -7
  140. package/src/tests/claude-managed-setup.test.ts +52 -4
  141. package/src/tests/claude-md-session.test.ts +603 -0
  142. package/src/tests/codex-skill-resolver.test.ts +19 -0
  143. package/src/tests/context-versioning.test.ts +107 -0
  144. package/src/tests/cors-allowlist.test.ts +309 -0
  145. package/src/tests/credential-check.test.ts +157 -14
  146. package/src/tests/db-agents.test.ts +91 -0
  147. package/src/tests/db-context-versions.test.ts +37 -0
  148. package/src/tests/db-extraction-contract.test.ts +45 -0
  149. package/src/tests/db-runtime.test.ts +70 -0
  150. package/src/tests/db-task-read-contract.test.ts +624 -0
  151. package/src/tests/db-task-write-contract.test.ts +653 -0
  152. package/src/tests/db-tasks-read.test.ts +183 -0
  153. package/src/tests/db-tasks-write.test.ts +230 -0
  154. package/src/tests/defer-task.test.ts +389 -0
  155. package/src/tests/docs-index-footprint.test.js +2 -2
  156. package/src/tests/e2e-visuals-stage.test.ts +151 -0
  157. package/src/tests/file-lock.test.ts +144 -0
  158. package/src/tests/fixtures/file-lock-holder.ts +13 -0
  159. package/src/tests/fixtures/hold-file-lock.ts +25 -0
  160. package/src/tests/heartbeat-expiry.test.ts +188 -0
  161. package/src/tests/http-api-integration.test.ts +78 -1
  162. package/src/tests/pages-public-html.test.ts +43 -0
  163. package/src/tests/pages-svg-migration.test.ts +42 -0
  164. package/src/tests/preload.ts +4 -1
  165. package/src/tests/profile-sync-warning.test.ts +16 -0
  166. package/src/tests/profile-sync.test.ts +126 -0
  167. package/src/tests/prompt-template-session.test.ts +20 -4
  168. package/src/tests/provider-registration.test.ts +93 -0
  169. package/src/tests/rbac-e2e-helpers.test.ts +53 -0
  170. package/src/tests/rbac-e2e-helpers.ts +19 -2
  171. package/src/tests/reload-config.test.ts +26 -0
  172. package/src/tests/routing-affinity-inventory.test.ts +1 -1
  173. package/src/tests/runner-attachments-section.test.ts +22 -2
  174. package/src/tests/runner-context-preamble.test.ts +30 -0
  175. package/src/tests/runner-deployment-resume.test.ts +107 -0
  176. package/src/tests/runner-repo-autostash.test.ts +12 -0
  177. package/src/tests/script-connections.test.ts +4 -0
  178. package/src/tests/seed-scripts.test.ts +2 -2
  179. package/src/tests/session-tokens.test.ts +279 -0
  180. package/src/tests/slack-file-tools-attachments.test.ts +408 -0
  181. package/src/tests/slack-inbound-files.test.ts +847 -0
  182. package/src/tests/star-history-refresh.test.ts +102 -0
  183. package/src/tests/swarm-config-reserved-keys.test.ts +21 -0
  184. package/src/tests/swarm-repos.test.ts +20 -0
  185. package/src/tests/tool-annotations.test.ts +4 -3
  186. package/src/tests/ui-logs-parser.test.ts +176 -0
  187. package/src/tools/create-page.ts +4 -2
  188. package/src/tools/defer-task.ts +239 -0
  189. package/src/tools/repos/update-repo.ts +2 -2
  190. package/src/tools/schedules/create-schedule.ts +1 -0
  191. package/src/tools/schedules/list-schedules.ts +1 -0
  192. package/src/tools/schedules/patch-schedule.ts +1 -0
  193. package/src/tools/schedules/update-schedule.ts +1 -0
  194. package/src/tools/slack-download-file.ts +60 -29
  195. package/src/tools/slack-read.ts +73 -32
  196. package/src/tools/store-progress.ts +16 -146
  197. package/src/tools/tool-config.ts +1 -0
  198. package/src/tools/utils.ts +21 -0
  199. package/src/types.ts +37 -4
  200. package/src/utils/acp-session-token.ts +56 -0
  201. package/src/utils/file-lock.ts +111 -0
  202. package/src/utils/heartbeat-expiry.ts +78 -0
  203. package/src/utils/request-auth-context.ts +2 -0
  204. package/src/utils/task-attachment-links.ts +22 -0
  205. package/templates/skills/code-quality/content.md +8 -5
  206. package/templates/skills/download-task-attachment/content.md +2 -1
  207. package/{plugin/pi-skills → templates/skills}/review-offered-task/SKILL.md +5 -5
  208. package/templates/skills/review-offered-task/config.json +14 -0
  209. package/{plugin/commands/review-offered-task.md → templates/skills/review-offered-task/content.md} +3 -8
  210. package/templates/skills/scheduling/content.md +4 -0
  211. package/templates/skills/slack-interaction/content.md +2 -2
  212. package/templates/skills/work-on-task/SKILL.md +16 -0
  213. package/templates/skills/work-on-task/config.json +14 -0
  214. package/templates/skills/work-on-task/content.md +11 -0
  215. package/dist/assistant-0qt42nzg.js +0 -212
  216. package/dist/cli-fs1kkqgr.js +0 -317
  217. package/dist/cli-jnf5zghe.js +0 -269
  218. package/dist/cli-n1q8q14d.js +0 -177
  219. package/dist/handlers-yfp1qn81.js +0 -592
  220. package/plugin/commands/work-on-task.md +0 -39
  221. package/plugin/pi-skills/work-on-task/SKILL.md +0 -39
@@ -0,0 +1,624 @@
1
+ import { expect, test } from "bun:test";
2
+ import ts from "typescript";
3
+ import * as db from "../be/db";
4
+ import * as read from "../be/db/tasks/read";
5
+
6
+ function manifest(source: string): string[] {
7
+ const file = ts.createSourceFile("module.ts", source, ts.ScriptTarget.Latest, true);
8
+ const names = new Set<string>();
9
+ for (const node of file.statements) {
10
+ if (ts.isExportDeclaration(node) && node.exportClause && ts.isNamedExports(node.exportClause)) {
11
+ for (const binding of node.exportClause.elements) {
12
+ names.add(
13
+ `${node.isTypeOnly || binding.isTypeOnly ? "type" : "value"}:${binding.name.text}`,
14
+ );
15
+ }
16
+ } else if (
17
+ ts.canHaveModifiers(node) &&
18
+ ts.getModifiers(node)?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword)
19
+ ) {
20
+ if (ts.isVariableStatement(node)) {
21
+ for (const declaration of node.declarationList.declarations)
22
+ names.add(`value:${declaration.name.getText(file)}`);
23
+ } else if (
24
+ (ts.isFunctionDeclaration(node) ||
25
+ ts.isClassDeclaration(node) ||
26
+ ts.isTypeAliasDeclaration(node) ||
27
+ ts.isInterfaceDeclaration(node)) &&
28
+ node.name
29
+ ) {
30
+ names.add(
31
+ `${ts.isTypeAliasDeclaration(node) || ts.isInterfaceDeclaration(node) ? "type" : "value"}:${node.name.text}`,
32
+ );
33
+ }
34
+ }
35
+ }
36
+ return [...names].sort();
37
+ }
38
+
39
+ // Complete public facade and selected range manifests captured from merged base 8a8b7b53.
40
+ const baseFacade = `type:AgentMailInboxMapping
41
+ type:ApiKeyStatus
42
+ type:AppVersion
43
+ type:ApprovalRequest
44
+ type:AssetSummaryFilters
45
+ type:AttributionByPersonRow
46
+ type:CascadeFailResult
47
+ type:ChannelActivityCursor
48
+ type:ConcurrentContext
49
+ type:ContextSummary
50
+ type:CreateContextSnapshotInput
51
+ type:CreateInboxMessageOptions
52
+ type:CreateScheduledTaskData
53
+ type:CreateServiceOptions
54
+ type:CreateSessionCostInput
55
+ type:CreateSteeringMessageArgs
56
+ type:CreateTaskOptions
57
+ type:CreateWaitStateInput
58
+ type:DashboardCostSummary
59
+ type:DeleteMcpServerResult
60
+ type:ExistingTrackerContextWork
61
+ type:ExistingTrackerContextWorkReason
62
+ type:InboxSummary
63
+ type:InsertPricingRowInput
64
+ type:InsertTaskAttachmentInput
65
+ type:KeyCostSummary
66
+ type:McpServerFilters
67
+ type:McpServerInsert
68
+ type:MentionPreview
69
+ type:PageListOptions
70
+ type:RecordBudgetRefusalNotificationInput
71
+ type:ScheduledTaskFilters
72
+ type:ScriptRunPatch
73
+ type:ServiceFilters
74
+ type:SessionCostByAgentRow
75
+ type:SessionCostByUserRow
76
+ type:SessionCostDailyRow
77
+ type:SessionCostSummaryTotals
78
+ type:SessionListItem
79
+ type:SessionListItemSummary
80
+ type:SkillFileInput
81
+ type:SkillFileManifestEntry
82
+ type:SkillFilters
83
+ type:SkillInsert
84
+ type:SlackConclusionKind
85
+ type:SlackMessageKind
86
+ type:SlackMessageRecord
87
+ type:StuckApprovalRun
88
+ type:StuckWaitRun
89
+ type:StuckWorkflowRun
90
+ type:SwarmMetrics
91
+ type:TaskFilters
92
+ type:UpdateScheduledTaskData
93
+ type:UpsertAssetKeyMappingInput
94
+ type:WorkflowFilters
95
+ type:WorkflowRunListOptions
96
+ type:WorkflowRunPage
97
+ value:KvTypeCollisionError
98
+ value:MAX_EMPTY_POLLS
99
+ value:SKILL_FILE_LIMITS
100
+ value:UNATTRIBUTED_USER_ID
101
+ value:__resetSqliteVecExtensionPathCacheForTests
102
+ value:acceptTask
103
+ value:assignUnassignedTaskPending
104
+ value:autoEncryptLegacyPlaintextSecrets
105
+ value:backfillSupersedeTaskResumeTaskId
106
+ value:bindSlackMessageTimestamp
107
+ value:buildRoutingAffinityFromAgent
108
+ value:cancelPendingApprovalRequestsForRun
109
+ value:cancelPendingSteeringForTask
110
+ value:cancelTask
111
+ value:cascadeFailDependents
112
+ value:checkDependencies
113
+ value:checkoutPromptTemplate
114
+ value:claimApprovalCancellationNotification
115
+ value:claimInboxMessages
116
+ value:claimKv
117
+ value:claimMentions
118
+ value:claimOfferedTask
119
+ value:claimTask
120
+ value:cleanupAgentSessions
121
+ value:cleanupStaleSessions
122
+ value:clearKeyRateLimit
123
+ value:closeDb
124
+ value:completeApprovalCancellationNotificationClaim
125
+ value:completeTask
126
+ value:computeContentHash
127
+ value:countActiveScriptRuns
128
+ value:countAllMetrics
129
+ value:countAllPages
130
+ value:countKv
131
+ value:countMetricsByAgent
132
+ value:countPagesByAgent
133
+ value:countScriptRunJournalAgentTaskSteps
134
+ value:countScriptRunJournalSteps
135
+ value:countScriptRuns
136
+ value:countSessions
137
+ value:countWorkflowRuns
138
+ value:createAgent
139
+ value:createAgentMailInboxMapping
140
+ value:createAppVersion
141
+ value:createApprovalRequest
142
+ value:createChannel
143
+ value:createContextSnapshot
144
+ value:createContextVersion
145
+ value:createInboxMessage
146
+ value:createLogEntry
147
+ value:createMcpServer
148
+ value:createMetric
149
+ value:createMetricVersion
150
+ value:createPage
151
+ value:createPageVersion
152
+ value:createScheduledTask
153
+ value:createScriptRun
154
+ value:createService
155
+ value:createSessionCost
156
+ value:createSessionLogs
157
+ value:createSkill
158
+ value:createSteeringMessage
159
+ value:createSwarmRepo
160
+ value:createTask
161
+ value:createTaskExtended
162
+ value:createUser
163
+ value:createWaitState
164
+ value:createWorkflow
165
+ value:createWorkflowRun
166
+ value:createWorkflowRunStep
167
+ value:createWorkflowVersion
168
+ value:deleteActiveSession
169
+ value:deleteActiveSessionById
170
+ value:deleteAgent
171
+ value:deleteAgentMailInboxMapping
172
+ value:deleteBudget
173
+ value:deleteChannel
174
+ value:deleteKv
175
+ value:deleteMcpServer
176
+ value:deleteMetric
177
+ value:deletePage
178
+ value:deletePricingRow
179
+ value:deletePromptTemplate
180
+ value:deleteScheduledTask
181
+ value:deleteService
182
+ value:deleteServicesByAgentId
183
+ value:deleteSkill
184
+ value:deleteSkillFile
185
+ value:deleteSlackMessageRecord
186
+ value:deleteSwarmConfig
187
+ value:deleteSwarmConfigByKey
188
+ value:deleteSwarmRepo
189
+ value:deleteTask
190
+ value:deleteTaskAttachment
191
+ value:deleteUser
192
+ value:deleteWorkflow
193
+ value:detachTaskFromWorkflowRunStep
194
+ value:emitBuiltInIntegrationConnectedOnce
195
+ value:emitMcpServerConnectedTelemetry
196
+ value:ensureSlackDelegationActivation
197
+ value:ensureSlackRenderV2Activation
198
+ value:failPendingResumeIfUnclaimed
199
+ value:failTask
200
+ value:findCompletedTaskInThread
201
+ value:findExistingLinearTrackerContextWork
202
+ value:findRecentCancelledTaskInThread
203
+ value:findRecentSimilarTasks
204
+ value:findTaskByAgentMailThread
205
+ value:findTaskByGitHub
206
+ value:findTaskByVcs
207
+ value:generateDefaultClaudeMd
208
+ value:generateDefaultIdentityMd
209
+ value:generateDefaultSoulMd
210
+ value:generateDefaultToolsMd
211
+ value:getActivePricingRow
212
+ value:getActiveSessionForTask
213
+ value:getActiveSessions
214
+ value:getActiveTaskCount
215
+ value:getAgentById
216
+ value:getAgentCurrentTask
217
+ value:getAgentHarnessProviders
218
+ value:getAgentMailInboxMapping
219
+ value:getAgentMailInboxMappingsByAgent
220
+ value:getAgentMcpServers
221
+ value:getAgentSkills
222
+ value:getAgentWithTasks
223
+ value:getAgentWorkingOnThread
224
+ value:getAllAgentMailInboxMappings
225
+ value:getAllAgents
226
+ value:getAllAgentsWithTasks
227
+ value:getAllChannelActivityCursors
228
+ value:getAllChannels
229
+ value:getAllLogs
230
+ value:getAllPricingRows
231
+ value:getAllServices
232
+ value:getAllSessionCosts
233
+ value:getAllTasks
234
+ value:getAllUsers
235
+ value:getAppVersion
236
+ value:getAppVersions
237
+ value:getApprovalRequestById
238
+ value:getApprovalRequestByStepId
239
+ value:getAssetKeyMapping
240
+ value:getAssetKeyMappingByProvider
241
+ value:getAttributionByPerson
242
+ value:getAvailableKeyIndices
243
+ value:getBudget
244
+ value:getBudgetRefusalNotification
245
+ value:getBudgets
246
+ value:getChannelActivityCursor
247
+ value:getChannelById
248
+ value:getChannelByName
249
+ value:getChannelMessages
250
+ value:getChildTasks
251
+ value:getCompletedSlackTasks
252
+ value:getCompletedStepNodeIds
253
+ value:getConcurrentContext
254
+ value:getContextSnapshotsBySessionId
255
+ value:getContextSnapshotsByTaskId
256
+ value:getContextSummaryByTaskId
257
+ value:getContextVersion
258
+ value:getContextVersionHistory
259
+ value:getDailySpendForAgent
260
+ value:getDailySpendForUser
261
+ value:getDailySpendGlobal
262
+ value:getDashboardCostSummary
263
+ value:getDb
264
+ value:getDbClient
265
+ value:getDependentTasks
266
+ value:getDueScheduledTasks
267
+ value:getDueWaitStates
268
+ value:getExpiredPendingApprovals
269
+ value:getFavoriteItemIdSet
270
+ value:getIdleWorkersWithCapacity
271
+ value:getInProgressSlackTasks
272
+ value:getInProgressTasksByContextKey
273
+ value:getInboxMessageById
274
+ value:getInboxSummary
275
+ value:getInjectableGlobalConfigs
276
+ value:getInstanceActivity
277
+ value:getKeyCostSummary
278
+ value:getKeyStatuses
279
+ value:getKv
280
+ value:getLastReadAt
281
+ value:getLastRunStart
282
+ value:getLastSuccessfulRun
283
+ value:getLatestActiveTaskInThread
284
+ value:getLatestContextVersion
285
+ value:getLatestLeadTaskInThread
286
+ value:getLatestPageBySlug
287
+ value:getLatestScriptRunStepTaskByContextKey
288
+ value:getLatestStepForNode
289
+ value:getLatestTaskByContextKey
290
+ value:getLeadAgent
291
+ value:getLiveAgentCounts
292
+ value:getLogsByAgentId
293
+ value:getLogsByEventType
294
+ value:getLogsByTaskId
295
+ value:getLogsByTaskIdChronological
296
+ value:getMcpServerById
297
+ value:getMcpServerByName
298
+ value:getMentionsForAgent
299
+ value:getMessageById
300
+ value:getMetric
301
+ value:getMetricBySlug
302
+ value:getMetricVersion
303
+ value:getMetricVersions
304
+ value:getMostRecentTaskInThread
305
+ value:getOfferedTasksForAgent
306
+ value:getOrphanedInProgressTasksForAgent
307
+ value:getPage
308
+ value:getPageBySlug
309
+ value:getPageVersion
310
+ value:getPageVersions
311
+ value:getPausedTasksForAgent
312
+ value:getPendingEventWaitNames
313
+ value:getPendingSlackRelayTasks
314
+ value:getPendingSteeringForAgent
315
+ value:getPendingSteeringForTask
316
+ value:getPendingTaskForAgent
317
+ value:getPendingWaitsByEvent
318
+ value:getPricingRows
319
+ value:getPromptTemplateById
320
+ value:getPromptTemplateHistory
321
+ value:getPromptTemplates
322
+ value:getRecentBudgetRefusalNotifications
323
+ value:getRecentCompletedCount
324
+ value:getRecentFailedCount
325
+ value:getRecentFailedTasks
326
+ value:getRecentlyCancelledTasksForAgent
327
+ value:getRecentlyFinishedWorkerTasks
328
+ value:getRemainingCapacity
329
+ value:getResolvedConfig
330
+ value:getRetryableSteps
331
+ value:getRootTaskChain
332
+ value:getRunningScriptRuns
333
+ value:getScheduledTaskById
334
+ value:getScheduledTaskByName
335
+ value:getScheduledTasks
336
+ value:getScriptRun
337
+ value:getScriptRunByIdempotencyKey
338
+ value:getScriptRunJournalStep
339
+ value:getServiceByAgentAndName
340
+ value:getServiceById
341
+ value:getServicesByAgentId
342
+ value:getSessionCostSummary
343
+ value:getSessionCostsByAgentId
344
+ value:getSessionCostsByTaskId
345
+ value:getSessionCostsFiltered
346
+ value:getSessionLogsBySession
347
+ value:getSessionLogsByTaskId
348
+ value:getSkillById
349
+ value:getSkillByName
350
+ value:getSkillFile
351
+ value:getSkillFiles
352
+ value:getSlackDelegationActivatedAt
353
+ value:getSlackMessageByChannelTs
354
+ value:getSlackOutcomeMessage
355
+ value:getSlackRenderV2ActivatedAt
356
+ value:getSlackTasksInThread
357
+ value:getSlackTasksMissingTree
358
+ value:getSlackTreeMessage
359
+ value:getSlackTreeMessageByThread
360
+ value:getSlackTreeMessages
361
+ value:getStalePinnedResumes
362
+ value:getStaleUnassignedAffinityTasks
363
+ value:getStalledInProgressTasks
364
+ value:getSteeringMessageById
365
+ value:getSteeringMessagesForTask
366
+ value:getStepByIdempotencyKey
367
+ value:getStepCountForNode
368
+ value:getStuckApprovalRuns
369
+ value:getStuckWaitRuns
370
+ value:getStuckWorkflowRuns
371
+ value:getSwarmConfigById
372
+ value:getSwarmConfigLookupById
373
+ value:getSwarmConfigs
374
+ value:getSwarmMetrics
375
+ value:getSwarmRepoById
376
+ value:getSwarmRepoByName
377
+ value:getSwarmRepoByUrl
378
+ value:getSwarmRepos
379
+ value:getSystemDefaultSkills
380
+ value:getTaskAttachments
381
+ value:getTaskById
382
+ value:getTaskByWorkflowRunStepId
383
+ value:getTaskStats
384
+ value:getTasksByAgentId
385
+ value:getTasksByStatus
386
+ value:getTasksCount
387
+ value:getUnassignedPoolTasks
388
+ value:getUnassignedTaskIds
389
+ value:getUnassignedTaskIdsForAgent
390
+ value:getUnassignedTasksCount
391
+ value:getUnreadInboxMessages
392
+ value:getUnreadMessages
393
+ value:getUserById
394
+ value:getWaitStateById
395
+ value:getWaitStateByStepId
396
+ value:getWorkflow
397
+ value:getWorkflowRun
398
+ value:getWorkflowRunStep
399
+ value:getWorkflowRunStepsByRunId
400
+ value:getWorkflowVersion
401
+ value:getWorkflowVersions
402
+ value:getWorkflowsByScheduleId
403
+ value:hasBudgetRefusalNotificationToday
404
+ value:hasCapacity
405
+ value:hasFirstCompletedTask
406
+ value:hasNonTerminalRerouteDecisionChild
407
+ value:hasNonTerminalResumeChild
408
+ value:hasPendingSteering
409
+ value:heartbeatActiveSession
410
+ value:incrKv
411
+ value:incrementEmptyPollCount
412
+ value:incrementPageViewCount
413
+ value:initDb
414
+ value:insertActiveSession
415
+ value:insertPricingRow
416
+ value:insertTaskAttachment
417
+ value:installMcpServer
418
+ value:installSkill
419
+ value:installSystemDefaultSkillsForAgent
420
+ value:isAgentEligibleForTask
421
+ value:isPendingSlackMessage
422
+ value:isPoolAffinityEnforcementEnabled
423
+ value:isSqliteVecAvailable
424
+ value:listAgentsWithCredStatusByProvider
425
+ value:listAllMetrics
426
+ value:listAllPages
427
+ value:listApprovalRequests
428
+ value:listAssetSummaries
429
+ value:listCancelledApprovalRequestsForRun
430
+ value:listCancelledApprovalRequestsForStep
431
+ value:listFavorites
432
+ value:listInboxState
433
+ value:listKv
434
+ value:listMcpServers
435
+ value:listMetricsByAgent
436
+ value:listPagesByAgent
437
+ value:listRecentSessions
438
+ value:listScriptRunJournalSteps
439
+ value:listScriptRuns
440
+ value:listSkillFileManifest
441
+ value:listSkills
442
+ value:listTaskTemplates
443
+ value:listUserFavorites
444
+ value:listWorkflowRuns
445
+ value:listWorkflowRunsPage
446
+ value:listWorkflows
447
+ value:markFinalizedSlackRelaysDelivered
448
+ value:markInboxMessageDelegated
449
+ value:markInboxMessageRead
450
+ value:markInboxMessageResponded
451
+ value:markKeyRateLimited
452
+ value:markSlackRelayAttempted
453
+ value:markSlackRelayDelivered
454
+ value:markSlackTreeRendered
455
+ value:markSteeringDelivered
456
+ value:markSteeringHandled
457
+ value:markSteeringPromoted
458
+ value:markTaskSlackReplySent
459
+ value:markTasksNotified
460
+ value:maskSecrets
461
+ value:moveAssetKey
462
+ value:moveTaskFromBacklog
463
+ value:moveTaskToBacklog
464
+ value:normalizeSkillFilePath
465
+ value:overwriteTerminalTaskResultText
466
+ value:pauseTask
467
+ value:postMessage
468
+ value:promoteAbandonedDraftTasks
469
+ value:promoteDraftTask
470
+ value:reassociateSessionLogs
471
+ value:recordBudgetRefusalNotification
472
+ value:recordInlineScriptRun
473
+ value:recordKeyRateLimitWindows
474
+ value:recordKeyUsage
475
+ value:recordSlackMessage
476
+ value:recordTaskPullRequestAttachments
477
+ value:refreshDraftTaskLease
478
+ value:rejectTask
479
+ value:releaseApprovalCancellationNotificationClaim
480
+ value:releaseMentionProcessing
481
+ value:releaseStaleMentionProcessing
482
+ value:releaseStaleOfferedTasksForOfflineAgents
483
+ value:releaseStaleProcessingInbox
484
+ value:releaseStaleReviewingTasks
485
+ value:releaseTask
486
+ value:replaceTaskAttachment
487
+ value:reserveSlackMessage
488
+ value:resetEmptyPollCount
489
+ value:resetOrphanedInProgressTasksForAgent
490
+ value:resetPromptTemplateToDefault
491
+ value:resetTasksNotified
492
+ value:resolveApprovalRequest
493
+ value:resolvePromptTemplate
494
+ value:resolveSqliteVecExtensionPath
495
+ value:resolveWaitState
496
+ value:resumeTask
497
+ value:searchSkills
498
+ value:setAgentHarnessProvider
499
+ value:setApiKeyName
500
+ value:setBudgetRefusalFollowUpTaskId
501
+ value:setFavorite
502
+ value:setSlackMessageTracking
503
+ value:setUserFavorite
504
+ value:shouldBlockPolling
505
+ value:startTask
506
+ value:supersedeTask
507
+ value:sweepExpiredKv
508
+ value:sweepExpiredKvPrefix
509
+ value:toggleAgentSkill
510
+ value:uninstallMcpServer
511
+ value:uninstallSkill
512
+ value:updateActiveSessionProviderSessionId
513
+ value:updateAgentActivity
514
+ value:updateAgentCredStatus
515
+ value:updateAgentCredentialMissing
516
+ value:updateAgentCredentialState
517
+ value:updateAgentMaxTasks
518
+ value:updateAgentName
519
+ value:updateAgentProfile
520
+ value:updateAgentProvider
521
+ value:updateAgentStatus
522
+ value:updateAgentStatusFromCapacity
523
+ value:updateApprovalRequestNotifications
524
+ value:updateMcpServer
525
+ value:updateMetric
526
+ value:updatePage
527
+ value:updateReadState
528
+ value:updateScheduledTask
529
+ value:updateScriptRun
530
+ value:updateScriptRunIfNotTerminal
531
+ value:updateScriptRunIfRunning
532
+ value:updateServiceStatus
533
+ value:updateSkill
534
+ value:updateSlackMessageRecord
535
+ value:updateSwarmRepo
536
+ value:updateTaskClaudeSessionId
537
+ value:updateTaskProgress
538
+ value:updateTaskTitle
539
+ value:updateTaskVcs
540
+ value:updateUser
541
+ value:updateWorkflow
542
+ value:updateWorkflowRun
543
+ value:updateWorkflowRunStep
544
+ value:upsertAssetKeyMapping
545
+ value:upsertBudget
546
+ value:upsertChannelActivityCursor
547
+ value:upsertInboxState
548
+ value:upsertKv
549
+ value:upsertPromptTemplate
550
+ value:upsertScriptRunJournalStep
551
+ value:upsertService
552
+ value:upsertSkillFile
553
+ value:upsertSkillFiles
554
+ value:upsertSwarmConfig
555
+ value:withFavoriteFlags`.split("\n");
556
+ const selected = `type:ExistingTrackerContextWork
557
+ type:ExistingTrackerContextWorkReason
558
+ type:TaskFilters
559
+ value:findCompletedTaskInThread
560
+ value:findExistingLinearTrackerContextWork
561
+ value:findRecentCancelledTaskInThread
562
+ value:findTaskByGitHub
563
+ value:findTaskByVcs
564
+ value:getAgentCurrentTask
565
+ value:getAgentWorkingOnThread
566
+ value:getAllTasks
567
+ value:getChildTasks
568
+ value:getCompletedSlackTasks
569
+ value:getInProgressSlackTasks
570
+ value:getInProgressTasksByContextKey
571
+ value:getLatestActiveTaskInThread
572
+ value:getLatestLeadTaskInThread
573
+ value:getLatestScriptRunStepTaskByContextKey
574
+ value:getLatestTaskByContextKey
575
+ value:getMostRecentTaskInThread
576
+ value:getPendingSlackRelayTasks
577
+ value:getRecentlyFinishedWorkerTasks
578
+ value:getSlackTasksMissingTree
579
+ value:getTaskById
580
+ value:getTaskStats
581
+ value:getTasksByAgentId
582
+ value:getTasksByStatus
583
+ value:getTasksCount
584
+ value:hasNonTerminalRerouteDecisionChild
585
+ value:hasNonTerminalResumeChild
586
+ value:markFinalizedSlackRelaysDelivered
587
+ value:markSlackRelayAttempted
588
+ value:markSlackRelayDelivered
589
+ value:markTasksNotified
590
+ value:resetTasksNotified`.split("\n");
591
+ const internal = [
592
+ "type:AgentTaskRow",
593
+ "value:configureTaskReadDependencies",
594
+ "value:rowToAgentTask",
595
+ "value:rowToAgentTaskSummary",
596
+ ].sort();
597
+
598
+ test("complete facade, selected public bindings and internal-only manifest remain exact", async () => {
599
+ const facade = await Bun.file(new URL("../be/db.ts", import.meta.url)).text();
600
+ const target = await Bun.file(new URL("../be/db/tasks/read.ts", import.meta.url)).text();
601
+ expect(manifest(facade)).toEqual(baseFacade);
602
+ expect(manifest(target).filter((name) => !internal.includes(name))).toEqual(selected);
603
+ expect(manifest(target).filter((name) => internal.includes(name))).toEqual(internal);
604
+ for (const binding of selected) {
605
+ const [kind, name] = binding.split(":") as [string, string];
606
+ if (kind === "value")
607
+ expect((db as Record<string, unknown>)[name]).toBe((read as Record<string, unknown>)[name]);
608
+ }
609
+ for (const binding of internal) expect(binding.split(":")[1]! in db).toBe(false);
610
+ const parsed = ts.createSourceFile("facade.ts", facade, ts.ScriptTarget.Latest, true);
611
+ for (const node of parsed.statements) {
612
+ if (
613
+ (ts.isFunctionDeclaration(node) ||
614
+ ts.isTypeAliasDeclaration(node) ||
615
+ ts.isInterfaceDeclaration(node)) &&
616
+ node.name
617
+ ) {
618
+ expect(selected.some((name) => name.endsWith(`:${node.name?.text}`))).toBe(false);
619
+ }
620
+ }
621
+ expect(target).not.toMatch(/from ["'][^"']*(?:be\/db|\.\.\/\.\.\/db)["']/);
622
+ expect(target).not.toContain("bun:sqlite");
623
+ expect(facade.split("\n").length).toBeLessThanOrEqual(15219);
624
+ });