@shpitdev/convex-cliproxy-observability 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 (129) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/LICENSE +201 -0
  3. package/README.md +40 -0
  4. package/dist/capture/index.d.ts +79 -0
  5. package/dist/capture/index.d.ts.map +1 -0
  6. package/dist/capture/index.js +182 -0
  7. package/dist/capture/index.js.map +1 -0
  8. package/dist/client.d.ts +129 -0
  9. package/dist/client.d.ts.map +1 -0
  10. package/dist/client.js +232 -0
  11. package/dist/client.js.map +1 -0
  12. package/dist/component/_generated/api.d.ts +12 -0
  13. package/dist/component/_generated/api.d.ts.map +1 -0
  14. package/dist/component/_generated/api.js +7 -0
  15. package/dist/component/_generated/api.js.map +1 -0
  16. package/dist/component/_generated/component.d.ts +17 -0
  17. package/dist/component/_generated/component.d.ts.map +1 -0
  18. package/dist/component/_generated/component.js +3 -0
  19. package/dist/component/_generated/component.js.map +1 -0
  20. package/dist/component/_generated/dataModel.d.ts +8 -0
  21. package/dist/component/_generated/dataModel.d.ts.map +1 -0
  22. package/dist/component/_generated/dataModel.js +3 -0
  23. package/dist/component/_generated/dataModel.js.map +1 -0
  24. package/dist/component/_generated/server.d.ts +21 -0
  25. package/dist/component/_generated/server.d.ts.map +1 -0
  26. package/dist/component/_generated/server.js +11 -0
  27. package/dist/component/_generated/server.js.map +1 -0
  28. package/dist/component/convex.config.d.ts +4 -0
  29. package/dist/component/convex.config.d.ts.map +1 -0
  30. package/dist/component/convex.config.js +4 -0
  31. package/dist/component/convex.config.js.map +1 -0
  32. package/dist/component/ingest.d.ts +64 -0
  33. package/dist/component/ingest.d.ts.map +1 -0
  34. package/dist/component/ingest.js +309 -0
  35. package/dist/component/ingest.js.map +1 -0
  36. package/dist/component/queries.d.ts +136 -0
  37. package/dist/component/queries.d.ts.map +1 -0
  38. package/dist/component/queries.js +219 -0
  39. package/dist/component/queries.js.map +1 -0
  40. package/dist/component/schema.d.ts +159 -0
  41. package/dist/component/schema.d.ts.map +1 -0
  42. package/dist/component/schema.js +74 -0
  43. package/dist/component/schema.js.map +1 -0
  44. package/dist/content/index.d.ts +8 -0
  45. package/dist/content/index.d.ts.map +1 -0
  46. package/dist/content/index.js +41 -0
  47. package/dist/content/index.js.map +1 -0
  48. package/dist/model-call/index.d.ts +120 -0
  49. package/dist/model-call/index.d.ts.map +1 -0
  50. package/dist/model-call/index.js +96 -0
  51. package/dist/model-call/index.js.map +1 -0
  52. package/dist/projection.d.ts +19 -0
  53. package/dist/projection.d.ts.map +1 -0
  54. package/dist/projection.js +83 -0
  55. package/dist/projection.js.map +1 -0
  56. package/dist/protocols/anthropic-messages.d.ts +11 -0
  57. package/dist/protocols/anthropic-messages.d.ts.map +1 -0
  58. package/dist/protocols/anthropic-messages.js +114 -0
  59. package/dist/protocols/anthropic-messages.js.map +1 -0
  60. package/dist/protocols/chat-completions.d.ts +10 -0
  61. package/dist/protocols/chat-completions.d.ts.map +1 -0
  62. package/dist/protocols/chat-completions.js +89 -0
  63. package/dist/protocols/chat-completions.js.map +1 -0
  64. package/dist/protocols/checkpoint.d.ts +20 -0
  65. package/dist/protocols/checkpoint.d.ts.map +1 -0
  66. package/dist/protocols/checkpoint.js +318 -0
  67. package/dist/protocols/checkpoint.js.map +1 -0
  68. package/dist/protocols/content.d.ts +34 -0
  69. package/dist/protocols/content.d.ts.map +1 -0
  70. package/dist/protocols/content.js +40 -0
  71. package/dist/protocols/content.js.map +1 -0
  72. package/dist/protocols/framing.d.ts +20 -0
  73. package/dist/protocols/framing.d.ts.map +1 -0
  74. package/dist/protocols/framing.js +67 -0
  75. package/dist/protocols/framing.js.map +1 -0
  76. package/dist/protocols/index.d.ts +20 -0
  77. package/dist/protocols/index.d.ts.map +1 -0
  78. package/dist/protocols/index.js +139 -0
  79. package/dist/protocols/index.js.map +1 -0
  80. package/dist/protocols/output.d.ts +4 -0
  81. package/dist/protocols/output.d.ts.map +1 -0
  82. package/dist/protocols/output.js +81 -0
  83. package/dist/protocols/output.js.map +1 -0
  84. package/dist/protocols/responses.d.ts +12 -0
  85. package/dist/protocols/responses.d.ts.map +1 -0
  86. package/dist/protocols/responses.js +189 -0
  87. package/dist/protocols/responses.js.map +1 -0
  88. package/dist/protocols/types.d.ts +27 -0
  89. package/dist/protocols/types.d.ts.map +1 -0
  90. package/dist/protocols/types.js +2 -0
  91. package/dist/protocols/types.js.map +1 -0
  92. package/dist/protocols/usage.d.ts +3 -0
  93. package/dist/protocols/usage.d.ts.map +1 -0
  94. package/dist/protocols/usage.js +27 -0
  95. package/dist/protocols/usage.js.map +1 -0
  96. package/dist/protocols/values.d.ts +10 -0
  97. package/dist/protocols/values.d.ts.map +1 -0
  98. package/dist/protocols/values.js +32 -0
  99. package/dist/protocols/values.js.map +1 -0
  100. package/dist/test.d.ts +155 -0
  101. package/dist/test.d.ts.map +1 -0
  102. package/dist/test.js +8 -0
  103. package/dist/test.js.map +1 -0
  104. package/package.json +90 -0
  105. package/src/capture/index.ts +277 -0
  106. package/src/client.ts +286 -0
  107. package/src/component/_generated/api.ts +19 -0
  108. package/src/component/_generated/component.ts +32 -0
  109. package/src/component/_generated/dataModel.ts +15 -0
  110. package/src/component/_generated/server.ts +43 -0
  111. package/src/component/convex.config.ts +3 -0
  112. package/src/component/ingest.ts +328 -0
  113. package/src/component/queries.ts +248 -0
  114. package/src/component/schema.ts +73 -0
  115. package/src/content/index.ts +53 -0
  116. package/src/model-call/index.ts +224 -0
  117. package/src/projection.ts +99 -0
  118. package/src/protocols/anthropic-messages.ts +115 -0
  119. package/src/protocols/chat-completions.ts +94 -0
  120. package/src/protocols/checkpoint.ts +342 -0
  121. package/src/protocols/content.ts +41 -0
  122. package/src/protocols/framing.ts +62 -0
  123. package/src/protocols/index.ts +140 -0
  124. package/src/protocols/output.ts +78 -0
  125. package/src/protocols/responses.ts +188 -0
  126. package/src/protocols/types.ts +26 -0
  127. package/src/protocols/usage.ts +36 -0
  128. package/src/protocols/values.ts +35 -0
  129. package/src/test.ts +16 -0
@@ -0,0 +1,219 @@
1
+ import { v } from "convex/values";
2
+ import { query } from "./_generated/server.js";
3
+ async function summaryView(ctx, row) {
4
+ const summary = JSON.parse(row.summaryJson);
5
+ if (summary.state === "in_progress" && row.terminalSequence === undefined) {
6
+ const source = await ctx.db
7
+ .query("sourceStatus")
8
+ .withIndex("by_source", (q) => q.eq("destinationId", row.destinationId).eq("instanceId", row.instanceId))
9
+ .unique();
10
+ if (source?.healthJson && source.pluginBootId !== row.pluginBootId) {
11
+ summary.state = "unknown";
12
+ summary.capture.raw = "partial";
13
+ summary.capture.gaps = [...summary.capture.gaps, "completion_unobserved_prior_boot"].slice(-8);
14
+ }
15
+ }
16
+ return summary;
17
+ }
18
+ const owner = { destinationId: v.string(), callId: v.string() };
19
+ export const getCall = query({
20
+ args: owner,
21
+ handler: async (ctx, args) => {
22
+ const call = await ctx.db
23
+ .query("calls")
24
+ .withIndex("by_call", (q) => q.eq("destinationId", args.destinationId).eq("callId", args.callId))
25
+ .unique();
26
+ if (!call)
27
+ return null;
28
+ return {
29
+ ...call,
30
+ summaryJson: JSON.stringify(await summaryView(ctx, call)),
31
+ checkpointJson: undefined,
32
+ };
33
+ },
34
+ });
35
+ export const getProcessingState = query({
36
+ args: owner,
37
+ handler: async (ctx, args) => ctx.db
38
+ .query("calls")
39
+ .withIndex("by_call", (q) => q.eq("destinationId", args.destinationId).eq("callId", args.callId))
40
+ .unique(),
41
+ });
42
+ export const pageEventSegments = query({
43
+ args: { ...owner, afterSequence: v.optional(v.number()), limit: v.optional(v.number()) },
44
+ handler: async (ctx, args) => {
45
+ const limit = Math.max(1, Math.min(8, Math.floor(args.limit ?? 7)));
46
+ const rows = await ctx.db
47
+ .query("segments")
48
+ .withIndex("by_sequence", (q) => q
49
+ .eq("destinationId", args.destinationId)
50
+ .eq("callId", args.callId)
51
+ .gt("sequence", args.afterSequence ?? 0))
52
+ .take(limit + 1);
53
+ return {
54
+ segments: rows.slice(0, limit),
55
+ cursor: rows.length
56
+ ? rows[Math.min(rows.length, limit) - 1].throughSequence
57
+ : (args.afterSequence ?? 0),
58
+ done: rows.length <= limit,
59
+ };
60
+ },
61
+ });
62
+ const cursor = v.object({ receivedAt: v.number(), creationTime: v.number() });
63
+ export const pageRecentSummaries = query({
64
+ args: {
65
+ destinationId: v.string(),
66
+ cursor: v.optional(cursor),
67
+ limit: v.optional(v.number()),
68
+ correlation: v.optional(v.object({
69
+ kind: v.union(v.literal("requestId"), v.literal("runId"), v.literal("jobId"), v.literal("rootExecutionId"), v.literal("opencodeSessionId")),
70
+ value: v.string(),
71
+ })),
72
+ },
73
+ handler: async (ctx, args) => {
74
+ const limit = Math.max(1, Math.min(3, Math.floor(args.limit ?? 3)));
75
+ const correlation = args.correlation;
76
+ const c = args.cursor;
77
+ async function read(mode, take) {
78
+ if (correlation?.kind === "requestId")
79
+ return ctx.db
80
+ .query("calls")
81
+ .withIndex("by_request", (q) => {
82
+ const base = q
83
+ .eq("destinationId", args.destinationId)
84
+ .eq("requestId", correlation.value);
85
+ return !c
86
+ ? base
87
+ : mode === "tie"
88
+ ? base.eq("receivedAt", c.receivedAt).lt("_creationTime", c.creationTime)
89
+ : base.lt("receivedAt", c.receivedAt);
90
+ })
91
+ .order("desc")
92
+ .take(take);
93
+ if (correlation?.kind === "runId")
94
+ return ctx.db
95
+ .query("calls")
96
+ .withIndex("by_run", (q) => {
97
+ const base = q.eq("destinationId", args.destinationId).eq("runId", correlation.value);
98
+ return !c
99
+ ? base
100
+ : mode === "tie"
101
+ ? base.eq("receivedAt", c.receivedAt).lt("_creationTime", c.creationTime)
102
+ : base.lt("receivedAt", c.receivedAt);
103
+ })
104
+ .order("desc")
105
+ .take(take);
106
+ if (correlation?.kind === "jobId")
107
+ return ctx.db
108
+ .query("calls")
109
+ .withIndex("by_job", (q) => {
110
+ const base = q.eq("destinationId", args.destinationId).eq("jobId", correlation.value);
111
+ return !c
112
+ ? base
113
+ : mode === "tie"
114
+ ? base.eq("receivedAt", c.receivedAt).lt("_creationTime", c.creationTime)
115
+ : base.lt("receivedAt", c.receivedAt);
116
+ })
117
+ .order("desc")
118
+ .take(take);
119
+ if (correlation?.kind === "rootExecutionId")
120
+ return ctx.db
121
+ .query("calls")
122
+ .withIndex("by_root_execution", (q) => {
123
+ const base = q
124
+ .eq("destinationId", args.destinationId)
125
+ .eq("rootExecutionId", correlation.value);
126
+ return !c
127
+ ? base
128
+ : mode === "tie"
129
+ ? base.eq("receivedAt", c.receivedAt).lt("_creationTime", c.creationTime)
130
+ : base.lt("receivedAt", c.receivedAt);
131
+ })
132
+ .order("desc")
133
+ .take(take);
134
+ if (correlation?.kind === "opencodeSessionId")
135
+ return ctx.db
136
+ .query("calls")
137
+ .withIndex("by_opencode_session", (q) => {
138
+ const base = q
139
+ .eq("destinationId", args.destinationId)
140
+ .eq("opencodeSessionId", correlation.value);
141
+ return !c
142
+ ? base
143
+ : mode === "tie"
144
+ ? base.eq("receivedAt", c.receivedAt).lt("_creationTime", c.creationTime)
145
+ : base.lt("receivedAt", c.receivedAt);
146
+ })
147
+ .order("desc")
148
+ .take(take);
149
+ return ctx.db
150
+ .query("calls")
151
+ .withIndex("by_received", (q) => {
152
+ const base = q.eq("destinationId", args.destinationId);
153
+ return !c
154
+ ? base
155
+ : mode === "tie"
156
+ ? base.eq("receivedAt", c.receivedAt).lt("_creationTime", c.creationTime)
157
+ : base.lt("receivedAt", c.receivedAt);
158
+ })
159
+ .order("desc")
160
+ .take(take);
161
+ }
162
+ const rows = c ? await read("tie", limit + 1) : await read("first", limit + 1);
163
+ if (c && rows.length < limit + 1)
164
+ rows.push(...(await read("older", limit + 1 - rows.length)));
165
+ const calls = [];
166
+ let bytes = 256;
167
+ let next = args.cursor;
168
+ let consumed = 0;
169
+ for (const row of rows.slice(0, limit)) {
170
+ const view = await summaryView(ctx, row);
171
+ const summary = {
172
+ ...view,
173
+ sourceDocumentId: row._id,
174
+ receivedAt: row.receivedAt,
175
+ capture: {
176
+ ...view.capture,
177
+ projectedThroughSequence: row.projectedThroughSequence,
178
+ persistedThroughSequence: row.persistedThroughSequence,
179
+ },
180
+ };
181
+ const length = new TextEncoder().encode(JSON.stringify(summary)).byteLength;
182
+ if (bytes + length > 31 * 1024)
183
+ break;
184
+ calls.push(summary);
185
+ bytes += length;
186
+ consumed++;
187
+ next = { receivedAt: row.receivedAt, creationTime: row._creationTime };
188
+ }
189
+ return { calls, cursor: next ?? null, done: consumed === rows.length };
190
+ },
191
+ });
192
+ export const getCaptureCoverage = query({
193
+ args: { destinationId: v.string() },
194
+ handler: async (ctx, args) => {
195
+ const sources = await ctx.db
196
+ .query("sourceStatus")
197
+ .withIndex("by_source", (q) => q.eq("destinationId", args.destinationId))
198
+ .take(17);
199
+ return {
200
+ retention: "indefinite",
201
+ preHook: "unavailable",
202
+ previews: "not_enrolled",
203
+ attemptDetail: "unavailable",
204
+ sources: sources.slice(0, 16),
205
+ sourcesComplete: sources.length <= 16,
206
+ };
207
+ },
208
+ });
209
+ export const getBootHealth = query({
210
+ args: { destinationId: v.string(), instanceId: v.string(), pluginBootId: v.string() },
211
+ handler: async (ctx, args) => ctx.db
212
+ .query("bootHealth")
213
+ .withIndex("by_boot", (q) => q
214
+ .eq("destinationId", args.destinationId)
215
+ .eq("instanceId", args.instanceId)
216
+ .eq("pluginBootId", args.pluginBootId))
217
+ .unique(),
218
+ });
219
+ //# sourceMappingURL=queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/component/queries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ export declare const blobValue: import("convex/values").VObject<{
2
+ key: string;
3
+ sha256: string;
4
+ byteLength: number;
5
+ contentType: string;
6
+ }, {
7
+ key: import("convex/values").VString<string, "required">;
8
+ sha256: import("convex/values").VString<string, "required">;
9
+ byteLength: import("convex/values").VFloat64<number, "required">;
10
+ contentType: import("convex/values").VString<string, "required">;
11
+ }, "required", "key" | "sha256" | "byteLength" | "contentType">;
12
+ declare const _default: import("convex/server").SchemaDefinition<{
13
+ calls: import("convex/server").TableDefinition<import("convex/values").VObject<{
14
+ terminalSequence?: number | undefined;
15
+ projectionFailure?: {
16
+ reason: string;
17
+ at: number;
18
+ } | undefined;
19
+ requestId?: string | undefined;
20
+ runId?: string | undefined;
21
+ jobId?: string | undefined;
22
+ rootExecutionId?: string | undefined;
23
+ opencodeSessionId?: string | undefined;
24
+ destinationId: string;
25
+ callId: string;
26
+ instanceId: string;
27
+ pluginBootId: string;
28
+ executionId: string;
29
+ receivedAt: number;
30
+ revision: number;
31
+ projectedThroughSequence: number;
32
+ persistedThroughSequence: number;
33
+ summaryJson: string;
34
+ checkpointJson: string;
35
+ }, {
36
+ destinationId: import("convex/values").VString<string, "required">;
37
+ callId: import("convex/values").VString<string, "required">;
38
+ instanceId: import("convex/values").VString<string, "required">;
39
+ pluginBootId: import("convex/values").VString<string, "required">;
40
+ executionId: import("convex/values").VString<string, "required">;
41
+ receivedAt: import("convex/values").VFloat64<number, "required">;
42
+ revision: import("convex/values").VFloat64<number, "required">;
43
+ projectedThroughSequence: import("convex/values").VFloat64<number, "required">;
44
+ persistedThroughSequence: import("convex/values").VFloat64<number, "required">;
45
+ terminalSequence: import("convex/values").VFloat64<number | undefined, "optional">;
46
+ summaryJson: import("convex/values").VString<string, "required">;
47
+ checkpointJson: import("convex/values").VString<string, "required">;
48
+ projectionFailure: import("convex/values").VObject<{
49
+ reason: string;
50
+ at: number;
51
+ } | undefined, {
52
+ reason: import("convex/values").VString<string, "required">;
53
+ at: import("convex/values").VFloat64<number, "required">;
54
+ }, "optional", "reason" | "at">;
55
+ requestId: import("convex/values").VString<string | undefined, "optional">;
56
+ runId: import("convex/values").VString<string | undefined, "optional">;
57
+ jobId: import("convex/values").VString<string | undefined, "optional">;
58
+ rootExecutionId: import("convex/values").VString<string | undefined, "optional">;
59
+ opencodeSessionId: import("convex/values").VString<string | undefined, "optional">;
60
+ }, "required", "destinationId" | "callId" | "instanceId" | "pluginBootId" | "executionId" | "receivedAt" | "revision" | "projectedThroughSequence" | "persistedThroughSequence" | "terminalSequence" | "summaryJson" | "checkpointJson" | "projectionFailure" | "requestId" | "runId" | "jobId" | "rootExecutionId" | "opencodeSessionId" | "projectionFailure.reason" | "projectionFailure.at">, {
61
+ by_call: ["destinationId", "callId", "_creationTime"];
62
+ by_received: ["destinationId", "receivedAt", "_creationTime"];
63
+ by_request: ["destinationId", "requestId", "receivedAt", "_creationTime"];
64
+ by_run: ["destinationId", "runId", "receivedAt", "_creationTime"];
65
+ by_job: ["destinationId", "jobId", "receivedAt", "_creationTime"];
66
+ by_root_execution: ["destinationId", "rootExecutionId", "receivedAt", "_creationTime"];
67
+ by_opencode_session: ["destinationId", "opencodeSessionId", "receivedAt", "_creationTime"];
68
+ }, {}, {}>;
69
+ segments: import("convex/server").TableDefinition<import("convex/values").VObject<{
70
+ destinationId: string;
71
+ callId: string;
72
+ receivedAt: number;
73
+ reference: {
74
+ key: string;
75
+ sha256: string;
76
+ byteLength: number;
77
+ contentType: string;
78
+ };
79
+ sequence: number;
80
+ throughSequence: number;
81
+ identity: string;
82
+ digest: string;
83
+ }, {
84
+ destinationId: import("convex/values").VString<string, "required">;
85
+ callId: import("convex/values").VString<string, "required">;
86
+ sequence: import("convex/values").VFloat64<number, "required">;
87
+ throughSequence: import("convex/values").VFloat64<number, "required">;
88
+ identity: import("convex/values").VString<string, "required">;
89
+ digest: import("convex/values").VString<string, "required">;
90
+ reference: import("convex/values").VObject<{
91
+ key: string;
92
+ sha256: string;
93
+ byteLength: number;
94
+ contentType: string;
95
+ }, {
96
+ key: import("convex/values").VString<string, "required">;
97
+ sha256: import("convex/values").VString<string, "required">;
98
+ byteLength: import("convex/values").VFloat64<number, "required">;
99
+ contentType: import("convex/values").VString<string, "required">;
100
+ }, "required", "key" | "sha256" | "byteLength" | "contentType">;
101
+ receivedAt: import("convex/values").VFloat64<number, "required">;
102
+ }, "required", "destinationId" | "callId" | "receivedAt" | "reference" | "sequence" | "throughSequence" | "identity" | "digest" | "reference.key" | "reference.sha256" | "reference.byteLength" | "reference.contentType">, {
103
+ by_identity: ["destinationId", "identity", "_creationTime"];
104
+ by_sequence: ["destinationId", "callId", "sequence", "_creationTime"];
105
+ }, {}, {}>;
106
+ receipts: import("convex/server").TableDefinition<import("convex/values").VObject<{
107
+ destinationId: string;
108
+ callId: string;
109
+ receivedAt: number;
110
+ sequence: number;
111
+ identity: string;
112
+ digest: string;
113
+ }, {
114
+ destinationId: import("convex/values").VString<string, "required">;
115
+ identity: import("convex/values").VString<string, "required">;
116
+ digest: import("convex/values").VString<string, "required">;
117
+ callId: import("convex/values").VString<string, "required">;
118
+ sequence: import("convex/values").VFloat64<number, "required">;
119
+ receivedAt: import("convex/values").VFloat64<number, "required">;
120
+ }, "required", "destinationId" | "callId" | "receivedAt" | "sequence" | "identity" | "digest">, {
121
+ by_identity: ["destinationId", "identity", "_creationTime"];
122
+ }, {}, {}>;
123
+ bootHealth: import("convex/server").TableDefinition<import("convex/values").VObject<{
124
+ destinationId: string;
125
+ instanceId: string;
126
+ pluginBootId: string;
127
+ observedAt: number;
128
+ healthJson: string;
129
+ }, {
130
+ destinationId: import("convex/values").VString<string, "required">;
131
+ instanceId: import("convex/values").VString<string, "required">;
132
+ pluginBootId: import("convex/values").VString<string, "required">;
133
+ observedAt: import("convex/values").VFloat64<number, "required">;
134
+ healthJson: import("convex/values").VString<string, "required">;
135
+ }, "required", "destinationId" | "instanceId" | "pluginBootId" | "observedAt" | "healthJson">, {
136
+ by_boot: ["destinationId", "instanceId", "pluginBootId", "_creationTime"];
137
+ }, {}, {}>;
138
+ sourceStatus: import("convex/server").TableDefinition<import("convex/values").VObject<{
139
+ healthJson?: string | undefined;
140
+ destinationId: string;
141
+ instanceId: string;
142
+ pluginBootId: string;
143
+ lastObservedAt: string;
144
+ lastReceivedAt: number;
145
+ coverage: string;
146
+ }, {
147
+ destinationId: import("convex/values").VString<string, "required">;
148
+ instanceId: import("convex/values").VString<string, "required">;
149
+ pluginBootId: import("convex/values").VString<string, "required">;
150
+ lastObservedAt: import("convex/values").VString<string, "required">;
151
+ lastReceivedAt: import("convex/values").VFloat64<number, "required">;
152
+ coverage: import("convex/values").VString<string, "required">;
153
+ healthJson: import("convex/values").VString<string | undefined, "optional">;
154
+ }, "required", "destinationId" | "instanceId" | "pluginBootId" | "healthJson" | "lastObservedAt" | "lastReceivedAt" | "coverage">, {
155
+ by_source: ["destinationId", "instanceId", "_creationTime"];
156
+ }, {}, {}>;
157
+ }, true>;
158
+ export default _default;
159
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS;;;;;;;;;;+DAKpB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACH,wBAgEG"}
@@ -0,0 +1,74 @@
1
+ import { defineSchema, defineTable } from "convex/server";
2
+ import { v } from "convex/values";
3
+ export const blobValue = v.object({
4
+ key: v.string(),
5
+ sha256: v.string(),
6
+ byteLength: v.number(),
7
+ contentType: v.string(),
8
+ });
9
+ export default defineSchema({
10
+ calls: defineTable({
11
+ destinationId: v.string(),
12
+ callId: v.string(),
13
+ instanceId: v.string(),
14
+ pluginBootId: v.string(),
15
+ executionId: v.string(),
16
+ receivedAt: v.number(),
17
+ revision: v.number(),
18
+ projectedThroughSequence: v.number(),
19
+ persistedThroughSequence: v.number(),
20
+ terminalSequence: v.optional(v.number()),
21
+ summaryJson: v.string(),
22
+ checkpointJson: v.string(),
23
+ projectionFailure: v.optional(v.object({ reason: v.string(), at: v.number() })),
24
+ requestId: v.optional(v.string()),
25
+ runId: v.optional(v.string()),
26
+ jobId: v.optional(v.string()),
27
+ rootExecutionId: v.optional(v.string()),
28
+ opencodeSessionId: v.optional(v.string()),
29
+ })
30
+ .index("by_call", ["destinationId", "callId"])
31
+ .index("by_received", ["destinationId", "receivedAt"])
32
+ .index("by_request", ["destinationId", "requestId", "receivedAt"])
33
+ .index("by_run", ["destinationId", "runId", "receivedAt"])
34
+ .index("by_job", ["destinationId", "jobId", "receivedAt"])
35
+ .index("by_root_execution", ["destinationId", "rootExecutionId", "receivedAt"])
36
+ .index("by_opencode_session", ["destinationId", "opencodeSessionId", "receivedAt"]),
37
+ segments: defineTable({
38
+ destinationId: v.string(),
39
+ callId: v.string(),
40
+ sequence: v.number(),
41
+ throughSequence: v.number(),
42
+ identity: v.string(),
43
+ digest: v.string(),
44
+ reference: blobValue,
45
+ receivedAt: v.number(),
46
+ })
47
+ .index("by_identity", ["destinationId", "identity"])
48
+ .index("by_sequence", ["destinationId", "callId", "sequence"]),
49
+ receipts: defineTable({
50
+ destinationId: v.string(),
51
+ identity: v.string(),
52
+ digest: v.string(),
53
+ callId: v.string(),
54
+ sequence: v.number(),
55
+ receivedAt: v.number(),
56
+ }).index("by_identity", ["destinationId", "identity"]),
57
+ bootHealth: defineTable({
58
+ destinationId: v.string(),
59
+ instanceId: v.string(),
60
+ pluginBootId: v.string(),
61
+ observedAt: v.number(),
62
+ healthJson: v.string(),
63
+ }).index("by_boot", ["destinationId", "instanceId", "pluginBootId"]),
64
+ sourceStatus: defineTable({
65
+ destinationId: v.string(),
66
+ instanceId: v.string(),
67
+ pluginBootId: v.string(),
68
+ lastObservedAt: v.string(),
69
+ lastReceivedAt: v.number(),
70
+ coverage: v.string(),
71
+ healthJson: v.optional(v.string()),
72
+ }).index("by_source", ["destinationId", "instanceId"]),
73
+ });
74
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { PrivateContentReference } from "../model-call/index.js";
2
+ export type PrivateCaptureStorage = {
3
+ put: (reference: PrivateContentReference, bytes: Uint8Array) => Promise<void>;
4
+ get: (key: string) => Promise<ReadableStream<Uint8Array>>;
5
+ };
6
+ /** The host must obtain manifest from the authorized selected call, never from model content. */
7
+ export declare function resolveCallBlob(storage: Pick<PrivateCaptureStorage, "get">, manifest: readonly PrivateContentReference[], selected: PrivateContentReference, maxBytes?: number): Promise<Uint8Array>;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,CAAC,SAAS,EAAE,uBAAuB,EAAE,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;CAC3D,CAAC;AACF,iGAAiG;AACjG,wBAAsB,eAAe,CACnC,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC,EAC3C,QAAQ,EAAE,SAAS,uBAAuB,EAAE,EAC5C,QAAQ,EAAE,uBAAuB,EACjC,QAAQ,SAAkB,GACzB,OAAO,CAAC,UAAU,CAAC,CAwCrB"}
@@ -0,0 +1,41 @@
1
+ import { sha256 } from "../capture/index.js";
2
+ /** The host must obtain manifest from the authorized selected call, never from model content. */
3
+ export async function resolveCallBlob(storage, manifest, selected, maxBytes = 2 * 1024 * 1024) {
4
+ if (!manifest.some((ref) => ref.key === selected.key &&
5
+ ref.sha256 === selected.sha256 &&
6
+ ref.byteLength === selected.byteLength &&
7
+ ref.contentType === selected.contentType) ||
8
+ !Number.isSafeInteger(selected.byteLength) ||
9
+ selected.byteLength < 0 ||
10
+ selected.byteLength > maxBytes)
11
+ throw new Error("unowned or oversized content reference");
12
+ const reader = (await storage.get(selected.key)).getReader();
13
+ const chunks = [];
14
+ let size = 0;
15
+ try {
16
+ while (true) {
17
+ const { done, value } = await reader.read();
18
+ if (done)
19
+ break;
20
+ size += value.byteLength;
21
+ if (size > selected.byteLength || size > maxBytes) {
22
+ await reader.cancel();
23
+ throw new Error("stored content bound exceeded");
24
+ }
25
+ chunks.push(value);
26
+ }
27
+ }
28
+ finally {
29
+ reader.releaseLock();
30
+ }
31
+ const body = new Uint8Array(size);
32
+ let offset = 0;
33
+ for (const chunk of chunks) {
34
+ body.set(chunk, offset);
35
+ offset += chunk.byteLength;
36
+ }
37
+ if (size !== selected.byteLength || (await sha256(body)) !== selected.sha256)
38
+ throw new Error("stored content integrity failure");
39
+ return body;
40
+ }
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAM7C,iGAAiG;AACjG,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA2C,EAC3C,QAA4C,EAC5C,QAAiC,EACjC,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;IAE1B,IACE,CAAC,QAAQ,CAAC,IAAI,CACZ,CAAC,GAAG,EAAE,EAAE,CACN,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG;QACxB,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAC9B,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU;QACtC,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW,CAC3C;QACD,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC1C,QAAQ,CAAC,UAAU,GAAG,CAAC;QACvB,QAAQ,CAAC,UAAU,GAAG,QAAQ;QAE9B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAC7D,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAChB,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC;YACzB,IAAI,IAAI,GAAG,QAAQ,CAAC,UAAU,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;gBAClD,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,CAAC,UAAU,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,QAAQ,CAAC,MAAM;QAC1E,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,OAAO,IAAI,CAAC;AACd,CAAC"}