youmd 0.11.0 → 0.13.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 (216) hide show
  1. package/dist/commands/brain.d.ts.map +1 -1
  2. package/dist/commands/brain.js +77 -28
  3. package/dist/commands/brain.js.map +1 -1
  4. package/dist/commands/chat.d.ts.map +1 -1
  5. package/dist/commands/chat.js +6 -1
  6. package/dist/commands/chat.js.map +1 -1
  7. package/dist/commands/connect.d.ts +113 -0
  8. package/dist/commands/connect.d.ts.map +1 -0
  9. package/dist/commands/connect.js +849 -0
  10. package/dist/commands/connect.js.map +1 -0
  11. package/dist/commands/conversations.d.ts +5 -0
  12. package/dist/commands/conversations.d.ts.map +1 -0
  13. package/dist/commands/conversations.js +116 -0
  14. package/dist/commands/conversations.js.map +1 -0
  15. package/dist/commands/founder.d.ts +16 -0
  16. package/dist/commands/founder.d.ts.map +1 -0
  17. package/dist/commands/founder.js +446 -0
  18. package/dist/commands/founder.js.map +1 -0
  19. package/dist/commands/handoff.d.ts +5 -0
  20. package/dist/commands/handoff.d.ts.map +1 -0
  21. package/dist/commands/handoff.js +432 -0
  22. package/dist/commands/handoff.js.map +1 -0
  23. package/dist/commands/orchestrate.d.ts +15 -0
  24. package/dist/commands/orchestrate.d.ts.map +1 -1
  25. package/dist/commands/orchestrate.js +294 -0
  26. package/dist/commands/orchestrate.js.map +1 -1
  27. package/dist/commands/project.d.ts.map +1 -1
  28. package/dist/commands/project.js +8 -1
  29. package/dist/commands/project.js.map +1 -1
  30. package/dist/commands/reconcile.d.ts +15 -0
  31. package/dist/commands/reconcile.d.ts.map +1 -0
  32. package/dist/commands/reconcile.js +260 -0
  33. package/dist/commands/reconcile.js.map +1 -0
  34. package/dist/commands/session.d.ts +28 -0
  35. package/dist/commands/session.d.ts.map +1 -0
  36. package/dist/commands/session.js +895 -0
  37. package/dist/commands/session.js.map +1 -0
  38. package/dist/commands/sync.d.ts.map +1 -1
  39. package/dist/commands/sync.js +11 -0
  40. package/dist/commands/sync.js.map +1 -1
  41. package/dist/commands/tasks.d.ts +20 -0
  42. package/dist/commands/tasks.d.ts.map +1 -1
  43. package/dist/commands/tasks.js +90 -19
  44. package/dist/commands/tasks.js.map +1 -1
  45. package/dist/generated/capability-registry.d.ts +444 -76
  46. package/dist/generated/capability-registry.d.ts.map +1 -1
  47. package/dist/generated/capability-registry.js +497 -76
  48. package/dist/generated/capability-registry.js.map +1 -1
  49. package/dist/index.js +122 -2
  50. package/dist/index.js.map +1 -1
  51. package/dist/lib/api.d.ts +393 -2
  52. package/dist/lib/api.d.ts.map +1 -1
  53. package/dist/lib/api.js +195 -2
  54. package/dist/lib/api.js.map +1 -1
  55. package/dist/lib/brain/adapters.d.ts +22 -1
  56. package/dist/lib/brain/adapters.d.ts.map +1 -1
  57. package/dist/lib/brain/adapters.js +184 -2
  58. package/dist/lib/brain/adapters.js.map +1 -1
  59. package/dist/lib/brain/approval-key-trust.d.ts +29 -0
  60. package/dist/lib/brain/approval-key-trust.d.ts.map +1 -0
  61. package/dist/lib/brain/approval-key-trust.js +139 -0
  62. package/dist/lib/brain/approval-key-trust.js.map +1 -0
  63. package/dist/lib/brain/content.d.ts +10 -3
  64. package/dist/lib/brain/content.d.ts.map +1 -1
  65. package/dist/lib/brain/content.js +133 -30
  66. package/dist/lib/brain/content.js.map +1 -1
  67. package/dist/lib/brain/descriptor-validator.d.ts +11 -0
  68. package/dist/lib/brain/descriptor-validator.d.ts.map +1 -0
  69. package/dist/lib/brain/descriptor-validator.js +185 -0
  70. package/dist/lib/brain/descriptor-validator.js.map +1 -0
  71. package/dist/lib/brain/discovery.d.ts.map +1 -1
  72. package/dist/lib/brain/discovery.js +77 -50
  73. package/dist/lib/brain/discovery.js.map +1 -1
  74. package/dist/lib/brain/index.d.ts +2 -0
  75. package/dist/lib/brain/index.d.ts.map +1 -1
  76. package/dist/lib/brain/index.js +14 -4
  77. package/dist/lib/brain/index.js.map +1 -1
  78. package/dist/lib/brain/proposal.d.ts +53 -5
  79. package/dist/lib/brain/proposal.d.ts.map +1 -1
  80. package/dist/lib/brain/proposal.js +330 -94
  81. package/dist/lib/brain/proposal.js.map +1 -1
  82. package/dist/lib/brain/safe-file.d.ts +25 -1
  83. package/dist/lib/brain/safe-file.d.ts.map +1 -1
  84. package/dist/lib/brain/safe-file.js +250 -30
  85. package/dist/lib/brain/safe-file.js.map +1 -1
  86. package/dist/lib/brain/safety.d.ts.map +1 -1
  87. package/dist/lib/brain/safety.js +5 -0
  88. package/dist/lib/brain/safety.js.map +1 -1
  89. package/dist/lib/brain/staged-apply.d.ts +2 -1
  90. package/dist/lib/brain/staged-apply.d.ts.map +1 -1
  91. package/dist/lib/brain/staged-apply.js +6 -3
  92. package/dist/lib/brain/staged-apply.js.map +1 -1
  93. package/dist/lib/brain/store.d.ts +3 -0
  94. package/dist/lib/brain/store.d.ts.map +1 -1
  95. package/dist/lib/brain/store.js +68 -0
  96. package/dist/lib/brain/store.js.map +1 -1
  97. package/dist/lib/brain/sync.d.ts +48 -0
  98. package/dist/lib/brain/sync.d.ts.map +1 -1
  99. package/dist/lib/brain/sync.js +102 -0
  100. package/dist/lib/brain/sync.js.map +1 -1
  101. package/dist/lib/brain/types.d.ts +23 -0
  102. package/dist/lib/brain/types.d.ts.map +1 -1
  103. package/dist/lib/brain/vision.d.ts +35 -0
  104. package/dist/lib/brain/vision.d.ts.map +1 -0
  105. package/dist/lib/brain/vision.js +65 -0
  106. package/dist/lib/brain/vision.js.map +1 -0
  107. package/dist/lib/businessScaffold.d.ts +42 -0
  108. package/dist/lib/businessScaffold.d.ts.map +1 -0
  109. package/dist/lib/businessScaffold.js +150 -0
  110. package/dist/lib/businessScaffold.js.map +1 -0
  111. package/dist/lib/codex-device-auth.d.ts +94 -0
  112. package/dist/lib/codex-device-auth.d.ts.map +1 -0
  113. package/dist/lib/codex-device-auth.js +295 -0
  114. package/dist/lib/codex-device-auth.js.map +1 -0
  115. package/dist/lib/codex-job-control-plane.d.ts +67 -0
  116. package/dist/lib/codex-job-control-plane.d.ts.map +1 -0
  117. package/dist/lib/codex-job-control-plane.js +105 -0
  118. package/dist/lib/codex-job-control-plane.js.map +1 -0
  119. package/dist/lib/codex-readonly-job.d.ts +76 -0
  120. package/dist/lib/codex-readonly-job.d.ts.map +1 -0
  121. package/dist/lib/codex-readonly-job.js +196 -0
  122. package/dist/lib/codex-readonly-job.js.map +1 -0
  123. package/dist/lib/config.d.ts +7 -0
  124. package/dist/lib/config.d.ts.map +1 -1
  125. package/dist/lib/config.js +3 -0
  126. package/dist/lib/config.js.map +1 -1
  127. package/dist/lib/connected-access-native.d.ts +111 -0
  128. package/dist/lib/connected-access-native.d.ts.map +1 -0
  129. package/dist/lib/connected-access-native.js +403 -0
  130. package/dist/lib/connected-access-native.js.map +1 -0
  131. package/dist/lib/connected-context.d.ts +82 -0
  132. package/dist/lib/connected-context.d.ts.map +1 -0
  133. package/dist/lib/connected-context.js +610 -0
  134. package/dist/lib/connected-context.js.map +1 -0
  135. package/dist/lib/goalRegistryFile.d.ts +169 -0
  136. package/dist/lib/goalRegistryFile.d.ts.map +1 -0
  137. package/dist/lib/goalRegistryFile.js +518 -0
  138. package/dist/lib/goalRegistryFile.js.map +1 -0
  139. package/dist/lib/goalsFile.d.ts +101 -0
  140. package/dist/lib/goalsFile.d.ts.map +1 -0
  141. package/dist/lib/goalsFile.js +413 -0
  142. package/dist/lib/goalsFile.js.map +1 -0
  143. package/dist/lib/handoff.d.ts +170 -0
  144. package/dist/lib/handoff.d.ts.map +1 -0
  145. package/dist/lib/handoff.js +316 -0
  146. package/dist/lib/handoff.js.map +1 -0
  147. package/dist/lib/machine-identity.d.ts +2 -0
  148. package/dist/lib/machine-identity.d.ts.map +1 -1
  149. package/dist/lib/machine-identity.js +13 -6
  150. package/dist/lib/machine-identity.js.map +1 -1
  151. package/dist/lib/onboarding.d.ts +4 -1
  152. package/dist/lib/onboarding.d.ts.map +1 -1
  153. package/dist/lib/onboarding.js +11 -3
  154. package/dist/lib/onboarding.js.map +1 -1
  155. package/dist/lib/orchestrator/loop.d.ts.map +1 -1
  156. package/dist/lib/orchestrator/loop.js +8 -3
  157. package/dist/lib/orchestrator/loop.js.map +1 -1
  158. package/dist/lib/orchestrator/run-journal.d.ts +68 -3
  159. package/dist/lib/orchestrator/run-journal.d.ts.map +1 -1
  160. package/dist/lib/orchestrator/run-journal.js +391 -37
  161. package/dist/lib/orchestrator/run-journal.js.map +1 -1
  162. package/dist/lib/orchestrator/supervisor.d.ts +11 -0
  163. package/dist/lib/orchestrator/supervisor.d.ts.map +1 -1
  164. package/dist/lib/orchestrator/supervisor.js +304 -116
  165. package/dist/lib/orchestrator/supervisor.js.map +1 -1
  166. package/dist/lib/orchestrator/tools.d.ts.map +1 -1
  167. package/dist/lib/orchestrator/tools.js +76 -3
  168. package/dist/lib/orchestrator/tools.js.map +1 -1
  169. package/dist/lib/redact.d.ts.map +1 -1
  170. package/dist/lib/redact.js +40 -7
  171. package/dist/lib/redact.js.map +1 -1
  172. package/dist/lib/remote-agent-event.d.ts +19 -0
  173. package/dist/lib/remote-agent-event.d.ts.map +1 -0
  174. package/dist/lib/remote-agent-event.js +85 -0
  175. package/dist/lib/remote-agent-event.js.map +1 -0
  176. package/dist/lib/remote-command.d.ts.map +1 -1
  177. package/dist/lib/remote-command.js +19 -0
  178. package/dist/lib/remote-command.js.map +1 -1
  179. package/dist/lib/remote-executor.d.ts +7 -1
  180. package/dist/lib/remote-executor.d.ts.map +1 -1
  181. package/dist/lib/remote-executor.js +391 -0
  182. package/dist/lib/remote-executor.js.map +1 -1
  183. package/dist/lib/sessionCheckpoint.d.ts +104 -0
  184. package/dist/lib/sessionCheckpoint.d.ts.map +1 -0
  185. package/dist/lib/sessionCheckpoint.js +191 -0
  186. package/dist/lib/sessionCheckpoint.js.map +1 -0
  187. package/dist/lib/sessionHandoff.d.ts +47 -0
  188. package/dist/lib/sessionHandoff.d.ts.map +1 -0
  189. package/dist/lib/sessionHandoff.js +305 -0
  190. package/dist/lib/sessionHandoff.js.map +1 -0
  191. package/dist/lib/stream.d.ts +3 -1
  192. package/dist/lib/stream.d.ts.map +1 -1
  193. package/dist/lib/stream.js +8 -3
  194. package/dist/lib/stream.js.map +1 -1
  195. package/dist/lib/taskLedgerProposal.d.ts +2 -2
  196. package/dist/lib/taskLedgerProposal.d.ts.map +1 -1
  197. package/dist/lib/taskLedgerProposal.js +16 -8
  198. package/dist/lib/taskLedgerProposal.js.map +1 -1
  199. package/dist/lib/tasksFile.d.ts +14 -2
  200. package/dist/lib/tasksFile.d.ts.map +1 -1
  201. package/dist/lib/tasksFile.js +39 -5
  202. package/dist/lib/tasksFile.js.map +1 -1
  203. package/dist/mcp/registry.d.ts +4 -1
  204. package/dist/mcp/registry.d.ts.map +1 -1
  205. package/dist/mcp/registry.js +230 -1
  206. package/dist/mcp/registry.js.map +1 -1
  207. package/dist/mcp/server.d.ts +1 -1
  208. package/dist/mcp/server.d.ts.map +1 -1
  209. package/dist/mcp/server.js +18 -9
  210. package/dist/mcp/server.js.map +1 -1
  211. package/native/prebuilds/darwin-universal/youmd_safe_open.node +0 -0
  212. package/package.json +4 -2
  213. package/scripts/env-vault/README.md +16 -20
  214. package/scripts/env-vault/backup.sh +22 -57
  215. package/scripts/env-vault/restore.sh +18 -96
  216. package/scripts/smoke-safe-open-node.cjs +50 -0
package/dist/lib/api.d.ts CHANGED
@@ -2,7 +2,9 @@
2
2
  * API client for communicating with the You.md Convex backend.
3
3
  * Uses the HTTP action endpoints at the Convex site URL.
4
4
  */
5
- import type { ProjectBrainContentPayload, ProjectBrainScan } from "./brain";
5
+ import type { ProjectBrainApprovalVerificationKey, ProjectBrainContentPayload, ProjectBrainScan } from "./brain";
6
+ import type { ProjectVisionIndex } from "./brain/vision";
7
+ import type { PortableSessionCheckpoint } from "./sessionCheckpoint";
6
8
  export interface ApiResponse<T = unknown> {
7
9
  ok: boolean;
8
10
  status: number;
@@ -18,6 +20,53 @@ export interface RealtimeSyncSession {
18
20
  canReadVaultMetadata: boolean;
19
21
  secretValuesExposed: false;
20
22
  }
23
+ export interface ConversationProofSession {
24
+ sessionId: string;
25
+ surface: string;
26
+ projectRef: string;
27
+ taskRef: string | null;
28
+ titleSha256: string | null;
29
+ archived: boolean;
30
+ messageCount: number;
31
+ attachmentCount: number;
32
+ createdAt: number;
33
+ updatedAt: number;
34
+ lastMessageAt: number;
35
+ }
36
+ export interface ConversationProofMessage {
37
+ messageId: string;
38
+ role: string;
39
+ ordinal: number;
40
+ contentSha256: string;
41
+ createdAt: number | null;
42
+ updatedAt: number | null;
43
+ }
44
+ export interface ConversationProofAttachment {
45
+ attachmentId: string;
46
+ messageId: string;
47
+ ordinal: number;
48
+ nameSha256: string;
49
+ mimeType: string;
50
+ sizeBytes: number;
51
+ width: number | null;
52
+ height: number | null;
53
+ sha256: string;
54
+ createdAt: number;
55
+ updatedAt: number;
56
+ }
57
+ /**
58
+ * Secret-safe, owner-scoped evidence that one durable conversation is
59
+ * identical across clients. Message content, attachment bytes, storage ids,
60
+ * and download URLs are deliberately absent from this contract.
61
+ */
62
+ export interface ConversationProof {
63
+ schema: "you-md/conversation-proof/v1";
64
+ version: 1;
65
+ session: ConversationProofSession;
66
+ messages: ConversationProofMessage[];
67
+ attachments: ConversationProofAttachment[];
68
+ revision: string;
69
+ }
21
70
  /**
22
71
  * Extract the server's error message from a failed response payload.
23
72
  * Error responses are JSON objects with an `error` field regardless of the
@@ -49,6 +98,7 @@ export declare function createRealtimeSyncSession(options?: {
49
98
  clientName?: string;
50
99
  ttlSeconds?: number;
51
100
  }): Promise<ApiResponse<RealtimeSyncSession>>;
101
+ export declare function getConversationProof(sessionId: string): Promise<ApiResponse<ConversationProof>>;
52
102
  export interface AgentBusMessage {
53
103
  id?: string;
54
104
  messageId: string;
@@ -132,6 +182,242 @@ export declare function listAgentBusMessages(opts?: {
132
182
  since?: number;
133
183
  limit?: number;
134
184
  }): Promise<ApiResponse<AgentBusMessagesResponse>>;
185
+ export interface AgentSessionSnapshot {
186
+ id: string;
187
+ sessionKey: string;
188
+ runtime: string;
189
+ nativeSessionId: string | null;
190
+ machineHostname: string;
191
+ machineRef: string | null;
192
+ workspacePath: string | null;
193
+ projectSlug: string | null;
194
+ repoFullName: string | null;
195
+ branch: string | null;
196
+ title: string | null;
197
+ contextSummary: string | null;
198
+ resumeHint: string | null;
199
+ gitState: {
200
+ dirtyFiles?: number;
201
+ ahead?: number;
202
+ behind?: number;
203
+ lastCommit?: string;
204
+ } | null;
205
+ status: string;
206
+ claimedByHost: string | null;
207
+ claimedAt: number | null;
208
+ lastEventAt: number;
209
+ createdAt: number;
210
+ updatedAt: number;
211
+ checkpoint?: PortableSessionCheckpoint | null;
212
+ secretValuesExposed: false;
213
+ }
214
+ export declare function publishAgentSession(payload: {
215
+ sessionKey: string;
216
+ runtime: string;
217
+ machineHostname: string;
218
+ nativeSessionId?: string;
219
+ machineRef?: string;
220
+ workspacePath?: string;
221
+ projectSlug?: string;
222
+ repoFullName?: string;
223
+ branch?: string;
224
+ title?: string;
225
+ contextSummary?: string;
226
+ resumeHint?: string;
227
+ gitState?: {
228
+ dirtyFiles?: number;
229
+ ahead?: number;
230
+ behind?: number;
231
+ lastCommit?: string;
232
+ };
233
+ status?: string;
234
+ lastEventAt?: number;
235
+ checkpoint?: PortableSessionCheckpoint;
236
+ }): Promise<ApiResponse<{
237
+ success: boolean;
238
+ schemaVersion: "you-md/agent-session/v1";
239
+ session: AgentSessionSnapshot;
240
+ secretValuesExposed: false;
241
+ }>>;
242
+ export declare function listAgentSessions(opts?: {
243
+ status?: string;
244
+ machine?: string;
245
+ includeClosed?: boolean;
246
+ limit?: number;
247
+ }): Promise<ApiResponse<{
248
+ success: boolean;
249
+ schemaVersion: "you-md/agent-sessions/v1";
250
+ sessions: AgentSessionSnapshot[];
251
+ count: number;
252
+ secretValuesExposed: false;
253
+ }>>;
254
+ export declare function claimAgentSession(payload: {
255
+ sessionKey: string;
256
+ claimedByHost?: string;
257
+ close?: boolean;
258
+ }): Promise<ApiResponse<{
259
+ success: boolean;
260
+ schemaVersion: "you-md/agent-session/v1";
261
+ session: AgentSessionSnapshot;
262
+ secretValuesExposed: false;
263
+ }>>;
264
+ export interface FounderOverviewResponse {
265
+ success: boolean;
266
+ schemaVersion: "you-md/founder-overview/v1";
267
+ overview: Record<string, unknown>;
268
+ secretValuesExposed: false;
269
+ }
270
+ export declare function getFounderOverview(): Promise<ApiResponse<FounderOverviewResponse>>;
271
+ export interface BusinessOverviewProject {
272
+ slug: string;
273
+ name: string;
274
+ weeklyFocus: string | null;
275
+ weeklyIntent: string | null;
276
+ repoFullName: string | null;
277
+ [key: string]: unknown;
278
+ }
279
+ export interface BusinessOverviewEntry {
280
+ slug: string;
281
+ name: string;
282
+ tagline: string | null;
283
+ stage: string;
284
+ rootContextRepo: string | null;
285
+ rootContextPath: string | null;
286
+ revenueCurrency: string;
287
+ projects: BusinessOverviewProject[];
288
+ latestRevenue: Record<string, {
289
+ mrr: number | null;
290
+ revenue: number | null;
291
+ currency: string;
292
+ }>;
293
+ [key: string]: unknown;
294
+ }
295
+ export interface BusinessesOverviewResponse {
296
+ success: boolean;
297
+ schemaVersion: "you-md/businesses-overview/v1";
298
+ businesses: BusinessOverviewEntry[];
299
+ ungroupedProjects: BusinessOverviewProject[];
300
+ secretValuesExposed: false;
301
+ }
302
+ export declare function getBusinessesOverview(): Promise<ApiResponse<BusinessesOverviewResponse>>;
303
+ export declare function upsertBusinessRecord(payload: {
304
+ slug: string;
305
+ rootContextRepo?: string;
306
+ rootContextPath?: string;
307
+ }): Promise<ApiResponse<{
308
+ success: boolean;
309
+ schemaVersion: "you-md/business/v1";
310
+ business: Record<string, unknown>;
311
+ secretValuesExposed: false;
312
+ }>>;
313
+ export declare function connectBusinessStripe(payload: {
314
+ businessSlug: string;
315
+ apiKey?: string;
316
+ disconnect?: boolean;
317
+ }): Promise<ApiResponse<{
318
+ success: boolean;
319
+ schemaVersion: "you-md/stripe-connection/v1";
320
+ businessSlug: string;
321
+ keyPrefix?: string;
322
+ livemode?: boolean;
323
+ rotated?: boolean;
324
+ disconnected?: boolean;
325
+ secretValuesExposed: false;
326
+ }>>;
327
+ export declare function syncBusinessStripe(): Promise<ApiResponse<{
328
+ success: boolean;
329
+ schemaVersion: "you-md/stripe-sync/v1";
330
+ summary: {
331
+ attempted: number;
332
+ succeeded: number;
333
+ failed: number;
334
+ results: Array<{
335
+ businessSlug: string;
336
+ ok: boolean;
337
+ mrr?: number;
338
+ revenue?: number;
339
+ error?: string;
340
+ }>;
341
+ };
342
+ secretValuesExposed: false;
343
+ }>>;
344
+ export declare function migrateFounderPortfolio(): Promise<ApiResponse<{
345
+ success: boolean;
346
+ schemaVersion: "you-md/founder-portfolio-migration/v1";
347
+ migration: Record<string, unknown>;
348
+ secretValuesExposed: false;
349
+ }>>;
350
+ export interface ContextReconcilerSchedule {
351
+ enabled: boolean;
352
+ cadenceMinutes: number;
353
+ nextRunAt: number;
354
+ quietHoursStartMinute: number | null;
355
+ quietHoursEndMinute: number | null;
356
+ timezone: string | null;
357
+ monthlyCostCapUsd: number;
358
+ monthSpendBucket?: string | null;
359
+ monthCostUsd?: number;
360
+ modelPolicy?: string;
361
+ lastRunAt?: number | null;
362
+ lastRunRef?: string | null;
363
+ lastResult?: string | null;
364
+ }
365
+ export interface ContextReconcilerStatusResponse {
366
+ success: boolean;
367
+ schemaVersion: "you-md/context-reconciler-status/v1";
368
+ status: Record<string, unknown> & {
369
+ schedule?: ContextReconcilerSchedule | null;
370
+ };
371
+ secretValuesExposed: false;
372
+ }
373
+ export declare function getContextReconcilerStatus(): Promise<ApiResponse<ContextReconcilerStatusResponse>>;
374
+ export declare function runContextReconciliation(payload: {
375
+ holderRef: string;
376
+ machineRef: string;
377
+ }): Promise<ApiResponse<{
378
+ success: boolean;
379
+ schemaVersion: "you-md/context-reconciliation-run/v1";
380
+ result: Record<string, unknown>;
381
+ secretValuesExposed: false;
382
+ }>>;
383
+ export declare function getContextReconcilerSchedule(): Promise<ApiResponse<{
384
+ success: boolean;
385
+ schemaVersion: "you-md/context-reconciler-schedule/v1";
386
+ schedule: ContextReconcilerSchedule | null;
387
+ secretValuesExposed: false;
388
+ }>>;
389
+ export declare function updateContextReconcilerSchedule(payload: {
390
+ enabled: boolean;
391
+ cadenceMinutes?: number;
392
+ nextRunAt?: number;
393
+ quietHoursStartMinute?: number;
394
+ quietHoursEndMinute?: number;
395
+ timezone?: string;
396
+ monthlyCostCapUsd?: number;
397
+ }): Promise<ApiResponse<{
398
+ success: boolean;
399
+ schemaVersion: "you-md/context-reconciler-schedule/v1";
400
+ schedule: ContextReconcilerSchedule;
401
+ secretValuesExposed: false;
402
+ }>>;
403
+ export declare function publishSessionCheckpoint(checkpoint: PortableSessionCheckpoint): Promise<ApiResponse<{
404
+ success: boolean;
405
+ schemaVersion: "you-md/session-checkpoint/v1";
406
+ checkpoint: PortableSessionCheckpoint;
407
+ created: boolean;
408
+ secretValuesExposed: false;
409
+ }>>;
410
+ export declare function listSessionCheckpoints(options?: {
411
+ projectRef?: string;
412
+ sessionRef?: string;
413
+ limit?: number;
414
+ }): Promise<ApiResponse<{
415
+ success: boolean;
416
+ schemaVersion: "you-md/session-checkpoints/v1";
417
+ checkpoints: PortableSessionCheckpoint[];
418
+ count: number;
419
+ secretValuesExposed: false;
420
+ }>>;
135
421
  export declare function recordBrainActivity(payload: BrainActivityPayload): Promise<ApiResponse<{
136
422
  success: boolean;
137
423
  schemaVersion: "you-md/brain-activity/v1";
@@ -200,6 +486,78 @@ export declare function listRemoteCommands(opts?: {
200
486
  commands: RemoteCommandRecord[];
201
487
  count: number;
202
488
  }>>;
489
+ export type RemoteAgentEventKind = "started" | "progress" | "waiting" | "needs_input" | "completed" | "failed" | "stopped";
490
+ export type RemoteAgentEventStatus = "active" | "idle" | "waiting" | "blocked" | "done" | "error";
491
+ export type RemoteScreenCaptureState = "unavailable" | "disabled" | "permission_required" | "denied" | "error";
492
+ export interface RemoteAgentEventRecord {
493
+ id: string;
494
+ eventId: string;
495
+ hostKey: string;
496
+ hostName: string;
497
+ agentId: string;
498
+ agentName: string;
499
+ projectSlug: string | null;
500
+ sessionId: string;
501
+ kind: RemoteAgentEventKind;
502
+ status: RemoteAgentEventStatus;
503
+ summary: string;
504
+ detail: string | null;
505
+ sourceRuntime: string | null;
506
+ consent: {
507
+ eventStream: true;
508
+ source: string;
509
+ };
510
+ screenCapture: {
511
+ state: RemoteScreenCaptureState;
512
+ frame: null;
513
+ };
514
+ occurredAt: number;
515
+ expiresAt: number;
516
+ createdAt: number;
517
+ secretValuesExposed: false;
518
+ }
519
+ export declare function publishRemoteAgentEvent(payload: {
520
+ eventId: string;
521
+ hostKey: string;
522
+ hostName: string;
523
+ agentId: string;
524
+ agentName: string;
525
+ projectSlug?: string;
526
+ sessionId: string;
527
+ kind: RemoteAgentEventKind;
528
+ status: RemoteAgentEventStatus;
529
+ sourceRuntime?: string;
530
+ consent: {
531
+ eventStream: true;
532
+ source: string;
533
+ };
534
+ screenCaptureState?: RemoteScreenCaptureState;
535
+ occurredAt?: number;
536
+ expiresAt?: number;
537
+ }): Promise<ApiResponse<{
538
+ success: boolean;
539
+ schemaVersion: "you-md/remote-agent-event/v1";
540
+ event: RemoteAgentEventRecord;
541
+ secretValuesExposed: false;
542
+ }>>;
543
+ export declare function listRemoteAgentEvents(opts?: {
544
+ hostKey?: string;
545
+ hostName?: string;
546
+ sessionId?: string;
547
+ projectSlug?: string;
548
+ since?: number;
549
+ limit?: number;
550
+ }): Promise<ApiResponse<{
551
+ success: boolean;
552
+ schemaVersion: "you-md/remote-agent-events/v1";
553
+ events: RemoteAgentEventRecord[];
554
+ count: number;
555
+ screenCapture: {
556
+ state: "unavailable";
557
+ reason: string;
558
+ };
559
+ secretValuesExposed: false;
560
+ }>>;
203
561
  export interface DeviceStartData {
204
562
  deviceCode: string;
205
563
  userCode: string;
@@ -386,6 +744,7 @@ export interface PortfolioTaskPayload {
386
744
  projectSlug?: string;
387
745
  title: string;
388
746
  description?: string;
747
+ verify?: string;
389
748
  goal?: string;
390
749
  successCriteria?: string;
391
750
  parentId?: string;
@@ -408,6 +767,23 @@ export interface PortfolioTaskPayload {
408
767
  }
409
768
  export interface PortfolioWriteResult {
410
769
  success: boolean;
770
+ accepted?: boolean;
771
+ authority?: "repository" | "convex";
772
+ applyRequired?: boolean;
773
+ proposal?: {
774
+ proposalId: string;
775
+ proposalRef: string;
776
+ mutationRef: string;
777
+ status: string;
778
+ filesystemApplied: false;
779
+ };
780
+ taskProposals?: Array<{
781
+ proposalId: string;
782
+ proposalRef: string;
783
+ mutationRef: string;
784
+ status: string;
785
+ filesystemApplied: false;
786
+ }>;
411
787
  taskId?: string;
412
788
  captureId?: string;
413
789
  taskIds?: string[];
@@ -439,6 +815,7 @@ export interface PortfolioTaskUpdatePayload {
439
815
  projectSlug?: string | null;
440
816
  title?: string;
441
817
  description?: string | null;
818
+ verify?: string | null;
442
819
  goal?: string | null;
443
820
  successCriteria?: string | null;
444
821
  parentId?: string | null;
@@ -1301,9 +1678,23 @@ export interface ProjectBrainContentUploadResponse {
1301
1678
  }>;
1302
1679
  secretValuesExposed: false;
1303
1680
  }
1681
+ /** Read one hosted, revision-bound Vision Artifact reference index. */
1682
+ export declare function getHostedProjectVision(project: string): Promise<ApiResponse<ProjectVisionIndex>>;
1683
+ export interface ProjectBrainApprovalKeySet {
1684
+ schemaVersion: "you-md/project-brain-approval-jwks/v1";
1685
+ keys: ProjectBrainApprovalVerificationKey[];
1686
+ cacheMaxAgeSeconds: 300;
1687
+ approvalMaxAgeSeconds: 900;
1688
+ minimumRotationOverlapSeconds: 1200;
1689
+ secretValuesExposed: false;
1690
+ }
1691
+ /** Public verification material for exact hosted Project Brain approvals. */
1692
+ export declare function getProjectBrainApprovalVerificationKeys(options?: {
1693
+ refresh?: boolean;
1694
+ }): Promise<ApiResponse<ProjectBrainApprovalKeySet>>;
1304
1695
  export declare function uploadProjectBrainSnapshot(snapshot: ProjectBrainScan): Promise<ApiResponse<ProjectBrainSnapshotUploadResponse>>;
1305
1696
  export declare function uploadProjectBrainArtifactContents(payload: ProjectBrainContentPayload): Promise<ApiResponse<ProjectBrainContentUploadResponse>>;
1306
- export type ProjectBrainApplyCapability = "managed_write" | "task_write";
1697
+ export type ProjectBrainApplyCapability = "descriptor_adopt" | "managed_write" | "task_write";
1307
1698
  export type ProjectBrainApplyStatus = "claimed" | "applying" | "applied" | "rollback_failed" | "manual_recovery_required";
1308
1699
  export type ProjectBrainApplyFailureCode = "safe_open_failed" | "stale_base" | "encryption_unavailable" | "write_failed" | "verification_failed" | "rollback_failed" | "manual_recovery_required" | "unknown";
1309
1700
  export interface ProjectBrainApplyBinding {