@superblocksteam/vite-plugin-file-sync 2.0.128-next.2 → 2.0.129-next.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.
- package/dist/ai-service/context-download.d.ts +17 -0
- package/dist/ai-service/context-download.d.ts.map +1 -1
- package/dist/ai-service/context-download.js +55 -10
- package/dist/ai-service/context-download.js.map +1 -1
- package/dist/ai-service/context-flush-scheduler.d.ts +75 -0
- package/dist/ai-service/context-flush-scheduler.d.ts.map +1 -0
- package/dist/ai-service/context-flush-scheduler.js +134 -0
- package/dist/ai-service/context-flush-scheduler.js.map +1 -0
- package/dist/ai-service/context-upload.d.ts +4 -1
- package/dist/ai-service/context-upload.d.ts.map +1 -1
- package/dist/ai-service/context-upload.js +7 -2
- package/dist/ai-service/context-upload.js.map +1 -1
- package/dist/ai-service/index.d.ts +10 -6
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +48 -19
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/llm/client.d.ts.map +1 -1
- package/dist/ai-service/llm/client.js +17 -1
- package/dist/ai-service/llm/client.js.map +1 -1
- package/dist/ai-service/llm/context-v2/adapter.d.ts +1 -1
- package/dist/ai-service/llm/context-v2/adapter.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/adapter.js +10 -27
- package/dist/ai-service/llm/context-v2/adapter.js.map +1 -1
- package/dist/ai-service/llm/context-v2/context.d.ts +44 -0
- package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/context.js +230 -52
- package/dist/ai-service/llm/context-v2/context.js.map +1 -1
- package/dist/ai-service/llm/context-v2/conversation-context.d.ts +3 -2
- package/dist/ai-service/llm/context-v2/conversation-context.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/manager.d.ts +10 -1
- package/dist/ai-service/llm/context-v2/manager.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/manager.js +24 -4
- package/dist/ai-service/llm/context-v2/manager.js.map +1 -1
- package/dist/ai-service/llm/context-v2/storage/local.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/storage/local.js +36 -1
- package/dist/ai-service/llm/context-v2/storage/local.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/context.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/observers/context.js +7 -4
- package/dist/ai-service/llm/stream/observers/context.js.map +1 -1
- package/dist/ai-service/types.d.ts +2 -0
- package/dist/ai-service/types.d.ts.map +1 -1
- package/dist/ai-service/types.js.map +1 -1
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +102 -32
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/sync-service/checkpoint-result.d.ts +22 -0
- package/dist/sync-service/checkpoint-result.d.ts.map +1 -0
- package/dist/sync-service/checkpoint-result.js +22 -0
- package/dist/sync-service/checkpoint-result.js.map +1 -0
- package/dist/sync-service/index.d.ts.map +1 -1
- package/dist/sync-service/index.js +11 -4
- package/dist/sync-service/index.js.map +1 -1
- package/package.json +8 -8
|
@@ -21,6 +21,23 @@ export declare function downloadContextFromBucketeer({ applicationId, commitId,
|
|
|
21
21
|
contextId?: ContextId;
|
|
22
22
|
appRootDirPath?: string;
|
|
23
23
|
}): Promise<ContextRecordV2 | null>;
|
|
24
|
+
/**
|
|
25
|
+
* Downloads the most recently written context for an (application, branch) from
|
|
26
|
+
* Bucketeer, without needing the commitId it was stored under. Used by the
|
|
27
|
+
* cold-pod restore fallback so it no longer has to guess a commitId (a wrong
|
|
28
|
+
* guess resolves to an empty conversation). Returns null on a 404 — which also
|
|
29
|
+
* covers a Bucketeer that predates this endpoint, so the caller can fall back to
|
|
30
|
+
* the commitId path — or a non-V2 record.
|
|
31
|
+
*/
|
|
32
|
+
export declare function downloadLatestContextFromBucketeer({ applicationId, branchName, superblocksBaseUrl, logger, jwt, contextId, appRootDirPath, }: {
|
|
33
|
+
applicationId: string;
|
|
34
|
+
branchName: string;
|
|
35
|
+
superblocksBaseUrl: string;
|
|
36
|
+
logger: Logger;
|
|
37
|
+
jwt: string;
|
|
38
|
+
contextId?: ContextId;
|
|
39
|
+
appRootDirPath?: string;
|
|
40
|
+
}): Promise<ContextRecordV2 | null>;
|
|
24
41
|
/**
|
|
25
42
|
* Downloads and restores all context files from Bucketeer checkpoint
|
|
26
43
|
* Parses multipart/form-data response and saves files to local storage
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-download.d.ts","sourceRoot":"","sources":["../../src/ai-service/context-download.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAMhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAK5E,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAcD;;;;GAIG;AACH,wBAAsB,4BAA4B,CAAC,EACjD,aAAa,EACb,QAAQ,EACR,UAAU,EACV,kBAAkB,EAClB,MAAM,EACN,GAAG,EACH,SAAS,EACT,cAAc,GACf,EAAE;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"context-download.d.ts","sourceRoot":"","sources":["../../src/ai-service/context-download.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAMhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAK5E,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAcD;;;;GAIG;AACH,wBAAsB,4BAA4B,CAAC,EACjD,aAAa,EACb,QAAQ,EACR,UAAU,EACV,kBAAkB,EAClB,MAAM,EACN,GAAG,EACH,SAAS,EACT,cAAc,GACf,EAAE;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAclC;AAED;;;;;;;GAOG;AACH,wBAAsB,kCAAkC,CAAC,EACvD,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,MAAM,EACN,GAAG,EACH,SAAS,EACT,cAAc,GACf,EAAE;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAclC;AAmKD;;;GAGG;AACH,wBAAsB,4BAA4B,CAAC,EACjD,aAAa,EACb,QAAQ,EACR,UAAU,EACV,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,MAAM,EACN,GAAG,EACH,gBAAgB,GACjB,EAAE;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAwLhC"}
|
|
@@ -21,6 +21,53 @@ function isContextRecordV2(record) {
|
|
|
21
21
|
* Returns null if no context is found (404) or if the record is not V2 format.
|
|
22
22
|
*/
|
|
23
23
|
export async function downloadContextFromBucketeer({ applicationId, commitId, branchName, superblocksBaseUrl, logger, jwt, contextId, appRootDirPath, }) {
|
|
24
|
+
const bucketeerUrl = getBucketeerUrlFromSuperblocksUrl(superblocksBaseUrl);
|
|
25
|
+
const url = `${bucketeerUrl}/applications/${applicationId}/branches/${encodeURIComponent(branchName)}/commits/${encodeURIComponent(commitId)}/context`;
|
|
26
|
+
return downloadAndParseContext({
|
|
27
|
+
url,
|
|
28
|
+
applicationId,
|
|
29
|
+
superblocksBaseUrl,
|
|
30
|
+
logger,
|
|
31
|
+
jwt,
|
|
32
|
+
contextId,
|
|
33
|
+
appRootDirPath,
|
|
34
|
+
notFoundMessage: `No context found for commitId=${commitId}`,
|
|
35
|
+
logLabel: "downloadContextFromBucketeer",
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Downloads the most recently written context for an (application, branch) from
|
|
40
|
+
* Bucketeer, without needing the commitId it was stored under. Used by the
|
|
41
|
+
* cold-pod restore fallback so it no longer has to guess a commitId (a wrong
|
|
42
|
+
* guess resolves to an empty conversation). Returns null on a 404 — which also
|
|
43
|
+
* covers a Bucketeer that predates this endpoint, so the caller can fall back to
|
|
44
|
+
* the commitId path — or a non-V2 record.
|
|
45
|
+
*/
|
|
46
|
+
export async function downloadLatestContextFromBucketeer({ applicationId, branchName, superblocksBaseUrl, logger, jwt, contextId, appRootDirPath, }) {
|
|
47
|
+
const bucketeerUrl = getBucketeerUrlFromSuperblocksUrl(superblocksBaseUrl);
|
|
48
|
+
const url = `${bucketeerUrl}/applications/${applicationId}/branches/${encodeURIComponent(branchName)}/context/latest`;
|
|
49
|
+
return downloadAndParseContext({
|
|
50
|
+
url,
|
|
51
|
+
applicationId,
|
|
52
|
+
superblocksBaseUrl,
|
|
53
|
+
logger,
|
|
54
|
+
jwt,
|
|
55
|
+
contextId,
|
|
56
|
+
appRootDirPath,
|
|
57
|
+
notFoundMessage: `No latest context found for branch=${branchName}`,
|
|
58
|
+
logLabel: "downloadLatestContextFromBucketeer",
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Shared fetch + parse for the Bucketeer context endpoints. Resolves a scoped
|
|
63
|
+
* token, GETs the given URL, and returns the parsed V2 record (restoring any
|
|
64
|
+
* archived event-log files into `appRootDirPath`). Returns null on token
|
|
65
|
+
* failure, network error, 404, or a non-V2 payload.
|
|
66
|
+
*
|
|
67
|
+
* `logLabel` is the bracket prefix on every log line so each caller's logs stay
|
|
68
|
+
* attributable to the public function operators search for.
|
|
69
|
+
*/
|
|
70
|
+
async function downloadAndParseContext({ url, applicationId, superblocksBaseUrl, logger, jwt, contextId, appRootDirPath, notFoundMessage, logLabel, }) {
|
|
24
71
|
let scopedToken;
|
|
25
72
|
try {
|
|
26
73
|
scopedToken = await getScopedToken({
|
|
@@ -30,11 +77,9 @@ export async function downloadContextFromBucketeer({ applicationId, commitId, br
|
|
|
30
77
|
});
|
|
31
78
|
}
|
|
32
79
|
catch (error) {
|
|
33
|
-
logger.error(
|
|
80
|
+
logger.error(`[${logLabel}] Failed to get scoped token`, getErrorMeta(error));
|
|
34
81
|
return null;
|
|
35
82
|
}
|
|
36
|
-
const bucketeerUrl = getBucketeerUrlFromSuperblocksUrl(superblocksBaseUrl);
|
|
37
|
-
const url = `${bucketeerUrl}/applications/${applicationId}/branches/${encodeURIComponent(branchName)}/commits/${encodeURIComponent(commitId)}/context`;
|
|
38
83
|
let response;
|
|
39
84
|
try {
|
|
40
85
|
response = await fetch(url, {
|
|
@@ -45,18 +90,18 @@ export async function downloadContextFromBucketeer({ applicationId, commitId, br
|
|
|
45
90
|
});
|
|
46
91
|
}
|
|
47
92
|
catch (error) {
|
|
48
|
-
logger.warn(
|
|
93
|
+
logger.warn(`[${logLabel}] Network error fetching context`, getErrorMeta(error));
|
|
49
94
|
return null;
|
|
50
95
|
}
|
|
51
96
|
if (!response.ok) {
|
|
52
97
|
if (response.status === 404) {
|
|
53
|
-
logger.info(`[
|
|
98
|
+
logger.info(`[${logLabel}] ${notFoundMessage}`);
|
|
54
99
|
}
|
|
55
100
|
else {
|
|
56
101
|
const errorText = await response
|
|
57
102
|
.text()
|
|
58
103
|
.catch(() => "Unable to read error");
|
|
59
|
-
logger.warn(`[
|
|
104
|
+
logger.warn(`[${logLabel}] Failed to download: ${response.status} ${response.statusText} - ${errorText}`);
|
|
60
105
|
}
|
|
61
106
|
return null;
|
|
62
107
|
}
|
|
@@ -68,10 +113,10 @@ export async function downloadContextFromBucketeer({ applicationId, commitId, br
|
|
|
68
113
|
if (isContextRecordV2(contextRecord)) {
|
|
69
114
|
return contextRecord;
|
|
70
115
|
}
|
|
71
|
-
logger.warn(
|
|
116
|
+
logger.warn(`[${logLabel}] Context record is not V2 format`);
|
|
72
117
|
}
|
|
73
118
|
catch (err) {
|
|
74
|
-
logger.warn(
|
|
119
|
+
logger.warn(`[${logLabel}] Failed to parse JSON response`, getErrorMeta(err));
|
|
75
120
|
}
|
|
76
121
|
return null;
|
|
77
122
|
}
|
|
@@ -94,7 +139,7 @@ export async function downloadContextFromBucketeer({ applicationId, commitId, br
|
|
|
94
139
|
contextRecord = parsed;
|
|
95
140
|
continue;
|
|
96
141
|
}
|
|
97
|
-
logger.warn(
|
|
142
|
+
logger.warn(`[${logLabel}] main.json is not V2 format`);
|
|
98
143
|
}
|
|
99
144
|
else if (eventLogFileName && contextId && appRootDirPath) {
|
|
100
145
|
await restoreEventLogFile({
|
|
@@ -108,7 +153,7 @@ export async function downloadContextFromBucketeer({ applicationId, commitId, br
|
|
|
108
153
|
return contextRecord;
|
|
109
154
|
}
|
|
110
155
|
catch (err) {
|
|
111
|
-
logger.warn(
|
|
156
|
+
logger.warn(`[${logLabel}] Failed to parse multipart response`, getErrorMeta(err));
|
|
112
157
|
}
|
|
113
158
|
return null;
|
|
114
159
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-download.js","sourceRoot":"","sources":["../../src/ai-service/context-download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAC;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,wBAAwB,GAAG,UAAU,CAAC;AAQ5C;;GAEG;AACH,SAAS,iBAAiB,CAAC,MAAe;IACxC,OAAO,CACL,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI;QACf,SAAS,IAAI,MAAM;QAClB,MAA+B,CAAC,OAAO,KAAK,CAAC,CAC/C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,EACjD,aAAa,EACb,QAAQ,EACR,UAAU,EACV,kBAAkB,EAClB,MAAM,EACN,GAAG,EACH,SAAS,EACT,cAAc,GAUf;IACC,
|
|
1
|
+
{"version":3,"file":"context-download.js","sourceRoot":"","sources":["../../src/ai-service/context-download.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { Logger } from "../util/logger.js";
|
|
2
|
+
/**
|
|
3
|
+
* Coalesces frequent "context changed" signals into a bounded number of
|
|
4
|
+
* uploads. Used to keep the Bucketeer copy of a Clark conversation fresh during
|
|
5
|
+
* a long generation (a single agent turn persists many times before it
|
|
6
|
+
* completes) without re-uploading on every persist.
|
|
7
|
+
*
|
|
8
|
+
* Rules:
|
|
9
|
+
* - Debounce: wait `debounceMs` of quiet after the last request before flushing,
|
|
10
|
+
* so a burst of persists coalesces into one upload.
|
|
11
|
+
* - Hard max: never wait longer than `maxWaitMs` from the first request in a
|
|
12
|
+
* burst, so a steady stream of persists still flushes periodically.
|
|
13
|
+
* - Single in flight: only one flush runs at a time. Requests that arrive while
|
|
14
|
+
* a flush is running mark the scheduler dirty and trigger one more flush after
|
|
15
|
+
* it settles.
|
|
16
|
+
* - Skip unchanged: a flush is skipped when `version()` is unchanged since the
|
|
17
|
+
* last successful flush, so an unchanged context is never re-uploaded.
|
|
18
|
+
*
|
|
19
|
+
* The caller is responsible for only signalling at safe boundaries (a completed
|
|
20
|
+
* message, never a half-formed turn); the scheduler itself does not inspect
|
|
21
|
+
* content beyond the opaque `version()` number.
|
|
22
|
+
*/
|
|
23
|
+
export interface ContextFlushSchedulerOptions {
|
|
24
|
+
/**
|
|
25
|
+
* Performs the upload. Resolves `true` when an upload happened (the version is
|
|
26
|
+
* then recorded as flushed), or `false` when the flush was intentionally
|
|
27
|
+
* skipped (e.g. credentials not ready) so the same version is retried on the
|
|
28
|
+
* next request. Rejections are caught and logged, not propagated.
|
|
29
|
+
*/
|
|
30
|
+
flush: () => Promise<boolean>;
|
|
31
|
+
/**
|
|
32
|
+
* Opaque, monotonically-changing signal of the current content (e.g. total
|
|
33
|
+
* bytes on disk). A flush is skipped when this is unchanged since the last
|
|
34
|
+
* successful flush.
|
|
35
|
+
*/
|
|
36
|
+
version: () => number;
|
|
37
|
+
/** Quiet period after the last request before flushing. */
|
|
38
|
+
debounceMs: number;
|
|
39
|
+
/** Upper bound on the wait from the first request in a burst. */
|
|
40
|
+
maxWaitMs: number;
|
|
41
|
+
logger?: Logger;
|
|
42
|
+
}
|
|
43
|
+
export declare class ContextFlushScheduler {
|
|
44
|
+
private readonly flush;
|
|
45
|
+
private readonly version;
|
|
46
|
+
private readonly debounceMs;
|
|
47
|
+
private readonly maxWaitMs;
|
|
48
|
+
private readonly logger?;
|
|
49
|
+
private timer;
|
|
50
|
+
/** Monotonic clock ms of the first request in the current pending burst. */
|
|
51
|
+
private firstRequestedAt;
|
|
52
|
+
private inFlight;
|
|
53
|
+
/** A request arrived while a flush was running; flush again once it settles. */
|
|
54
|
+
private dirty;
|
|
55
|
+
/** A flushNow() arrived mid-flight; the follow-up flush must skip the debounce. */
|
|
56
|
+
private flushImmediately;
|
|
57
|
+
/** `version()` value of the last successful (or skipped-as-equal) flush. */
|
|
58
|
+
private lastFlushedVersion;
|
|
59
|
+
private disposed;
|
|
60
|
+
constructor(options: ContextFlushSchedulerOptions);
|
|
61
|
+
/** Signal that the context changed at a safe boundary. */
|
|
62
|
+
requestFlush(): void;
|
|
63
|
+
/**
|
|
64
|
+
* Flush immediately if there is anything pending, bypassing the debounce.
|
|
65
|
+
* Used on a hard boundary like the end of a generation so the freshest
|
|
66
|
+
* complete turn is durable without waiting out the quiet period.
|
|
67
|
+
*/
|
|
68
|
+
flushNow(): void;
|
|
69
|
+
/** Cancel any pending timer and stop accepting work. */
|
|
70
|
+
dispose(): void;
|
|
71
|
+
private scheduleTimer;
|
|
72
|
+
private runFlush;
|
|
73
|
+
private clearTimer;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=context-flush-scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-flush-scheduler.d.ts","sourceRoot":"","sources":["../../src/ai-service/context-flush-scheduler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;;;OAKG;IACH,KAAK,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B;;;;OAIG;IACH,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IAEjC,OAAO,CAAC,KAAK,CAA4C;IACzD,4EAA4E;IAC5E,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAS;IACzB,gFAAgF;IAChF,OAAO,CAAC,KAAK,CAAS;IACtB,mFAAmF;IACnF,OAAO,CAAC,gBAAgB,CAAS;IACjC,4EAA4E;IAC5E,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,4BAA4B;IAQjD,0DAA0D;IAC1D,YAAY,IAAI,IAAI;IAiBpB;;;;OAIG;IACH,QAAQ,IAAI,IAAI;IAoBhB,wDAAwD;IACxD,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,QAAQ;IAiDhB,OAAO,CAAC,UAAU;CAMnB"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { getErrorMeta } from "../util/logger.js";
|
|
2
|
+
export class ContextFlushScheduler {
|
|
3
|
+
flush;
|
|
4
|
+
version;
|
|
5
|
+
debounceMs;
|
|
6
|
+
maxWaitMs;
|
|
7
|
+
logger;
|
|
8
|
+
timer;
|
|
9
|
+
/** Monotonic clock ms of the first request in the current pending burst. */
|
|
10
|
+
firstRequestedAt;
|
|
11
|
+
inFlight = false;
|
|
12
|
+
/** A request arrived while a flush was running; flush again once it settles. */
|
|
13
|
+
dirty = false;
|
|
14
|
+
/** A flushNow() arrived mid-flight; the follow-up flush must skip the debounce. */
|
|
15
|
+
flushImmediately = false;
|
|
16
|
+
/** `version()` value of the last successful (or skipped-as-equal) flush. */
|
|
17
|
+
lastFlushedVersion;
|
|
18
|
+
disposed = false;
|
|
19
|
+
constructor(options) {
|
|
20
|
+
this.flush = options.flush;
|
|
21
|
+
this.version = options.version;
|
|
22
|
+
this.debounceMs = options.debounceMs;
|
|
23
|
+
this.maxWaitMs = options.maxWaitMs;
|
|
24
|
+
this.logger = options.logger;
|
|
25
|
+
}
|
|
26
|
+
/** Signal that the context changed at a safe boundary. */
|
|
27
|
+
requestFlush() {
|
|
28
|
+
if (this.disposed) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (this.inFlight) {
|
|
32
|
+
// Re-flush once the running upload settles; the latest content is then
|
|
33
|
+
// captured in that follow-up flush.
|
|
34
|
+
this.dirty = true;
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const now = Date.now();
|
|
38
|
+
if (this.firstRequestedAt === undefined) {
|
|
39
|
+
this.firstRequestedAt = now;
|
|
40
|
+
}
|
|
41
|
+
this.scheduleTimer(now);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Flush immediately if there is anything pending, bypassing the debounce.
|
|
45
|
+
* Used on a hard boundary like the end of a generation so the freshest
|
|
46
|
+
* complete turn is durable without waiting out the quiet period.
|
|
47
|
+
*/
|
|
48
|
+
flushNow() {
|
|
49
|
+
if (this.disposed) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (this.inFlight) {
|
|
53
|
+
// An upload is running; re-flush as soon as it settles, skipping the
|
|
54
|
+
// debounce so the final turn is durable right after generation end.
|
|
55
|
+
this.dirty = true;
|
|
56
|
+
this.flushImmediately = true;
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (this.firstRequestedAt === undefined) {
|
|
60
|
+
// Nothing pending since the last flush; set firstRequestedAt so runFlush
|
|
61
|
+
// has a valid burst-start time. runFlush still skips if the version is
|
|
62
|
+
// unchanged since the last successful flush.
|
|
63
|
+
this.firstRequestedAt = Date.now();
|
|
64
|
+
}
|
|
65
|
+
this.runFlush();
|
|
66
|
+
}
|
|
67
|
+
/** Cancel any pending timer and stop accepting work. */
|
|
68
|
+
dispose() {
|
|
69
|
+
this.disposed = true;
|
|
70
|
+
this.clearTimer();
|
|
71
|
+
}
|
|
72
|
+
scheduleTimer(now) {
|
|
73
|
+
this.clearTimer();
|
|
74
|
+
const sinceFirst = now - (this.firstRequestedAt ?? now);
|
|
75
|
+
const remainingUntilMax = Math.max(0, this.maxWaitMs - sinceFirst);
|
|
76
|
+
const delay = Math.min(this.debounceMs, remainingUntilMax);
|
|
77
|
+
this.timer = setTimeout(() => {
|
|
78
|
+
this.timer = undefined;
|
|
79
|
+
this.runFlush();
|
|
80
|
+
}, delay);
|
|
81
|
+
}
|
|
82
|
+
runFlush() {
|
|
83
|
+
this.clearTimer();
|
|
84
|
+
if (this.inFlight) {
|
|
85
|
+
this.dirty = true;
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const versionToFlush = this.version();
|
|
89
|
+
this.firstRequestedAt = undefined;
|
|
90
|
+
if (versionToFlush === this.lastFlushedVersion) {
|
|
91
|
+
// Nothing changed since the last flush.
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
this.inFlight = true;
|
|
95
|
+
void this.flush()
|
|
96
|
+
.then((flushed) => {
|
|
97
|
+
// Only record the version when an upload actually happened. A skipped
|
|
98
|
+
// flush (e.g. credentials not ready) leaves lastFlushedVersion stale so
|
|
99
|
+
// the same content is retried on the next request.
|
|
100
|
+
if (flushed) {
|
|
101
|
+
this.lastFlushedVersion = versionToFlush;
|
|
102
|
+
}
|
|
103
|
+
})
|
|
104
|
+
.catch((error) => {
|
|
105
|
+
// Non-blocking: leave lastFlushedVersion unchanged so the next request
|
|
106
|
+
// retries this content.
|
|
107
|
+
this.logger?.warn("[context-flush] flush failed (non-blocking)", getErrorMeta(error));
|
|
108
|
+
})
|
|
109
|
+
.finally(() => {
|
|
110
|
+
this.inFlight = false;
|
|
111
|
+
if (this.disposed || !this.dirty) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
this.dirty = false;
|
|
115
|
+
if (this.flushImmediately) {
|
|
116
|
+
// A flushNow() arrived while this upload was in flight; honor it
|
|
117
|
+
// immediately instead of waiting out the debounce.
|
|
118
|
+
this.flushImmediately = false;
|
|
119
|
+
this.runFlush();
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const now = Date.now();
|
|
123
|
+
this.firstRequestedAt = now;
|
|
124
|
+
this.scheduleTimer(now);
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
clearTimer() {
|
|
128
|
+
if (this.timer !== undefined) {
|
|
129
|
+
clearTimeout(this.timer);
|
|
130
|
+
this.timer = undefined;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=context-flush-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-flush-scheduler.js","sourceRoot":"","sources":["../../src/ai-service/context-flush-scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,5 +15,8 @@ export declare function uploadContextToBucketeer({ applicationId, commitId, bran
|
|
|
15
15
|
superblocksBaseUrl: string;
|
|
16
16
|
logger: Logger;
|
|
17
17
|
jwt: string;
|
|
18
|
-
}): Promise<
|
|
18
|
+
}): Promise<{
|
|
19
|
+
rawContextBytes: number;
|
|
20
|
+
fileCount: number;
|
|
21
|
+
}>;
|
|
19
22
|
//# sourceMappingURL=context-upload.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-upload.d.ts","sourceRoot":"","sources":["../../src/ai-service/context-upload.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAmChD;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,EAC7C,aAAa,EACb,QAAQ,EACR,UAAU,EACV,cAAc,EACd,MAAM,EACN,eAAuB,EACvB,kBAAkB,EAClB,MAAM,EACN,GAAG,GACJ,EAAE;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"context-upload.d.ts","sourceRoot":"","sources":["../../src/ai-service/context-upload.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAmChD;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,EAC7C,aAAa,EACb,QAAQ,EACR,UAAU,EACV,cAAc,EACd,MAAM,EACN,eAAuB,EACvB,kBAAkB,EAClB,MAAM,EACN,GAAG,GACJ,EAAE;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,OAAO,CAAC;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAgL1D"}
|
|
@@ -49,7 +49,7 @@ export async function uploadContextToBucketeer({ applicationId, commitId, branch
|
|
|
49
49
|
];
|
|
50
50
|
if (filesToUpload.length === 0) {
|
|
51
51
|
logger.info(`[uploadContextToBucketeer] No context or event log files found for userId=${userId}, skipping upload`);
|
|
52
|
-
return;
|
|
52
|
+
return { rawContextBytes: 0, fileCount: 0 };
|
|
53
53
|
}
|
|
54
54
|
const contextFileData = [];
|
|
55
55
|
const uploadedFiles = [];
|
|
@@ -69,8 +69,12 @@ export async function uploadContextToBucketeer({ applicationId, commitId, branch
|
|
|
69
69
|
}
|
|
70
70
|
if (uploadedFiles.length === 0) {
|
|
71
71
|
logger.warn(`[uploadContextToBucketeer] No files were successfully read for upload`);
|
|
72
|
-
return;
|
|
72
|
+
return { rawContextBytes: 0, fileCount: 0 };
|
|
73
73
|
}
|
|
74
|
+
// Raw on-disk buffer size summed across files, before FormData/multipart
|
|
75
|
+
// encoding; the actual HTTP payload is larger. Named to avoid implying this
|
|
76
|
+
// is the number of bytes transferred over the network.
|
|
77
|
+
const rawContextBytes = contextFileData.reduce((total, file) => total + file.data.length, 0);
|
|
74
78
|
const buildFormData = () => {
|
|
75
79
|
const formData = new FormData();
|
|
76
80
|
for (const contextFile of contextFileData) {
|
|
@@ -146,6 +150,7 @@ export async function uploadContextToBucketeer({ applicationId, commitId, branch
|
|
|
146
150
|
await uploadViaBucketeer();
|
|
147
151
|
}
|
|
148
152
|
logger.info(`[uploadContextToBucketeer] Successfully uploaded ${uploadedFiles.length} context file(s) (${uploadedFiles.join(", ")}) for applicationId=${applicationId}, commitId=${commitId}`);
|
|
153
|
+
return { rawContextBytes, fileCount: uploadedFiles.length };
|
|
149
154
|
}
|
|
150
155
|
catch (error) {
|
|
151
156
|
logger.error("[uploadContextToBucketeer] Failed to upload context", getErrorMeta(error));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-upload.js","sourceRoot":"","sources":["../../src/ai-service/context-upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAC;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EACL,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,wBAAwB,GAAG,UAAU,CAAC;AAE5C,KAAK,UAAU,kBAAkB,CAAC,EAChC,GAAG,EACH,WAAW,EACX,SAAS,GAKV;IACC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,OAAO,OAAO;aACX,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;aACjC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACf,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;YACpC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC;SACrC,CAAC,CAAC,CAAC;IACR,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,EAC7C,aAAa,EACb,QAAQ,EACR,UAAU,EACV,cAAc,EACd,MAAM,EACN,eAAe,GAAG,KAAK,EACvB,kBAAkB,EAClB,MAAM,EACN,GAAG,GAWJ;IACC,iDAAiD;IACjD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,iBAAiB,CAChC,UAAU,EACV,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAC3C,CAAC;IAEF,MAAM,aAAa,GAAG;QACpB,GAAG,CAAC,MAAM,kBAAkB,CAAC;YAC3B,GAAG,EAAE,UAAU;YACf,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ;YACnC,SAAS,EAAE,GAAG,EAAE,CACd,MAAM,CAAC,IAAI,CACT,oEAAoE,MAAM,EAAE,CAC7E;SACJ,CAAC,CAAC;QACH,GAAG,CAAC,MAAM,kBAAkB,CAAC;YAC3B,GAAG,EAAE,QAAQ;YACb,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,wBAAwB,GAAG,QAAQ,EAAE;YACnE,SAAS,EAAE,GAAG,EAAE,CACd,MAAM,CAAC,IAAI,CACT,sEAAsE,MAAM,EAAE,CAC/E;SACJ,CAAC,CAAC;KACJ,CAAC;IAEF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CACT,6EAA6E,MAAM,mBAAmB,CACvG,CAAC;QACF,OAAO;
|
|
1
|
+
{"version":3,"file":"context-upload.js","sourceRoot":"","sources":["../../src/ai-service/context-upload.ts"],"names":[],"mappings":"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"}
|
|
@@ -197,12 +197,16 @@ export declare class AiService extends TracedEventEmitter<AiServiceEvents> {
|
|
|
197
197
|
* its `remoteRestoreFallback`, so it runs on a cold/recycled pod where the
|
|
198
198
|
* editor reconnects and no local context exists.
|
|
199
199
|
*
|
|
200
|
-
*
|
|
201
|
-
*
|
|
202
|
-
*
|
|
203
|
-
*
|
|
204
|
-
*
|
|
205
|
-
*
|
|
200
|
+
* Primary path: ask Bucketeer for the latest context for (app, branch). This
|
|
201
|
+
* needs no commitId, so a wrong or read-replica-lagged commitId can no longer
|
|
202
|
+
* resolve to an empty conversation.
|
|
203
|
+
*
|
|
204
|
+
* Fallback path: if the latest endpoint returns nothing (a Bucketeer that
|
|
205
|
+
* predates it returns 404, or there is no archive yet), resolve a commitId the
|
|
206
|
+
* old way — preferring `syncService.lastCommitId` (seeded by
|
|
207
|
+
* `downloadDirectory()` from the server's latest non-draft commit, the key the
|
|
208
|
+
* post-generation upload uses) and otherwise the most recent chat-history
|
|
209
|
+
* commitId — and GET by commit. The resolution is logged either way.
|
|
206
210
|
*/
|
|
207
211
|
private remoteRestoreFallback;
|
|
208
212
|
private getJwt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai-service/index.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAG1C,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAE7B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,YAAY,EAOlB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAML,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAyB1D,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,2CAA2C,CAAC;AAOnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAOtE,OAAO,EACL,iBAAiB,EAEjB,KAAK,4BAA4B,EAClC,MAAM,iCAAiC,CAAC;AAOzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai-service/index.ts"],"names":[],"mappings":"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"}
|