@crewx/sdk 0.9.0-rc.139 → 0.9.0-rc.140

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.
@@ -0,0 +1,12 @@
1
+ type SqliteDatabase = import('better-sqlite3').Database;
2
+ export declare const LOGS_DB_FILE_NAME = "logs.db";
3
+ export declare const LOGS_DB_SCHEMA_VERSION = 1;
4
+ export declare function resolveCrewxLogsDbPath(crewxDbPath?: string): string;
5
+ export declare function hashRequestLogBody(body: string): string;
6
+ export interface LogsDbHandle {
7
+ readonly path: string;
8
+ readonly sqlite: SqliteDatabase;
9
+ close(): void;
10
+ }
11
+ export declare function openLogsDb(crewxDbPath?: string): LogsDbHandle;
12
+ export {};
@@ -0,0 +1,70 @@
1
+ export declare const REQUEST_LOG_MOVE_DEFAULT_BATCH_ROWS = 250;
2
+ export declare const REQUEST_LOG_MOVE_DEFAULT_BATCH_BYTES: number;
3
+ export declare const REQUEST_LOG_MOVE_CHECKPOINT_WAL_BYTES: number;
4
+ export declare const REQUEST_LOG_MOVE_CHECKPOINT_MIN_INTERVAL_MS = 5000;
5
+ export interface MoveRequestLogsProgress {
6
+ batches: number;
7
+ scannedRows: number;
8
+ movedRows: number;
9
+ bodiesAdded: number;
10
+ lastRowid: number;
11
+ elapsedMs: number;
12
+ deleteTxMs: number;
13
+ walBytes: number;
14
+ }
15
+ export interface MoveRequestLogsTestHooks {
16
+ afterRead?: (rows: ReadonlyArray<{
17
+ rowid: number;
18
+ id: string;
19
+ }>) => void;
20
+ afterLogsCommit?: (rows: ReadonlyArray<{
21
+ rowid: number;
22
+ id: string;
23
+ }>) => void;
24
+ }
25
+ export interface MoveRequestLogsOptions {
26
+ crewxDbPath?: string;
27
+ batchRows?: number;
28
+ batchBytes?: number;
29
+ maxBatches?: number;
30
+ maxMs?: number;
31
+ dryRun?: boolean;
32
+ checkpointWalBytes?: number;
33
+ checkpointMinIntervalMs?: number;
34
+ onProgress?: (progress: MoveRequestLogsProgress) => void;
35
+ testHooks?: MoveRequestLogsTestHooks;
36
+ }
37
+ export interface MoveRequestLogsResult {
38
+ crewxDbPath: string;
39
+ logsDbPath: string;
40
+ dryRun: boolean;
41
+ movedRows: number;
42
+ remainingRows: number;
43
+ bodiesAdded: number;
44
+ batches: number;
45
+ maxDeleteTxMs: number;
46
+ deleteTxMs: number[];
47
+ maxWalBytes: number;
48
+ checkpoints: number;
49
+ elapsedMs: number;
50
+ sliceLimitReached: boolean;
51
+ scan?: {
52
+ rows: number;
53
+ bodies: number;
54
+ bodyBytes: number;
55
+ distinctBodies: number;
56
+ distinctBodyBytes: number;
57
+ };
58
+ }
59
+ export declare function moveRequestLogsToLogsDb(opts?: MoveRequestLogsOptions): MoveRequestLogsResult;
60
+ export interface RequestLogsMoveStatus {
61
+ crewxDbPath: string;
62
+ logsDbPath: string;
63
+ crewxRows: number;
64
+ crewxFreelistPages: number;
65
+ logsRows: number | null;
66
+ logsBodies: number | null;
67
+ logsFileBytes: number;
68
+ logsWalBytes: number;
69
+ }
70
+ export declare function inspectRequestLogsMove(crewxDbPath?: string): RequestLogsMoveStatus;
@@ -1,5 +1,5 @@
1
1
  import { BaseSqliteRepository } from './base-sqlite-repository.js';
2
- import { request_logs } from '../schema/index.js';
2
+ import type { request_logs } from '../schema/index.js';
3
3
  export type RequestLogRow = typeof request_logs.$inferSelect;
4
4
  export type NewRequestLog = typeof request_logs.$inferInsert;
5
5
  export interface RequestLogEntry {
@@ -21,12 +21,15 @@ export interface RequestLogEntry {
21
21
  }
22
22
  export declare class RequestLogRepository extends BaseSqliteRepository {
23
23
  private readonly dbPath?;
24
+ private writer?;
24
25
  constructor(opts?: {
25
26
  dbPath?: string;
26
27
  dbRoot?: string;
27
28
  });
28
29
  resolveDbPath(): string;
29
- private openHandle;
30
+ resolveLogsDbPath(): string;
31
+ private ensureWriter;
30
32
  bulkInsert(entries: RequestLogEntry[]): void;
31
- findRecent(limit?: number): RequestLogRow[];
33
+ private prepareRow;
34
+ close(): void;
32
35
  }
@@ -7,6 +7,7 @@ export * from './spans.js';
7
7
  export * from './tool-calls.js';
8
8
  export * from './thread-boxes.js';
9
9
  export * from './request-logs.js';
10
+ export * from './request-log-daily.js';
10
11
  export * from './usage-limit-snapshots.js';
11
12
  export * from './usage-reports.js';
12
13
  export * from './notifications.js';
@@ -0,0 +1,151 @@
1
+ export declare const request_log_daily: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2
+ name: "request_log_daily";
3
+ schema: undefined;
4
+ columns: {
5
+ day: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6
+ name: "day";
7
+ tableName: "request_log_daily";
8
+ dataType: "string";
9
+ columnType: "SQLiteText";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: false;
14
+ isPrimaryKey: false;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: [string, ...string[]];
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {
22
+ length: number | undefined;
23
+ }>;
24
+ scope: import("drizzle-orm/sqlite-core").SQLiteColumn<{
25
+ name: "scope";
26
+ tableName: "request_log_daily";
27
+ dataType: "string";
28
+ columnType: "SQLiteText";
29
+ data: string;
30
+ driverParam: string;
31
+ notNull: true;
32
+ hasDefault: false;
33
+ isPrimaryKey: false;
34
+ isAutoincrement: false;
35
+ hasRuntimeDefault: false;
36
+ enumValues: [string, ...string[]];
37
+ baseColumn: never;
38
+ identity: undefined;
39
+ generated: undefined;
40
+ }, {}, {
41
+ length: number | undefined;
42
+ }>;
43
+ ok: import("drizzle-orm/sqlite-core").SQLiteColumn<{
44
+ name: "ok";
45
+ tableName: "request_log_daily";
46
+ dataType: "number";
47
+ columnType: "SQLiteInteger";
48
+ data: number;
49
+ driverParam: number;
50
+ notNull: true;
51
+ hasDefault: false;
52
+ isPrimaryKey: false;
53
+ isAutoincrement: false;
54
+ hasRuntimeDefault: false;
55
+ enumValues: undefined;
56
+ baseColumn: never;
57
+ identity: undefined;
58
+ generated: undefined;
59
+ }, {}, {}>;
60
+ client: import("drizzle-orm/sqlite-core").SQLiteColumn<{
61
+ name: "client";
62
+ tableName: "request_log_daily";
63
+ dataType: "number";
64
+ columnType: "SQLiteInteger";
65
+ data: number;
66
+ driverParam: number;
67
+ notNull: true;
68
+ hasDefault: false;
69
+ isPrimaryKey: false;
70
+ isAutoincrement: false;
71
+ hasRuntimeDefault: false;
72
+ enumValues: undefined;
73
+ baseColumn: never;
74
+ identity: undefined;
75
+ generated: undefined;
76
+ }, {}, {}>;
77
+ server: import("drizzle-orm/sqlite-core").SQLiteColumn<{
78
+ name: "server";
79
+ tableName: "request_log_daily";
80
+ dataType: "number";
81
+ columnType: "SQLiteInteger";
82
+ data: number;
83
+ driverParam: number;
84
+ notNull: true;
85
+ hasDefault: false;
86
+ isPrimaryKey: false;
87
+ isAutoincrement: false;
88
+ hasRuntimeDefault: false;
89
+ enumValues: undefined;
90
+ baseColumn: never;
91
+ identity: undefined;
92
+ generated: undefined;
93
+ }, {}, {}>;
94
+ p50_ms: import("drizzle-orm/sqlite-core").SQLiteColumn<{
95
+ name: "p50_ms";
96
+ tableName: "request_log_daily";
97
+ dataType: "number";
98
+ columnType: "SQLiteInteger";
99
+ data: number;
100
+ driverParam: number;
101
+ notNull: false;
102
+ hasDefault: false;
103
+ isPrimaryKey: false;
104
+ isAutoincrement: false;
105
+ hasRuntimeDefault: false;
106
+ enumValues: undefined;
107
+ baseColumn: never;
108
+ identity: undefined;
109
+ generated: undefined;
110
+ }, {}, {}>;
111
+ p95_ms: import("drizzle-orm/sqlite-core").SQLiteColumn<{
112
+ name: "p95_ms";
113
+ tableName: "request_log_daily";
114
+ dataType: "number";
115
+ columnType: "SQLiteInteger";
116
+ data: number;
117
+ driverParam: number;
118
+ notNull: false;
119
+ hasDefault: false;
120
+ isPrimaryKey: false;
121
+ isAutoincrement: false;
122
+ hasRuntimeDefault: false;
123
+ enumValues: undefined;
124
+ baseColumn: never;
125
+ identity: undefined;
126
+ generated: undefined;
127
+ }, {}, {}>;
128
+ computed_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
129
+ name: "computed_at";
130
+ tableName: "request_log_daily";
131
+ dataType: "string";
132
+ columnType: "SQLiteText";
133
+ data: string;
134
+ driverParam: string;
135
+ notNull: true;
136
+ hasDefault: false;
137
+ isPrimaryKey: false;
138
+ isAutoincrement: false;
139
+ hasRuntimeDefault: false;
140
+ enumValues: [string, ...string[]];
141
+ baseColumn: never;
142
+ identity: undefined;
143
+ generated: undefined;
144
+ }, {}, {
145
+ length: number | undefined;
146
+ }>;
147
+ };
148
+ dialect: "sqlite";
149
+ }>;
150
+ export type RequestLogDailyRow = typeof request_log_daily.$inferSelect;
151
+ export type NewRequestLogDailyRow = typeof request_log_daily.$inferInsert;
@@ -8,7 +8,7 @@ export declare const MCPB_MANIFEST_VERSION = "0.3";
8
8
  export declare const CREWX_META_NAMESPACE = "dev.crewx";
9
9
  export declare const MCPB_MANIFEST_KEYS: readonly ["manifest_version", "name", "display_name", "version", "description", "long_description", "author", "repository", "homepage", "documentation", "support", "icon", "icons", "screenshots", "localization", "server", "tools", "tools_generated", "prompts", "prompts_generated", "keywords", "license", "privacy_policies", "compatibility", "user_config", "_meta"];
10
10
  export declare const APP_MANIFEST_REQUIRED_KEYS: readonly ["manifest_version", "name", "display_name", "version", "description", "_meta"];
11
- export declare const APP_MANIFEST_PASSTHROUGH_KEYS: readonly ("name" | "description" | "tools" | "server" | "version" | "_meta" | "icon" | "manifest_version" | "display_name" | "long_description" | "author" | "repository" | "homepage" | "documentation" | "support" | "icons" | "screenshots" | "localization" | "tools_generated" | "prompts" | "prompts_generated" | "keywords" | "license" | "privacy_policies" | "compatibility" | "user_config")[];
11
+ export declare const APP_MANIFEST_PASSTHROUGH_KEYS: readonly ("name" | "description" | "server" | "tools" | "version" | "_meta" | "icon" | "manifest_version" | "display_name" | "long_description" | "author" | "repository" | "homepage" | "documentation" | "support" | "icons" | "screenshots" | "localization" | "tools_generated" | "prompts" | "prompts_generated" | "keywords" | "license" | "privacy_policies" | "compatibility" | "user_config")[];
12
12
  export declare const CREWX_META_REQUIRED_KEYS: readonly ["entry", "surfaces", "size", "stateProjection", "actions"];
13
13
  export declare const CREWX_META_OPTIONAL_KEYS: readonly ["definitionId", "definitionVersion", "icon", "tone", "entryHash", "runtime", "initialState", "usage", "detailPanel", "displayModes", "summaryProjection", "dataPaths", "focusedAiDataPaths", "csp"];
14
14
  export declare function isAppSemver(value: unknown): value is string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewx/sdk",
3
- "version": "0.9.0-rc.139",
3
+ "version": "0.9.0-rc.140",
4
4
  "license": "UNLICENSED",
5
5
  "engines": {
6
6
  "node": ">=20.19.0"