@xfey/tutti 0.1.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 (564) hide show
  1. package/README.md +50 -0
  2. package/dist/approvals/index.d.ts +3 -0
  3. package/dist/approvals/index.js +3 -0
  4. package/dist/approvals/manager.d.ts +47 -0
  5. package/dist/approvals/manager.js +180 -0
  6. package/dist/approvals/projections.d.ts +34 -0
  7. package/dist/approvals/projections.js +444 -0
  8. package/dist/artifacts/index.d.ts +4 -0
  9. package/dist/artifacts/index.js +4 -0
  10. package/dist/artifacts/manifest.d.ts +48 -0
  11. package/dist/artifacts/manifest.js +334 -0
  12. package/dist/artifacts/preview-runtime.d.ts +97 -0
  13. package/dist/artifacts/preview-runtime.js +585 -0
  14. package/dist/artifacts/static-preview.d.ts +17 -0
  15. package/dist/artifacts/static-preview.js +180 -0
  16. package/dist/chat-assistant/index.d.ts +66 -0
  17. package/dist/chat-assistant/index.js +268 -0
  18. package/dist/checks/index.d.ts +47 -0
  19. package/dist/checks/index.js +169 -0
  20. package/dist/collaboration-state/clarification-messages.d.ts +8 -0
  21. package/dist/collaboration-state/clarification-messages.js +180 -0
  22. package/dist/collaboration-state/clarification-records.d.ts +27 -0
  23. package/dist/collaboration-state/clarification-records.js +266 -0
  24. package/dist/collaboration-state/clarification-round-writes.d.ts +14 -0
  25. package/dist/collaboration-state/clarification-round-writes.js +58 -0
  26. package/dist/collaboration-state/clarification-rounds.d.ts +19 -0
  27. package/dist/collaboration-state/clarification-rounds.js +347 -0
  28. package/dist/collaboration-state/clarification-successors.d.ts +8 -0
  29. package/dist/collaboration-state/clarification-successors.js +318 -0
  30. package/dist/collaboration-state/execution-status.d.ts +3 -0
  31. package/dist/collaboration-state/execution-status.js +8 -0
  32. package/dist/collaboration-state/index.d.ts +17 -0
  33. package/dist/collaboration-state/index.js +16 -0
  34. package/dist/collaboration-state/messages.d.ts +25 -0
  35. package/dist/collaboration-state/messages.js +371 -0
  36. package/dist/collaboration-state/read-state.d.ts +7 -0
  37. package/dist/collaboration-state/read-state.js +136 -0
  38. package/dist/collaboration-state/recovery.d.ts +6 -0
  39. package/dist/collaboration-state/recovery.js +125 -0
  40. package/dist/collaboration-state/run-recording.d.ts +5 -0
  41. package/dist/collaboration-state/run-recording.js +216 -0
  42. package/dist/collaboration-state/run-results.d.ts +12 -0
  43. package/dist/collaboration-state/run-results.js +202 -0
  44. package/dist/collaboration-state/scratchpad-source-state.d.ts +46 -0
  45. package/dist/collaboration-state/scratchpad-source-state.js +207 -0
  46. package/dist/collaboration-state/scratchpad.d.ts +8 -0
  47. package/dist/collaboration-state/scratchpad.js +84 -0
  48. package/dist/collaboration-state/serialization.d.ts +16 -0
  49. package/dist/collaboration-state/serialization.js +71 -0
  50. package/dist/collaboration-state/storage-types.d.ts +136 -0
  51. package/dist/collaboration-state/storage-types.js +2 -0
  52. package/dist/collaboration-state/task-details.d.ts +5 -0
  53. package/dist/collaboration-state/task-details.js +25 -0
  54. package/dist/collaboration-state/types.d.ts +289 -0
  55. package/dist/collaboration-state/types.js +2 -0
  56. package/dist/collaboration-state/worklist.d.ts +11 -0
  57. package/dist/collaboration-state/worklist.js +286 -0
  58. package/dist/control-plane/clarification-commands.d.ts +34 -0
  59. package/dist/control-plane/clarification-commands.js +106 -0
  60. package/dist/control-plane/command-recovery.d.ts +3 -0
  61. package/dist/control-plane/command-recovery.js +79 -0
  62. package/dist/control-plane/context-sync.d.ts +47 -0
  63. package/dist/control-plane/context-sync.js +207 -0
  64. package/dist/control-plane/event-publishers.d.ts +24 -0
  65. package/dist/control-plane/event-publishers.js +192 -0
  66. package/dist/control-plane/execution-status.d.ts +13 -0
  67. package/dist/control-plane/execution-status.js +130 -0
  68. package/dist/control-plane/follow-up-context.d.ts +27 -0
  69. package/dist/control-plane/follow-up-context.js +93 -0
  70. package/dist/control-plane/follow-up-output.d.ts +53 -0
  71. package/dist/control-plane/follow-up-output.js +141 -0
  72. package/dist/control-plane/follow-up-run.d.ts +22 -0
  73. package/dist/control-plane/follow-up-run.js +90 -0
  74. package/dist/control-plane/follow-up-start.d.ts +26 -0
  75. package/dist/control-plane/follow-up-start.js +101 -0
  76. package/dist/control-plane/formatters.d.ts +12 -0
  77. package/dist/control-plane/formatters.js +47 -0
  78. package/dist/control-plane/index.d.ts +62 -0
  79. package/dist/control-plane/index.js +416 -0
  80. package/dist/control-plane/invalidations.d.ts +12 -0
  81. package/dist/control-plane/invalidations.js +67 -0
  82. package/dist/control-plane/procedure-logging.d.ts +11 -0
  83. package/dist/control-plane/procedure-logging.js +95 -0
  84. package/dist/control-plane/project-brief-refresh.d.ts +31 -0
  85. package/dist/control-plane/project-brief-refresh.js +105 -0
  86. package/dist/control-plane/project-context-bootstrap.d.ts +39 -0
  87. package/dist/control-plane/project-context-bootstrap.js +107 -0
  88. package/dist/control-plane/reference-summary-refresh.d.ts +22 -0
  89. package/dist/control-plane/reference-summary-refresh.js +344 -0
  90. package/dist/control-plane/run-lineage.d.ts +8 -0
  91. package/dist/control-plane/run-lineage.js +13 -0
  92. package/dist/control-plane/run-result-recording.d.ts +46 -0
  93. package/dist/control-plane/run-result-recording.js +81 -0
  94. package/dist/control-plane/run-scheduler.d.ts +35 -0
  95. package/dist/control-plane/run-scheduler.js +110 -0
  96. package/dist/control-plane/run-start.d.ts +30 -0
  97. package/dist/control-plane/run-start.js +167 -0
  98. package/dist/control-plane/scratchpad-auto-refresh.d.ts +32 -0
  99. package/dist/control-plane/scratchpad-auto-refresh.js +150 -0
  100. package/dist/control-plane/scratchpad-refresh-start.d.ts +60 -0
  101. package/dist/control-plane/scratchpad-refresh-start.js +240 -0
  102. package/dist/control-plane/scratchpad-refresh.d.ts +29 -0
  103. package/dist/control-plane/scratchpad-refresh.js +55 -0
  104. package/dist/control-plane/scratchpad-source-messages.d.ts +10 -0
  105. package/dist/control-plane/scratchpad-source-messages.js +131 -0
  106. package/dist/control-plane/startup-recovery.d.ts +19 -0
  107. package/dist/control-plane/startup-recovery.js +113 -0
  108. package/dist/control-plane/task-compile-continuation.d.ts +25 -0
  109. package/dist/control-plane/task-compile-continuation.js +127 -0
  110. package/dist/control-plane/task-compile-output.d.ts +29 -0
  111. package/dist/control-plane/task-compile-output.js +122 -0
  112. package/dist/control-plane/task-compile-start.d.ts +43 -0
  113. package/dist/control-plane/task-compile-start.js +280 -0
  114. package/dist/control-plane/task-proposal.d.ts +3 -0
  115. package/dist/control-plane/task-proposal.js +37 -0
  116. package/dist/control-plane/types.d.ts +155 -0
  117. package/dist/control-plane/types.js +2 -0
  118. package/dist/control-plane/workflows/index.d.ts +4 -0
  119. package/dist/control-plane/workflows/index.js +4 -0
  120. package/dist/control-plane/workflows/openai.d.ts +34 -0
  121. package/dist/control-plane/workflows/openai.js +411 -0
  122. package/dist/control-plane/workflows/structured-output-schemas.d.ts +9 -0
  123. package/dist/control-plane/workflows/structured-output-schemas.js +289 -0
  124. package/dist/control-plane/workflows/structured-output-validators.d.ts +15 -0
  125. package/dist/control-plane/workflows/structured-output-validators.js +295 -0
  126. package/dist/control-plane/workflows/structured-output.d.ts +3 -0
  127. package/dist/control-plane/workflows/structured-output.js +3 -0
  128. package/dist/control-plane/workflows/types.d.ts +274 -0
  129. package/dist/control-plane/workflows/types.js +2 -0
  130. package/dist/control-plane/worklist-terminal-feedback.d.ts +15 -0
  131. package/dist/control-plane/worklist-terminal-feedback.js +135 -0
  132. package/dist/index.d.ts +2 -0
  133. package/dist/index.js +32 -0
  134. package/dist/procedure-engine/index.d.ts +56 -0
  135. package/dist/procedure-engine/index.js +163 -0
  136. package/dist/project-brief/index.d.ts +4 -0
  137. package/dist/project-brief/index.js +3 -0
  138. package/dist/project-brief/repository.d.ts +5 -0
  139. package/dist/project-brief/repository.js +97 -0
  140. package/dist/project-brief/source.d.ts +8 -0
  141. package/dist/project-brief/source.js +75 -0
  142. package/dist/project-brief/types.d.ts +40 -0
  143. package/dist/project-brief/types.js +2 -0
  144. package/dist/project-docs/context.d.ts +34 -0
  145. package/dist/project-docs/context.js +86 -0
  146. package/dist/project-timeline/index.d.ts +20 -0
  147. package/dist/project-timeline/index.js +100 -0
  148. package/dist/prompt-templates/index.d.ts +13 -0
  149. package/dist/prompt-templates/index.js +86 -0
  150. package/dist/provider-usage/index.d.ts +37 -0
  151. package/dist/provider-usage/index.js +227 -0
  152. package/dist/providers/index.d.ts +2 -0
  153. package/dist/providers/index.js +2 -0
  154. package/dist/providers/openai/app-server/json-rpc.d.ts +71 -0
  155. package/dist/providers/openai/app-server/json-rpc.js +298 -0
  156. package/dist/providers/openai/app-server/permission-profile.d.ts +64 -0
  157. package/dist/providers/openai/app-server/permission-profile.js +67 -0
  158. package/dist/providers/openai/app-server/provider-config.d.ts +10 -0
  159. package/dist/providers/openai/app-server/provider-config.js +39 -0
  160. package/dist/providers/openai/app-server/read-only-procedure.d.ts +68 -0
  161. package/dist/providers/openai/app-server/read-only-procedure.js +293 -0
  162. package/dist/providers/openai/app-server/runtime-helpers.d.ts +20 -0
  163. package/dist/providers/openai/app-server/runtime-helpers.js +151 -0
  164. package/dist/providers/openai/app-server/skills.d.ts +82 -0
  165. package/dist/providers/openai/app-server/skills.js +222 -0
  166. package/dist/providers/openai/app-server/smoke-cli.d.ts +2 -0
  167. package/dist/providers/openai/app-server/smoke-cli.js +42 -0
  168. package/dist/providers/openai/app-server/smoke-helpers.d.ts +19 -0
  169. package/dist/providers/openai/app-server/smoke-helpers.js +125 -0
  170. package/dist/providers/openai/app-server/smoke-provider-input.d.ts +6 -0
  171. package/dist/providers/openai/app-server/smoke-provider-input.js +20 -0
  172. package/dist/providers/openai/app-server/smoke-types.d.ts +49 -0
  173. package/dist/providers/openai/app-server/smoke-types.js +20 -0
  174. package/dist/providers/openai/app-server/smoke.d.ts +9 -0
  175. package/dist/providers/openai/app-server/smoke.js +157 -0
  176. package/dist/providers/openai/app-server/workspace-write-run.d.ts +87 -0
  177. package/dist/providers/openai/app-server/workspace-write-run.js +379 -0
  178. package/dist/providers/openai/chat-assistant.d.ts +34 -0
  179. package/dist/providers/openai/chat-assistant.js +72 -0
  180. package/dist/providers/openai/codex-app-server.d.ts +126 -0
  181. package/dist/providers/openai/codex-app-server.js +147 -0
  182. package/dist/providers/openai/credential-store.d.ts +31 -0
  183. package/dist/providers/openai/credential-store.js +143 -0
  184. package/dist/providers/openai/credential-validation.d.ts +45 -0
  185. package/dist/providers/openai/credential-validation.js +190 -0
  186. package/dist/providers/openai/index.d.ts +13 -0
  187. package/dist/providers/openai/index.js +13 -0
  188. package/dist/providers/openai/machine-local-files.d.ts +19 -0
  189. package/dist/providers/openai/machine-local-files.js +55 -0
  190. package/dist/providers/openai/model-config.d.ts +4 -0
  191. package/dist/providers/openai/model-config.js +4 -0
  192. package/dist/providers/openai/provider-config-errors.d.ts +6 -0
  193. package/dist/providers/openai/provider-config-errors.js +13 -0
  194. package/dist/providers/openai/provider-config-shape.d.ts +3 -0
  195. package/dist/providers/openai/provider-config-shape.js +108 -0
  196. package/dist/providers/openai/provider-config-toml.d.ts +13 -0
  197. package/dist/providers/openai/provider-config-toml.js +113 -0
  198. package/dist/providers/openai/provider-config.d.ts +73 -0
  199. package/dist/providers/openai/provider-config.js +117 -0
  200. package/dist/providers/openai/provider-setup.d.ts +31 -0
  201. package/dist/providers/openai/provider-setup.js +88 -0
  202. package/dist/providers/openai/sdk-procedure-runner.d.ts +70 -0
  203. package/dist/providers/openai/sdk-procedure-runner.js +123 -0
  204. package/dist/providers/openai/token-usage.d.ts +11 -0
  205. package/dist/providers/openai/token-usage.js +90 -0
  206. package/dist/run-engine/index.d.ts +61 -0
  207. package/dist/run-engine/index.js +140 -0
  208. package/dist/run-pipeline/candidate-diff.d.ts +3 -0
  209. package/dist/run-pipeline/candidate-diff.js +10 -0
  210. package/dist/run-pipeline/openai.d.ts +41 -0
  211. package/dist/run-pipeline/openai.js +548 -0
  212. package/dist/run-pipeline/promotion-reconcile.d.ts +13 -0
  213. package/dist/run-pipeline/promotion-reconcile.js +138 -0
  214. package/dist/run-pipeline/result-projections.d.ts +39 -0
  215. package/dist/run-pipeline/result-projections.js +115 -0
  216. package/dist/run-pipeline/task-run-invocation.d.ts +6 -0
  217. package/dist/run-pipeline/task-run-invocation.js +130 -0
  218. package/dist/run-pipeline/task-run-output.d.ts +38 -0
  219. package/dist/run-pipeline/task-run-output.js +146 -0
  220. package/dist/server-shell/cli/args.d.ts +7 -0
  221. package/dist/server-shell/cli/args.js +30 -0
  222. package/dist/server-shell/cli/cli.d.ts +3 -0
  223. package/dist/server-shell/cli/cli.js +57 -0
  224. package/dist/server-shell/cli/errors.d.ts +9 -0
  225. package/dist/server-shell/cli/errors.js +53 -0
  226. package/dist/server-shell/cli/git-bootstrap.d.ts +24 -0
  227. package/dist/server-shell/cli/git-bootstrap.js +246 -0
  228. package/dist/server-shell/cli/host-lifecycle.d.ts +45 -0
  229. package/dist/server-shell/cli/host-lifecycle.js +298 -0
  230. package/dist/server-shell/cli/host-relay-status.d.ts +6 -0
  231. package/dist/server-shell/cli/host-relay-status.js +43 -0
  232. package/dist/server-shell/cli/host-runtime-endpoint.d.ts +22 -0
  233. package/dist/server-shell/cli/host-runtime-endpoint.js +120 -0
  234. package/dist/server-shell/cli/host-server-runtime.d.ts +30 -0
  235. package/dist/server-shell/cli/host-server-runtime.js +432 -0
  236. package/dist/server-shell/cli/index.d.ts +8 -0
  237. package/dist/server-shell/cli/index.js +8 -0
  238. package/dist/server-shell/cli/launch.d.ts +45 -0
  239. package/dist/server-shell/cli/launch.js +115 -0
  240. package/dist/server-shell/cli/machine-local.d.ts +69 -0
  241. package/dist/server-shell/cli/machine-local.js +223 -0
  242. package/dist/server-shell/cli/project-identity.d.ts +20 -0
  243. package/dist/server-shell/cli/project-identity.js +87 -0
  244. package/dist/server-shell/cli/relay-registration.d.ts +31 -0
  245. package/dist/server-shell/cli/relay-registration.js +61 -0
  246. package/dist/server-shell/command-idempotency/index.d.ts +44 -0
  247. package/dist/server-shell/command-idempotency/index.js +155 -0
  248. package/dist/server-shell/dev-runner/cli.d.ts +2 -0
  249. package/dist/server-shell/dev-runner/cli.js +10 -0
  250. package/dist/server-shell/dev-runner/config.d.ts +38 -0
  251. package/dist/server-shell/dev-runner/config.js +277 -0
  252. package/dist/server-shell/dev-runner/host-cli.d.ts +2 -0
  253. package/dist/server-shell/dev-runner/host-cli.js +22 -0
  254. package/dist/server-shell/dev-runner/index.d.ts +3 -0
  255. package/dist/server-shell/dev-runner/index.js +3 -0
  256. package/dist/server-shell/dev-runner/runner.d.ts +30 -0
  257. package/dist/server-shell/dev-runner/runner.js +236 -0
  258. package/dist/server-shell/http/create-server.d.ts +18 -0
  259. package/dist/server-shell/http/create-server.js +51 -0
  260. package/dist/server-shell/http/host-tunnel.d.ts +15 -0
  261. package/dist/server-shell/http/host-tunnel.js +154 -0
  262. package/dist/server-shell/http/logger.d.ts +7 -0
  263. package/dist/server-shell/http/logger.js +19 -0
  264. package/dist/server-shell/http/routes/agent-context-auth.d.ts +41 -0
  265. package/dist/server-shell/http/routes/agent-context-auth.js +73 -0
  266. package/dist/server-shell/http/routes/agent-context-errors.d.ts +6 -0
  267. package/dist/server-shell/http/routes/agent-context-errors.js +9 -0
  268. package/dist/server-shell/http/routes/agent-context-messages-routes.d.ts +4 -0
  269. package/dist/server-shell/http/routes/agent-context-messages-routes.js +74 -0
  270. package/dist/server-shell/http/routes/agent-context-project-doc-routes.d.ts +4 -0
  271. package/dist/server-shell/http/routes/agent-context-project-doc-routes.js +86 -0
  272. package/dist/server-shell/http/routes/agent-context-project-docs.d.ts +40 -0
  273. package/dist/server-shell/http/routes/agent-context-project-docs.js +98 -0
  274. package/dist/server-shell/http/routes/agent-context-query.d.ts +31 -0
  275. package/dist/server-shell/http/routes/agent-context-query.js +72 -0
  276. package/dist/server-shell/http/routes/agent-context-reference-routes.d.ts +4 -0
  277. package/dist/server-shell/http/routes/agent-context-reference-routes.js +82 -0
  278. package/dist/server-shell/http/routes/agent-context-references.d.ts +21 -0
  279. package/dist/server-shell/http/routes/agent-context-references.js +85 -0
  280. package/dist/server-shell/http/routes/agent-context-shared.d.ts +34 -0
  281. package/dist/server-shell/http/routes/agent-context-shared.js +44 -0
  282. package/dist/server-shell/http/routes/agent-context-skills-routes.d.ts +4 -0
  283. package/dist/server-shell/http/routes/agent-context-skills-routes.js +85 -0
  284. package/dist/server-shell/http/routes/agent-context-workspace-routes.d.ts +4 -0
  285. package/dist/server-shell/http/routes/agent-context-workspace-routes.js +130 -0
  286. package/dist/server-shell/http/routes/agent-context.d.ts +8 -0
  287. package/dist/server-shell/http/routes/agent-context.js +16 -0
  288. package/dist/server-shell/http/routes/health.d.ts +7 -0
  289. package/dist/server-shell/http/routes/health.js +41 -0
  290. package/dist/server-shell/http/routes/local-control.d.ts +40 -0
  291. package/dist/server-shell/http/routes/local-control.js +260 -0
  292. package/dist/server-shell/http/routes/project-api/approval-routes.d.ts +4 -0
  293. package/dist/server-shell/http/routes/project-api/approval-routes.js +64 -0
  294. package/dist/server-shell/http/routes/project-api/artifacts-routes.d.ts +8 -0
  295. package/dist/server-shell/http/routes/project-api/artifacts-routes.js +166 -0
  296. package/dist/server-shell/http/routes/project-api/clarification-routes.d.ts +4 -0
  297. package/dist/server-shell/http/routes/project-api/clarification-routes.js +150 -0
  298. package/dist/server-shell/http/routes/project-api/constants.d.ts +3 -0
  299. package/dist/server-shell/http/routes/project-api/constants.js +3 -0
  300. package/dist/server-shell/http/routes/project-api/errors.d.ts +26 -0
  301. package/dist/server-shell/http/routes/project-api/errors.js +41 -0
  302. package/dist/server-shell/http/routes/project-api/events-stream.d.ts +11 -0
  303. package/dist/server-shell/http/routes/project-api/events-stream.js +55 -0
  304. package/dist/server-shell/http/routes/project-api/execution-routes.d.ts +4 -0
  305. package/dist/server-shell/http/routes/project-api/execution-routes.js +92 -0
  306. package/dist/server-shell/http/routes/project-api/headers.d.ts +2 -0
  307. package/dist/server-shell/http/routes/project-api/headers.js +7 -0
  308. package/dist/server-shell/http/routes/project-api/invalidations.d.ts +10 -0
  309. package/dist/server-shell/http/routes/project-api/invalidations.js +57 -0
  310. package/dist/server-shell/http/routes/project-api/messages-routes.d.ts +8 -0
  311. package/dist/server-shell/http/routes/project-api/messages-routes.js +80 -0
  312. package/dist/server-shell/http/routes/project-api/openapi-approval-routes.d.ts +128 -0
  313. package/dist/server-shell/http/routes/project-api/openapi-approval-routes.js +32 -0
  314. package/dist/server-shell/http/routes/project-api/openapi-artifacts-routes.d.ts +51 -0
  315. package/dist/server-shell/http/routes/project-api/openapi-artifacts-routes.js +56 -0
  316. package/dist/server-shell/http/routes/project-api/openapi-collaboration-routes.d.ts +466 -0
  317. package/dist/server-shell/http/routes/project-api/openapi-collaboration-routes.js +165 -0
  318. package/dist/server-shell/http/routes/project-api/openapi-diagnostic-routes.d.ts +16 -0
  319. package/dist/server-shell/http/routes/project-api/openapi-diagnostic-routes.js +17 -0
  320. package/dist/server-shell/http/routes/project-api/openapi-execution-routes.d.ts +215 -0
  321. package/dist/server-shell/http/routes/project-api/openapi-execution-routes.js +75 -0
  322. package/dist/server-shell/http/routes/project-api/openapi-path-parameters.d.ts +9 -0
  323. package/dist/server-shell/http/routes/project-api/openapi-path-parameters.js +18 -0
  324. package/dist/server-shell/http/routes/project-api/openapi-skills-routes.d.ts +60 -0
  325. package/dist/server-shell/http/routes/project-api/openapi-skills-routes.js +51 -0
  326. package/dist/server-shell/http/routes/project-api/openapi-timeline-routes.d.ts +115 -0
  327. package/dist/server-shell/http/routes/project-api/openapi-timeline-routes.js +17 -0
  328. package/dist/server-shell/http/routes/project-api/openapi-viewer-routes.d.ts +323 -0
  329. package/dist/server-shell/http/routes/project-api/openapi-viewer-routes.js +120 -0
  330. package/dist/server-shell/http/routes/project-api/openapi-workspace-routes.d.ts +1317 -0
  331. package/dist/server-shell/http/routes/project-api/openapi-workspace-routes.js +95 -0
  332. package/dist/server-shell/http/routes/project-api/openapi.d.ts +2457 -0
  333. package/dist/server-shell/http/routes/project-api/openapi.js +30 -0
  334. package/dist/server-shell/http/routes/project-api/payload-validation.d.ts +6 -0
  335. package/dist/server-shell/http/routes/project-api/payload-validation.js +36 -0
  336. package/dist/server-shell/http/routes/project-api/project-docs-helpers.d.ts +9 -0
  337. package/dist/server-shell/http/routes/project-api/project-docs-helpers.js +17 -0
  338. package/dist/server-shell/http/routes/project-api/project-docs-routes.d.ts +8 -0
  339. package/dist/server-shell/http/routes/project-api/project-docs-routes.js +151 -0
  340. package/dist/server-shell/http/routes/project-api/project-timeline-projection.d.ts +8 -0
  341. package/dist/server-shell/http/routes/project-api/project-timeline-projection.js +658 -0
  342. package/dist/server-shell/http/routes/project-api/project-timeline-routes.d.ts +4 -0
  343. package/dist/server-shell/http/routes/project-api/project-timeline-routes.js +23 -0
  344. package/dist/server-shell/http/routes/project-api/read-state-routes.d.ts +8 -0
  345. package/dist/server-shell/http/routes/project-api/read-state-routes.js +82 -0
  346. package/dist/server-shell/http/routes/project-api/reference-files-routes.d.ts +8 -0
  347. package/dist/server-shell/http/routes/project-api/reference-files-routes.js +184 -0
  348. package/dist/server-shell/http/routes/project-api/reference-files.d.ts +17 -0
  349. package/dist/server-shell/http/routes/project-api/reference-files.js +212 -0
  350. package/dist/server-shell/http/routes/project-api/repo-projection.d.ts +3 -0
  351. package/dist/server-shell/http/routes/project-api/repo-projection.js +58 -0
  352. package/dist/server-shell/http/routes/project-api/schemas.d.ts +1351 -0
  353. package/dist/server-shell/http/routes/project-api/schemas.js +441 -0
  354. package/dist/server-shell/http/routes/project-api/session-requirements.d.ts +10 -0
  355. package/dist/server-shell/http/routes/project-api/session-requirements.js +60 -0
  356. package/dist/server-shell/http/routes/project-api/skills-helpers.d.ts +7 -0
  357. package/dist/server-shell/http/routes/project-api/skills-helpers.js +48 -0
  358. package/dist/server-shell/http/routes/project-api/skills-routes.d.ts +8 -0
  359. package/dist/server-shell/http/routes/project-api/skills-routes.js +185 -0
  360. package/dist/server-shell/http/routes/project-api/staged-uploads.d.ts +14 -0
  361. package/dist/server-shell/http/routes/project-api/staged-uploads.js +149 -0
  362. package/dist/server-shell/http/routes/project-api/system-routes.d.ts +8 -0
  363. package/dist/server-shell/http/routes/project-api/system-routes.js +141 -0
  364. package/dist/server-shell/http/routes/project-api/types.d.ts +137 -0
  365. package/dist/server-shell/http/routes/project-api/types.js +2 -0
  366. package/dist/server-shell/http/routes/project-api/viewer-projections.d.ts +17 -0
  367. package/dist/server-shell/http/routes/project-api/viewer-projections.js +102 -0
  368. package/dist/server-shell/http/routes/project-api/viewer-routes.d.ts +4 -0
  369. package/dist/server-shell/http/routes/project-api/viewer-routes.js +100 -0
  370. package/dist/server-shell/http/routes/project-api/workflow-routes.d.ts +4 -0
  371. package/dist/server-shell/http/routes/project-api/workflow-routes.js +85 -0
  372. package/dist/server-shell/http/routes/project-api/workspace-projections.d.ts +5 -0
  373. package/dist/server-shell/http/routes/project-api/workspace-projections.js +103 -0
  374. package/dist/server-shell/http/routes/project-api.d.ts +8 -0
  375. package/dist/server-shell/http/routes/project-api.js +34 -0
  376. package/dist/server-shell/http/sse-replay-buffer.d.ts +54 -0
  377. package/dist/server-shell/http/sse-replay-buffer.js +110 -0
  378. package/dist/server-shell/http/sse.d.ts +12 -0
  379. package/dist/server-shell/http/sse.js +22 -0
  380. package/dist/server-shell/http/static-web.d.ts +6 -0
  381. package/dist/server-shell/http/static-web.js +52 -0
  382. package/dist/server-shell/http/validation.d.ts +13 -0
  383. package/dist/server-shell/http/validation.js +136 -0
  384. package/dist/server-shell/http/workspace-events.d.ts +38 -0
  385. package/dist/server-shell/http/workspace-events.js +98 -0
  386. package/dist/server-shell/session/relay-session-context.d.ts +25 -0
  387. package/dist/server-shell/session/relay-session-context.js +49 -0
  388. package/dist/server-shell/smoke/e2e-client.d.ts +59 -0
  389. package/dist/server-shell/smoke/e2e-client.js +304 -0
  390. package/dist/server-shell/smoke/index.d.ts +2 -0
  391. package/dist/server-shell/smoke/index.js +2 -0
  392. package/dist/skills/constants.d.ts +8 -0
  393. package/dist/skills/constants.js +9 -0
  394. package/dist/skills/errors.d.ts +6 -0
  395. package/dist/skills/errors.js +9 -0
  396. package/dist/skills/index.d.ts +41 -0
  397. package/dist/skills/index.js +171 -0
  398. package/dist/skills/metadata.d.ts +8 -0
  399. package/dist/skills/metadata.js +80 -0
  400. package/dist/skills/zip-import.d.ts +18 -0
  401. package/dist/skills/zip-import.js +241 -0
  402. package/dist/store/command-recovery.d.ts +26 -0
  403. package/dist/store/command-recovery.js +71 -0
  404. package/dist/store/index.d.ts +6 -0
  405. package/dist/store/index.js +6 -0
  406. package/dist/store/lifecycle.d.ts +23 -0
  407. package/dist/store/lifecycle.js +53 -0
  408. package/dist/store/metadata.d.ts +18 -0
  409. package/dist/store/metadata.js +30 -0
  410. package/dist/store/migrations.d.ts +20 -0
  411. package/dist/store/migrations.js +76 -0
  412. package/dist/store/sqlite.d.ts +11 -0
  413. package/dist/store/sqlite.js +21 -0
  414. package/dist/workspace-ops/constants.d.ts +15 -0
  415. package/dist/workspace-ops/constants.js +20 -0
  416. package/dist/workspace-ops/errors.d.ts +8 -0
  417. package/dist/workspace-ops/errors.js +33 -0
  418. package/dist/workspace-ops/git.d.ts +13 -0
  419. package/dist/workspace-ops/git.js +53 -0
  420. package/dist/workspace-ops/index.d.ts +11 -0
  421. package/dist/workspace-ops/index.js +9 -0
  422. package/dist/workspace-ops/mainline.d.ts +2 -0
  423. package/dist/workspace-ops/mainline.js +16 -0
  424. package/dist/workspace-ops/project-doc-templates.d.ts +12 -0
  425. package/dist/workspace-ops/project-doc-templates.js +180 -0
  426. package/dist/workspace-ops/project-docs.d.ts +7 -0
  427. package/dist/workspace-ops/project-docs.js +156 -0
  428. package/dist/workspace-ops/reference-files.d.ts +3 -0
  429. package/dist/workspace-ops/reference-files.js +137 -0
  430. package/dist/workspace-ops/reference-metadata.d.ts +13 -0
  431. package/dist/workspace-ops/reference-metadata.js +86 -0
  432. package/dist/workspace-ops/reference-summaries.d.ts +17 -0
  433. package/dist/workspace-ops/reference-summaries.js +298 -0
  434. package/dist/workspace-ops/run-workspaces.d.ts +18 -0
  435. package/dist/workspace-ops/run-workspaces.js +271 -0
  436. package/dist/workspace-ops/types.d.ts +219 -0
  437. package/dist/workspace-ops/types.js +2 -0
  438. package/dist/workspace-ops/viewer-file.d.ts +4 -0
  439. package/dist/workspace-ops/viewer-file.js +207 -0
  440. package/dist/workspace-ops/viewer-git.d.ts +20 -0
  441. package/dist/workspace-ops/viewer-git.js +111 -0
  442. package/dist/workspace-ops/viewer-paths.d.ts +3 -0
  443. package/dist/workspace-ops/viewer-paths.js +13 -0
  444. package/dist/workspace-ops/viewer-tree.d.ts +9 -0
  445. package/dist/workspace-ops/viewer-tree.js +144 -0
  446. package/dist/workspace-ops/viewer.d.ts +5 -0
  447. package/dist/workspace-ops/viewer.js +5 -0
  448. package/migrations/0001_init.sql +674 -0
  449. package/migrations/0002_allow_sealed_round_successor_note.sql +14 -0
  450. package/migrations/0003_drop_scratchpad_source_message_refs.sql +1 -0
  451. package/migrations/0004_read_state.sql +109 -0
  452. package/migrations/0005_provider_usage.sql +15 -0
  453. package/migrations/0006_scratchpad_source_state.sql +29 -0
  454. package/migrations/0007_workspace_signal_read_state_scopes.sql +74 -0
  455. package/migrations/0008_provider_usage_anchors.sql +32 -0
  456. package/migrations/0009_project_timeline_events.sql +33 -0
  457. package/migrations/0010_project_brief.sql +13 -0
  458. package/migrations/0011_message_author_avatar.sql +5 -0
  459. package/migrations/README.md +44 -0
  460. package/node_modules/@tutti/relay-client/dist/host-control.d.ts +164 -0
  461. package/node_modules/@tutti/relay-client/dist/host-control.js +284 -0
  462. package/node_modules/@tutti/relay-client/dist/index.d.ts +3 -0
  463. package/node_modules/@tutti/relay-client/dist/index.js +3 -0
  464. package/node_modules/@tutti/relay-client/dist/tunnel-frames.d.ts +8 -0
  465. package/node_modules/@tutti/relay-client/dist/tunnel-frames.js +124 -0
  466. package/node_modules/@tutti/relay-client/dist/tunnel-types.d.ts +61 -0
  467. package/node_modules/@tutti/relay-client/dist/tunnel-types.js +2 -0
  468. package/node_modules/@tutti/relay-client/dist/tunnel.d.ts +4 -0
  469. package/node_modules/@tutti/relay-client/dist/tunnel.js +144 -0
  470. package/node_modules/@tutti/relay-client/package.json +18 -0
  471. package/node_modules/@tutti/shared/dist/domain/index.d.ts +59 -0
  472. package/node_modules/@tutti/shared/dist/domain/index.js +37 -0
  473. package/node_modules/@tutti/shared/dist/ids/index.d.ts +85 -0
  474. package/node_modules/@tutti/shared/dist/ids/index.js +88 -0
  475. package/node_modules/@tutti/shared/dist/index.d.ts +6 -0
  476. package/node_modules/@tutti/shared/dist/index.js +6 -0
  477. package/node_modules/@tutti/shared/dist/schemas/api/approvals.d.ts +307 -0
  478. package/node_modules/@tutti/shared/dist/schemas/api/approvals.js +110 -0
  479. package/node_modules/@tutti/shared/dist/schemas/api/artifacts.d.ts +173 -0
  480. package/node_modules/@tutti/shared/dist/schemas/api/artifacts.js +107 -0
  481. package/node_modules/@tutti/shared/dist/schemas/api/clarifications.d.ts +704 -0
  482. package/node_modules/@tutti/shared/dist/schemas/api/clarifications.js +224 -0
  483. package/node_modules/@tutti/shared/dist/schemas/api/index.d.ts +18 -0
  484. package/node_modules/@tutti/shared/dist/schemas/api/index.js +17 -0
  485. package/node_modules/@tutti/shared/dist/schemas/api/messages.d.ts +370 -0
  486. package/node_modules/@tutti/shared/dist/schemas/api/messages.js +134 -0
  487. package/node_modules/@tutti/shared/dist/schemas/api/openapi.d.ts +32 -0
  488. package/node_modules/@tutti/shared/dist/schemas/api/openapi.js +100 -0
  489. package/node_modules/@tutti/shared/dist/schemas/api/primitives.d.ts +109 -0
  490. package/node_modules/@tutti/shared/dist/schemas/api/primitives.js +174 -0
  491. package/node_modules/@tutti/shared/dist/schemas/api/project-timeline.d.ts +149 -0
  492. package/node_modules/@tutti/shared/dist/schemas/api/project-timeline.js +44 -0
  493. package/node_modules/@tutti/shared/dist/schemas/api/provider-config.d.ts +21 -0
  494. package/node_modules/@tutti/shared/dist/schemas/api/provider-config.js +33 -0
  495. package/node_modules/@tutti/shared/dist/schemas/api/provider-usage.d.ts +87 -0
  496. package/node_modules/@tutti/shared/dist/schemas/api/provider-usage.js +48 -0
  497. package/node_modules/@tutti/shared/dist/schemas/api/read-state.d.ts +89 -0
  498. package/node_modules/@tutti/shared/dist/schemas/api/read-state.js +39 -0
  499. package/node_modules/@tutti/shared/dist/schemas/api/runtime-events.d.ts +484 -0
  500. package/node_modules/@tutti/shared/dist/schemas/api/runtime-events.js +185 -0
  501. package/node_modules/@tutti/shared/dist/schemas/api/skills.d.ts +88 -0
  502. package/node_modules/@tutti/shared/dist/schemas/api/skills.js +71 -0
  503. package/node_modules/@tutti/shared/dist/schemas/api/types.d.ts +253 -0
  504. package/node_modules/@tutti/shared/dist/schemas/api/types.js +2 -0
  505. package/node_modules/@tutti/shared/dist/schemas/api/uploads.d.ts +103 -0
  506. package/node_modules/@tutti/shared/dist/schemas/api/uploads.js +78 -0
  507. package/node_modules/@tutti/shared/dist/schemas/api/viewer-reference.d.ts +484 -0
  508. package/node_modules/@tutti/shared/dist/schemas/api/viewer-reference.js +267 -0
  509. package/node_modules/@tutti/shared/dist/schemas/api/work-items.d.ts +264 -0
  510. package/node_modules/@tutti/shared/dist/schemas/api/work-items.js +196 -0
  511. package/node_modules/@tutti/shared/dist/schemas/api/workspace-commands.d.ts +179 -0
  512. package/node_modules/@tutti/shared/dist/schemas/api/workspace-commands.js +137 -0
  513. package/node_modules/@tutti/shared/dist/schemas/domain/index.d.ts +31 -0
  514. package/node_modules/@tutti/shared/dist/schemas/domain/index.js +49 -0
  515. package/node_modules/@tutti/shared/dist/schemas/internal/index.d.ts +46 -0
  516. package/node_modules/@tutti/shared/dist/schemas/internal/index.js +46 -0
  517. package/node_modules/@tutti/shared/dist/utils/command-idempotency/index.d.ts +40 -0
  518. package/node_modules/@tutti/shared/dist/utils/command-idempotency/index.js +100 -0
  519. package/node_modules/@tutti/shared/dist/utils/index.d.ts +5 -0
  520. package/node_modules/@tutti/shared/dist/utils/index.js +5 -0
  521. package/node_modules/@tutti/shared/dist/utils/logging/index.d.ts +34 -0
  522. package/node_modules/@tutti/shared/dist/utils/logging/index.js +130 -0
  523. package/node_modules/@tutti/shared/dist/utils/path-policy/index.d.ts +13 -0
  524. package/node_modules/@tutti/shared/dist/utils/path-policy/index.js +80 -0
  525. package/node_modules/@tutti/shared/dist/utils/redaction/index.d.ts +19 -0
  526. package/node_modules/@tutti/shared/dist/utils/redaction/index.js +158 -0
  527. package/node_modules/@tutti/shared/package.json +63 -0
  528. package/package.json +47 -0
  529. package/prompts/README.md +36 -0
  530. package/prompts/chat-assistant.md +43 -0
  531. package/prompts/codex/README.md +13 -0
  532. package/prompts/codex/no-write-smoke.md +35 -0
  533. package/prompts/procedures/README.md +38 -0
  534. package/prompts/procedures/context-sync.md +66 -0
  535. package/prompts/procedures/follow-up-check.md +83 -0
  536. package/prompts/procedures/project-brief-refresh.md +79 -0
  537. package/prompts/procedures/project-context-bootstrap.md +58 -0
  538. package/prompts/procedures/reference-file-summary.md +49 -0
  539. package/prompts/procedures/scratchpad-refresh.md +83 -0
  540. package/prompts/procedures/task-compile.md +116 -0
  541. package/prompts/prompt-flow-experiment-plan.md +203 -0
  542. package/prompts/prompt-flow-map.md +478 -0
  543. package/prompts/runs/README.md +17 -0
  544. package/prompts/runs/task-continuation.md +148 -0
  545. package/prompts/runs/task-retry.md +153 -0
  546. package/prompts/runs/task-run.md +135 -0
  547. package/prompts/skills/README.md +25 -0
  548. package/prompts/skills/read-main-chat/README.md +8 -0
  549. package/prompts/skills/read-main-chat/SKILL.md +18 -0
  550. package/prompts/skills/read-project-docs/README.md +13 -0
  551. package/prompts/skills/read-project-docs/SKILL.md +42 -0
  552. package/prompts/skills/read-references/README.md +9 -0
  553. package/prompts/skills/read-references/SKILL.md +26 -0
  554. package/prompts/skills/read-scratchpad/README.md +8 -0
  555. package/prompts/skills/read-scratchpad/SKILL.md +16 -0
  556. package/prompts/skills/read-user-skills/README.md +7 -0
  557. package/prompts/skills/read-user-skills/SKILL.md +22 -0
  558. package/prompts/skills/read-worklist/README.md +9 -0
  559. package/prompts/skills/read-worklist/SKILL.md +20 -0
  560. package/web/assets/Tutti-B7gEyTp1.png +0 -0
  561. package/web/assets/Tutti-square-BqFU7F0D.png +0 -0
  562. package/web/assets/index-CWkBgHap.js +29 -0
  563. package/web/assets/index-D8xJY8Gr.css +1 -0
  564. package/web/index.html +13 -0
@@ -0,0 +1,109 @@
1
+ CREATE TABLE IF NOT EXISTS read_notification_events (
2
+ event_cursor INTEGER PRIMARY KEY,
3
+ scope TEXT NOT NULL CHECK (scope IN ('chat', 'worklist')),
4
+ source_kind TEXT NOT NULL CHECK (length(source_kind) > 0),
5
+ source_ref TEXT NOT NULL CHECK (length(source_ref) > 0),
6
+ actor_kind TEXT CHECK (
7
+ actor_kind IS NULL OR actor_kind IN ('human', 'system', 'agent')
8
+ ),
9
+ actor_ref TEXT,
10
+ occurred_at TEXT NOT NULL,
11
+ created_at TEXT NOT NULL
12
+ );
13
+
14
+ CREATE INDEX IF NOT EXISTS idx_read_notification_events_scope_cursor
15
+ ON read_notification_events (scope, event_cursor);
16
+
17
+ CREATE INDEX IF NOT EXISTS idx_read_notification_events_scope_occurred
18
+ ON read_notification_events (scope, occurred_at, event_cursor);
19
+
20
+ CREATE TABLE IF NOT EXISTS read_state_cursors (
21
+ account_ref TEXT NOT NULL,
22
+ scope TEXT NOT NULL CHECK (scope IN ('chat', 'worklist')),
23
+ read_event_cursor INTEGER NOT NULL DEFAULT 0 CHECK (read_event_cursor >= 0),
24
+ read_at TEXT NOT NULL,
25
+ updated_at TEXT NOT NULL,
26
+ PRIMARY KEY (account_ref, scope)
27
+ );
28
+
29
+ CREATE INDEX IF NOT EXISTS idx_read_state_cursors_account
30
+ ON read_state_cursors (account_ref);
31
+
32
+ INSERT INTO read_notification_events (
33
+ scope,
34
+ source_kind,
35
+ source_ref,
36
+ actor_kind,
37
+ actor_ref,
38
+ occurred_at,
39
+ created_at
40
+ )
41
+ SELECT
42
+ 'chat',
43
+ 'message',
44
+ id,
45
+ author_kind,
46
+ author_ref,
47
+ created_at,
48
+ created_at
49
+ FROM messages;
50
+
51
+ INSERT INTO read_notification_events (
52
+ scope,
53
+ source_kind,
54
+ source_ref,
55
+ occurred_at,
56
+ created_at
57
+ )
58
+ SELECT
59
+ 'worklist',
60
+ 'task_module',
61
+ id,
62
+ COALESCE(updated_at, created_at),
63
+ COALESCE(updated_at, created_at)
64
+ FROM task_modules;
65
+
66
+ INSERT INTO read_notification_events (
67
+ scope,
68
+ source_kind,
69
+ source_ref,
70
+ occurred_at,
71
+ created_at
72
+ )
73
+ SELECT
74
+ 'worklist',
75
+ 'task',
76
+ id,
77
+ updated_at,
78
+ updated_at
79
+ FROM tasks;
80
+
81
+ INSERT INTO read_notification_events (
82
+ scope,
83
+ source_kind,
84
+ source_ref,
85
+ occurred_at,
86
+ created_at
87
+ )
88
+ SELECT
89
+ 'worklist',
90
+ 'task_detail',
91
+ task_id,
92
+ updated_at,
93
+ updated_at
94
+ FROM task_details;
95
+
96
+ INSERT INTO read_notification_events (
97
+ scope,
98
+ source_kind,
99
+ source_ref,
100
+ occurred_at,
101
+ created_at
102
+ )
103
+ SELECT
104
+ 'worklist',
105
+ 'run_result',
106
+ id,
107
+ created_at,
108
+ created_at
109
+ FROM run_results;
@@ -0,0 +1,15 @@
1
+ CREATE TABLE IF NOT EXISTS provider_usage_events (
2
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
3
+ provider TEXT NOT NULL CHECK (provider IN ('openai')),
4
+ source TEXT NOT NULL CHECK (length(source) > 0),
5
+ model TEXT,
6
+ input_tokens INTEGER NOT NULL DEFAULT 0 CHECK (input_tokens >= 0),
7
+ cached_input_tokens INTEGER NOT NULL DEFAULT 0 CHECK (cached_input_tokens >= 0),
8
+ output_tokens INTEGER NOT NULL DEFAULT 0 CHECK (output_tokens >= 0),
9
+ reasoning_output_tokens INTEGER NOT NULL DEFAULT 0 CHECK (reasoning_output_tokens >= 0),
10
+ total_tokens INTEGER NOT NULL CHECK (total_tokens >= 0),
11
+ recorded_at TEXT NOT NULL
12
+ );
13
+
14
+ CREATE INDEX IF NOT EXISTS idx_provider_usage_events_recorded_at
15
+ ON provider_usage_events (recorded_at, id);
@@ -0,0 +1,29 @@
1
+ CREATE TABLE IF NOT EXISTS scratchpad_source_state (
2
+ id TEXT PRIMARY KEY CHECK (id = 'current'),
3
+ main_chat_cursor_created_at TEXT,
4
+ main_chat_cursor_message_id TEXT,
5
+ task_compile_cursor_submitted_at TEXT,
6
+ task_compile_cursor_round_id TEXT,
7
+ dirty_since TEXT,
8
+ in_flight_activity_ref TEXT,
9
+ in_flight_started_at TEXT,
10
+ last_completed_at TEXT,
11
+ last_failed_at TEXT,
12
+ backoff_until TEXT,
13
+ updated_at TEXT NOT NULL,
14
+ CHECK (
15
+ (main_chat_cursor_created_at IS NULL AND main_chat_cursor_message_id IS NULL)
16
+ OR (main_chat_cursor_created_at IS NOT NULL AND main_chat_cursor_message_id IS NOT NULL)
17
+ ),
18
+ CHECK (
19
+ (task_compile_cursor_submitted_at IS NULL AND task_compile_cursor_round_id IS NULL)
20
+ OR (
21
+ task_compile_cursor_submitted_at IS NOT NULL
22
+ AND task_compile_cursor_round_id IS NOT NULL
23
+ )
24
+ ),
25
+ CHECK (
26
+ (in_flight_activity_ref IS NULL AND in_flight_started_at IS NULL)
27
+ OR (in_flight_activity_ref IS NOT NULL AND in_flight_started_at IS NOT NULL)
28
+ )
29
+ );
@@ -0,0 +1,74 @@
1
+ ALTER TABLE read_notification_events RENAME TO read_notification_events_old;
2
+
3
+ CREATE TABLE read_notification_events (
4
+ event_cursor INTEGER PRIMARY KEY,
5
+ scope TEXT NOT NULL CHECK (scope IN ('chat', 'worklist', 'references', 'skills')),
6
+ source_kind TEXT NOT NULL CHECK (length(source_kind) > 0),
7
+ source_ref TEXT NOT NULL CHECK (length(source_ref) > 0),
8
+ actor_kind TEXT CHECK (
9
+ actor_kind IS NULL OR actor_kind IN ('human', 'system', 'agent')
10
+ ),
11
+ actor_ref TEXT,
12
+ occurred_at TEXT NOT NULL,
13
+ created_at TEXT NOT NULL
14
+ );
15
+
16
+ INSERT INTO read_notification_events (
17
+ event_cursor,
18
+ scope,
19
+ source_kind,
20
+ source_ref,
21
+ actor_kind,
22
+ actor_ref,
23
+ occurred_at,
24
+ created_at
25
+ )
26
+ SELECT
27
+ event_cursor,
28
+ scope,
29
+ source_kind,
30
+ source_ref,
31
+ actor_kind,
32
+ actor_ref,
33
+ occurred_at,
34
+ created_at
35
+ FROM read_notification_events_old;
36
+
37
+ DROP TABLE read_notification_events_old;
38
+
39
+ CREATE INDEX idx_read_notification_events_scope_cursor
40
+ ON read_notification_events (scope, event_cursor);
41
+
42
+ CREATE INDEX idx_read_notification_events_scope_occurred
43
+ ON read_notification_events (scope, occurred_at, event_cursor);
44
+
45
+ ALTER TABLE read_state_cursors RENAME TO read_state_cursors_old;
46
+
47
+ CREATE TABLE read_state_cursors (
48
+ account_ref TEXT NOT NULL,
49
+ scope TEXT NOT NULL CHECK (scope IN ('chat', 'worklist', 'references', 'skills')),
50
+ read_event_cursor INTEGER NOT NULL DEFAULT 0 CHECK (read_event_cursor >= 0),
51
+ read_at TEXT NOT NULL,
52
+ updated_at TEXT NOT NULL,
53
+ PRIMARY KEY (account_ref, scope)
54
+ );
55
+
56
+ INSERT INTO read_state_cursors (
57
+ account_ref,
58
+ scope,
59
+ read_event_cursor,
60
+ read_at,
61
+ updated_at
62
+ )
63
+ SELECT
64
+ account_ref,
65
+ scope,
66
+ read_event_cursor,
67
+ read_at,
68
+ updated_at
69
+ FROM read_state_cursors_old;
70
+
71
+ DROP TABLE read_state_cursors_old;
72
+
73
+ CREATE INDEX idx_read_state_cursors_account
74
+ ON read_state_cursors (account_ref);
@@ -0,0 +1,32 @@
1
+ ALTER TABLE provider_usage_events
2
+ ADD COLUMN activity_ref TEXT;
3
+
4
+ ALTER TABLE provider_usage_events
5
+ ADD COLUMN workflow_ref TEXT;
6
+
7
+ ALTER TABLE provider_usage_events
8
+ ADD COLUMN task_id TEXT;
9
+
10
+ ALTER TABLE provider_usage_events
11
+ ADD COLUMN run_result_id TEXT;
12
+
13
+ ALTER TABLE provider_usage_events
14
+ ADD COLUMN run_lineage_kind TEXT CHECK (
15
+ run_lineage_kind IS NULL OR run_lineage_kind IN ('initial', 'continuation', 'retry')
16
+ );
17
+
18
+ CREATE INDEX IF NOT EXISTS idx_provider_usage_events_activity_ref
19
+ ON provider_usage_events (activity_ref, recorded_at, id)
20
+ WHERE activity_ref IS NOT NULL;
21
+
22
+ CREATE INDEX IF NOT EXISTS idx_provider_usage_events_workflow_ref
23
+ ON provider_usage_events (workflow_ref, recorded_at, id)
24
+ WHERE workflow_ref IS NOT NULL;
25
+
26
+ CREATE INDEX IF NOT EXISTS idx_provider_usage_events_task_id
27
+ ON provider_usage_events (task_id, recorded_at, id)
28
+ WHERE task_id IS NOT NULL;
29
+
30
+ CREATE INDEX IF NOT EXISTS idx_provider_usage_events_run_result_id
31
+ ON provider_usage_events (run_result_id, recorded_at, id)
32
+ WHERE run_result_id IS NOT NULL;
@@ -0,0 +1,33 @@
1
+ CREATE TABLE IF NOT EXISTS project_timeline_events (
2
+ id TEXT PRIMARY KEY,
3
+ event_kind TEXT NOT NULL CHECK (
4
+ event_kind IN ('context_sync', 'reference_summary', 'promotion_reconcile')
5
+ ),
6
+ status TEXT NOT NULL CHECK (
7
+ status IN ('running', 'completed', 'failed', 'needs_human', 'skipped')
8
+ ),
9
+ summary TEXT,
10
+ activity_ref TEXT,
11
+ workflow_ref TEXT,
12
+ task_id TEXT,
13
+ commit_oid TEXT,
14
+ meta_json TEXT NOT NULL DEFAULT '[]' CHECK (
15
+ json_valid(meta_json) AND json_type(meta_json) = 'array'
16
+ ),
17
+ occurred_at TEXT NOT NULL
18
+ );
19
+
20
+ CREATE INDEX IF NOT EXISTS idx_project_timeline_events_order
21
+ ON project_timeline_events (occurred_at, id);
22
+
23
+ CREATE INDEX IF NOT EXISTS idx_project_timeline_events_activity_ref
24
+ ON project_timeline_events (activity_ref, occurred_at, id)
25
+ WHERE activity_ref IS NOT NULL;
26
+
27
+ CREATE INDEX IF NOT EXISTS idx_project_timeline_events_workflow_ref
28
+ ON project_timeline_events (workflow_ref, occurred_at, id)
29
+ WHERE workflow_ref IS NOT NULL;
30
+
31
+ CREATE INDEX IF NOT EXISTS idx_project_timeline_events_task_id
32
+ ON project_timeline_events (task_id, occurred_at, id)
33
+ WHERE task_id IS NOT NULL;
@@ -0,0 +1,13 @@
1
+ CREATE TABLE IF NOT EXISTS project_brief (
2
+ id TEXT PRIMARY KEY CHECK (id = 'current'),
3
+ product_summary TEXT NOT NULL,
4
+ tech_summary TEXT NOT NULL,
5
+ structure_summary TEXT NOT NULL,
6
+ principles_summary TEXT NOT NULL,
7
+ source_docs_json TEXT NOT NULL CHECK (
8
+ json_valid(source_docs_json) AND json_type(source_docs_json) = 'array'
9
+ ),
10
+ updated_by_activity_ref TEXT,
11
+ updated_by_workflow_ref TEXT,
12
+ updated_at TEXT NOT NULL
13
+ );
@@ -0,0 +1,5 @@
1
+ ALTER TABLE messages
2
+ ADD COLUMN author_avatar_json TEXT CHECK (
3
+ author_avatar_json IS NULL
4
+ OR (json_valid(author_avatar_json) AND json_type(author_avatar_json) = 'object')
5
+ );
@@ -0,0 +1,44 @@
1
+ # migrations
2
+
3
+ ## 作用
4
+
5
+ 这里保存 `apps/server` 本地 SQLite store 的 numbered SQL migrations。
6
+
7
+ ## 约定
8
+
9
+ - migration 文件命名使用 `0001_init.sql`、`0002_<name>.sql` 形式。
10
+ - migration 归 host server 所有,不放入 `packages/shared`。
11
+ - `schema_migrations` 记录已应用版本、checksum 和应用时间。
12
+ - SQLite adapter 初始化必须先开启 foreign keys、WAL 和合理 busy timeout;这些 PRAGMA 不放进 numbered migration 文件。
13
+
14
+ ## 当前 migrations
15
+
16
+ - `0001_init.sql`:初始化本地 `tutti.sqlite`,包含协作 truth records、store metadata、command idempotency、clarification replay hint、索引和关键 trigger。
17
+ - `0002_allow_sealed_round_successor_note.sql`:允许 Control Plane 在 sealed clarification round 内追加只读 Tutti successor 结论消息,同时继续禁止人类补充消息写入 sealed round。
18
+ - `0003_drop_scratchpad_source_message_refs.sql`:从 Scratchpad 持久化中移除不再暴露给模型、API 或 UI 的来源消息追溯字段。
19
+ - `0004_read_state.sql`:为 Chat / Worklist 未读摘要新增 read notification events 与 per-account read-state cursor,并从已有消息、任务、任务详情和 run result 回填初始事件。
20
+ - `0005_provider_usage.sql`:新增 provider token usage append-only ledger,用于 Timeline token overview projection。
21
+ - `0006_scratchpad_source_state.sql`:新增自动 Scratchpad refresh 的本机 source cursor / dirty / in-flight / backoff 状态表。
22
+ - `0007_workspace_signal_read_state_scopes.sql`:扩展 read-state scope,允许 References 与 Skills 写入模块更新通知事件。
23
+ - `0008_provider_usage_anchors.sql`:为 provider usage ledger 增加可空 activity / workflow / task / run result anchor 字段,供 Timeline 尽力把 token usage 挂到可证明的历史节点。
24
+ - `0009_project_timeline_events.sql`:新增 Timeline 专用 append-only durable event 表,用于记录缺少其他稳定 record 的 context sync、reference summary 与 promotion reconcile 轻量可观测性节点。
25
+ - `0010_project_brief.sql`:新增 host-local Project Brief projection 表,用于保存四个 baseline Project Docs 的短摘要和 source fingerprint。
26
+ - `0011_message_author_avatar.sql`:为消息作者增加可选 Relay account avatar 快照,保证跨浏览器查看历史消息时不依赖当前 viewer profile 或 presence sample。
27
+
28
+ ## 当前实现状态
29
+
30
+ - `0001_init.sql`、`0002_allow_sealed_round_successor_note.sql`、`0003_drop_scratchpad_source_message_refs.sql`、`0004_read_state.sql`、`0005_provider_usage.sql`、`0006_scratchpad_source_state.sql`、`0007_workspace_signal_read_state_scopes.sql`、`0008_provider_usage_anchors.sql`、`0009_project_timeline_events.sql`、`0010_project_brief.sql` 与 `0011_message_author_avatar.sql` 已存在,代表当前 host project SQLite schema contract。
31
+ - SQLite adapter、migration runner、checksum 校验、store metadata 初始化、transaction helper 与 command recovery scan helper 已实现。
32
+ - 协作 repository 与 Control Plane 已实现第一批业务读写;Phase 7 首批已复用 `0001_init.sql` 中的 `tasks.latest_run_result_id`、`task_details.result_json` 与 `run_results` 表完成 Run result / checks / promotion 摘要持久化。Control Plane recovery resolver 与 task-bound continuation / retry 复用现有 schema;deterministic promotion reconcile 的业务 truth 仍写入最终 Run result / task detail result,Timeline 轻量节点写入 `project_timeline_events`,merge workspace 不进入 SQLite truth。`provider_usage_events` 只保存 token 计数、调用来源、模型名、记录时间和可空 anchor,不保存 provider secret、prompt 或 raw response。store 基础设施本身已经可以创建并迁移 `tutti.sqlite`。
33
+
34
+ ## PRAGMA 边界
35
+
36
+ `PRAGMA foreign_keys = ON`、`PRAGMA journal_mode = WAL` 与 `PRAGMA busy_timeout = 5000` 属于 SQLite connection / adapter 初始化步骤。
37
+
38
+ 原因:
39
+
40
+ - `journal_mode = WAL` 不能安全放进事务包裹的 migration runner。
41
+ - numbered migration 应只包含 schema 变更,便于统一 checksum、事务执行和回滚解释。
42
+ - store adapter 每次打开连接都应显式设置 `foreign_keys` 与 `busy_timeout`。
43
+
44
+ schema 设计说明见 [../../../docs/system/sqlite-store-schema.md](../../../docs/system/sqlite-store-schema.md)。
@@ -0,0 +1,164 @@
1
+ import { type HostConnectionRef, type IdempotencyKey, type ProjectId, type RelayProjectRef, type RelayUploadRef } from "@tutti/shared/ids";
2
+ import type { RelayUploadPurpose, Sha256Digest } from "@tutti/shared/schemas/api";
3
+ export type RelayHostControlFetch = (input: string | URL, init?: RequestInit) => Promise<Response>;
4
+ export type RelayProjectProjection = {
5
+ relay_project_ref: RelayProjectRef;
6
+ display_name: string;
7
+ host_status: "online" | "offline" | "unknown";
8
+ };
9
+ export type HostConnectionProjection = {
10
+ host_connection_ref: HostConnectionRef;
11
+ relay_project_ref: RelayProjectRef;
12
+ status: "registered" | "online" | "replaced";
13
+ heartbeat_interval_ms: number;
14
+ tunnel_url: string;
15
+ connected_at: string;
16
+ };
17
+ export type JoinTokenProjection = {
18
+ join_url?: string;
19
+ expires_at: string;
20
+ reusable: true;
21
+ state: "active" | "expired" | "revoked";
22
+ visibility: "visible_once" | "not_recoverable";
23
+ };
24
+ export type RegisterRelayHostConnectionPayload = {
25
+ project_identity: {
26
+ source: "git_config";
27
+ project_id: ProjectId;
28
+ };
29
+ host_auth: {
30
+ kind: "host_registration_secret_v1";
31
+ secret: string;
32
+ };
33
+ display_name: string;
34
+ host: {
35
+ server_version: string;
36
+ host_project_api_base_path: "/api/v1";
37
+ capabilities: {
38
+ sse: boolean;
39
+ provider_config_query: boolean;
40
+ browser_secret_write: false;
41
+ repo_viewer: boolean;
42
+ };
43
+ };
44
+ join_token?: {
45
+ mode: "reuse_active" | "rotate";
46
+ ttl_seconds?: number;
47
+ };
48
+ };
49
+ export type RegisterRelayHostConnectionResult = {
50
+ relay_project: RelayProjectProjection;
51
+ host_connection: HostConnectionProjection;
52
+ join_token: JoinTokenProjection;
53
+ host_connection_token: string;
54
+ };
55
+ export type RegisterRelayHostConnectionResponse = {
56
+ command_id: IdempotencyKey;
57
+ disposition: {
58
+ kind: "registered";
59
+ } | {
60
+ kind: "interrupted";
61
+ retry_with_new_command_id: true;
62
+ };
63
+ result?: RegisterRelayHostConnectionResult;
64
+ };
65
+ export type RefreshRelayJoinTokenPayload = {
66
+ project_identity: {
67
+ source: "git_config";
68
+ project_id: ProjectId;
69
+ };
70
+ host_auth: {
71
+ kind: "host_registration_secret_v1";
72
+ secret: string;
73
+ };
74
+ relay_project_ref: RelayProjectRef;
75
+ host_connection_ref: HostConnectionRef;
76
+ join_token?: {
77
+ mode: "reuse_active" | "rotate";
78
+ ttl_seconds?: number;
79
+ };
80
+ };
81
+ export type RefreshRelayJoinTokenResponse = {
82
+ join_token: JoinTokenProjection;
83
+ };
84
+ export type RelayUploadProjection = {
85
+ upload_id: RelayUploadRef;
86
+ relay_project_ref: RelayProjectRef;
87
+ purpose: RelayUploadPurpose;
88
+ file_name: string;
89
+ size_bytes: number;
90
+ sha256: Sha256Digest;
91
+ media_type?: string;
92
+ expires_at: string;
93
+ };
94
+ export type RelayUploadSignedRequest = {
95
+ method: "GET" | "DELETE";
96
+ url: string;
97
+ };
98
+ export type ResolveRelayUploadResponse = {
99
+ upload: RelayUploadProjection;
100
+ get: RelayUploadSignedRequest & {
101
+ method: "GET";
102
+ };
103
+ delete: RelayUploadSignedRequest & {
104
+ method: "DELETE";
105
+ };
106
+ };
107
+ export type CompleteRelayUploadResponse = {
108
+ upload: RelayUploadProjection;
109
+ };
110
+ export type RegisterRelayHostConnectionOptions = {
111
+ relayUrl: string;
112
+ projectId: ProjectId;
113
+ hostRegistrationSecret: string;
114
+ displayName: string;
115
+ serverVersion: string;
116
+ commandId?: IdempotencyKey;
117
+ issuedAt?: Date;
118
+ joinToken?: {
119
+ mode: "reuse_active" | "rotate";
120
+ ttlSeconds?: number;
121
+ };
122
+ capabilities?: Partial<RegisterRelayHostConnectionPayload["host"]["capabilities"]>;
123
+ fetch?: RelayHostControlFetch;
124
+ timeoutMs?: number;
125
+ };
126
+ export type RefreshRelayJoinTokenOptions = {
127
+ relayUrl: string;
128
+ projectId: ProjectId;
129
+ relayProjectRef: RelayProjectRef;
130
+ hostConnectionRef: HostConnectionRef;
131
+ hostRegistrationSecret: string;
132
+ joinToken?: {
133
+ mode: "reuse_active" | "rotate";
134
+ ttlSeconds?: number;
135
+ };
136
+ fetch?: RelayHostControlFetch;
137
+ timeoutMs?: number;
138
+ };
139
+ export type ResolveRelayUploadOptions = {
140
+ relayUrl: string;
141
+ projectId: ProjectId;
142
+ relayProjectRef: RelayProjectRef;
143
+ hostConnectionRef: HostConnectionRef;
144
+ hostRegistrationSecret: string;
145
+ uploadId: RelayUploadRef;
146
+ fetch?: RelayHostControlFetch;
147
+ timeoutMs?: number;
148
+ };
149
+ export type CompleteRelayUploadOptions = ResolveRelayUploadOptions & {
150
+ status: "completed" | "aborted";
151
+ };
152
+ export type RelayHostControlClientErrorCode = "relay_unavailable" | "relay_registration_failed";
153
+ export declare class RelayHostControlClientError extends Error {
154
+ readonly code: RelayHostControlClientErrorCode;
155
+ readonly retryable: boolean;
156
+ readonly statusCode?: number | undefined;
157
+ readonly relayErrorCode?: string | undefined;
158
+ constructor(code: RelayHostControlClientErrorCode, message: string, retryable: boolean, statusCode?: number | undefined, relayErrorCode?: string | undefined);
159
+ }
160
+ export declare function registerRelayHostConnection(options: RegisterRelayHostConnectionOptions): Promise<RegisterRelayHostConnectionResponse>;
161
+ export declare function refreshRelayJoinToken(options: RefreshRelayJoinTokenOptions): Promise<RefreshRelayJoinTokenResponse>;
162
+ export declare function resolveRelayUpload(options: ResolveRelayUploadOptions): Promise<ResolveRelayUploadResponse>;
163
+ export declare function completeRelayUpload(options: CompleteRelayUploadOptions): Promise<CompleteRelayUploadResponse>;
164
+ //# sourceMappingURL=host-control.d.ts.map