veryfront 0.1.74 → 0.1.76

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 (122) hide show
  1. package/README.md +2 -0
  2. package/esm/cli/commands/files/command.d.ts +3 -3
  3. package/esm/cli/commands/knowledge/command.d.ts +2 -0
  4. package/esm/cli/commands/knowledge/command.d.ts.map +1 -1
  5. package/esm/cli/commands/knowledge/command.js +64 -1
  6. package/esm/deno.d.ts +7 -0
  7. package/esm/deno.js +13 -6
  8. package/esm/src/data/data-fetcher.d.ts +11 -1
  9. package/esm/src/data/data-fetcher.d.ts.map +1 -1
  10. package/esm/src/data/data-fetcher.js +5 -2
  11. package/esm/src/data/index.d.ts +1 -1
  12. package/esm/src/data/index.d.ts.map +1 -1
  13. package/esm/src/data/server-data-fetcher.d.ts +14 -1
  14. package/esm/src/data/server-data-fetcher.d.ts.map +1 -1
  15. package/esm/src/data/server-data-fetcher.js +65 -3
  16. package/esm/src/jobs/index.d.ts +34 -0
  17. package/esm/src/jobs/index.d.ts.map +1 -0
  18. package/esm/src/jobs/index.js +33 -0
  19. package/esm/src/jobs/jobs-client.d.ts +134 -0
  20. package/esm/src/jobs/jobs-client.d.ts.map +1 -0
  21. package/esm/src/jobs/jobs-client.js +218 -0
  22. package/esm/src/jobs/schemas.d.ts +1304 -0
  23. package/esm/src/jobs/schemas.d.ts.map +1 -0
  24. package/esm/src/jobs/schemas.js +159 -0
  25. package/esm/src/platform/adapters/veryfront-api-client/retry-handler.d.ts +4 -0
  26. package/esm/src/platform/adapters/veryfront-api-client/retry-handler.d.ts.map +1 -1
  27. package/esm/src/platform/adapters/veryfront-api-client/retry-handler.js +12 -6
  28. package/esm/src/proxy/handler.d.ts.map +1 -1
  29. package/esm/src/proxy/handler.js +21 -21
  30. package/esm/src/rendering/orchestrator/lifecycle.d.ts +4 -0
  31. package/esm/src/rendering/orchestrator/lifecycle.d.ts.map +1 -1
  32. package/esm/src/rendering/orchestrator/lifecycle.js +8 -0
  33. package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
  34. package/esm/src/rendering/orchestrator/pipeline.js +6 -1
  35. package/esm/src/rendering/orchestrator/ssr-orchestrator.d.ts +26 -1
  36. package/esm/src/rendering/orchestrator/ssr-orchestrator.d.ts.map +1 -1
  37. package/esm/src/rendering/orchestrator/ssr-orchestrator.js +77 -1
  38. package/esm/src/routing/api/handler.d.ts.map +1 -1
  39. package/esm/src/routing/api/handler.js +6 -2
  40. package/esm/src/routing/api/route-executor.d.ts +8 -2
  41. package/esm/src/routing/api/route-executor.d.ts.map +1 -1
  42. package/esm/src/routing/api/route-executor.js +158 -3
  43. package/esm/src/security/deno-permissions.d.ts +7 -1
  44. package/esm/src/security/deno-permissions.d.ts.map +1 -1
  45. package/esm/src/security/deno-permissions.js +12 -1
  46. package/esm/src/security/sandbox/project-worker.d.ts +61 -0
  47. package/esm/src/security/sandbox/project-worker.d.ts.map +1 -0
  48. package/esm/src/security/sandbox/project-worker.js +318 -0
  49. package/esm/src/security/sandbox/worker-permissions.d.ts +30 -0
  50. package/esm/src/security/sandbox/worker-permissions.d.ts.map +1 -0
  51. package/esm/src/security/sandbox/worker-permissions.js +63 -0
  52. package/esm/src/security/sandbox/worker-pool.d.ts +87 -0
  53. package/esm/src/security/sandbox/worker-pool.d.ts.map +1 -0
  54. package/esm/src/security/sandbox/worker-pool.js +359 -0
  55. package/esm/src/security/sandbox/worker-types.d.ts +167 -0
  56. package/esm/src/security/sandbox/worker-types.d.ts.map +1 -0
  57. package/esm/src/security/sandbox/worker-types.js +19 -0
  58. package/esm/src/server/handlers/request/internal-tasks-list.handler.d.ts +11 -0
  59. package/esm/src/server/handlers/request/internal-tasks-list.handler.d.ts.map +1 -0
  60. package/esm/src/server/handlers/request/internal-tasks-list.handler.js +72 -0
  61. package/esm/src/server/project-env/storage.d.ts +6 -0
  62. package/esm/src/server/project-env/storage.d.ts.map +1 -1
  63. package/esm/src/server/project-env/storage.js +8 -0
  64. package/esm/src/server/runtime-handler/index.d.ts +1 -1
  65. package/esm/src/server/runtime-handler/index.d.ts.map +1 -1
  66. package/esm/src/server/runtime-handler/index.js +3 -0
  67. package/esm/src/server/runtime-handler/project-isolation.d.ts +5 -0
  68. package/esm/src/server/runtime-handler/project-isolation.d.ts.map +1 -1
  69. package/esm/src/server/runtime-handler/project-isolation.js +44 -0
  70. package/esm/src/server/shared/renderer/memory/pressure.d.ts +7 -0
  71. package/esm/src/server/shared/renderer/memory/pressure.d.ts.map +1 -1
  72. package/esm/src/server/shared/renderer/memory/pressure.js +7 -0
  73. package/esm/src/task/control-plane.d.ts +105 -0
  74. package/esm/src/task/control-plane.d.ts.map +1 -0
  75. package/esm/src/task/control-plane.js +52 -0
  76. package/esm/src/task/types.d.ts +6 -0
  77. package/esm/src/task/types.d.ts.map +1 -1
  78. package/esm/src/transforms/pipeline/stages/ssr-vf-modules/path-resolver.d.ts +4 -4
  79. package/esm/src/transforms/pipeline/stages/ssr-vf-modules/path-resolver.d.ts.map +1 -1
  80. package/esm/src/transforms/pipeline/stages/ssr-vf-modules/path-resolver.js +15 -15
  81. package/esm/src/utils/index.d.ts +10 -1
  82. package/esm/src/utils/index.d.ts.map +1 -1
  83. package/esm/src/utils/index.js +9 -1
  84. package/esm/src/utils/logger/index.d.ts +1 -1
  85. package/esm/src/utils/logger/index.d.ts.map +1 -1
  86. package/esm/src/utils/logger/index.js +1 -1
  87. package/esm/src/utils/logger/logger.d.ts +14 -0
  88. package/esm/src/utils/logger/logger.d.ts.map +1 -1
  89. package/esm/src/utils/logger/logger.js +17 -0
  90. package/esm/src/workflow/claude-code/tool.d.ts +5 -5
  91. package/package.json +8 -1
  92. package/src/cli/commands/knowledge/command.ts +76 -1
  93. package/src/deno.js +13 -6
  94. package/src/src/data/data-fetcher.ts +18 -2
  95. package/src/src/data/index.ts +1 -1
  96. package/src/src/data/server-data-fetcher.ts +106 -3
  97. package/src/src/jobs/index.ts +85 -0
  98. package/src/src/jobs/jobs-client.ts +503 -0
  99. package/src/src/jobs/schemas.ts +202 -0
  100. package/src/src/platform/adapters/veryfront-api-client/retry-handler.ts +15 -6
  101. package/src/src/proxy/handler.ts +27 -19
  102. package/src/src/rendering/orchestrator/lifecycle.ts +11 -0
  103. package/src/src/rendering/orchestrator/pipeline.ts +7 -2
  104. package/src/src/rendering/orchestrator/ssr-orchestrator.ts +119 -0
  105. package/src/src/routing/api/handler.ts +16 -3
  106. package/src/src/routing/api/route-executor.ts +258 -1
  107. package/src/src/security/deno-permissions.ts +13 -1
  108. package/src/src/security/sandbox/project-worker.ts +416 -0
  109. package/src/src/security/sandbox/worker-permissions.ts +77 -0
  110. package/src/src/security/sandbox/worker-pool.ts +459 -0
  111. package/src/src/security/sandbox/worker-types.ts +212 -0
  112. package/src/src/server/handlers/request/internal-tasks-list.handler.ts +103 -0
  113. package/src/src/server/project-env/storage.ts +9 -0
  114. package/src/src/server/runtime-handler/index.ts +3 -0
  115. package/src/src/server/runtime-handler/project-isolation.ts +53 -0
  116. package/src/src/server/shared/renderer/memory/pressure.ts +8 -0
  117. package/src/src/task/control-plane.ts +76 -0
  118. package/src/src/task/types.ts +6 -0
  119. package/src/src/transforms/pipeline/stages/ssr-vf-modules/path-resolver.ts +18 -12
  120. package/src/src/utils/index.ts +11 -0
  121. package/src/src/utils/logger/index.ts +1 -0
  122. package/src/src/utils/logger/logger.ts +34 -0
@@ -9,7 +9,7 @@ import { join } from "../../../../platform/compat/path/index.js";
9
9
  import { rendererLogger as logger } from "../../../../utils/index.js";
10
10
  import { resolveInternalModuleTarget } from "../../../veryfront-module-urls.js";
11
11
  import { EMBEDDED_SRC_DIR, EXTENSIONS, FRAMEWORK_LOOKUPS, FRAMEWORK_ROOT, LOG_PREFIX, } from "./constants.js";
12
- export async function tryReadWithExtensions(fs, basePath) {
12
+ export async function tryReadWithExtensions(fs, basePath, existsFn = exists) {
13
13
  // Try all extensions, including .src versions for embedded sources
14
14
  const allExtensions = [
15
15
  ...EXTENSIONS.map((ext) => ext + ".src"), // Embedded sources (.tsx.src, .ts.src, etc.)
@@ -18,7 +18,7 @@ export async function tryReadWithExtensions(fs, basePath) {
18
18
  for (const ext of allExtensions) {
19
19
  const sourcePath = basePath + ext;
20
20
  try {
21
- if (await exists(sourcePath)) {
21
+ if (await existsFn(sourcePath)) {
22
22
  const content = await fs.readTextFile(sourcePath);
23
23
  return { sourcePath, content };
24
24
  }
@@ -32,7 +32,7 @@ export async function tryReadWithExtensions(fs, basePath) {
32
32
  /**
33
33
  * Resolve a /_vf_modules/ path to the actual framework source file.
34
34
  */
35
- export async function resolveFrameworkFile(vfModulePath, fs) {
35
+ export async function resolveFrameworkFile(vfModulePath, fs, existsFn = exists) {
36
36
  const pathWithoutPrefix = vfModulePath
37
37
  .replace(/^\/_vf_modules\//, "")
38
38
  .replace(/\?.*$/, "")
@@ -58,7 +58,7 @@ export async function resolveFrameworkFile(vfModulePath, fs) {
58
58
  relativePath,
59
59
  fullPath: pathWithPrefixDir,
60
60
  });
61
- const withPrefix = await tryReadWithExtensions(fs, pathWithPrefixDir);
61
+ const withPrefix = await tryReadWithExtensions(fs, pathWithPrefixDir, existsFn);
62
62
  if (withPrefix) {
63
63
  logger.debug(`${LOG_PREFIX} Found with prefix`, { sourcePath: withPrefix.sourcePath });
64
64
  return withPrefix;
@@ -71,7 +71,7 @@ export async function resolveFrameworkFile(vfModulePath, fs) {
71
71
  relativePath,
72
72
  fullPath: pathWithoutPrefixDir,
73
73
  });
74
- const withoutPrefix = await tryReadWithExtensions(fs, pathWithoutPrefixDir);
74
+ const withoutPrefix = await tryReadWithExtensions(fs, pathWithoutPrefixDir, existsFn);
75
75
  if (withoutPrefix) {
76
76
  logger.debug(`${LOG_PREFIX} Found without prefix`, { sourcePath: withoutPrefix.sourcePath });
77
77
  return withoutPrefix;
@@ -93,7 +93,7 @@ export async function resolveFrameworkFile(vfModulePath, fs) {
93
93
  * then falls back to regular src/. This matches resolveFrameworkFile's behavior
94
94
  * and ensures consistent path resolution for cycle detection.
95
95
  */
96
- export async function resolveVeryfrontSourcePath(specifier) {
96
+ export async function resolveVeryfrontSourcePath(specifier, existsFn = exists) {
97
97
  if (!specifier.startsWith("#veryfront/"))
98
98
  return null;
99
99
  const mappedTarget = resolveInternalModuleTarget(specifier);
@@ -115,7 +115,7 @@ export async function resolveVeryfrontSourcePath(specifier) {
115
115
  // Try exact path with .src suffix first (for embedded sources)
116
116
  try {
117
117
  const srcPath = basePath + ".src";
118
- if (await exists(srcPath))
118
+ if (await existsFn(srcPath))
119
119
  return srcPath;
120
120
  }
121
121
  catch (_) {
@@ -123,7 +123,7 @@ export async function resolveVeryfrontSourcePath(specifier) {
123
123
  }
124
124
  // Try exact path
125
125
  try {
126
- if (await exists(basePath))
126
+ if (await existsFn(basePath))
127
127
  return basePath;
128
128
  }
129
129
  catch (_) {
@@ -140,7 +140,7 @@ export async function resolveVeryfrontSourcePath(specifier) {
140
140
  for (const ext of allExtensions) {
141
141
  const pathWithExt = basePath + ext;
142
142
  try {
143
- if (await exists(pathWithExt))
143
+ if (await existsFn(pathWithExt))
144
144
  return pathWithExt;
145
145
  }
146
146
  catch (_) {
@@ -151,7 +151,7 @@ export async function resolveVeryfrontSourcePath(specifier) {
151
151
  for (const ext of allExtensions) {
152
152
  const indexPath = join(basePath, "index" + ext);
153
153
  try {
154
- if (await exists(indexPath))
154
+ if (await existsFn(indexPath))
155
155
  return indexPath;
156
156
  }
157
157
  catch (_) {
@@ -168,7 +168,7 @@ export async function resolveVeryfrontSourcePath(specifier) {
168
168
  * Handles both regular source files (.tsx, .ts) and embedded sources (.tsx.src, .ts.src)
169
169
  * for compiled binaries.
170
170
  */
171
- export async function resolveRelativeFrameworkImport(specifier, fromSourcePath, _fs) {
171
+ export async function resolveRelativeFrameworkImport(specifier, fromSourcePath, _fs, existsFn = exists) {
172
172
  const fromDir = fromSourcePath.substring(0, fromSourcePath.lastIndexOf("/"));
173
173
  const parts = fromDir.split("/").filter(Boolean);
174
174
  const importParts = specifier.split("/").filter(Boolean);
@@ -188,7 +188,7 @@ export async function resolveRelativeFrameworkImport(specifier, fromSourcePath,
188
188
  if (/\.(tsx?|jsx?|mjs)$/.test(specifier)) {
189
189
  // Try exact path first
190
190
  try {
191
- if (await exists(basePath))
191
+ if (await existsFn(basePath))
192
192
  return basePath;
193
193
  }
194
194
  catch (_) {
@@ -197,7 +197,7 @@ export async function resolveRelativeFrameworkImport(specifier, fromSourcePath,
197
197
  // Try with .src suffix for embedded sources
198
198
  try {
199
199
  const srcPath = basePath + ".src";
200
- if (await exists(srcPath))
200
+ if (await existsFn(srcPath))
201
201
  return srcPath;
202
202
  }
203
203
  catch (_) {
@@ -214,7 +214,7 @@ export async function resolveRelativeFrameworkImport(specifier, fromSourcePath,
214
214
  for (const ext of allExtensions) {
215
215
  const pathWithExt = basePath + ext;
216
216
  try {
217
- if (await exists(pathWithExt))
217
+ if (await existsFn(pathWithExt))
218
218
  return pathWithExt;
219
219
  }
220
220
  catch (_) {
@@ -225,7 +225,7 @@ export async function resolveRelativeFrameworkImport(specifier, fromSourcePath,
225
225
  for (const ext of allExtensions) {
226
226
  const indexPath = join(basePath, "index" + ext);
227
227
  try {
228
- if (await exists(indexPath))
228
+ if (await existsFn(indexPath))
229
229
  return indexPath;
230
230
  }
231
231
  catch (_) {
@@ -3,9 +3,18 @@
3
3
  * (breakpoints, timeouts, HTTP codes), hashing, memoization, and feature flags.
4
4
  *
5
5
  * @module utils
6
+ *
7
+ * @example Structured logging
8
+ * ```ts
9
+ * import { serverLogger } from "veryfront/utils";
10
+ *
11
+ * serverLogger.info("Booting server", { project_id: "proj_123" });
12
+ * ```
6
13
  */
14
+ import "../../_dnt.polyfills.js";
7
15
  export { type GlobalWithBun, type GlobalWithDeno, type GlobalWithProcess, hasBunRuntime, hasDenoRuntime, hasNodeProcess, } from "./runtime-guards.js";
8
- export { agentLogger, bundlerLogger, logger, refreshLoggerConfig, rendererLogger, serverLogger, } from "./logger/index.js";
16
+ export { agentLogger, bundlerLogger, createJobUserLogger, logger, refreshLoggerConfig, rendererLogger, serverLogger, } from "./logger/index.js";
17
+ export type { Logger } from "./logger/index.js";
9
18
  export { BREAKPOINT_LG, BREAKPOINT_MD, BREAKPOINT_SM, BREAKPOINT_XL, BYTES_PER_KB, DEFAULT_ALLOWED_CDN_HOSTS, DEFAULT_BUILD_CONCURRENCY, DEFAULT_DASHBOARD_PORT, DEFAULT_LRU_MAX_ENTRIES, DEV_SERVER_ENDPOINTS, FORBIDDEN_PATH_PATTERNS, getDenoStdNodeBase, getReactImportMap, HASH_SEED_DJB2, HASH_SEED_FNV1A, HMR_CLIENT_RELOAD_DELAY_MS, HMR_CLOSE_MESSAGE_TOO_LARGE, HMR_CLOSE_NORMAL, HMR_CLOSE_RATE_LIMIT, HMR_MAX_MESSAGE_SIZE_BYTES, HMR_MAX_MESSAGES_PER_MINUTE, HMR_RATE_LIMIT_WINDOW_MS, HTTP_BAD_REQUEST, HTTP_CONTENT_TYPE_IMAGE_GIF, HTTP_CONTENT_TYPE_IMAGE_ICO, HTTP_CONTENT_TYPE_IMAGE_JPEG, HTTP_CONTENT_TYPE_IMAGE_PNG, HTTP_CONTENT_TYPE_IMAGE_SVG, HTTP_CONTENT_TYPE_IMAGE_WEBP, HTTP_CONTENT_TYPES, HTTP_MODULE_FETCH_TIMEOUT_MS, HTTP_NETWORK_CONNECT_TIMEOUT, HTTP_NOT_FOUND, HTTP_NOT_IMPLEMENTED, HTTP_OK, HTTP_REDIRECT_FOUND, HTTP_SERVER_ERROR, HTTP_STATUS_CLIENT_ERROR_MIN, HTTP_STATUS_REDIRECT_MIN, HTTP_STATUS_SERVER_ERROR_MIN, HTTP_STATUS_SUCCESS_MIN, HTTP_UNAVAILABLE, IMAGE_OPTIMIZATION, MAX_BATCH_SIZE, MAX_PATH_LENGTH, MAX_PATH_TRAVERSAL_DEPTH, MS_PER_SECOND, PREFETCH_DEFAULT_DELAY_MS, PREFETCH_DEFAULT_TIMEOUT_MS, PREFETCH_MAX_SIZE_BYTES, REACT_DEFAULT_VERSION, RESPONSIVE_IMAGE_WIDTH_LG, RESPONSIVE_IMAGE_WIDTHS, RSC_MANIFEST_CACHE_TTL_MS, TSX_LAYOUT_MAX_ENTRIES, Z_INDEX_DEV_INDICATOR, Z_INDEX_ERROR_OVERLAY, } from "./constants/index.js";
10
19
  export { VERSION } from "./version.js";
11
20
  export { type BundleCode as HashBundleCode, computeCodeHash, computeHash, fnv1aHash, shortHash, simpleHash, } from "./hash-utils.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,aAAa,EACb,cAAc,EACd,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,WAAW,EACX,aAAa,EACb,MAAM,EACN,mBAAmB,EACnB,cAAc,EACd,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,0BAA0B,EAC1B,2BAA2B,EAC3B,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,wBAAwB,EACxB,gBAAgB,EAChB,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,4BAA4B,EAC5B,4BAA4B,EAC5B,cAAc,EACd,oBAAoB,EACpB,OAAO,EACP,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,EAC5B,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EACL,KAAK,UAAU,IAAI,cAAc,EACjC,eAAe,EACf,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEpG,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE7F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,yBAAyB,CAAC;AAGjC,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,aAAa,EACb,cAAc,EACd,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,MAAM,EACN,mBAAmB,EACnB,cAAc,EACd,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,0BAA0B,EAC1B,2BAA2B,EAC3B,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,wBAAwB,EACxB,gBAAgB,EAChB,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,4BAA4B,EAC5B,4BAA4B,EAC5B,cAAc,EACd,oBAAoB,EACpB,OAAO,EACP,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,EAC5B,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EACL,KAAK,UAAU,IAAI,cAAc,EACjC,eAAe,EACf,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEpG,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE7F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -3,9 +3,17 @@
3
3
  * (breakpoints, timeouts, HTTP codes), hashing, memoization, and feature flags.
4
4
  *
5
5
  * @module utils
6
+ *
7
+ * @example Structured logging
8
+ * ```ts
9
+ * import { serverLogger } from "veryfront/utils";
10
+ *
11
+ * serverLogger.info("Booting server", { project_id: "proj_123" });
12
+ * ```
6
13
  */
14
+ import "../../_dnt.polyfills.js";
7
15
  export { hasBunRuntime, hasDenoRuntime, hasNodeProcess, } from "./runtime-guards.js";
8
- export { agentLogger, bundlerLogger, logger, refreshLoggerConfig, rendererLogger, serverLogger, } from "./logger/index.js";
16
+ export { agentLogger, bundlerLogger, createJobUserLogger, logger, refreshLoggerConfig, rendererLogger, serverLogger, } from "./logger/index.js";
9
17
  export { BREAKPOINT_LG, BREAKPOINT_MD, BREAKPOINT_SM, BREAKPOINT_XL, BYTES_PER_KB, DEFAULT_ALLOWED_CDN_HOSTS, DEFAULT_BUILD_CONCURRENCY, DEFAULT_DASHBOARD_PORT, DEFAULT_LRU_MAX_ENTRIES, DEV_SERVER_ENDPOINTS, FORBIDDEN_PATH_PATTERNS, getDenoStdNodeBase, getReactImportMap, HASH_SEED_DJB2, HASH_SEED_FNV1A, HMR_CLIENT_RELOAD_DELAY_MS, HMR_CLOSE_MESSAGE_TOO_LARGE, HMR_CLOSE_NORMAL, HMR_CLOSE_RATE_LIMIT, HMR_MAX_MESSAGE_SIZE_BYTES, HMR_MAX_MESSAGES_PER_MINUTE, HMR_RATE_LIMIT_WINDOW_MS, HTTP_BAD_REQUEST, HTTP_CONTENT_TYPE_IMAGE_GIF, HTTP_CONTENT_TYPE_IMAGE_ICO, HTTP_CONTENT_TYPE_IMAGE_JPEG, HTTP_CONTENT_TYPE_IMAGE_PNG, HTTP_CONTENT_TYPE_IMAGE_SVG, HTTP_CONTENT_TYPE_IMAGE_WEBP, HTTP_CONTENT_TYPES, HTTP_MODULE_FETCH_TIMEOUT_MS, HTTP_NETWORK_CONNECT_TIMEOUT, HTTP_NOT_FOUND, HTTP_NOT_IMPLEMENTED, HTTP_OK, HTTP_REDIRECT_FOUND, HTTP_SERVER_ERROR, HTTP_STATUS_CLIENT_ERROR_MIN, HTTP_STATUS_REDIRECT_MIN, HTTP_STATUS_SERVER_ERROR_MIN, HTTP_STATUS_SUCCESS_MIN, HTTP_UNAVAILABLE, IMAGE_OPTIMIZATION, MAX_BATCH_SIZE, MAX_PATH_LENGTH, MAX_PATH_TRAVERSAL_DEPTH, MS_PER_SECOND, PREFETCH_DEFAULT_DELAY_MS, PREFETCH_DEFAULT_TIMEOUT_MS, PREFETCH_MAX_SIZE_BYTES, REACT_DEFAULT_VERSION, RESPONSIVE_IMAGE_WIDTH_LG, RESPONSIVE_IMAGE_WIDTHS, RSC_MANIFEST_CACHE_TTL_MS, TSX_LAYOUT_MAX_ENTRIES, Z_INDEX_DEV_INDICATOR, Z_INDEX_ERROR_OVERLAY, } from "./constants/index.js";
10
18
  export { VERSION } from "./version.js";
11
19
  export { computeCodeHash, computeHash, fnv1aHash, shortHash, simpleHash, } from "./hash-utils.js";
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @module utils/logger
5
5
  */
6
- export { __registerRequestContextGetter, __registerTraceContextGetter, __resetLoggerConfigForTests, __resetTraceContextGetterForTests, agentLogger, bundlerLogger, cliLogger, createRequestLogger, getBaseLogger, getDefaultLevel, type LogEntry, type LogFormat, type Logger, logger, LogLevel, proxyLogger, refreshLoggerConfig, rendererLogger, serverLogger, } from "./logger.js";
6
+ export { __registerRequestContextGetter, __registerTraceContextGetter, __resetLoggerConfigForTests, __resetTraceContextGetterForTests, agentLogger, bundlerLogger, cliLogger, createJobUserLogger, createRequestLogger, getBaseLogger, getDefaultLevel, type LogEntry, type LogFormat, type Logger, logger, LogLevel, proxyLogger, refreshLoggerConfig, rendererLogger, serverLogger, } from "./logger.js";
7
7
  export { ANSI, colorize, formatContextText, formatErrorText, formatTimestamp, formatValue, isRecord, LEVEL_COLORS, LEVEL_GLYPHS, type LogLevelName, normalizeText, padTag, PREFIX_WIDTH, type SerializedError, serializeError, TAG_WIDTH, truncateText, } from "./core.js";
8
8
  export { getRequestContext, getRequestLogger, type RequestContext, requestContextStore, runWithRequestContext, runWithRequestContextAsync, } from "./request-context.js";
9
9
  export { type LogComponent, LogComponents } from "./components.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/utils/logger/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,2BAA2B,EAC3B,iCAAiC,EACjC,WAAW,EACX,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,MAAM,EACX,MAAM,EACN,QAAQ,EACR,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,KAAK,YAAY,EACjB,aAAa,EACb,MAAM,EACN,YAAY,EACZ,KAAK,eAAe,EACpB,cAAc,EACd,SAAS,EACT,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,cAAc,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/utils/logger/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,2BAA2B,EAC3B,iCAAiC,EACjC,WAAW,EACX,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,MAAM,EACX,MAAM,EACN,QAAQ,EACR,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,KAAK,YAAY,EACjB,aAAa,EACb,MAAM,EACN,YAAY,EACZ,KAAK,eAAe,EACpB,cAAc,EACd,SAAS,EACT,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,cAAc,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @module utils/logger
5
5
  */
6
- export { __registerRequestContextGetter, __registerTraceContextGetter, __resetLoggerConfigForTests, __resetTraceContextGetterForTests, agentLogger, bundlerLogger, cliLogger, createRequestLogger, getBaseLogger, getDefaultLevel, logger, LogLevel, proxyLogger, refreshLoggerConfig, rendererLogger, serverLogger, } from "./logger.js";
6
+ export { __registerRequestContextGetter, __registerTraceContextGetter, __resetLoggerConfigForTests, __resetTraceContextGetterForTests, agentLogger, bundlerLogger, cliLogger, createJobUserLogger, createRequestLogger, getBaseLogger, getDefaultLevel, logger, LogLevel, proxyLogger, refreshLoggerConfig, rendererLogger, serverLogger, } from "./logger.js";
7
7
  export { ANSI, colorize, formatContextText, formatErrorText, formatTimestamp, formatValue, isRecord, LEVEL_COLORS, LEVEL_GLYPHS, normalizeText, padTag, PREFIX_WIDTH, serializeError, TAG_WIDTH, truncateText, } from "./core.js";
8
8
  export { getRequestContext, getRequestLogger, requestContextStore, runWithRequestContext, runWithRequestContextAsync, } from "./request-context.js";
9
9
  export { LogComponents } from "./components.js";
@@ -37,6 +37,12 @@ export interface LogEntry {
37
37
  release_id?: string;
38
38
  branch_id?: string;
39
39
  branch_name?: string;
40
+ job_id?: string;
41
+ batch_id?: string;
42
+ job_target?: string;
43
+ task?: string;
44
+ event_kind?: string;
45
+ user_visible?: string;
40
46
  /** @deprecated Use `duration_ms` instead. Kept for Grafana dashboard transition. Planned removal after Grafana dashboard migration is complete. */
41
47
  durationMs?: number;
42
48
  duration_ms?: number;
@@ -135,5 +141,13 @@ export declare function createRequestLogger(baseLogger: Logger, requestContext:
135
141
  traceId?: string;
136
142
  projectSlug?: string;
137
143
  }): Logger;
144
+ export declare function createJobUserLogger(baseLogger: Logger, jobContext: {
145
+ projectId: string;
146
+ jobId: string;
147
+ task: string;
148
+ batchId?: string | null;
149
+ jobTarget?: string | null;
150
+ eventKind?: string;
151
+ }): Logger;
138
152
  export {};
139
153
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../src/src/utils/logger/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../src/src/utils/logger/logger.ts"],"names":[],"mappings":"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"}
@@ -195,6 +195,12 @@ class ConsoleLogger {
195
195
  extractToEntryField(entry, mergedContext, "release_id", (v) => String(v));
196
196
  extractToEntryField(entry, mergedContext, "branch_id", (v) => String(v));
197
197
  extractToEntryField(entry, mergedContext, "branch_name", (v) => String(v));
198
+ extractToEntryField(entry, mergedContext, "job_id", (v) => String(v));
199
+ extractToEntryField(entry, mergedContext, "batch_id", (v) => String(v));
200
+ extractToEntryField(entry, mergedContext, "job_target", (v) => String(v));
201
+ extractToEntryField(entry, mergedContext, "task", (v) => String(v));
202
+ extractToEntryField(entry, mergedContext, "event_kind", (v) => String(v));
203
+ extractToEntryField(entry, mergedContext, "user_visible", (v) => String(v));
198
204
  extractToEntryField(entry, mergedContext, "duration_ms", (v) => Number(v));
199
205
  // Emit snake_case aliases for camelCase fields (transition period)
200
206
  if (entry.requestId && !entry.request_id)
@@ -408,3 +414,14 @@ export function getBaseLogger(prefix, options) {
408
414
  export function createRequestLogger(baseLogger, requestContext) {
409
415
  return baseLogger.child(requestContext);
410
416
  }
417
+ export function createJobUserLogger(baseLogger, jobContext) {
418
+ return baseLogger.child({
419
+ project_id: jobContext.projectId,
420
+ job_id: jobContext.jobId,
421
+ ...(jobContext.batchId ? { batch_id: jobContext.batchId } : {}),
422
+ ...(jobContext.jobTarget ? { job_target: jobContext.jobTarget } : {}),
423
+ task: jobContext.task,
424
+ event_kind: jobContext.eventKind ?? "job_user_log",
425
+ user_visible: "true",
426
+ });
427
+ }
@@ -21,8 +21,8 @@ declare const claudeCodeInputSchema: z.ZodObject<{
21
21
  /** Additional context */
22
22
  context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
23
23
  }, "strip", z.ZodTypeAny, {
24
- mode: "code" | "custom" | "analysis";
25
24
  task: string;
25
+ mode: "code" | "custom" | "analysis";
26
26
  maxTurns: number;
27
27
  context?: Record<string, unknown> | undefined;
28
28
  files?: string[] | undefined;
@@ -72,32 +72,32 @@ export declare function createClaudeCodeTool(options?: {
72
72
  */
73
73
  /** Code review tool (analysis mode, read-only) */
74
74
  export declare const codeReviewTool: Tool<{
75
- mode: "code" | "custom" | "analysis";
76
75
  task: string;
76
+ mode: "code" | "custom" | "analysis";
77
77
  maxTurns: number;
78
78
  context?: Record<string, unknown> | undefined;
79
79
  files?: string[] | undefined;
80
80
  }, ClaudeCodeResult>;
81
81
  /** Bug fix tool (code mode) */
82
82
  export declare const bugFixTool: Tool<{
83
- mode: "code" | "custom" | "analysis";
84
83
  task: string;
84
+ mode: "code" | "custom" | "analysis";
85
85
  maxTurns: number;
86
86
  context?: Record<string, unknown> | undefined;
87
87
  files?: string[] | undefined;
88
88
  }, ClaudeCodeResult>;
89
89
  /** Refactoring tool (code mode) */
90
90
  export declare const refactorTool: Tool<{
91
- mode: "code" | "custom" | "analysis";
92
91
  task: string;
92
+ mode: "code" | "custom" | "analysis";
93
93
  maxTurns: number;
94
94
  context?: Record<string, unknown> | undefined;
95
95
  files?: string[] | undefined;
96
96
  }, ClaudeCodeResult>;
97
97
  /** Documentation tool (code mode) */
98
98
  export declare const docsTool: Tool<{
99
- mode: "code" | "custom" | "analysis";
100
99
  task: string;
100
+ mode: "code" | "custom" | "analysis";
101
101
  maxTurns: number;
102
102
  context?: Record<string, unknown> | undefined;
103
103
  files?: string[] | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.74",
3
+ "version": "0.1.76",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",
@@ -76,12 +76,18 @@
76
76
  "./resource": {
77
77
  "import": "./esm/src/resource/index.js"
78
78
  },
79
+ "./jobs": {
80
+ "import": "./esm/src/jobs/index.js"
81
+ },
79
82
  "./mcp": {
80
83
  "import": "./esm/src/mcp/index.js"
81
84
  },
82
85
  "./middleware": {
83
86
  "import": "./esm/src/middleware/index.js"
84
87
  },
88
+ "./utils": {
89
+ "import": "./esm/src/utils/index.js"
90
+ },
85
91
  "./oauth": {
86
92
  "import": "./esm/src/oauth/index.js"
87
93
  },
@@ -146,6 +152,7 @@
146
152
  "esbuild": "0.20.2",
147
153
  "github-slugger": "2.0.0",
148
154
  "gray-matter": "4.0.3",
155
+ "jose": "5.9.6",
149
156
  "mdast-util-to-string": "4.0.0",
150
157
  "mime-types": "2.1.35",
151
158
  "react": "19.1.1",
@@ -1,6 +1,6 @@
1
1
  import * as dntShim from "../../../_dnt.shims.js";
2
2
  import { z } from "zod";
3
- import { createFileSystem } from "../../../src/platform/index.js";
3
+ import { createFileSystem, getEnv } from "../../../src/platform/index.js";
4
4
  import { basename, extname, join, normalize, relative } from "../../../src/platform/compat/path/index.js";
5
5
  import { withSpan } from "../../../src/observability/tracing/otlp-setup.js";
6
6
  import { cliLogger } from "../../utils/index.js";
@@ -9,6 +9,7 @@ import type { ParsedArgs } from "../../shared/types.js";
9
9
  import { downloadUploadToFile, listAllUploads, type UploadItem } from "../uploads/command.js";
10
10
  import { putRemoteFileFromLocal } from "../files/command.js";
11
11
  import { knowledgeIngestPythonSource } from "./parser-source.js";
12
+ import { createJobUserLogger, type Logger, serverLogger } from "../../../src/utils/index.js";
12
13
 
13
14
  const SUPPORTED_EXTENSIONS = new Set([
14
15
  ".pdf",
@@ -59,6 +60,8 @@ type KnowledgeSource =
59
60
 
60
61
  type DownloadResult = { uploadPath: string; localPath: string; bytes?: number };
61
62
 
63
+ const knowledgeJobLogger = serverLogger.component("knowledge-ingest");
64
+
62
65
  const KnowledgeIngestArgsSchema = z.object({
63
66
  projectSlug: z.string().optional(),
64
67
  projectDir: z.string().optional(),
@@ -130,6 +133,27 @@ function printJson(value: unknown): void {
130
133
  console.log(JSON.stringify(value, null, 2));
131
134
  }
132
135
 
136
+ function createKnowledgeIngestEventLogger(): Logger | null {
137
+ const projectId = getEnv("TENANT_PROJECT_ID");
138
+ const jobId = getEnv("JOB_ID");
139
+
140
+ if (!projectId || !jobId) {
141
+ return null;
142
+ }
143
+
144
+ return createJobUserLogger(knowledgeJobLogger, {
145
+ projectId,
146
+ jobId,
147
+ batchId: getEnv("JOB_BATCH_ID") ?? undefined,
148
+ jobTarget: getEnv("JOB_TARGET") ?? undefined,
149
+ task: "knowledge-ingest",
150
+ });
151
+ }
152
+
153
+ function buildKnowledgeSourceName(source: KnowledgeSource): string {
154
+ return basename(source.kind === "upload" ? source.uploadPath : source.localPath);
155
+ }
156
+
133
157
  function showKnowledgeUsage(): void {
134
158
  console.log(`
135
159
  Veryfront Knowledge
@@ -484,6 +508,7 @@ export async function ingestResolvedSources(
484
508
  outputDir: string;
485
509
  runParser: typeof runKnowledgeParser;
486
510
  uploadKnowledgeFile: (remotePath: string, localPath: string) => Promise<{ path: string }>;
511
+ eventLogger?: Logger | null;
487
512
  },
488
513
  ): Promise<KnowledgeIngestFileResult[]> {
489
514
  if (options.slug && sources.length !== 1) {
@@ -494,6 +519,13 @@ export async function ingestResolvedSources(
494
519
  const results: KnowledgeIngestFileResult[] = [];
495
520
 
496
521
  for (const [index, source] of sources.entries()) {
522
+ deps.eventLogger?.info("Processing knowledge source", {
523
+ phase: "file_processing",
524
+ progress_current: index + 1,
525
+ progress_total: sources.length,
526
+ source_name: buildKnowledgeSourceName(source),
527
+ });
528
+
497
529
  const parser = await deps.runParser({
498
530
  filePath: source.localPath,
499
531
  outputDir: deps.outputDir,
@@ -507,6 +539,26 @@ export async function ingestResolvedSources(
507
539
  options.knowledgePath,
508
540
  );
509
541
  const uploaded = await deps.uploadKnowledgeFile(remotePath, parser.sandbox_output_path);
542
+
543
+ deps.eventLogger?.info("Knowledge source ingested", {
544
+ phase: "file_completed",
545
+ progress_current: index + 1,
546
+ progress_total: sources.length,
547
+ source_name: buildKnowledgeSourceName(source),
548
+ remote_path: uploaded.path,
549
+ warning_count: parser.warnings.length,
550
+ });
551
+
552
+ if (parser.warnings.length > 0) {
553
+ deps.eventLogger?.warn("Knowledge source emitted warnings", {
554
+ phase: "file_warning",
555
+ progress_current: index + 1,
556
+ progress_total: sources.length,
557
+ source_name: buildKnowledgeSourceName(source),
558
+ warning_count: parser.warnings.length,
559
+ });
560
+ }
561
+
510
562
  results.push(
511
563
  createKnowledgeIngestResult({
512
564
  source: buildSourceReference(source),
@@ -545,8 +597,14 @@ export async function knowledgeCommand(args: ParsedArgs): Promise<void> {
545
597
  const outputDir = options.outputDir ?? await defaultOutputRoot();
546
598
  const shouldCleanupOutputDir = options.outputDir === undefined;
547
599
  const downloadOutputDir = resolveKnowledgeDownloadOutputDir(outputDir);
600
+ const eventLogger = createKnowledgeIngestEventLogger();
548
601
 
549
602
  try {
603
+ eventLogger?.info("Starting knowledge ingest", {
604
+ phase: "started",
605
+ mode: options.path ? "path_prefix" : "explicit_sources",
606
+ });
607
+
550
608
  const sources = await collectKnowledgeSources(options, {
551
609
  client,
552
610
  projectSlug: config.projectSlug,
@@ -558,15 +616,27 @@ export async function knowledgeCommand(args: ParsedArgs): Promise<void> {
558
616
  ),
559
617
  });
560
618
 
619
+ eventLogger?.info("Resolved knowledge sources", {
620
+ phase: "sources_resolved",
621
+ progress_total: sources.length,
622
+ });
623
+
561
624
  const results = await ingestResolvedSources(sources, options, {
562
625
  client,
563
626
  projectSlug: config.projectSlug,
564
627
  outputDir,
565
628
  runParser: runKnowledgeParser,
629
+ eventLogger,
566
630
  uploadKnowledgeFile: (remotePath, localPath) =>
567
631
  putRemoteFileFromLocal(client, config.projectSlug, remotePath, localPath),
568
632
  });
569
633
 
634
+ eventLogger?.info("Completed knowledge ingest", {
635
+ phase: "completed",
636
+ progress_current: results.length,
637
+ progress_total: results.length,
638
+ });
639
+
570
640
  if (options.json) {
571
641
  printJson(results);
572
642
  return;
@@ -578,6 +648,11 @@ export async function knowledgeCommand(args: ParsedArgs): Promise<void> {
578
648
  cliLogger.info(` ${result.summary}`);
579
649
  }
580
650
  }
651
+ } catch (error) {
652
+ eventLogger?.error("Knowledge ingest failed", {
653
+ phase: "failed",
654
+ });
655
+ throw error;
581
656
  } finally {
582
657
  if (shouldCleanupOutputDir) {
583
658
  await Promise.all([
package/src/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.74",
3
+ "version": "0.1.76",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "exclude": [
@@ -32,8 +32,10 @@ export default {
32
32
  "./workflow/discovery": "./src/workflow/discovery/index.ts",
33
33
  "./prompt": "./src/prompt/index.ts",
34
34
  "./resource": "./src/resource/index.ts",
35
+ "./jobs": "./src/jobs/index.ts",
35
36
  "./mcp": "./src/mcp/index.ts",
36
37
  "./middleware": "./src/middleware/index.ts",
38
+ "./utils": "./src/utils/index.ts",
37
39
  "./oauth": "./src/oauth/index.ts",
38
40
  "./provider": "./src/provider/index.ts",
39
41
  "./fs": "./src/fs/index.ts",
@@ -60,6 +62,7 @@ export default {
60
62
  "veryfront/components/ai": "./src/react/components/ai/index.ts",
61
63
  "veryfront/sandbox": "./src/sandbox/index.ts",
62
64
  "veryfront/embedding": "./src/embedding/index.ts",
65
+ "veryfront/jobs": "./src/jobs/index.ts",
63
66
  "veryfront/agent/react": "./src/agent/react/index.ts",
64
67
  "veryfront/agent/testing": "./src/agent/testing/index.ts",
65
68
  "veryfront/agent/middleware": "./src/agent/middleware/index.ts",
@@ -71,6 +74,7 @@ export default {
71
74
  "veryfront/workflow/claude-code": "./src/workflow/claude-code/index.ts",
72
75
  "veryfront/workflow/claude-code/react": "./src/workflow/claude-code/react/index.ts",
73
76
  "veryfront/workflow/discovery": "./src/workflow/discovery/index.ts",
77
+ "veryfront/utils": "./src/utils/index.ts",
74
78
  "veryfront/utils/box": "./src/utils/box.ts",
75
79
  "veryfront/utils/case-utils": "./src/utils/case-utils.ts",
76
80
  "veryfront/utils/constants/server": "./src/utils/constants/server.ts",
@@ -132,6 +136,7 @@ export default {
132
136
  "#veryfront/react": "./src/react/index.ts",
133
137
  "#veryfront/rendering": "./src/rendering/index.ts",
134
138
  "#veryfront/resource": "./src/resource/index.ts",
139
+ "#veryfront/jobs": "./src/jobs/index.ts",
135
140
  "#veryfront/routing": "./src/routing/index.ts",
136
141
  "#veryfront/security": "./src/security/index.ts",
137
142
  "#veryfront/skill": "./src/skill/index.ts",
@@ -251,6 +256,7 @@ export default {
251
256
  "tailwindcss/colors": "https://esm.sh/tailwindcss@4.1.8/colors",
252
257
  "redis": "npm:redis@4.6.13",
253
258
  "pg": "npm:pg",
259
+ "jose": "npm:jose@5.9.6",
254
260
  "@opentelemetry/api": "npm:@opentelemetry/api@1",
255
261
  "@opentelemetry/core": "npm:@opentelemetry/core@1",
256
262
  "@opentelemetry/context-async-hooks": "npm:@opentelemetry/context-async-hooks@1",
@@ -288,11 +294,11 @@ export default {
288
294
  "tasks": {
289
295
  "setup": "deno run --allow-all scripts/setup.ts",
290
296
  "generate": "deno run -A scripts/build/generate-templates-manifest.ts && deno run -A scripts/build/generate-dev-ui-manifest.ts && deno run -A scripts/build/prebundle-client-scripts.ts && deno run -A scripts/build/prebundle-bridge.ts",
291
- "start": "deno task generate && deno run --allow-all cli/main.ts",
292
- "start:headless": "deno task generate && deno run --allow-all cli/main.ts --headless",
293
- "proxy": "deno task generate && deno run --allow-all cli/main.ts serve --mode=proxy",
297
+ "start": "deno task generate && deno run --allow-read --allow-write --allow-net --allow-env --allow-run --allow-sys --unstable-worker-options --unstable-net cli/main.ts",
298
+ "start:headless": "deno task generate && deno run --allow-read --allow-write --allow-net --allow-env --allow-run --allow-sys --unstable-worker-options --unstable-net cli/main.ts --headless",
299
+ "proxy": "deno task generate && deno run --allow-read --allow-write --allow-net --allow-env --allow-run --allow-sys --unstable-worker-options --unstable-net cli/main.ts serve --mode=proxy",
294
300
  "dev": "deno task generate && deno run --allow-all cli/main.ts dev",
295
- "production": "deno task generate && deno run --allow-all cli/main.ts serve --mode=production",
301
+ "production": "deno task generate && deno run --allow-read --allow-write --allow-net --allow-env --allow-run --allow-sys --unstable-worker-options --unstable-net cli/main.ts serve --mode=production",
296
302
  "build:prepare": "deno run -A scripts/build/generate-integrations-module.ts && deno task generate && deno run -A scripts/build/prepare-framework-sources.ts",
297
303
  "build": "deno task build:prepare && deno run -A scripts/build/compile-binary.ts --output ./bin/veryfront",
298
304
  "build:npm": "deno run -A scripts/build/generate-integrations-module.ts && deno task generate && deno run -A scripts/build/build-npm-dnt.ts",
@@ -307,11 +313,12 @@ export default {
307
313
  "test:coverage:integration": "rm -rf coverage && VF_DISABLE_LRU_INTERVAL=1 SSR_TRANSFORM_PER_PROJECT_LIMIT=0 REVALIDATION_PER_PROJECT_LIMIT=0 NODE_ENV=production LOG_FORMAT=text deno test --no-check --parallel --fail-fast --allow-all --coverage=coverage '--ignore=tests/e2e,tests/integration/compiled-binary-e2e.test.ts' tests --unstable-worker-options --unstable-net || exit 1",
308
314
  "coverage:report": "deno coverage coverage --include=src/ --exclude=tests --exclude=src/**/*_test.ts --exclude=src/**/*_test.tsx --exclude=src/**/*.test.ts --exclude=src/**/*.test.tsx --lcov > coverage/lcov.info && deno run --allow-read scripts/lint/check-coverage.ts 80",
309
315
  "coverage:html": "deno coverage coverage --include=src/ --exclude=tests --exclude=src/**/*_test.ts --exclude=src/**/*_test.tsx --exclude=src/**/*.test.ts --exclude=src/**/*.test.tsx --html",
316
+ "bench": "VF_DISABLE_LRU_INTERVAL=1 NODE_ENV=production LOG_FORMAT=text deno bench --no-check --allow-all --unstable-worker-options --unstable-net $(find src -name '*.bench.ts')",
310
317
  "clean": "rm -rf .cache/",
311
318
  "lint": "DENO_NO_PACKAGE_JSON=1 deno lint src/ cli/",
312
319
  "fmt": "deno fmt src/ cli/",
313
320
  "fmt:check": "deno fmt --check src/ cli/",
314
- "typecheck": "deno task generate && deno check src/index.ts cli/main.ts src/server/index.ts src/routing/api/index.ts src/rendering/index.ts src/platform/index.ts src/platform/adapters/index.ts src/build/index.ts src/build/production-build/index.ts src/transforms/index.ts src/config/index.ts src/utils/index.ts src/data/index.ts src/security/index.ts src/middleware/index.ts src/server/handlers/dev/index.ts src/server/handlers/request/api/index.ts src/rendering/cache/index.ts src/rendering/cache/stores/index.ts src/rendering/rsc/actions/index.ts src/html/index.ts src/modules/index.ts src/proxy/main.ts src/chat/index.ts src/markdown/index.ts src/mdx/index.ts src/fs/index.ts src/oauth/index.ts src/agent/index.ts src/tool/index.ts src/workflow/index.ts src/prompt/index.ts src/resource/index.ts src/mcp/index.ts src/provider/index.ts",
321
+ "typecheck": "deno task generate && deno check src/index.ts cli/main.ts src/server/index.ts src/routing/api/index.ts src/rendering/index.ts src/platform/index.ts src/platform/adapters/index.ts src/build/index.ts src/build/production-build/index.ts src/transforms/index.ts src/config/index.ts src/utils/index.ts src/data/index.ts src/security/index.ts src/middleware/index.ts src/server/handlers/dev/index.ts src/server/handlers/request/api/index.ts src/rendering/cache/index.ts src/rendering/cache/stores/index.ts src/rendering/rsc/actions/index.ts src/html/index.ts src/modules/index.ts src/proxy/main.ts src/chat/index.ts src/markdown/index.ts src/mdx/index.ts src/fs/index.ts src/oauth/index.ts src/agent/index.ts src/tool/index.ts src/workflow/index.ts src/prompt/index.ts src/resource/index.ts src/jobs/index.ts src/mcp/index.ts src/provider/index.ts",
315
322
  "verify": "deno task generate && deno fmt --check src/ cli/ && DENO_NO_PACKAGE_JSON=1 deno lint src/ cli/ && deno task lint:style && deno task lint:cli-boundary && deno task lint:wildcard-exports && deno task lint:barrel-jsdoc && deno task docs:validate && deno task typecheck && deno task test && deno task test:e2e:binary",
316
323
  "verify:quick": "deno task generate && deno fmt --check src/ cli/ && DENO_NO_PACKAGE_JSON=1 deno lint src/ cli/ && deno task lint:style && deno task lint:cli-boundary && deno task lint:wildcard-exports && deno task lint:barrel-jsdoc && deno task docs:validate && deno task typecheck",
317
324
  "docs": "rm -rf docs/reference && deno run --allow-read --allow-write --allow-run scripts/docs/generate-api-reference.ts",