chainlesschain 0.166.0 → 0.166.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/package.json +1 -1
  2. package/src/assets/web-panel/assets/{AIOps-D5_pwQ7M.js → AIOps-BnZ24WRk.js} +1 -1
  3. package/src/assets/web-panel/assets/{ActionButton-DgoYO32D.js → ActionButton-ivXY7MGb.js} +1 -1
  4. package/src/assets/web-panel/assets/{Analytics-BIpoZ4QH.js → Analytics-BQS4OD-k.js} +3 -3
  5. package/src/assets/web-panel/assets/{AppLayout-BJ3XrCEe.js → AppLayout-wOBuOKTO.js} +5 -5
  6. package/src/assets/web-panel/assets/{Artifacts-DUFs_izZ.js → Artifacts-BYuC4nw-.js} +1 -1
  7. package/src/assets/web-panel/assets/{Audit-BZdPwwfL.js → Audit-BIeVfBt6.js} +1 -1
  8. package/src/assets/web-panel/assets/{BackgroundAgents-DK9Fn-8B.js → BackgroundAgents-hIuyhmJ7.js} +1 -1
  9. package/src/assets/web-panel/assets/{Backup-Bd6bOhV_.js → Backup-B6ohdgPQ.js} +1 -1
  10. package/src/assets/web-panel/assets/{BaseInput-CRnWlXrd.js → BaseInput-BzgYCw6h.js} +1 -1
  11. package/src/assets/web-panel/assets/{Chat-D1G_yEl6.js → Chat-CwahvZU1.js} +5 -5
  12. package/src/assets/web-panel/assets/{ChatBubbleRenderer-DDAlEtm-.js → ChatBubbleRenderer-B-1IZ_k8.js} +1 -1
  13. package/src/assets/web-panel/assets/{Checkbox-CP35SH7R.js → Checkbox-26EDP2x0.js} +1 -1
  14. package/src/assets/web-panel/assets/{Codegen-DugeL4pj.js → Codegen-DYLw1Zvd.js} +1 -1
  15. package/src/assets/web-panel/assets/{Col-DPuJsvKg.js → Col-DH_zAvD-.js} +1 -1
  16. package/src/assets/web-panel/assets/{Community-CZqNjNNp.js → Community-DURrTXJu.js} +1 -1
  17. package/src/assets/web-panel/assets/{Compact-eeyIPEAb.js → Compact-CQyBqN0p.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compliance-MGzTw87k.js → Compliance-a0DfgKHD.js} +1 -1
  19. package/src/assets/web-panel/assets/{Cowork-D3goVIA5.js → Cowork-C6fY_5Ke.js} +3 -3
  20. package/src/assets/web-panel/assets/{Cron-9HA8hLLG.js → Cron-DOwmpbTe.js} +2 -2
  21. package/src/assets/web-panel/assets/{Crosschain-DCSOX3l6.js → Crosschain-DEPOIEUs.js} +1 -1
  22. package/src/assets/web-panel/assets/{DID-ji3lN5Bc.js → DID-DaKc-CEV.js} +2 -2
  23. package/src/assets/web-panel/assets/{Dashboard-DlZvF1E5.js → Dashboard-C-0KLXq5.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dropdown-2FyZcow9.js → Dropdown-CnsDukzr.js} +1 -1
  25. package/src/assets/web-panel/assets/{EmailListRenderer-qH2bSpSY.js → EmailListRenderer-Bi_ACD4N.js} +1 -1
  26. package/src/assets/web-panel/assets/{FamilyGuardDashboard-Bfx47wZj.js → FamilyGuardDashboard-BZASpnx3.js} +1 -1
  27. package/src/assets/web-panel/assets/{Federation-DhGcZbIv.js → Federation-43oTtzyp.js} +1 -1
  28. package/src/assets/web-panel/assets/{FormItemContext-BMgi9_YQ.js → FormItemContext-oyVadnkZ.js} +1 -1
  29. package/src/assets/web-panel/assets/{GenericCardRenderer-DugMac-4.js → GenericCardRenderer-Cwvfd6TZ.js} +1 -1
  30. package/src/assets/web-panel/assets/{Git-D943BpH-.js → Git-Cgi2wvU0.js} +2 -2
  31. package/src/assets/web-panel/assets/{Governance-DZ66a8Aa.js → Governance-l8TWDKZ0.js} +1 -1
  32. package/src/assets/web-panel/assets/{Inference-B00Mp2tN.js → Inference-Dc8j6TaO.js} +1 -1
  33. package/src/assets/web-panel/assets/{KnowledgeGraph-BdwXXO2Q.js → KnowledgeGraph-DgcO-Fwz.js} +1 -1
  34. package/src/assets/web-panel/assets/{Logs-_MVXyYWc.js → Logs-DjiZpiwa.js} +2 -2
  35. package/src/assets/web-panel/assets/{MarkdownRenderer-hOTeNyi7.js → MarkdownRenderer-B5MFCi0N.js} +1 -1
  36. package/src/assets/web-panel/assets/{Marketplace-CxeHRsnO.js → Marketplace-BeDn1hFc.js} +1 -1
  37. package/src/assets/web-panel/assets/{McpTools-BOieTxZ4.js → McpTools-PGdVfWK6.js} +3 -3
  38. package/src/assets/web-panel/assets/{Memory-BQD26CM3.js → Memory-e76lY3a1.js} +2 -2
  39. package/src/assets/web-panel/assets/{MobileBridge-CPJ8ZlvR.js → MobileBridge-DKlQqot_.js} +1 -1
  40. package/src/assets/web-panel/assets/{MobileProjects-D7qRVu0y.js → MobileProjects-C4g6WOEr.js} +1 -1
  41. package/src/assets/web-panel/assets/{Mtc-BOyndGuk.js → Mtc-1j3NpRQq.js} +4 -4
  42. package/src/assets/web-panel/assets/{MtcAudit-CXQ_8ZoR.js → MtcAudit-DgwiVd1C.js} +2 -2
  43. package/src/assets/web-panel/assets/{Multisig-32Oh9KbH.js → Multisig-Dzg5lZZY.js} +3 -3
  44. package/src/assets/web-panel/assets/{NLProgramming-CFAd00CX.js → NLProgramming-D7GYhst-.js} +1 -1
  45. package/src/assets/web-panel/assets/{Notes-BBCY_qJA.js → Notes-Blcfvaic.js} +3 -3
  46. package/src/assets/web-panel/assets/{NotificationSettings-uaQ0PdmW.js → NotificationSettings-Dc4Y6vfr.js} +1 -1
  47. package/src/assets/web-panel/assets/OrderTableRenderer-dgM87XIn.js +1 -0
  48. package/src/assets/web-panel/assets/{Organization-CmFn7Oeo.js → Organization-DBXq024L.js} +4 -4
  49. package/src/assets/web-panel/assets/{Overflow-R_avat3a.js → Overflow-CFPbdx1Y.js} +1 -1
  50. package/src/assets/web-panel/assets/{P2P-BIhLFmkY.js → P2P-w7z61NR5.js} +2 -2
  51. package/src/assets/web-panel/assets/{PdhVaultBrowser-DTJjk-_i.js → PdhVaultBrowser-B7eGGZOa.js} +3 -3
  52. package/src/assets/web-panel/assets/{Permissions-CkzYv8Yb.js → Permissions-Df5Cl50D.js} +4 -4
  53. package/src/assets/web-panel/assets/{PersonalDataHub--0QvN2Nz.js → PersonalDataHub-C-We7RF6.js} +5 -5
  54. package/src/assets/web-panel/assets/{Pipeline-Bfw5gQCH.js → Pipeline-B6fHPnKy.js} +1 -1
  55. package/src/assets/web-panel/assets/{Privacy-DicjKfax.js → Privacy-B85BdiIc.js} +1 -1
  56. package/src/assets/web-panel/assets/{ProjectInit-DUl_ykBp.js → ProjectInit-CcOyazSe.js} +2 -2
  57. package/src/assets/web-panel/assets/{ProjectSettings-CPYDvN8a.js → ProjectSettings-BE53KfuU.js} +2 -2
  58. package/src/assets/web-panel/assets/{Projects-DnZ9_fAr.js → Projects-DOvMOoe_.js} +1 -1
  59. package/src/assets/web-panel/assets/{Providers-BX1jP31w.js → Providers-5l7sT9lq.js} +1 -1
  60. package/src/assets/web-panel/assets/{QrScannerModal-COab5qUl.js → QrScannerModal-DE37RXy4.js} +1 -1
  61. package/src/assets/web-panel/assets/{QuickAsk-CdKQ_JZ0.js → QuickAsk-BGmGCo7j.js} +1 -1
  62. package/src/assets/web-panel/assets/{Recommend-BPFHg8pK.js → Recommend-BFdx8Nrm.js} +1 -1
  63. package/src/assets/web-panel/assets/{RemoteSession-CqrfTJvO.js → RemoteSession-C1w-j_hB.js} +2 -2
  64. package/src/assets/web-panel/assets/{Reputation-DM-l8Pb3.js → Reputation-BOvn-10y.js} +1 -1
  65. package/src/assets/web-panel/assets/{Row-CKGBTeCw.js → Row-db-a1YO9.js} +1 -1
  66. package/src/assets/web-panel/assets/{RssFeed-Wb0YHIkc.js → RssFeed-DeS43ZGM.js} +3 -3
  67. package/src/assets/web-panel/assets/{Search-DiBjxKv-.js → Search-BaQYNfeb.js} +1 -1
  68. package/src/assets/web-panel/assets/{Security-BAVEmbWP.js → Security-yt1ESHDg.js} +4 -4
  69. package/src/assets/web-panel/assets/{Services-A_a3TIRn.js → Services-BcNqPUsS.js} +2 -2
  70. package/src/assets/web-panel/assets/{Skeleton-CloHJ-I7.js → Skeleton-X3ceUQWf.js} +1 -1
  71. package/src/assets/web-panel/assets/{Skills-CkvV5hKa.js → Skills-DmYeax6C.js} +1 -1
  72. package/src/assets/web-panel/assets/{Sla-BYozxxsV.js → Sla-C_fdfbuJ.js} +1 -1
  73. package/src/assets/web-panel/assets/{SpeechSettings-CWianiZF.js → SpeechSettings-CDqohXXQ.js} +1 -1
  74. package/src/assets/web-panel/assets/{SyncSettings-BR4G75do.js → SyncSettings-B25maYEY.js} +2 -2
  75. package/src/assets/web-panel/assets/{Tasks-D6gyUVrM.js → Tasks-3ILwauYw.js} +1 -1
  76. package/src/assets/web-panel/assets/{Templates-DbfYIRzT.js → Templates-DUH0iuc4.js} +1 -1
  77. package/src/assets/web-panel/assets/{Tenant-BHutvukT.js → Tenant-DrvhHf9T.js} +1 -1
  78. package/src/assets/web-panel/assets/{Terminal-CYEiy2wJ.js → Terminal-C2lJVYHA.js} +2 -2
  79. package/src/assets/web-panel/assets/{TimelineRenderer-D9s1AxfE.js → TimelineRenderer-C1Hf_jYn.js} +1 -1
  80. package/src/assets/web-panel/assets/{Tokens-ij9vxnoy.js → Tokens-DniS1NpS.js} +1 -1
  81. package/src/assets/web-panel/assets/{Trigger-Dq_DCVeQ.js → Trigger-4jrcb8oA.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trust-Bs6wdfoH.js → Trust-DiBte55w.js} +1 -1
  83. package/src/assets/web-panel/assets/{UkeySign-CLazyr5t.js → UkeySign-CZRtc4VB.js} +1 -1
  84. package/src/assets/web-panel/assets/{VideoEditing-viWotIHA.js → VideoEditing-BtYGJDmg.js} +1 -1
  85. package/src/assets/web-panel/assets/{Wallet-DlZ-A78d.js → Wallet-D1nrTm7H.js} +4 -4
  86. package/src/assets/web-panel/assets/{WebAuthn-DSmOND3Y.js → WebAuthn-DI91acpx.js} +5 -5
  87. package/src/assets/web-panel/assets/{WorkflowEditor-BempLOJi.js → WorkflowEditor-BtQjI50d.js} +1 -1
  88. package/src/assets/web-panel/assets/{chat-CyJzf4JI.js → chat-I4A-f4FC.js} +1 -1
  89. package/src/assets/web-panel/assets/{colors-C62q7WrL.js → colors-QZkDkFVt.js} +1 -1
  90. package/src/assets/web-panel/assets/{compact-item-7dYM1KW3.js → compact-item--FtCdzpr.js} +1 -1
  91. package/src/assets/web-panel/assets/{createContext-CYTy7z2Q.js → createContext-CaIKIKxP.js} +1 -1
  92. package/src/assets/web-panel/assets/devWarning-D7qVrkrO.js +1 -0
  93. package/src/assets/web-panel/assets/{hasIn-DHoclUqm.js → hasIn-DLYUII6-.js} +1 -1
  94. package/src/assets/web-panel/assets/{index-CW86F2Zw.js → index-0DYBQ-6e.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-C2efftJb.js → index-21I79XSf.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-4gWv-Ubg.js → index-3rVtgqa2.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-QXtrdrub.js → index-B65QxJaG.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-BMxvWauP.js → index-BGWSmE3G.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-Dyq9tK5u.js → index-BLGJmgmx.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-DYKwGrAn.js → index-BcgtvJbC.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-BMRmxFU_.js → index-BebTT7iR.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-XrsAHHQN.js → index-BkJgWW_L.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-2C8Xx2UO.js → index-Bs0qPPFb.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-CnEZ4ZHj.js → index-BvdwNnHC.js} +3 -3
  105. package/src/assets/web-panel/assets/{index-DkczsbiP.js → index-BxPoPofq.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-DvEtHpLc.js → index-C3PnIEOH.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-DK84lAS0.js → index-CBtII-nl.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-DKdv8cju.js → index-CL4c5D6G.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-CjeViaU-.js → index-CQ7OBHka.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-DhJjifZe.js → index-CXaeZCRP.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-BghdJ87W.js → index-CgMm85BY.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-lHfNxiB5.js → index-Ch0IFpGy.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-DJzZaPlb.js → index-CisYjy88.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-DghnbMlY.js → index-D2xETCkj.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-C5YWYlW9.js → index-D4CXFU-w.js} +1 -1
  116. package/src/assets/web-panel/assets/index-D9Y_ZwZn.js +1 -0
  117. package/src/assets/web-panel/assets/{index-LK1MZoBj.js → index-DA_TPdzX.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-DOFAwpUK.js → index-DAuf8r5o.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-DA-_807C.js → index-DGLHSCHM.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-9uR7rc9a.js → index-DJrd_CR3.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-CVTnruDt.js → index-DK2r6Bv7.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-ZXYp76IB.js → index-DVitI3UQ.js} +1 -1
  123. package/src/assets/web-panel/assets/index-D_cPes4G.js +1 -0
  124. package/src/assets/web-panel/assets/{index-Bzz0aJ86.js → index-Deg2S9ZJ.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-DHgSRimK.js → index-Du2wUavy.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-94ktimZG.js → index-OQPIS_am.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-3pI7AfmD.js → index-Ooo_5jHo.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DNLD3nZY.js → index-Ygi2rYL1.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-CZRBvN6i.js → index-eTqL91aV.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-D6BC4mmz.js → index-hfiZ-i2b.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-DAYanuSk.js → index-vfiDxdN2.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-NuNCstRO.js → index-yayaayEA.js} +1 -1
  133. package/src/assets/web-panel/assets/{initDefaultProps-CwCl5sFQ.js → initDefaultProps-DDkTvw8k.js} +1 -1
  134. package/src/assets/web-panel/assets/{motion-BFJFy70N.js → motion-fkr96tN5.js} +1 -1
  135. package/src/assets/web-panel/assets/{move-ByrtVGq8.js → move-CGBV0SV2.js} +1 -1
  136. package/src/assets/web-panel/assets/{mtc-parser-BFiH1mT3.js → mtc-parser-DAsCliFt.js} +1 -1
  137. package/src/assets/web-panel/assets/{omit-bdvgpivj.js → omit-BM8PMmKN.js} +1 -1
  138. package/src/assets/web-panel/assets/{pickAttrs-BlfuuE3s.js → pickAttrs-C6SdWoTK.js} +1 -1
  139. package/src/assets/web-panel/assets/{placementArrow-t2SC3DMy.js → placementArrow-BG0EVu-d.js} +1 -1
  140. package/src/assets/web-panel/assets/{responsiveObserve-CoEXv2Li.js → responsiveObserve-L10IvfYC.js} +1 -1
  141. package/src/assets/web-panel/assets/{slide-BfXCf0Fu.js → slide-TddIkbrn.js} +1 -1
  142. package/src/assets/web-panel/assets/{statusUtils-DNsdyOuS.js → statusUtils-FlveF2Yn.js} +1 -1
  143. package/src/assets/web-panel/assets/{styleChecker-9aHukmoG.js → styleChecker-BrXRyebg.js} +1 -1
  144. package/src/assets/web-panel/assets/{useFlexGapSupport-dTkPxzHN.js → useFlexGapSupport-B7_oiDXZ.js} +1 -1
  145. package/src/assets/web-panel/assets/{useFs-DINwfItP.js → useFs-CQYeRYWb.js} +1 -1
  146. package/src/assets/web-panel/assets/{usePersonalDataHub-Bj_RriBV.js → usePersonalDataHub-DspIkhVi.js} +1 -1
  147. package/src/assets/web-panel/assets/{vnode-BzRAZrTc.js → vnode-BCwmwMAW.js} +1 -1
  148. package/src/assets/web-panel/assets/{zoom-CamPjkeK.js → zoom-B0cEGluV.js} +1 -1
  149. package/src/assets/web-panel/index.html +1 -1
  150. package/src/commands/team.js +74 -2
  151. package/src/data/changelog.json +26 -0
  152. package/src/generated/cc-agent-protocol.schema.json +49 -0
  153. package/src/lib/agent-team/team-mailbox.js +508 -2
  154. package/src/lib/agent-team/team-message-bridge.js +644 -0
  155. package/src/lib/agent-team/team-message-tools.js +198 -0
  156. package/src/lib/agent-team/team-runner.js +57 -3
  157. package/src/lib/graph-kernel/compiler.js +548 -16
  158. package/src/lib/graph-kernel/runtime.js +1158 -30
  159. package/src/lib/graph-kernel/trace-reducer.js +101 -7
  160. package/src/lib/subagent-inheritance.js +5 -3
  161. package/src/runtime/agent-core.js +38 -0
  162. package/src/runtime/headless-runner.js +36 -3
  163. package/src/assets/web-panel/assets/OrderTableRenderer-kpBxJ-SG.js +0 -1
  164. package/src/assets/web-panel/assets/devWarning-BdTg_AMF.js +0 -1
  165. package/src/assets/web-panel/assets/index-B6WvFV4N.js +0 -1
  166. package/src/assets/web-panel/assets/index-BKgfptzA.js +0 -1
@@ -25,6 +25,7 @@ import { TeamWorktreeCoordinator } from "../lib/agent-team/team-worktree.js";
25
25
  import { TeamBudget } from "../lib/agent-team/team-budget.js";
26
26
  import { TeamMailbox } from "../lib/agent-team/team-mailbox.js";
27
27
  import { TeamAgentStreamParser } from "../lib/agent-team/team-agent-stream.js";
28
+ import { TeamMessageBridge } from "../lib/agent-team/team-message-bridge.js";
28
29
  import { resolveTeamTaskContract } from "../lib/agent-team/team-task-contract.js";
29
30
  import {
30
31
  TeamScopeLock,
@@ -727,6 +728,7 @@ export function buildTeamAgentPrompt(prompt, { inbox = [] } = {}) {
727
728
  const messages = inbox
728
729
  .slice(-MAX_TEAM_AGENT_INBOX_MESSAGES)
729
730
  .map((message) => ({
731
+ id: Number.isSafeInteger(message?.id) ? message.id : null,
730
732
  from: String(message?.from || "unknown").slice(0, 128),
731
733
  to: String(message?.to || "").slice(0, 128),
732
734
  subject:
@@ -1016,7 +1018,7 @@ export function makeShellRunTask() {
1016
1018
  }
1017
1019
 
1018
1020
  /** Spawn a headless `cc agent -p` for one prompt in `cwd`; resolve on exit 0. */
1019
- export function spawnAgent(prompt, cwd, opts = {}) {
1021
+ function spawnAgentProcess(prompt, cwd, opts = {}) {
1020
1022
  return new Promise((resolve, reject) => {
1021
1023
  const parser = new TeamAgentStreamParser({
1022
1024
  maxLineBytes: opts.maxStreamLineBytes,
@@ -1043,7 +1045,11 @@ export function spawnAgent(prompt, cwd, opts = {}) {
1043
1045
  try {
1044
1046
  child = _deps.spawn(process.execPath, args, {
1045
1047
  cwd,
1046
- env: { ...process.env, CLAUDECODE: "1" },
1048
+ env: {
1049
+ ...process.env,
1050
+ CLAUDECODE: "1",
1051
+ ...(opts.childEnv || {}),
1052
+ },
1047
1053
  windowsHide: true,
1048
1054
  detached:
1049
1055
  opts.managedCheckpoint === true
@@ -1311,6 +1317,33 @@ export function spawnAgent(prompt, cwd, opts = {}) {
1311
1317
  });
1312
1318
  }
1313
1319
 
1320
+ export function spawnAgent(prompt, cwd, opts = {}) {
1321
+ if (!opts.messageBridge) return spawnAgentProcess(prompt, cwd, opts);
1322
+ return (async () => {
1323
+ let bridge;
1324
+ try {
1325
+ bridge = new TeamMessageBridge(opts.messageBridge);
1326
+ await bridge.start();
1327
+ } catch (error) {
1328
+ throw teamAgentError(
1329
+ "TEAM_AGENT_MESSAGE_BRIDGE_FAILED",
1330
+ error?.message || "Could not start teammate message bridge",
1331
+ );
1332
+ }
1333
+ try {
1334
+ return await spawnAgentProcess(bridge.decoratePrompt(prompt), cwd, {
1335
+ ...opts,
1336
+ childEnv: {
1337
+ ...(opts.childEnv || {}),
1338
+ ...bridge.childEnvironment(),
1339
+ },
1340
+ });
1341
+ } finally {
1342
+ await bridge.close();
1343
+ }
1344
+ })();
1345
+ }
1346
+
1314
1347
  /** Real executor: hand a task's `prompt` to a headless `cc agent -p` in cwd. */
1315
1348
  function applyBudgetReservation(contract, budgetReservation) {
1316
1349
  const effectiveContract = { ...contract };
@@ -1333,7 +1366,12 @@ export function makeAgentRunTask(opts = {}) {
1333
1366
  return function runTask({
1334
1367
  key,
1335
1368
  task,
1369
+ holder,
1336
1370
  inbox = [],
1371
+ sendMessage = null,
1372
+ messageAuthority = null,
1373
+ recipientState = null,
1374
+ mailbox = null,
1337
1375
  budgetReservation = null,
1338
1376
  signal = null,
1339
1377
  }) {
@@ -1359,6 +1397,19 @@ export function makeAgentRunTask(opts = {}) {
1359
1397
  ...effectiveContract,
1360
1398
  sessionId: opts.sessionIdForTask?.(key) || null,
1361
1399
  signal,
1400
+ ...(mailbox && holder
1401
+ ? {
1402
+ messageBridge: {
1403
+ mailbox,
1404
+ holder,
1405
+ sendMessage,
1406
+ assertAuthority: messageAuthority,
1407
+ recipientState,
1408
+ onMutation: opts.onMailboxMutation,
1409
+ durable: opts.mailboxDurable === true,
1410
+ },
1411
+ }
1412
+ : {}),
1362
1413
  });
1363
1414
  };
1364
1415
  }
@@ -2661,8 +2712,13 @@ export function registerTeamCommand(program, { logger } = {}) {
2661
2712
  runInWorktree: async ({
2662
2713
  key,
2663
2714
  task,
2715
+ holder,
2664
2716
  cwd,
2665
2717
  inbox = [],
2718
+ sendMessage = null,
2719
+ messageAuthority = null,
2720
+ recipientState = null,
2721
+ mailbox: taskMailbox = null,
2666
2722
  budgetReservation = null,
2667
2723
  signal = null,
2668
2724
  managedCheckpoint = false,
@@ -2689,6 +2745,19 @@ export function registerTeamCommand(program, { logger } = {}) {
2689
2745
  managedCheckpoint,
2690
2746
  sessionId: collaborationUnits.get(key)?.sessionId,
2691
2747
  signal,
2748
+ ...(taskMailbox && holder
2749
+ ? {
2750
+ messageBridge: {
2751
+ mailbox: taskMailbox,
2752
+ holder,
2753
+ sendMessage,
2754
+ assertAuthority: messageAuthority,
2755
+ recipientState,
2756
+ onMutation: persist,
2757
+ durable: Boolean(options.state),
2758
+ },
2759
+ }
2760
+ : {}),
2692
2761
  },
2693
2762
  );
2694
2763
  },
@@ -2709,6 +2778,8 @@ export function registerTeamCommand(program, { logger } = {}) {
2709
2778
  contractForTask: (key) => taskContracts.get(key),
2710
2779
  worktreeEnabled: false,
2711
2780
  sessionIdForTask: (key) => collaborationUnits.get(key)?.sessionId,
2781
+ onMailboxMutation: persist,
2782
+ mailboxDurable: Boolean(options.state),
2712
2783
  });
2713
2784
  else runTask = async () => ({ dryRun: true });
2714
2785
 
@@ -2797,6 +2868,7 @@ export function registerTeamCommand(program, { logger } = {}) {
2797
2868
  ? (task) => taskContracts.get(task.key)
2798
2869
  : () => ({ reserveUsage: false }),
2799
2870
  mailbox,
2871
+ realtimeMessaging: options.agent === true,
2800
2872
  scopeLock,
2801
2873
  recorder,
2802
2874
  beforeTask: ({ key }) => {
@@ -1,6 +1,32 @@
1
1
  {
2
2
  "source": "CHANGELOG.md",
3
3
  "releases": [
4
+ {
5
+ "productVersion": null,
6
+ "cliVersion": "0.166.2",
7
+ "cliVersions": ["0.166.1", "0.166.2"],
8
+ "date": "2026-08-25",
9
+ "title": "",
10
+ "sections": [
11
+ {
12
+ "heading": "Added - cc CLI 0.166.2: lease-bound real-time team messaging",
13
+ "body": "> `chainlesschain` **0.166.1 -> 0.166.2** (CLI-only release candidate,\n> 2026-08-25). `@chainlesschain/agent-protocol` remains **0.1.1**,\n> `@chainlesschain/agent-sdk` remains **0.2.1**, and\n> `chainlesschain-agent-sdk` remains **0.2.1**.\n\n- **Live teammate tools**: real `cc team --agent` children receive host-owned\n `team_send`, `team_receive`, `team_ack`, and `team_followup` tools over a\n private local bridge instead of relying only on a startup inbox snapshot.\n- **Retry-safe delivery**: the bounded mailbox persists at-least-once delivery\n receipts, stable-consumer ACKs, idempotent message keys, payload digests,\n causation/correlation metadata, processed/dead-letter states, and monotonic\n cursors across team-state restore.\n- **Attempt-scoped authority**: every bridge operation revalidates the current\n holder, task, attempt, lease, and fencing token; stale attempts fail closed,\n bridge credentials never enter the prompt, and nested subagents cannot\n inherit the parent-bound tools.\n- **Honest durability and wake semantics**: `--state` checkpoints every bridge\n mutation, runs without state declare process-local delivery, and follow-up\n results distinguish an active target from a request queued for a future turn.\n- **Release validation**: publication requires this candidate's exact commit\n to pass the complete Linux, Windows, and macOS `CLI CI` and\n `CLI Strict Sandbox` matrices before an immutable npm tag is created."
14
+ }
15
+ ]
16
+ },
17
+ {
18
+ "productVersion": null,
19
+ "cliVersion": "0.166.1",
20
+ "cliVersions": ["0.1.1", "0.2.1", "0.166.0", "0.166.1"],
21
+ "date": "2026-08-24",
22
+ "title": "",
23
+ "sections": [
24
+ {
25
+ "heading": "Added - cc CLI 0.166.1 + Agent Protocol 0.1.1 + Agent SDKs 0.2.1: structured Graph execution",
26
+ "body": "> `chainlesschain` **0.166.0 -> 0.166.1**,\n> `@chainlesschain/agent-protocol` **0.1.0 -> 0.1.1**,\n> `@chainlesschain/agent-sdk` **0.2.0 -> 0.2.1**, and\n> `chainlesschain-agent-sdk` **0.2.0 -> 0.2.1** (release candidate,\n> 2026-08-24).\n\n- **Typed subgraphs with budget isolation**: subgraph calls now validate\n parent/child input and output mappings before effects, reserve durable\n per-call budget slices, prevent parallel oversubscription, and settle only\n the child run's actual usage across completion, cancellation, and recovery.\n- **Effectful bounded loops**: loop effects receive deterministic\n iteration-scoped idempotency keys and receipts. Compensation executes once\n per committed iteration in reverse dependency/iteration order and resumes\n safely after interruption or budget exhaustion.\n- **Graph migration and rollback**: the compiler includes a built-in v0-to-v1\n upcaster, frozen minimal and typed N/N-1 corpora, immutable pre-migration\n backups, domain-separated rollback digests, and tamper-evident restore.\n- **Cross-language delivery**: the canonical schema and generated TypeScript,\n Python, Kotlin, and Swift bindings expose the new subgraph budget/mapping and\n effect iteration lineage fields without adding SDK runtime dependencies.\n- **Release validation**: publication requires this exact release commit to\n pass the complete Linux, Windows, and macOS `CLI CI`, `CLI Strict Sandbox`,\n and Agent Protocol matrices plus Python 3.10/3.12/3.13 SDK conformance."
27
+ }
28
+ ]
29
+ },
4
30
  {
5
31
  "productVersion": null,
6
32
  "cliVersion": "0.166.0",
@@ -937,6 +937,43 @@
937
937
  "type": "integer",
938
938
  "minimum": 1,
939
939
  "maximum": 64
940
+ },
941
+ "inputBindings": {
942
+ "type": "array",
943
+ "uniqueItems": true,
944
+ "items": {
945
+ "$ref": "#/$defs/SubgraphPortBinding"
946
+ }
947
+ },
948
+ "outputBindings": {
949
+ "type": "array",
950
+ "uniqueItems": true,
951
+ "items": {
952
+ "$ref": "#/$defs/SubgraphPortBinding"
953
+ }
954
+ },
955
+ "budget": {
956
+ "$ref": "#/$defs/Budget"
957
+ }
958
+ }
959
+ },
960
+ "SubgraphPortBinding": {
961
+ "type": "object",
962
+ "additionalProperties": false,
963
+ "required": [
964
+ "parentPort",
965
+ "childNodeId",
966
+ "childPort"
967
+ ],
968
+ "properties": {
969
+ "parentPort": {
970
+ "$ref": "#/$defs/Identifier"
971
+ },
972
+ "childNodeId": {
973
+ "$ref": "#/$defs/Identifier"
974
+ },
975
+ "childPort": {
976
+ "$ref": "#/$defs/Identifier"
940
977
  }
941
978
  }
942
979
  },
@@ -1397,6 +1434,18 @@
1397
1434
  "minLength": 1,
1398
1435
  "maxLength": 256
1399
1436
  },
1437
+ "baseIdempotencyKey": {
1438
+ "type": "string",
1439
+ "minLength": 1,
1440
+ "maxLength": 256
1441
+ },
1442
+ "iterationPath": {
1443
+ "type": "array",
1444
+ "items": {
1445
+ "type": "integer",
1446
+ "minimum": 0
1447
+ }
1448
+ },
1400
1449
  "operationDigest": {
1401
1450
  "$ref": "#/$defs/Digest"
1402
1451
  },