@desplega.ai/agent-swarm 1.146.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 (214) hide show
  1. package/README.md +1 -1
  2. package/dist/{acp-adapter-jnq4612m.js → acp-adapter-9n319wqc.js} +42 -4
  3. package/dist/{actions-s41xcn3f.js → actions-2vxqvpr9.js} +9 -8
  4. package/dist/{app-j8bfw3f6.js → app-w066xfy0.js} +6 -5
  5. package/dist/assistant-kt31dj2h.js +236 -0
  6. package/dist/{boot-reembed-jxdz46jp.js → boot-reembed-az5rassp.js} +7 -6
  7. package/dist/{boot-reembed-x1476agm.js → boot-reembed-j3mm3rfz.js} +8 -7
  8. package/dist/{boot-scrub-logs-rab9h5bt.js → boot-scrub-logs-b6h54817.js} +4 -4
  9. package/dist/{claude-adapter-ep6qekbm.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-0wp3qrcy.js → claude-sdk-session-f0cc1kec.js} +8 -6
  12. package/dist/{cli-bafd6xnf.js → cli-0b6y7kxm.js} +1 -1
  13. package/dist/{cli-jyy3e193.js → cli-12fz972k.js} +4 -4
  14. package/dist/{cli-pzfc7j7g.js → cli-1th1728g.js} +2 -2
  15. package/dist/{cli-68h2mfrn.js → cli-3tgwnf43.js} +3 -3
  16. package/dist/{cli-q3qr220d.js → cli-4nr988h6.js} +1 -1
  17. package/dist/{cli-m4xsy03s.js → cli-53s590z8.js} +1 -1
  18. package/dist/{cli-c8q7292f.js → cli-54wwve05.js} +5 -4
  19. package/dist/{cli-rymrjneb.js → cli-719k9j2c.js} +2 -2
  20. package/dist/{cli-zn65x0w8.js → cli-89xfd7f9.js} +21 -47
  21. package/dist/{cli-506z6jqa.js → cli-8v0g1yc8.js} +1 -1
  22. package/dist/cli-9d8ntetj.js +42 -0
  23. package/dist/{cli-dhg6j8h3.js → cli-atcve9y8.js} +826 -737
  24. package/dist/{cli-46yck6nj.js → cli-b5bq9crk.js} +14 -31
  25. package/dist/cli-d8brzxjb.js +190 -0
  26. package/dist/{cli-a960nkfb.js → cli-de14znh8.js} +2 -2
  27. package/dist/{cli-s8sbe32s.js → cli-dttph1bw.js} +2 -2
  28. package/dist/cli-ep19k3mb.js +19 -0
  29. package/dist/{cli-d9pnxgth.js → cli-f146mn5s.js} +7 -50
  30. package/dist/{cli-qar1f940.js → cli-f7dsy61y.js} +5 -3
  31. package/dist/{cli-d4xqde2b.js → cli-ftht3zzj.js} +2780 -2587
  32. package/dist/{cli-pmwbdw36.js → cli-hbv0kq6w.js} +2 -2
  33. package/dist/{cli-fhsz3twr.js → cli-jsp14b6c.js} +171 -1
  34. package/dist/{cli-2zvtzevh.js → cli-kpv03zhj.js} +13 -11
  35. package/dist/{cli-a9bn9svs.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-6xwhtc64.js → cli-n8508nre.js} +1 -1
  39. package/dist/{cli-q0qq1sxw.js → cli-p1d5b073.js} +37 -2
  40. package/dist/{cli-yqeb27t1.js → cli-rw51bq3j.js} +13 -10
  41. package/dist/{cli-zww3vcnm.js → cli-smby5m17.js} +7 -6
  42. package/dist/{cli-ah5hjk49.js → cli-tzvk9haz.js} +94 -372
  43. package/dist/{cli-yxwe913z.js → cli-w9kb3bk1.js} +1 -1
  44. package/dist/{cli-skd674mt.js → cli-y6b6fb76.js} +25 -3
  45. package/dist/{cli-3k2g3kg2.js → cli-yz3djrm0.js} +9 -9
  46. package/dist/{cli-4secrq32.js → cli-zhjmqxzh.js} +1 -1
  47. package/dist/cli.js +13 -13
  48. package/dist/{codex-adapter-d6qajxj3.js → codex-adapter-zw4dwsx7.js} +2 -2
  49. package/dist/{codex-hook-n7m5k7cr.js → codex-hook-bw8p5nh4.js} +2 -2
  50. package/dist/{codex-session-runner-v9krqe4x.js → codex-session-runner-k981s65v.js} +2 -2
  51. package/dist/{commands-923wsas7.js → commands-sykrxx7e.js} +4 -4
  52. package/dist/{db-m1hy4zh5.js → db-sfbsc8wt.js} +6 -4
  53. package/dist/handlers-0aspcejm.js +603 -0
  54. package/dist/{hook-ee4hff56.js → hook-4nvqj2sb.js} +7 -5
  55. package/dist/{hook-bxe3bkdy.js → hook-hxccs7m5.js} +24 -49
  56. package/dist/{http-a8rx91me.js → http-y06z517d.js} +223 -92
  57. package/dist/{index-697zfzv1.js → index-hssww7kj.js} +15 -14
  58. package/dist/{index-3x9g3nbg.js → index-k8znfx0z.js} +13 -12
  59. package/dist/{index-1j9va48r.js → index-tce1rss4.js} +371 -110
  60. package/dist/{index-jj4q3x59.js → index-x5j894zf.js} +14 -13
  61. package/dist/{keepalive-sds4e4ce.js → keepalive-w733ax66.js} +6 -6
  62. package/dist/{lead-ggq6szk8.js → lead-75bjqa9d.js} +29 -27
  63. package/dist/{maintenance-093p41d4.js → maintenance-w4f1zjck.js} +8 -7
  64. package/dist/{oauth-refresh-sweep-dvzq4ckj.js → oauth-refresh-sweep-wdetky26.js} +5 -5
  65. package/dist/{onboard-ydr9tzw5.js → onboard-bb5net8s.js} +2 -2
  66. package/dist/{otel-impl-zx3tdf3j.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-7e6pqnzp.js → pricing-refresh-9nzsrgcq.js} +6 -6
  69. package/dist/{rbac-roles-p2rh6d0r.js → rbac-roles-r3hqjp09.js} +5 -5
  70. package/dist/{rbac-roles-0dv1wt0w.js → rbac-roles-z1jrffbt.js} +4 -4
  71. package/dist/{registry-9kdck5ye.js → registry-v5wytg0s.js} +1 -2
  72. package/dist/{render-v2-4k3jt4r2.js → render-v2-vbr89fnb.js} +6 -5
  73. package/dist/{seed-pricing-2cc1qmcd.js → seed-pricing-g62hy1pk.js} +7 -5
  74. package/dist/{setup-c5yss30k.js → setup-gnfqnptp.js} +2 -2
  75. package/dist/{worker-7srgeqcr.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 +583 -3428
  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 +1 -1
  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/mcp.ts +32 -0
  113. package/src/http/pages-public.ts +20 -4
  114. package/src/http/poll.ts +4 -0
  115. package/src/http/repos.ts +3 -3
  116. package/src/http/sessions.ts +82 -0
  117. package/src/http/tasks.ts +10 -2
  118. package/src/prompts/session-templates.ts +4 -2
  119. package/src/providers/acp-adapter.ts +42 -6
  120. package/src/providers/pi-mono-adapter.ts +23 -6
  121. package/src/scheduler/scheduler.test.ts +49 -2
  122. package/src/scheduler/scheduler.ts +4 -0
  123. package/src/scripts-runtime/sdk-allowlist.ts +1 -0
  124. package/src/scripts-runtime/types/stdlib.d.ts +8 -0
  125. package/src/scripts-runtime/types/swarm-sdk.d.ts +8 -0
  126. package/src/server.ts +2 -0
  127. package/src/slack/assistant.ts +87 -46
  128. package/src/slack/handlers.test.ts +1 -3
  129. package/src/slack/handlers.ts +102 -87
  130. package/src/slack/inbound-files.ts +466 -0
  131. package/src/slack/templates.ts +14 -0
  132. package/src/tasks/task-terminal-effects.ts +158 -0
  133. package/src/tests/acp-adapter.test.ts +327 -192
  134. package/src/tests/budget-claim-gate.test.ts +1 -0
  135. package/src/tests/build-pi-skills.test.ts +5 -7
  136. package/src/tests/claude-managed-setup.test.ts +52 -4
  137. package/src/tests/claude-md-session.test.ts +603 -0
  138. package/src/tests/codex-skill-resolver.test.ts +19 -0
  139. package/src/tests/context-versioning.test.ts +107 -0
  140. package/src/tests/credential-check.test.ts +157 -14
  141. package/src/tests/db-agents.test.ts +91 -0
  142. package/src/tests/db-context-versions.test.ts +37 -0
  143. package/src/tests/db-extraction-contract.test.ts +45 -0
  144. package/src/tests/db-runtime.test.ts +70 -0
  145. package/src/tests/db-task-read-contract.test.ts +624 -0
  146. package/src/tests/db-task-write-contract.test.ts +653 -0
  147. package/src/tests/db-tasks-read.test.ts +183 -0
  148. package/src/tests/db-tasks-write.test.ts +230 -0
  149. package/src/tests/defer-task.test.ts +389 -0
  150. package/src/tests/docs-index-footprint.test.js +2 -2
  151. package/src/tests/e2e-visuals-stage.test.ts +151 -0
  152. package/src/tests/file-lock.test.ts +144 -0
  153. package/src/tests/fixtures/file-lock-holder.ts +13 -0
  154. package/src/tests/fixtures/hold-file-lock.ts +25 -0
  155. package/src/tests/heartbeat-expiry.test.ts +188 -0
  156. package/src/tests/http-api-integration.test.ts +78 -1
  157. package/src/tests/pages-public-html.test.ts +43 -0
  158. package/src/tests/pages-svg-migration.test.ts +42 -0
  159. package/src/tests/preload.ts +4 -1
  160. package/src/tests/profile-sync-warning.test.ts +16 -0
  161. package/src/tests/profile-sync.test.ts +126 -0
  162. package/src/tests/prompt-template-session.test.ts +20 -4
  163. package/src/tests/provider-registration.test.ts +93 -0
  164. package/src/tests/rbac-e2e-helpers.test.ts +53 -0
  165. package/src/tests/rbac-e2e-helpers.ts +19 -2
  166. package/src/tests/routing-affinity-inventory.test.ts +1 -1
  167. package/src/tests/runner-attachments-section.test.ts +22 -2
  168. package/src/tests/runner-context-preamble.test.ts +30 -0
  169. package/src/tests/runner-deployment-resume.test.ts +107 -0
  170. package/src/tests/runner-repo-autostash.test.ts +12 -0
  171. package/src/tests/script-connections.test.ts +4 -0
  172. package/src/tests/seed-scripts.test.ts +2 -2
  173. package/src/tests/session-tokens.test.ts +279 -0
  174. package/src/tests/slack-file-tools-attachments.test.ts +408 -0
  175. package/src/tests/slack-inbound-files.test.ts +847 -0
  176. package/src/tests/star-history-refresh.test.ts +102 -0
  177. package/src/tests/swarm-repos.test.ts +20 -0
  178. package/src/tests/tool-annotations.test.ts +4 -3
  179. package/src/tests/ui-logs-parser.test.ts +176 -0
  180. package/src/tools/create-page.ts +4 -2
  181. package/src/tools/defer-task.ts +239 -0
  182. package/src/tools/repos/update-repo.ts +2 -2
  183. package/src/tools/schedules/create-schedule.ts +1 -0
  184. package/src/tools/schedules/list-schedules.ts +1 -0
  185. package/src/tools/schedules/patch-schedule.ts +1 -0
  186. package/src/tools/schedules/update-schedule.ts +1 -0
  187. package/src/tools/slack-download-file.ts +60 -29
  188. package/src/tools/slack-read.ts +73 -32
  189. package/src/tools/store-progress.ts +16 -146
  190. package/src/tools/tool-config.ts +1 -0
  191. package/src/tools/utils.ts +21 -0
  192. package/src/types.ts +37 -4
  193. package/src/utils/acp-session-token.ts +56 -0
  194. package/src/utils/file-lock.ts +111 -0
  195. package/src/utils/heartbeat-expiry.ts +78 -0
  196. package/src/utils/request-auth-context.ts +2 -0
  197. package/src/utils/task-attachment-links.ts +22 -0
  198. package/templates/skills/code-quality/content.md +8 -5
  199. package/templates/skills/download-task-attachment/content.md +2 -1
  200. package/{plugin/pi-skills → templates/skills}/review-offered-task/SKILL.md +5 -5
  201. package/templates/skills/review-offered-task/config.json +14 -0
  202. package/{plugin/commands/review-offered-task.md → templates/skills/review-offered-task/content.md} +3 -8
  203. package/templates/skills/scheduling/content.md +4 -0
  204. package/templates/skills/slack-interaction/content.md +2 -2
  205. package/templates/skills/work-on-task/SKILL.md +16 -0
  206. package/templates/skills/work-on-task/config.json +14 -0
  207. package/templates/skills/work-on-task/content.md +11 -0
  208. package/dist/assistant-dx3ew4d8.js +0 -212
  209. package/dist/cli-00kyrp1a.js +0 -317
  210. package/dist/cli-n1q8q14d.js +0 -177
  211. package/dist/cli-ss6vybmt.js +0 -269
  212. package/dist/handlers-e9vp2fr8.js +0 -592
  213. package/plugin/commands/work-on-task.md +0 -39
  214. package/plugin/pi-skills/work-on-task/SKILL.md +0 -39
@@ -4,11 +4,11 @@ import {
4
4
  getEmbeddingProvider,
5
5
  init_embedding,
6
6
  serializeEmbedding
7
- } from "./cli-pzfc7j7g.js";
7
+ } from "./cli-1th1728g.js";
8
8
  import {
9
9
  getDbClient,
10
10
  init_db
11
- } from "./cli-d4xqde2b.js";
11
+ } from "./cli-ftht3zzj.js";
12
12
  import {
13
13
  init_secret_scrubber,
14
14
  scrubSecrets
@@ -310,4 +310,174 @@ function stripTrailingSlash(value) {
310
310
  return value.replace(/\/+$/, "");
311
311
  }
312
312
 
313
- export { FilesError, providerPath, normalizeFilesError, AgentFsProvider };
313
+ // src/fs/local-fs-provider.ts
314
+ import { mkdir, readdir, rm, stat } from "node:fs/promises";
315
+ import { dirname, join, relative, sep } from "node:path";
316
+ var DEFAULT_ROOT_DIR = "./data/fs";
317
+
318
+ class LocalFsProvider {
319
+ id = "local-fs";
320
+ capabilities = {
321
+ signedUrl: { supported: false }
322
+ };
323
+ rootDir;
324
+ constructor(options = {}) {
325
+ this.rootDir = options.rootDir ?? process.env.AGENT_FS_LOCAL_DIR ?? DEFAULT_ROOT_DIR;
326
+ }
327
+ async upload(scope, body, options = {}) {
328
+ const target = this.localPath(scope);
329
+ await mkdir(dirname(target), { recursive: true });
330
+ if (options.ifNoneMatch === "*" && await this.exists(scope)) {
331
+ throw new FilesError("Conflict", "File already exists");
332
+ }
333
+ await Bun.write(target, await new Response(body).arrayBuffer());
334
+ if (options.contentType) {
335
+ await Bun.write(this.metaPath(target), JSON.stringify({ contentType: options.contentType }));
336
+ }
337
+ return this.head(scope);
338
+ }
339
+ async download(scope) {
340
+ const target = this.localPath(scope);
341
+ if (!await this.exists(scope)) {
342
+ throw new FilesError("NotFound", "File not found");
343
+ }
344
+ return new Response(Bun.file(target));
345
+ }
346
+ async head(scope) {
347
+ const target = this.localPath(scope);
348
+ try {
349
+ const info = await stat(target);
350
+ const storedContentType = await this.readStoredContentType(target);
351
+ return {
352
+ providerId: this.id,
353
+ key: providerPath(scope),
354
+ taskId: scope.taskId,
355
+ name: scope.name,
356
+ contentType: storedContentType ?? Bun.file(target).type ?? undefined,
357
+ sizeBytes: info.size,
358
+ updatedAt: info.mtime.toISOString()
359
+ };
360
+ } catch (error) {
361
+ if (error.code === "ENOENT") {
362
+ throw new FilesError("NotFound", "File not found", { cause: error });
363
+ }
364
+ throw new FilesError("Provider", "Unable to read file metadata", { cause: error });
365
+ }
366
+ }
367
+ async exists(scope) {
368
+ try {
369
+ await stat(this.localPath(scope));
370
+ return true;
371
+ } catch (error) {
372
+ if (error.code === "ENOENT") {
373
+ return false;
374
+ }
375
+ throw new FilesError("Provider", "Unable to check file existence", { cause: error });
376
+ }
377
+ }
378
+ async delete(scope) {
379
+ const target = this.localPath(scope);
380
+ await rm(target, { force: true });
381
+ await rm(this.metaPath(target), { force: true });
382
+ }
383
+ async copy(source, destination) {
384
+ const sourceHead = await this.head(source);
385
+ const response = await this.download(source);
386
+ await this.upload(destination, await response.arrayBuffer(), {
387
+ contentType: sourceHead.contentType
388
+ });
389
+ return this.head(destination);
390
+ }
391
+ async move(source, destination) {
392
+ const copied = await this.copy(source, destination);
393
+ await this.delete(source);
394
+ return copied;
395
+ }
396
+ async list(options) {
397
+ const taskRoot = join(this.rootDir, "tasks", encodeURIComponent(options.taskId));
398
+ const files = [];
399
+ await this.walk(taskRoot, async (path) => {
400
+ const rel = relative(taskRoot, path).split(sep).join("/");
401
+ const name = decodePath(rel);
402
+ if (options.prefix && !name.startsWith(options.prefix)) {
403
+ return;
404
+ }
405
+ files.push(await this.head({ taskId: options.taskId, name }));
406
+ });
407
+ return typeof options.limit === "number" ? files.slice(0, options.limit) : files;
408
+ }
409
+ async* listAll(options) {
410
+ for (const item of await this.list(options)) {
411
+ yield item;
412
+ }
413
+ }
414
+ async url(scope) {
415
+ return `/api/fs/tasks/${encodeURIComponent(scope.taskId)}/files/${encodeURIComponent(scope.name)}/raw`;
416
+ }
417
+ async signedUploadUrl() {
418
+ throw new FilesError("ReadOnly", "local-fs does not support signed upload URLs");
419
+ }
420
+ localPath(scope) {
421
+ return join(this.rootDir, providerPath(scope));
422
+ }
423
+ metaPath(target) {
424
+ return `${target}.meta.json`;
425
+ }
426
+ async readStoredContentType(target) {
427
+ try {
428
+ const metaFile = Bun.file(this.metaPath(target));
429
+ if (!await metaFile.exists()) {
430
+ return;
431
+ }
432
+ const meta = await metaFile.json();
433
+ return typeof meta?.contentType === "string" ? meta.contentType : undefined;
434
+ } catch {
435
+ return;
436
+ }
437
+ }
438
+ async walk(dir, visit) {
439
+ let entries;
440
+ try {
441
+ entries = await readdir(dir, { withFileTypes: true });
442
+ } catch (error) {
443
+ if (error.code === "ENOENT") {
444
+ return;
445
+ }
446
+ throw new FilesError("Provider", "Unable to list files", { cause: error });
447
+ }
448
+ for (const entry of entries) {
449
+ const path = join(dir, entry.name);
450
+ if (entry.isDirectory()) {
451
+ await this.walk(path, visit);
452
+ } else if (entry.isFile() && !entry.name.endsWith(".meta.json")) {
453
+ await visit(path);
454
+ }
455
+ }
456
+ }
457
+ }
458
+ function decodePath(path) {
459
+ return path.split("/").map((part) => decodeURIComponent(part)).join("/");
460
+ }
461
+
462
+ // src/fs/registry.ts
463
+ var memoizedProvider = null;
464
+ function getFileStorageProvider() {
465
+ if (!memoizedProvider) {
466
+ memoizedProvider = selectProvider();
467
+ }
468
+ return memoizedProvider;
469
+ }
470
+ function selectProvider() {
471
+ if (process.env.AGENT_FS_API_URL && (process.env.API_AGENT_FS_API_KEY || process.env.AGENT_FS_API_KEY)) {
472
+ return new AgentFsProvider;
473
+ }
474
+ return new LocalFsProvider;
475
+ }
476
+ function resetFileStorageProvider() {
477
+ memoizedProvider = null;
478
+ }
479
+ function resetFileStorageProviderForTests() {
480
+ resetFileStorageProvider();
481
+ }
482
+
483
+ export { FilesError, providerPath, normalizeFilesError, AgentFsProvider, getFileStorageProvider, selectProvider, resetFileStorageProvider, resetFileStorageProviderForTests };
@@ -6,6 +6,14 @@ import {
6
6
  __esm
7
7
  } from "./cli-bc05qbss.js";
8
8
 
9
+ // src/utils/steering-enabled.ts
10
+ function isSteeringEnabled(env = process.env) {
11
+ return parseEnvFlag(env.STEERING_ENABLED, false);
12
+ }
13
+ var init_steering_enabled = __esm(() => {
14
+ init_env_flag();
15
+ });
16
+
9
17
  // src/utils/template.ts
10
18
  function findInterpolationTokens(template) {
11
19
  return Array.from(template.matchAll(INTERPOLATION_TOKEN_RE), (match) => match[1].trim());
@@ -223,14 +231,6 @@ var init_resolver = __esm(() => {
223
231
  TEMPLATE_REF_REGEX = /\{\{@template\[([^\]]+)\]\}\}/g;
224
232
  });
225
233
 
226
- // src/utils/steering-enabled.ts
227
- function isSteeringEnabled(env = process.env) {
228
- return parseEnvFlag(env.STEERING_ENABLED, false);
229
- }
230
- var init_steering_enabled = __esm(() => {
231
- init_env_flag();
232
- });
233
-
234
234
  // src/prompts/session-templates.ts
235
235
  var compositeVariables;
236
236
  var init_session_templates = __esm(() => {
@@ -270,7 +270,8 @@ Choose the path by the shape of the work:
270
270
  Store progress with \`store-progress\` at each milestone. A milestone is a result the lead could act on.
271
271
  The task is done when \`store-progress\` carries status \`completed\` and an \`output\` that names the result and every artifact link. On failure, status \`failed\` and a \`failureReason\` that names what you tried.
272
272
  When the task carries an \`outputSchema\`, \`output\` is JSON that matches it.
273
- When you are blocked after real effort, store the blocker with \`store-progress\` and keep working on what you can. When nothing is left to do, fail the task with a \`failureReason\` that names the blocker. The lead reads both.
273
+ When you are blocked after real effort, store the blocker with \`store-progress\` and keep working on what you can.
274
+ The task has four endings. When you are done: \`completed\`. When the answer needs time (a build, a deploy, a reply): \`defer-task\` with a summary of what you did, when to wake up, and what to check. It completes the task now; the wake-up task continues it. When a person must decide: \`request-human-input\`. When nothing else is possible: \`failed\` with the blocker.
274
275
  `,
275
276
  variables: [],
276
277
  category: "system"
@@ -284,9 +285,10 @@ When you are blocked after real effort, store the blocker with \`store-progress\
284
285
  Your output is delegation and review. Workers implement, research, analyze, and write. Data gathering, even a quick query, goes to a worker. You answer simple factual questions yourself.
285
286
 
286
287
  \`get-swarm\` is the roster. Route by capability and load.
288
+ Delegate with \`send-task\`. Read a child's result with \`get-task-details\`.
287
289
  A task states the goal, the repo URL when there is one, and the constraints. Workers know git, the skills, and \`store-progress\`.
288
290
  Delegate by the shape of the work: a workflow for multi-step or fan-out work, a schedule for recurring work, a script for bulk data, an inline \`script-run\` for a one-off bulk job you can run yourself. The \`workflow-iterate\`, \`scheduling\`, and \`swarm-scripts\` skills build them.
289
- Research or exploration: tell the worker to use \`/researching\`. A large feature: a \`/planning\` task first, then an \`/implementing\` task with \`parentTaskId\`. A small fix: direct implementation.
291
+ Research or exploration: tell the worker to use the \`researching\` skill. A large feature: a task for the \`planning\` skill first, then a task for the \`implementing\` skill with \`parentTaskId\`. A small fix: direct implementation.
290
292
  A follow-up that continues earlier work carries \`parentTaskId\`. The worker receives the prior context.
291
293
  A task whose result depends on the workers' output: wait for the children with the \`wait-for-task\` script, then merge and complete the task yourself. A turn that ends with children still running leaves the task unfinished.
292
294
 
@@ -657,4 +659,4 @@ If this task reveals new stable communication preferences for this requester, pe
657
659
  });
658
660
  });
659
661
 
660
- export { findInterpolationTokens, interpolate, deepInterpolate, init_template, registerTemplate, getTemplateDefinition, getAllTemplateDefinitions, init_registry, configureDbResolver, configureHttpResolver, resolveTemplate, resolveTemplateAsync, init_resolver, isSteeringEnabled, init_steering_enabled, init_session_templates };
662
+ export { isSteeringEnabled, init_steering_enabled, findInterpolationTokens, interpolate, deepInterpolate, init_template, registerTemplate, getTemplateDefinition, getAllTemplateDefinitions, init_registry, configureDbResolver, configureHttpResolver, resolveTemplate, resolveTemplateAsync, init_resolver, init_session_templates };
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  buildModelsDevSeedRows,
3
3
  loadModelsDevCache
4
- } from "./cli-yqeb27t1.js";
4
+ } from "./cli-rw51bq3j.js";
5
5
  import {
6
6
  createLogEntry,
7
7
  getActivePricingRow,
8
8
  getDbClient,
9
9
  init_db,
10
10
  insertPricingRow
11
- } from "./cli-d4xqde2b.js";
11
+ } from "./cli-ftht3zzj.js";
12
12
  import {
13
13
  init_secret_scrubber,
14
14
  scrubSecrets