effect-agent 0.1.0-beta.90 → 0.1.0-beta.91
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.
|
@@ -16,7 +16,7 @@ const EncodedMemoryChange = Schema.Struct({
|
|
|
16
16
|
documentJson: StoredJson,
|
|
17
17
|
resultJson: StoredJson
|
|
18
18
|
});
|
|
19
|
-
const equivalentContent = Schema.toEquivalence(MemoryWrite.Wire.members[0].fields.content);
|
|
19
|
+
const equivalentContent = Schema.toEquivalence(Schema.toEncoded(MemoryWrite.Wire.members[0].fields.content));
|
|
20
20
|
const equivalentScopes = Schema.toEquivalence(MemoryWrite.Wire.members[0].fields.scopes);
|
|
21
21
|
/**
|
|
22
22
|
* Independent adapter limits. Counts and encoded bytes include durable operation receipts.
|
|
@@ -351,8 +351,9 @@ const makeMemoryServices = Effect.fn("SqliteMemoryStore.make")(function* () {
|
|
|
351
351
|
}, operation);
|
|
352
352
|
const bytes = utf8ByteLength;
|
|
353
353
|
const identityBytes = bytes(next.key.namespace.address) + bytes(next.key.id);
|
|
354
|
-
const
|
|
355
|
-
const
|
|
354
|
+
const resultBytes = bytes(resultJson);
|
|
355
|
+
const documentBytes = identityBytes + resultBytes + 128;
|
|
356
|
+
const receiptBytes = identityBytes + bytes(decodedWrite.operationId) + bytes(commandJson) + resultBytes + 128;
|
|
356
357
|
if (Math.max(documentBytes, receiptBytes) > limits.maxRowBytes) return yield* storageError("memory row byte limit", "invalid-input");
|
|
357
358
|
const used = yield* usage;
|
|
358
359
|
if (used.bytes < (currentRow?.bytes ?? 0) || current !== null && used.documents === 0) return yield* storageError("read memory usage", "corrupt");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlMemoryStore.mjs","names":[],"sources":["../../src/durable/SqlMemoryStore.ts"],"sourcesContent":["import { Clock, Context, Effect, Layer, Schema } from \"effect\";\nimport * as SqlClientService from \"effect/unstable/sql/SqlClient\";\nimport type { SqlError } from \"effect/unstable/sql/SqlError\";\n\nimport { utf8ByteLength } from \"../core/internal/utf8.ts\";\nimport { MemoryNamespaceAddress } from \"../core/MemoryNamespace.ts\";\nimport {\n applyMemoryWrite,\n MemoryDocument,\n MemoryKey,\n MemoryMutationFailpoint,\n type MemoryMutationFailure,\n MemoryOperationConflict,\n MemoryReader,\n MemoryStorageError,\n MemoryWrite,\n MemoryWriter,\n} from \"../core/MemoryStore.ts\";\n\nconst STORAGE_VERSION = 2 as const;\nconst METADATA_COMPONENT = \"memory\";\nconst DOCUMENT_TABLE = \"effect_agent_memory_documents_v1\";\nconst RECEIPT_TABLE = \"effect_agent_memory_receipts_v1\";\nconst USAGE_COMPONENT = \"memory-usage\";\nconst USAGE_TABLE = \"effect_agent_memory_usage_v1\";\nconst MAX_STORED_JSON_CODE_UNITS = 16 * 1024 * 1024;\nconst StoredJson = Schema.String.check(Schema.isMaxLength(MAX_STORED_JSON_CODE_UNITS));\n\nconst EncodedMemoryChange = Schema.Struct({\n commandJson: StoredJson,\n documentJson: StoredJson,\n resultJson: StoredJson,\n});\n\nconst equivalentContent = Schema.toEquivalence(MemoryWrite.Wire.members[0].fields.content);\nconst equivalentScopes = Schema.toEquivalence(MemoryWrite.Wire.members[0].fields.scopes);\n\n/**\n * Independent adapter limits. Counts and encoded bytes include durable operation receipts.\n * Bytes count UTF-8 row payloads plus 128 bytes per row, excluding SQLite pages/indexes.\n * Replacements charge their byte delta; receipts and tombstones are never pruned.\n * Optional reserves (default zero) withhold capacity from Put, within the hard totals.\n * They require exclusive upgraded writer ownership: older writers count toward usage\n * but do not honor reserves. Limits are captured when the writer Layer is built.\n */\nexport const SqlMemoryLimits = Context.Reference<{\n readonly maxRowBytes: number;\n readonly maxStorageBytes: number;\n readonly maxDocuments: number;\n readonly maxReceipts: number;\n readonly reservedWithdrawalBytes?: number;\n readonly reservedWithdrawalReceipts?: number;\n}>(\"@effect-agent/thread/SqlMemoryLimits\", {\n defaultValue: () => ({\n maxRowBytes: Number.MAX_SAFE_INTEGER,\n maxStorageBytes: Number.MAX_SAFE_INTEGER,\n maxDocuments: Number.MAX_SAFE_INTEGER,\n maxReceipts: Number.MAX_SAFE_INTEGER,\n }),\n});\n\nconst Limits = Schema.Struct({\n maxRowBytes: Schema.Natural,\n maxStorageBytes: Schema.Natural,\n maxDocuments: Schema.Natural,\n maxReceipts: Schema.Natural,\n reservedWithdrawalBytes: Schema.optional(Schema.Natural),\n reservedWithdrawalReceipts: Schema.optional(Schema.Natural),\n}).check(\n Schema.makeFilter(\n (limits) =>\n (limits.reservedWithdrawalBytes ?? 0) <= limits.maxStorageBytes &&\n (limits.reservedWithdrawalReceipts ?? 0) <= limits.maxReceipts,\n { expected: \"withdrawal reserves within hard storage limits\" },\n ),\n);\n\nconst UsageRow = Schema.Struct({\n documents: Schema.Natural,\n receipts: Schema.Natural,\n bytes: Schema.Natural,\n});\n\n// These expressions deliberately match the legacy aggregate's logical byte accounting.\nconst documentBytesSql = (row: string) =>\n `length(CAST(${row}.namespace AS BLOB)) + length(CAST(${row}.source_id AS BLOB)) + length(CAST(${row}.document_json AS BLOB)) + 128`;\n\nconst receiptBytesSql = (row: string) =>\n `length(CAST(${row}.namespace AS BLOB)) + length(CAST(${row}.source_id AS BLOB)) + length(CAST(${row}.operation_id AS BLOB)) + length(CAST(${row}.command_json AS BLOB)) + length(CAST(${row}.result_json AS BLOB)) + 128`;\n\n// Triggers keep already-open version-2 writers accounted for. Their admission policy\n// is still the old policy; deployment must drain them before relying on reserves.\nconst usageTriggers = [\n { table: DOCUMENT_TABLE, count: \"documents\", bytes: documentBytesSql },\n { table: RECEIPT_TABLE, count: \"receipts\", bytes: receiptBytesSql },\n].flatMap(({ table, count, bytes }) =>\n [\"INSERT\", \"UPDATE\", \"DELETE\"].map((event) => ({\n name: `${table}_usage_${event.toLowerCase()}`,\n sql: `CREATE TRIGGER ${table}_usage_${event.toLowerCase()} AFTER ${event} ON ${table}\n BEGIN\n UPDATE ${USAGE_TABLE} SET\n ${count} = ${count} + ${event === \"INSERT\" ? 1 : event === \"DELETE\" ? -1 : 0},\n bytes = bytes + (${event === \"DELETE\" ? \"0\" : bytes(\"NEW\")}) - (${event === \"INSERT\" ? \"0\" : bytes(\"OLD\")})\n WHERE singleton = 1;\n SELECT CASE WHEN changes() <> 1 THEN RAISE(ABORT, 'missing memory usage') END;\n END`,\n })),\n);\n\nclass MemoryMetadataRow extends Schema.Class<MemoryMetadataRow>(\n \"@effect-agent/storage-sqlite/MemoryMetadataRow\",\n)({\n version: Schema.Int,\n}) {}\n\nclass MemoryTableRow extends Schema.Class<MemoryTableRow>(\n \"@effect-agent/storage-sqlite/MemoryTableRow\",\n)({\n name: Schema.NonEmptyString,\n}) {}\n\nclass MemoryDocumentRow extends Schema.Class<MemoryDocumentRow>(\n \"@effect-agent/storage-sqlite/MemoryDocumentRow\",\n)({\n namespace: MemoryNamespaceAddress,\n source_id: MemoryKey.Wire.fields.id,\n format_version: Schema.Int,\n generation: Schema.Int,\n revision: Schema.NonEmptyString,\n document_json: StoredJson,\n stored_bytes: Schema.Natural,\n}) {}\n\nclass MemoryReceiptRow extends Schema.Class<MemoryReceiptRow>(\n \"@effect-agent/storage-sqlite/MemoryReceiptRow\",\n)({\n namespace: MemoryNamespaceAddress,\n operation_id: MemoryWrite.Wire.members[0].fields.operationId,\n source_id: MemoryKey.Wire.fields.id,\n format_version: Schema.Int,\n command_json: StoredJson,\n result_json: StoredJson,\n}) {}\n\nclass MemoryChangeCountRow extends Schema.Class<MemoryChangeCountRow>(\n \"@effect-agent/storage-sqlite/MemoryChangeCountRow\",\n)({\n changed: Schema.Int,\n}) {}\n\nclass StoredMemoryCommand extends Schema.Class<StoredMemoryCommand>(\n \"@effect-agent/storage-sqlite/StoredMemoryCommand\",\n)({\n version: Schema.Literal(STORAGE_VERSION),\n value: MemoryWrite.Wire,\n}) {}\n\nclass StoredMemoryResult extends Schema.Class<StoredMemoryResult>(\n \"@effect-agent/storage-sqlite/StoredMemoryResult\",\n)({\n version: Schema.Literal(STORAGE_VERSION),\n value: MemoryDocument.Wire,\n}) {}\n\nconst StoredVersionHeader = Schema.Struct({ version: Schema.Int });\n\nexport type SqliteMemoryInitializationError = MemoryStorageError | MemoryMutationFailure;\n\nconst storageError = (\n operation: string,\n reason: MemoryStorageError[\"reason\"] = \"unavailable\",\n): MemoryStorageError => MemoryStorageError.make({ operation, reason });\n\nconst query = <A extends object>(\n effect: Effect.Effect<ReadonlyArray<A>, SqlError>,\n operation: string,\n) => effect.pipe(Effect.mapError(() => storageError(operation)));\n\nconst decodeRows = Effect.fn(\"SqliteMemoryStore.decodeRows\")(function* <A, I>(\n schema: Schema.Codec<A, I, never>,\n rows: ReadonlyArray<unknown>,\n operation: string,\n): Effect.fn.Return<ReadonlyArray<A>, MemoryStorageError> {\n return yield* Schema.decodeUnknownEffect(Schema.Array(schema))(rows).pipe(\n Effect.mapError(() => storageError(operation, \"corrupt\")),\n );\n});\n\nconst decodeInput = Effect.fn(\"SqliteMemoryStore.decodeInput\")(function* <A, I>(\n schema: Schema.Codec<A, I, never>,\n value: unknown,\n operation: string,\n): Effect.fn.Return<A, MemoryStorageError> {\n return yield* Schema.decodeUnknownEffect(schema)(value).pipe(\n Effect.mapError(() => storageError(operation, \"invalid-input\")),\n );\n});\n\nconst encodeJson = Effect.fn(\"SqliteMemoryStore.encodeJson\")(function* <A, I>(\n schema: Schema.Codec<A, I, never>,\n value: A,\n operation: string,\n): Effect.fn.Return<string, MemoryStorageError> {\n return yield* Schema.encodeEffect(Schema.fromJsonString(schema))(value).pipe(\n Effect.mapError(() => storageError(operation, \"corrupt\")),\n );\n});\n\nconst validateEncodedChange = Effect.fn(\"SqliteMemoryStore.validateEncodedChange\")(function* (\n encoded: typeof EncodedMemoryChange.Type,\n operation: string,\n): Effect.fn.Return<void, MemoryStorageError> {\n yield* Schema.decodeEffect(EncodedMemoryChange)(encoded).pipe(\n Effect.mapError(() => storageError(operation, \"invalid-input\")),\n );\n});\n\nconst decodeVersionedJson = Effect.fn(\"SqliteMemoryStore.decodeVersionedJson\")(function* <A, I>(\n schema: Schema.Codec<A, I, never>,\n value: string,\n operation: string,\n): Effect.fn.Return<A, MemoryStorageError> {\n const header = yield* Schema.decodeEffect(Schema.fromJsonString(StoredVersionHeader))(value).pipe(\n Effect.mapError(() => storageError(operation, \"corrupt\")),\n );\n\n if (header.version !== STORAGE_VERSION) {\n return yield* storageError(operation, \"incompatible\");\n }\n\n const decoded = yield* Schema.decodeEffect(Schema.fromJsonString(schema))(value).pipe(\n Effect.mapError(() => storageError(operation, \"corrupt\")),\n );\n\n const canonical = yield* encodeJson(schema, decoded, operation);\n\n if (canonical !== value) return yield* storageError(operation, \"corrupt\");\n\n return decoded;\n});\n\nconst validateDocument = Effect.fn(\"SqliteMemoryStore.validateDocument\")(function* (\n document: MemoryDocument,\n key: MemoryKey,\n operation: string,\n): Effect.fn.Return<MemoryDocument, MemoryStorageError> {\n if (\n document.key.namespace.address !== key.namespace.address ||\n document.key.id !== key.id ||\n document.source.id !== key.id ||\n document.source.revision !== String(document.generation) ||\n (document.generation === 1) !== (document.predecessor === null) ||\n (document.predecessor !== null &&\n (document.predecessor.id !== key.id ||\n document.predecessor.revision !== String(document.generation - 1)))\n ) {\n return yield* storageError(operation, \"corrupt\");\n }\n\n return document;\n});\n\nconst validateReceiptResult = Effect.fn(\"SqliteMemoryStore.validateReceiptResult\")(function* (\n command: MemoryWrite,\n result: MemoryDocument,\n operation: string,\n): Effect.fn.Return<void, MemoryStorageError> {\n if ((result.predecessor?.revision ?? null) !== command.expectedRevision) {\n return yield* storageError(operation, \"corrupt\");\n }\n if (command._tag === \"Put\") {\n if (result._tag !== \"ActiveMemoryDocument\" || result.source.locator !== command.locator) {\n return yield* storageError(operation, \"corrupt\");\n }\n if (\n !equivalentContent(command.content, result.content) ||\n !equivalentScopes(command.scopes, result.scopes)\n ) {\n return yield* storageError(operation, \"corrupt\");\n }\n\n return;\n }\n if (\n result._tag !== \"WithdrawnMemoryDocument\" ||\n result.reason !== command.reason ||\n result.predecessor === null ||\n result.source.locator !== result.predecessor.locator\n ) {\n return yield* storageError(operation, \"corrupt\");\n }\n});\n\nconst readUsage = Effect.fn(\"SqliteMemoryStore.readUsage\")(function* () {\n const sql = yield* SqlClientService.SqlClient;\n const operation = \"read memory usage\";\n\n const rows = yield* query(\n sql<Record<string, unknown>>`\n SELECT documents, receipts, bytes FROM effect_agent_memory_usage_v1 WHERE singleton = 1\n `,\n operation,\n ).pipe(Effect.flatMap((rows) => decodeRows(UsageRow, rows, operation)));\n\n if (rows.length !== 1) return yield* storageError(operation, \"corrupt\");\n\n return rows[0];\n});\n\n// Called inside schema initialization's transaction. The separate marker distinguishes\n// a legacy store from damaged established accounting; reopening never rebuilds counters.\nconst initializeMemoryUsage = Effect.fn(\"SqliteMemoryStore.initializeUsage\")(function* () {\n const sql = yield* SqlClientService.SqlClient;\n const failpoint = yield* MemoryMutationFailpoint;\n const operation = \"initialize memory usage\";\n\n const metadata = yield* sql<Record<string, unknown>>`\n SELECT version FROM effect_agent_memory_metadata WHERE component = ${USAGE_COMPONENT}\n `.pipe(Effect.flatMap((rows) => decodeRows(MemoryMetadataRow, rows, operation)));\n\n const objects = yield* sql<Record<string, unknown>>`\n SELECT name FROM sqlite_master\n WHERE name = ${USAGE_TABLE} OR name IN ${sql.in(usageTriggers.map((trigger) => trigger.name))}\n `.pipe(Effect.flatMap((rows) => decodeRows(MemoryTableRow, rows, operation)));\n\n if (metadata.length === 0) {\n if (objects.length !== 0) return yield* storageError(operation, \"corrupt\");\n yield* failpoint.hit(\"memory:initialize:before-accounting\");\n yield* sql`\n CREATE TABLE effect_agent_memory_usage_v1 (\n singleton INTEGER PRIMARY KEY NOT NULL CHECK (singleton = 1),\n documents INTEGER NOT NULL CHECK (typeof(documents) = 'integer' AND documents BETWEEN 0 AND 9007199254740991),\n receipts INTEGER NOT NULL CHECK (typeof(receipts) = 'integer' AND receipts BETWEEN 0 AND 9007199254740991),\n bytes INTEGER NOT NULL CHECK (typeof(bytes) = 'integer' AND bytes BETWEEN 0 AND 9007199254740991)\n )\n `;\n yield* sql`\n INSERT INTO effect_agent_memory_usage_v1 (singleton, documents, receipts, bytes)\n SELECT 1,\n (SELECT COUNT(*) FROM effect_agent_memory_documents_v1),\n (SELECT COUNT(*) FROM effect_agent_memory_receipts_v1),\n COALESCE((SELECT SUM(length(CAST(namespace AS BLOB)) + length(CAST(source_id AS BLOB)) +\n length(CAST(document_json AS BLOB)) + 128) FROM effect_agent_memory_documents_v1), 0) +\n COALESCE((SELECT SUM(length(CAST(namespace AS BLOB)) + length(CAST(source_id AS BLOB)) +\n length(CAST(operation_id AS BLOB)) + length(CAST(command_json AS BLOB)) +\n length(CAST(result_json AS BLOB)) + 128) FROM effect_agent_memory_receipts_v1), 0)\n `;\n for (const trigger of usageTriggers) yield* sql.unsafe(trigger.sql);\n yield* sql`\n INSERT INTO effect_agent_memory_metadata (component, version) VALUES (${USAGE_COMPONENT}, 1)\n `;\n yield* failpoint.hit(\"memory:initialize:after-accounting\");\n } else {\n if (metadata.length !== 1 || metadata[0].version !== 1) {\n return yield* storageError(operation, \"incompatible\");\n }\n if (objects.length !== usageTriggers.length + 1) {\n return yield* storageError(operation, \"corrupt\");\n }\n }\n yield* readUsage();\n});\n\nconst initializeMemorySchema = Effect.fn(\"SqliteMemoryStore.initialize\")(function* () {\n const sql = yield* SqlClientService.SqlClient;\n const failpoint = yield* MemoryMutationFailpoint;\n\n yield* failpoint.hit(\"memory:initialize:before\");\n yield* sql\n .withTransaction(\n Effect.gen(function* () {\n yield* sql`\n CREATE TABLE IF NOT EXISTS effect_agent_memory_metadata (\n component TEXT PRIMARY KEY NOT NULL,\n version INTEGER NOT NULL\n )\n `;\n\n const metadataRows = yield* sql<Record<string, unknown>>`\n SELECT version\n FROM effect_agent_memory_metadata\n WHERE component = ${METADATA_COMPONENT}\n `;\n\n const metadata = yield* decodeRows(\n MemoryMetadataRow,\n metadataRows,\n \"decode memory schema version\",\n );\n\n if (metadata.length > 1)\n return yield* storageError(\"decode memory schema version\", \"corrupt\");\n const currentVersion = metadata[0]?.version;\n\n if (currentVersion !== undefined && currentVersion !== STORAGE_VERSION) {\n return yield* storageError(\"initialize memory schema\", \"incompatible\");\n }\n if (currentVersion === undefined) {\n const tableRows = yield* sql<Record<string, unknown>>`\n SELECT name\n FROM sqlite_master\n WHERE type = 'table' AND name IN (${DOCUMENT_TABLE}, ${RECEIPT_TABLE})\n `;\n\n const existingTables = yield* decodeRows(\n MemoryTableRow,\n tableRows,\n \"inspect memory schema\",\n );\n\n if (existingTables.length > 0) {\n return yield* storageError(\"initialize memory schema\", \"incompatible\");\n }\n yield* sql`\n CREATE TABLE effect_agent_memory_documents_v1 (\n namespace TEXT NOT NULL,\n source_id TEXT NOT NULL,\n format_version INTEGER NOT NULL,\n generation INTEGER NOT NULL,\n revision TEXT NOT NULL,\n document_json TEXT NOT NULL,\n PRIMARY KEY (namespace, source_id)\n )\n `;\n yield* sql`\n CREATE TABLE effect_agent_memory_receipts_v1 (\n namespace TEXT NOT NULL,\n operation_id TEXT NOT NULL,\n source_id TEXT NOT NULL,\n format_version INTEGER NOT NULL,\n command_json TEXT NOT NULL,\n result_json TEXT NOT NULL,\n PRIMARY KEY (namespace, operation_id)\n )\n `;\n yield* sql`\n INSERT INTO effect_agent_memory_metadata (component, version)\n VALUES (${METADATA_COMPONENT}, ${STORAGE_VERSION})\n `;\n }\n yield* sql`\n SELECT namespace, source_id, format_version, generation, revision, document_json\n FROM effect_agent_memory_documents_v1\n LIMIT 0\n `;\n yield* sql`\n SELECT namespace, operation_id, source_id, format_version, command_json, result_json\n FROM effect_agent_memory_receipts_v1\n LIMIT 0\n `;\n yield* initializeMemoryUsage();\n }),\n )\n .pipe(Effect.catchTag(\"SqlError\", () => Effect.fail(storageError(\"initialize memory schema\"))));\n yield* failpoint.hit(\"memory:initialize:after\");\n});\n\nconst makeMemoryReader = Effect.fn(\"SqliteMemoryStore.makeReader\")(function* () {\n const sql = yield* SqlClientService.SqlClient;\n\n const readDocument = Effect.fn(\"SqliteMemoryStore.readDocument\")(function* (\n key: MemoryKey,\n operation: string,\n ): Effect.fn.Return<\n { readonly document: MemoryDocument; readonly bytes: number } | null,\n MemoryStorageError\n > {\n const rawRows = yield* query(\n sql<Record<string, unknown>>`\n SELECT namespace, source_id, format_version, generation, revision, document_json,\n length(CAST(namespace AS BLOB)) + length(CAST(source_id AS BLOB)) +\n length(CAST(document_json AS BLOB)) + 128 AS stored_bytes\n FROM effect_agent_memory_documents_v1\n WHERE namespace = ${key.namespace.address} AND source_id = ${key.id}\n `,\n operation,\n );\n\n const rows = yield* decodeRows(MemoryDocumentRow, rawRows, operation);\n\n if (rows.length === 0) return null;\n if (rows.length !== 1) return yield* storageError(operation, \"corrupt\");\n const row = rows[0];\n\n if (row.format_version !== STORAGE_VERSION) {\n return yield* storageError(operation, \"incompatible\");\n }\n const stored = yield* decodeVersionedJson(StoredMemoryResult, row.document_json, operation);\n const document = stored.value;\n\n yield* validateDocument(document, key, operation);\n if (\n row.namespace !== key.namespace.address ||\n row.source_id !== key.id ||\n row.generation !== document.generation ||\n row.revision !== document.source.revision\n ) {\n return yield* storageError(operation, \"corrupt\");\n }\n\n return { document, bytes: row.stored_bytes };\n });\n\n const get = Effect.fn(\"SqliteMemoryStore.get\")(function* (key: MemoryKey) {\n const decodedKey = yield* decodeInput(MemoryKey.Wire, key, \"get memory document\");\n\n return (yield* readDocument(decodedKey, \"get memory document\"))?.document ?? null;\n });\n\n return { get, readDocument };\n});\n\nconst makeMemoryServices = Effect.fn(\"SqliteMemoryStore.make\")(function* () {\n const sql = yield* SqlClientService.SqlClient;\n const usage = readUsage().pipe(Effect.provideService(SqlClientService.SqlClient, sql));\n const failpoint = yield* MemoryMutationFailpoint;\n const limits = yield* decodeInput(Limits, yield* SqlMemoryLimits, \"memory storage limits\");\n\n yield* initializeMemorySchema();\n const { get, readDocument } = yield* makeMemoryReader();\n\n const readReceipt = Effect.fn(\"SqliteMemoryStore.readReceipt\")(function* (\n write: MemoryWrite,\n operation: string,\n ) {\n const rawRows = yield* query(\n sql<Record<string, unknown>>`\n SELECT namespace, operation_id, source_id, format_version, command_json, result_json\n FROM effect_agent_memory_receipts_v1\n WHERE namespace = ${write.key.namespace.address} AND operation_id = ${write.operationId}\n `,\n operation,\n );\n\n const rows = yield* decodeRows(MemoryReceiptRow, rawRows, operation);\n\n if (rows.length === 0) return null;\n if (rows.length !== 1) return yield* storageError(operation, \"corrupt\");\n const row = rows[0];\n\n if (row.format_version !== STORAGE_VERSION) {\n return yield* storageError(operation, \"incompatible\");\n }\n\n const command = yield* decodeVersionedJson(\n StoredMemoryCommand,\n row.command_json,\n `${operation} command`,\n );\n\n const result = yield* decodeVersionedJson(\n StoredMemoryResult,\n row.result_json,\n `${operation} result`,\n );\n\n if (\n row.namespace !== command.value.key.namespace.address ||\n row.operation_id !== command.value.operationId ||\n row.source_id !== command.value.key.id ||\n result.value.key.namespace.address !== command.value.key.namespace.address ||\n result.value.key.id !== command.value.key.id\n ) {\n return yield* storageError(operation, \"corrupt\");\n }\n yield* validateDocument(result.value, command.value.key, operation);\n yield* validateReceiptResult(command.value, result.value, operation);\n\n return { commandJson: row.command_json, result: result.value };\n });\n\n const change = Effect.fn(\"SqliteMemoryStore.change\")(function* (write: MemoryWrite) {\n const operation = \"change memory document\";\n const decodedWrite = yield* decodeInput(MemoryWrite.Wire, write, operation);\n\n const commandJson = yield* encodeJson(\n StoredMemoryCommand,\n StoredMemoryCommand.make({ version: STORAGE_VERSION, value: decodedWrite }),\n \"encode memory command\",\n );\n\n yield* failpoint.hit(\"memory:change:before\");\n\n // The adapter must serialize before reading receipts and state. Node uses BEGIN\n // IMMEDIATE; Durable Objects use the driver's storage-backed transaction and permit.\n const transactionResult = yield* sql\n .withTransaction(\n Effect.gen(function* () {\n const receipt = yield* readReceipt(decodedWrite, operation);\n\n if (receipt !== null) {\n if (receipt.commandJson !== commandJson) {\n return yield* MemoryOperationConflict.make({\n key: decodedWrite.key,\n operationId: decodedWrite.operationId,\n });\n }\n\n return { document: receipt.result, changed: false } as const;\n }\n\n const currentRow = yield* readDocument(decodedWrite.key, operation);\n const current = currentRow?.document ?? null;\n const modifiedAt = yield* Clock.currentTimeMillis;\n const next = yield* applyMemoryWrite(current, decodedWrite, modifiedAt);\n\n const resultJson = yield* encodeJson(\n StoredMemoryResult,\n StoredMemoryResult.make({ version: STORAGE_VERSION, value: next }),\n \"encode memory result\",\n );\n\n const documentJson = resultJson;\n\n yield* validateEncodedChange({ commandJson, documentJson, resultJson }, operation);\n\n const bytes = utf8ByteLength;\n const identityBytes = bytes(next.key.namespace.address) + bytes(next.key.id);\n const documentBytes = identityBytes + bytes(documentJson) + 128;\n\n const receiptBytes =\n identityBytes +\n bytes(decodedWrite.operationId) +\n bytes(commandJson) +\n bytes(resultJson) +\n 128;\n\n if (Math.max(documentBytes, receiptBytes) > limits.maxRowBytes) {\n return yield* storageError(\"memory row byte limit\", \"invalid-input\");\n }\n\n const used = yield* usage;\n\n if (used.bytes < (currentRow?.bytes ?? 0) || (current !== null && used.documents === 0)) {\n return yield* storageError(\"read memory usage\", \"corrupt\");\n }\n\n const maxReceipts =\n limits.maxReceipts -\n (decodedWrite._tag === \"Put\" ? (limits.reservedWithdrawalReceipts ?? 0) : 0);\n\n const maxStorageBytes =\n limits.maxStorageBytes -\n (decodedWrite._tag === \"Put\" ? (limits.reservedWithdrawalBytes ?? 0) : 0);\n\n // Subtract the persisted old row before adding its replacement. Subtraction\n // comparisons avoid overflowing safe integer budgets near unbounded defaults.\n if (\n used.documents > limits.maxDocuments - (current === null ? 1 : 0) ||\n used.receipts >= maxReceipts ||\n used.bytes - (currentRow?.bytes ?? 0) > maxStorageBytes - documentBytes - receiptBytes\n ) {\n return yield* storageError(\"memory storage limit\", \"invalid-input\");\n }\n\n if (current === null) {\n yield* sql`\n INSERT INTO effect_agent_memory_documents_v1 (\n namespace, source_id, format_version, generation, revision, document_json\n ) VALUES (\n ${next.key.namespace.address}, ${next.key.id}, ${STORAGE_VERSION},\n ${next.generation}, ${next.source.revision}, ${documentJson}\n )\n `;\n } else {\n yield* sql`\n UPDATE effect_agent_memory_documents_v1\n SET format_version = ${STORAGE_VERSION},\n generation = ${next.generation},\n revision = ${next.source.revision},\n document_json = ${documentJson}\n WHERE namespace = ${next.key.namespace.address}\n AND source_id = ${next.key.id}\n AND generation = ${current.generation}\n AND revision = ${current.source.revision}\n `;\n }\n\n const changedRows = yield* sql<Record<string, unknown>>`\n SELECT changes() AS changed\n `;\n\n const changed = yield* decodeRows(MemoryChangeCountRow, changedRows, operation);\n\n if (changed.length !== 1 || changed[0].changed !== 1) {\n return yield* storageError(operation, \"corrupt\");\n }\n yield* failpoint.hit(\"memory:change:after-state\");\n yield* sql`\n INSERT INTO effect_agent_memory_receipts_v1 (\n namespace, operation_id, source_id, format_version, command_json, result_json\n ) VALUES (\n ${decodedWrite.key.namespace.address}, ${decodedWrite.operationId}, ${decodedWrite.key.id},\n ${STORAGE_VERSION}, ${commandJson}, ${resultJson}\n )\n `;\n yield* failpoint.hit(\"memory:change:after-receipt\");\n\n return { document: next, changed: true } as const;\n }),\n )\n .pipe(Effect.catchTag(\"SqlError\", () => Effect.fail(storageError(operation))));\n\n if (transactionResult.changed) yield* failpoint.hit(\"memory:change:after\");\n\n return transactionResult.document;\n });\n\n return Context.make(MemoryReader, MemoryReader.fromAdapter({ get })).pipe(\n Context.add(MemoryWriter, MemoryWriter.fromAdapter({ change })),\n );\n});\n\n/** SQLite memory ports with the mutation failpoint kept injectable for recovery tests. */\nexport const memoryStoreLayerWithFailpoints: Layer.Layer<\n MemoryReader | MemoryWriter,\n SqliteMemoryInitializationError,\n SqlClientService.SqlClient | MemoryMutationFailpoint\n> = Layer.effectContext(makeMemoryServices());\n\n/** SQLite memory reader and writer with the production no-op mutation failpoint. */\nexport const memoryStoreLayer: Layer.Layer<\n MemoryReader | MemoryWriter,\n SqliteMemoryInitializationError,\n SqlClientService.SqlClient\n> = memoryStoreLayerWithFailpoints.pipe(Layer.provide(MemoryMutationFailpoint.layer));\n\n/** Reads an existing memory schema without writes, transactions, or mutation failpoints. */\nexport const memoryReaderLayer: Layer.Layer<\n MemoryReader,\n MemoryStorageError,\n SqlClientService.SqlClient\n> = Layer.effect(\n MemoryReader,\n Effect.gen(function* () {\n const sql = yield* SqlClientService.SqlClient;\n const operation = \"open memory reader\";\n\n const tables = yield* query(\n sql<Record<string, unknown>>`\n SELECT name FROM sqlite_master\n WHERE type = 'table' AND name IN (\n 'effect_agent_memory_metadata', ${DOCUMENT_TABLE}, ${RECEIPT_TABLE}\n )\n `,\n operation,\n ).pipe(Effect.flatMap((rows) => decodeRows(MemoryTableRow, rows, operation)));\n\n if (tables.length !== 3) {\n return yield* storageError(operation, tables.length === 0 ? \"unavailable\" : \"incompatible\");\n }\n\n const metadata = yield* query(\n sql<Record<string, unknown>>`\n SELECT version FROM effect_agent_memory_metadata WHERE component = ${METADATA_COMPONENT}\n `,\n operation,\n ).pipe(Effect.flatMap((rows) => decodeRows(MemoryMetadataRow, rows, operation)));\n\n if (metadata.length !== 1 || metadata[0].version !== STORAGE_VERSION) {\n return yield* storageError(operation, \"incompatible\");\n }\n yield* query(\n sql`\n SELECT namespace, source_id, format_version, generation, revision, document_json\n FROM effect_agent_memory_documents_v1 LIMIT 0\n `,\n operation,\n );\n const { get } = yield* makeMemoryReader();\n\n return MemoryReader.fromAdapter({ get });\n }),\n);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SqlMemoryStore.mjs","names":[],"sources":["../../src/durable/SqlMemoryStore.ts"],"sourcesContent":["import { Clock, Context, Effect, Layer, Schema } from \"effect\";\nimport * as SqlClientService from \"effect/unstable/sql/SqlClient\";\nimport type { SqlError } from \"effect/unstable/sql/SqlError\";\n\nimport { utf8ByteLength } from \"../core/internal/utf8.ts\";\nimport { MemoryNamespaceAddress } from \"../core/MemoryNamespace.ts\";\nimport {\n applyMemoryWrite,\n MemoryDocument,\n MemoryKey,\n MemoryMutationFailpoint,\n type MemoryMutationFailure,\n MemoryOperationConflict,\n MemoryReader,\n MemoryStorageError,\n MemoryWrite,\n MemoryWriter,\n} from \"../core/MemoryStore.ts\";\n\nconst STORAGE_VERSION = 2 as const;\nconst METADATA_COMPONENT = \"memory\";\nconst DOCUMENT_TABLE = \"effect_agent_memory_documents_v1\";\nconst RECEIPT_TABLE = \"effect_agent_memory_receipts_v1\";\nconst USAGE_COMPONENT = \"memory-usage\";\nconst USAGE_TABLE = \"effect_agent_memory_usage_v1\";\nconst MAX_STORED_JSON_CODE_UNITS = 16 * 1024 * 1024;\nconst StoredJson = Schema.String.check(Schema.isMaxLength(MAX_STORED_JSON_CODE_UNITS));\n\nconst EncodedMemoryChange = Schema.Struct({\n commandJson: StoredJson,\n documentJson: StoredJson,\n resultJson: StoredJson,\n});\n\nconst equivalentContent = Schema.toEquivalence(\n Schema.toEncoded(MemoryWrite.Wire.members[0].fields.content),\n);\n\nconst equivalentScopes = Schema.toEquivalence(MemoryWrite.Wire.members[0].fields.scopes);\n\n/**\n * Independent adapter limits. Counts and encoded bytes include durable operation receipts.\n * Bytes count UTF-8 row payloads plus 128 bytes per row, excluding SQLite pages/indexes.\n * Replacements charge their byte delta; receipts and tombstones are never pruned.\n * Optional reserves (default zero) withhold capacity from Put, within the hard totals.\n * They require exclusive upgraded writer ownership: older writers count toward usage\n * but do not honor reserves. Limits are captured when the writer Layer is built.\n */\nexport const SqlMemoryLimits = Context.Reference<{\n readonly maxRowBytes: number;\n readonly maxStorageBytes: number;\n readonly maxDocuments: number;\n readonly maxReceipts: number;\n readonly reservedWithdrawalBytes?: number;\n readonly reservedWithdrawalReceipts?: number;\n}>(\"@effect-agent/thread/SqlMemoryLimits\", {\n defaultValue: () => ({\n maxRowBytes: Number.MAX_SAFE_INTEGER,\n maxStorageBytes: Number.MAX_SAFE_INTEGER,\n maxDocuments: Number.MAX_SAFE_INTEGER,\n maxReceipts: Number.MAX_SAFE_INTEGER,\n }),\n});\n\nconst Limits = Schema.Struct({\n maxRowBytes: Schema.Natural,\n maxStorageBytes: Schema.Natural,\n maxDocuments: Schema.Natural,\n maxReceipts: Schema.Natural,\n reservedWithdrawalBytes: Schema.optional(Schema.Natural),\n reservedWithdrawalReceipts: Schema.optional(Schema.Natural),\n}).check(\n Schema.makeFilter(\n (limits) =>\n (limits.reservedWithdrawalBytes ?? 0) <= limits.maxStorageBytes &&\n (limits.reservedWithdrawalReceipts ?? 0) <= limits.maxReceipts,\n { expected: \"withdrawal reserves within hard storage limits\" },\n ),\n);\n\nconst UsageRow = Schema.Struct({\n documents: Schema.Natural,\n receipts: Schema.Natural,\n bytes: Schema.Natural,\n});\n\n// These expressions deliberately match the legacy aggregate's logical byte accounting.\nconst documentBytesSql = (row: string) =>\n `length(CAST(${row}.namespace AS BLOB)) + length(CAST(${row}.source_id AS BLOB)) + length(CAST(${row}.document_json AS BLOB)) + 128`;\n\nconst receiptBytesSql = (row: string) =>\n `length(CAST(${row}.namespace AS BLOB)) + length(CAST(${row}.source_id AS BLOB)) + length(CAST(${row}.operation_id AS BLOB)) + length(CAST(${row}.command_json AS BLOB)) + length(CAST(${row}.result_json AS BLOB)) + 128`;\n\n// Triggers keep already-open version-2 writers accounted for. Their admission policy\n// is still the old policy; deployment must drain them before relying on reserves.\nconst usageTriggers = [\n { table: DOCUMENT_TABLE, count: \"documents\", bytes: documentBytesSql },\n { table: RECEIPT_TABLE, count: \"receipts\", bytes: receiptBytesSql },\n].flatMap(({ table, count, bytes }) =>\n [\"INSERT\", \"UPDATE\", \"DELETE\"].map((event) => ({\n name: `${table}_usage_${event.toLowerCase()}`,\n sql: `CREATE TRIGGER ${table}_usage_${event.toLowerCase()} AFTER ${event} ON ${table}\n BEGIN\n UPDATE ${USAGE_TABLE} SET\n ${count} = ${count} + ${event === \"INSERT\" ? 1 : event === \"DELETE\" ? -1 : 0},\n bytes = bytes + (${event === \"DELETE\" ? \"0\" : bytes(\"NEW\")}) - (${event === \"INSERT\" ? \"0\" : bytes(\"OLD\")})\n WHERE singleton = 1;\n SELECT CASE WHEN changes() <> 1 THEN RAISE(ABORT, 'missing memory usage') END;\n END`,\n })),\n);\n\nclass MemoryMetadataRow extends Schema.Class<MemoryMetadataRow>(\n \"@effect-agent/storage-sqlite/MemoryMetadataRow\",\n)({\n version: Schema.Int,\n}) {}\n\nclass MemoryTableRow extends Schema.Class<MemoryTableRow>(\n \"@effect-agent/storage-sqlite/MemoryTableRow\",\n)({\n name: Schema.NonEmptyString,\n}) {}\n\nclass MemoryDocumentRow extends Schema.Class<MemoryDocumentRow>(\n \"@effect-agent/storage-sqlite/MemoryDocumentRow\",\n)({\n namespace: MemoryNamespaceAddress,\n source_id: MemoryKey.Wire.fields.id,\n format_version: Schema.Int,\n generation: Schema.Int,\n revision: Schema.NonEmptyString,\n document_json: StoredJson,\n stored_bytes: Schema.Natural,\n}) {}\n\nclass MemoryReceiptRow extends Schema.Class<MemoryReceiptRow>(\n \"@effect-agent/storage-sqlite/MemoryReceiptRow\",\n)({\n namespace: MemoryNamespaceAddress,\n operation_id: MemoryWrite.Wire.members[0].fields.operationId,\n source_id: MemoryKey.Wire.fields.id,\n format_version: Schema.Int,\n command_json: StoredJson,\n result_json: StoredJson,\n}) {}\n\nclass MemoryChangeCountRow extends Schema.Class<MemoryChangeCountRow>(\n \"@effect-agent/storage-sqlite/MemoryChangeCountRow\",\n)({\n changed: Schema.Int,\n}) {}\n\nclass StoredMemoryCommand extends Schema.Class<StoredMemoryCommand>(\n \"@effect-agent/storage-sqlite/StoredMemoryCommand\",\n)({\n version: Schema.Literal(STORAGE_VERSION),\n value: MemoryWrite.Wire,\n}) {}\n\nclass StoredMemoryResult extends Schema.Class<StoredMemoryResult>(\n \"@effect-agent/storage-sqlite/StoredMemoryResult\",\n)({\n version: Schema.Literal(STORAGE_VERSION),\n value: MemoryDocument.Wire,\n}) {}\n\nconst StoredVersionHeader = Schema.Struct({ version: Schema.Int });\n\nexport type SqliteMemoryInitializationError = MemoryStorageError | MemoryMutationFailure;\n\nconst storageError = (\n operation: string,\n reason: MemoryStorageError[\"reason\"] = \"unavailable\",\n): MemoryStorageError => MemoryStorageError.make({ operation, reason });\n\nconst query = <A extends object>(\n effect: Effect.Effect<ReadonlyArray<A>, SqlError>,\n operation: string,\n) => effect.pipe(Effect.mapError(() => storageError(operation)));\n\nconst decodeRows = Effect.fn(\"SqliteMemoryStore.decodeRows\")(function* <A, I>(\n schema: Schema.Codec<A, I, never>,\n rows: ReadonlyArray<unknown>,\n operation: string,\n): Effect.fn.Return<ReadonlyArray<A>, MemoryStorageError> {\n return yield* Schema.decodeUnknownEffect(Schema.Array(schema))(rows).pipe(\n Effect.mapError(() => storageError(operation, \"corrupt\")),\n );\n});\n\nconst decodeInput = Effect.fn(\"SqliteMemoryStore.decodeInput\")(function* <A, I>(\n schema: Schema.Codec<A, I, never>,\n value: unknown,\n operation: string,\n): Effect.fn.Return<A, MemoryStorageError> {\n return yield* Schema.decodeUnknownEffect(schema)(value).pipe(\n Effect.mapError(() => storageError(operation, \"invalid-input\")),\n );\n});\n\nconst encodeJson = Effect.fn(\"SqliteMemoryStore.encodeJson\")(function* <A, I>(\n schema: Schema.Codec<A, I, never>,\n value: A,\n operation: string,\n): Effect.fn.Return<string, MemoryStorageError> {\n return yield* Schema.encodeEffect(Schema.fromJsonString(schema))(value).pipe(\n Effect.mapError(() => storageError(operation, \"corrupt\")),\n );\n});\n\nconst validateEncodedChange = Effect.fn(\"SqliteMemoryStore.validateEncodedChange\")(function* (\n encoded: typeof EncodedMemoryChange.Type,\n operation: string,\n): Effect.fn.Return<void, MemoryStorageError> {\n yield* Schema.decodeEffect(EncodedMemoryChange)(encoded).pipe(\n Effect.mapError(() => storageError(operation, \"invalid-input\")),\n );\n});\n\nconst decodeVersionedJson = Effect.fn(\"SqliteMemoryStore.decodeVersionedJson\")(function* <A, I>(\n schema: Schema.Codec<A, I, never>,\n value: string,\n operation: string,\n): Effect.fn.Return<A, MemoryStorageError> {\n const header = yield* Schema.decodeEffect(Schema.fromJsonString(StoredVersionHeader))(value).pipe(\n Effect.mapError(() => storageError(operation, \"corrupt\")),\n );\n\n if (header.version !== STORAGE_VERSION) {\n return yield* storageError(operation, \"incompatible\");\n }\n\n const decoded = yield* Schema.decodeEffect(Schema.fromJsonString(schema))(value).pipe(\n Effect.mapError(() => storageError(operation, \"corrupt\")),\n );\n\n const canonical = yield* encodeJson(schema, decoded, operation);\n\n if (canonical !== value) return yield* storageError(operation, \"corrupt\");\n\n return decoded;\n});\n\nconst validateDocument = Effect.fn(\"SqliteMemoryStore.validateDocument\")(function* (\n document: MemoryDocument,\n key: MemoryKey,\n operation: string,\n): Effect.fn.Return<MemoryDocument, MemoryStorageError> {\n if (\n document.key.namespace.address !== key.namespace.address ||\n document.key.id !== key.id ||\n document.source.id !== key.id ||\n document.source.revision !== String(document.generation) ||\n (document.generation === 1) !== (document.predecessor === null) ||\n (document.predecessor !== null &&\n (document.predecessor.id !== key.id ||\n document.predecessor.revision !== String(document.generation - 1)))\n ) {\n return yield* storageError(operation, \"corrupt\");\n }\n\n return document;\n});\n\nconst validateReceiptResult = Effect.fn(\"SqliteMemoryStore.validateReceiptResult\")(function* (\n command: MemoryWrite,\n result: MemoryDocument,\n operation: string,\n): Effect.fn.Return<void, MemoryStorageError> {\n if ((result.predecessor?.revision ?? null) !== command.expectedRevision) {\n return yield* storageError(operation, \"corrupt\");\n }\n if (command._tag === \"Put\") {\n if (result._tag !== \"ActiveMemoryDocument\" || result.source.locator !== command.locator) {\n return yield* storageError(operation, \"corrupt\");\n }\n if (\n !equivalentContent(command.content, result.content) ||\n !equivalentScopes(command.scopes, result.scopes)\n ) {\n return yield* storageError(operation, \"corrupt\");\n }\n\n return;\n }\n if (\n result._tag !== \"WithdrawnMemoryDocument\" ||\n result.reason !== command.reason ||\n result.predecessor === null ||\n result.source.locator !== result.predecessor.locator\n ) {\n return yield* storageError(operation, \"corrupt\");\n }\n});\n\nconst readUsage = Effect.fn(\"SqliteMemoryStore.readUsage\")(function* () {\n const sql = yield* SqlClientService.SqlClient;\n const operation = \"read memory usage\";\n\n const rows = yield* query(\n sql<Record<string, unknown>>`\n SELECT documents, receipts, bytes FROM effect_agent_memory_usage_v1 WHERE singleton = 1\n `,\n operation,\n ).pipe(Effect.flatMap((rows) => decodeRows(UsageRow, rows, operation)));\n\n if (rows.length !== 1) return yield* storageError(operation, \"corrupt\");\n\n return rows[0];\n});\n\n// Called inside schema initialization's transaction. The separate marker distinguishes\n// a legacy store from damaged established accounting; reopening never rebuilds counters.\nconst initializeMemoryUsage = Effect.fn(\"SqliteMemoryStore.initializeUsage\")(function* () {\n const sql = yield* SqlClientService.SqlClient;\n const failpoint = yield* MemoryMutationFailpoint;\n const operation = \"initialize memory usage\";\n\n const metadata = yield* sql<Record<string, unknown>>`\n SELECT version FROM effect_agent_memory_metadata WHERE component = ${USAGE_COMPONENT}\n `.pipe(Effect.flatMap((rows) => decodeRows(MemoryMetadataRow, rows, operation)));\n\n const objects = yield* sql<Record<string, unknown>>`\n SELECT name FROM sqlite_master\n WHERE name = ${USAGE_TABLE} OR name IN ${sql.in(usageTriggers.map((trigger) => trigger.name))}\n `.pipe(Effect.flatMap((rows) => decodeRows(MemoryTableRow, rows, operation)));\n\n if (metadata.length === 0) {\n if (objects.length !== 0) return yield* storageError(operation, \"corrupt\");\n yield* failpoint.hit(\"memory:initialize:before-accounting\");\n yield* sql`\n CREATE TABLE effect_agent_memory_usage_v1 (\n singleton INTEGER PRIMARY KEY NOT NULL CHECK (singleton = 1),\n documents INTEGER NOT NULL CHECK (typeof(documents) = 'integer' AND documents BETWEEN 0 AND 9007199254740991),\n receipts INTEGER NOT NULL CHECK (typeof(receipts) = 'integer' AND receipts BETWEEN 0 AND 9007199254740991),\n bytes INTEGER NOT NULL CHECK (typeof(bytes) = 'integer' AND bytes BETWEEN 0 AND 9007199254740991)\n )\n `;\n yield* sql`\n INSERT INTO effect_agent_memory_usage_v1 (singleton, documents, receipts, bytes)\n SELECT 1,\n (SELECT COUNT(*) FROM effect_agent_memory_documents_v1),\n (SELECT COUNT(*) FROM effect_agent_memory_receipts_v1),\n COALESCE((SELECT SUM(length(CAST(namespace AS BLOB)) + length(CAST(source_id AS BLOB)) +\n length(CAST(document_json AS BLOB)) + 128) FROM effect_agent_memory_documents_v1), 0) +\n COALESCE((SELECT SUM(length(CAST(namespace AS BLOB)) + length(CAST(source_id AS BLOB)) +\n length(CAST(operation_id AS BLOB)) + length(CAST(command_json AS BLOB)) +\n length(CAST(result_json AS BLOB)) + 128) FROM effect_agent_memory_receipts_v1), 0)\n `;\n for (const trigger of usageTriggers) yield* sql.unsafe(trigger.sql);\n yield* sql`\n INSERT INTO effect_agent_memory_metadata (component, version) VALUES (${USAGE_COMPONENT}, 1)\n `;\n yield* failpoint.hit(\"memory:initialize:after-accounting\");\n } else {\n if (metadata.length !== 1 || metadata[0].version !== 1) {\n return yield* storageError(operation, \"incompatible\");\n }\n if (objects.length !== usageTriggers.length + 1) {\n return yield* storageError(operation, \"corrupt\");\n }\n }\n yield* readUsage();\n});\n\nconst initializeMemorySchema = Effect.fn(\"SqliteMemoryStore.initialize\")(function* () {\n const sql = yield* SqlClientService.SqlClient;\n const failpoint = yield* MemoryMutationFailpoint;\n\n yield* failpoint.hit(\"memory:initialize:before\");\n yield* sql\n .withTransaction(\n Effect.gen(function* () {\n yield* sql`\n CREATE TABLE IF NOT EXISTS effect_agent_memory_metadata (\n component TEXT PRIMARY KEY NOT NULL,\n version INTEGER NOT NULL\n )\n `;\n\n const metadataRows = yield* sql<Record<string, unknown>>`\n SELECT version\n FROM effect_agent_memory_metadata\n WHERE component = ${METADATA_COMPONENT}\n `;\n\n const metadata = yield* decodeRows(\n MemoryMetadataRow,\n metadataRows,\n \"decode memory schema version\",\n );\n\n if (metadata.length > 1)\n return yield* storageError(\"decode memory schema version\", \"corrupt\");\n const currentVersion = metadata[0]?.version;\n\n if (currentVersion !== undefined && currentVersion !== STORAGE_VERSION) {\n return yield* storageError(\"initialize memory schema\", \"incompatible\");\n }\n if (currentVersion === undefined) {\n const tableRows = yield* sql<Record<string, unknown>>`\n SELECT name\n FROM sqlite_master\n WHERE type = 'table' AND name IN (${DOCUMENT_TABLE}, ${RECEIPT_TABLE})\n `;\n\n const existingTables = yield* decodeRows(\n MemoryTableRow,\n tableRows,\n \"inspect memory schema\",\n );\n\n if (existingTables.length > 0) {\n return yield* storageError(\"initialize memory schema\", \"incompatible\");\n }\n yield* sql`\n CREATE TABLE effect_agent_memory_documents_v1 (\n namespace TEXT NOT NULL,\n source_id TEXT NOT NULL,\n format_version INTEGER NOT NULL,\n generation INTEGER NOT NULL,\n revision TEXT NOT NULL,\n document_json TEXT NOT NULL,\n PRIMARY KEY (namespace, source_id)\n )\n `;\n yield* sql`\n CREATE TABLE effect_agent_memory_receipts_v1 (\n namespace TEXT NOT NULL,\n operation_id TEXT NOT NULL,\n source_id TEXT NOT NULL,\n format_version INTEGER NOT NULL,\n command_json TEXT NOT NULL,\n result_json TEXT NOT NULL,\n PRIMARY KEY (namespace, operation_id)\n )\n `;\n yield* sql`\n INSERT INTO effect_agent_memory_metadata (component, version)\n VALUES (${METADATA_COMPONENT}, ${STORAGE_VERSION})\n `;\n }\n yield* sql`\n SELECT namespace, source_id, format_version, generation, revision, document_json\n FROM effect_agent_memory_documents_v1\n LIMIT 0\n `;\n yield* sql`\n SELECT namespace, operation_id, source_id, format_version, command_json, result_json\n FROM effect_agent_memory_receipts_v1\n LIMIT 0\n `;\n yield* initializeMemoryUsage();\n }),\n )\n .pipe(Effect.catchTag(\"SqlError\", () => Effect.fail(storageError(\"initialize memory schema\"))));\n yield* failpoint.hit(\"memory:initialize:after\");\n});\n\nconst makeMemoryReader = Effect.fn(\"SqliteMemoryStore.makeReader\")(function* () {\n const sql = yield* SqlClientService.SqlClient;\n\n const readDocument = Effect.fn(\"SqliteMemoryStore.readDocument\")(function* (\n key: MemoryKey,\n operation: string,\n ): Effect.fn.Return<\n { readonly document: MemoryDocument; readonly bytes: number } | null,\n MemoryStorageError\n > {\n const rawRows = yield* query(\n sql<Record<string, unknown>>`\n SELECT namespace, source_id, format_version, generation, revision, document_json,\n length(CAST(namespace AS BLOB)) + length(CAST(source_id AS BLOB)) +\n length(CAST(document_json AS BLOB)) + 128 AS stored_bytes\n FROM effect_agent_memory_documents_v1\n WHERE namespace = ${key.namespace.address} AND source_id = ${key.id}\n `,\n operation,\n );\n\n const rows = yield* decodeRows(MemoryDocumentRow, rawRows, operation);\n\n if (rows.length === 0) return null;\n if (rows.length !== 1) return yield* storageError(operation, \"corrupt\");\n const row = rows[0];\n\n if (row.format_version !== STORAGE_VERSION) {\n return yield* storageError(operation, \"incompatible\");\n }\n const stored = yield* decodeVersionedJson(StoredMemoryResult, row.document_json, operation);\n const document = stored.value;\n\n yield* validateDocument(document, key, operation);\n if (\n row.namespace !== key.namespace.address ||\n row.source_id !== key.id ||\n row.generation !== document.generation ||\n row.revision !== document.source.revision\n ) {\n return yield* storageError(operation, \"corrupt\");\n }\n\n return { document, bytes: row.stored_bytes };\n });\n\n const get = Effect.fn(\"SqliteMemoryStore.get\")(function* (key: MemoryKey) {\n const decodedKey = yield* decodeInput(MemoryKey.Wire, key, \"get memory document\");\n\n return (yield* readDocument(decodedKey, \"get memory document\"))?.document ?? null;\n });\n\n return { get, readDocument };\n});\n\nconst makeMemoryServices = Effect.fn(\"SqliteMemoryStore.make\")(function* () {\n const sql = yield* SqlClientService.SqlClient;\n const usage = readUsage().pipe(Effect.provideService(SqlClientService.SqlClient, sql));\n const failpoint = yield* MemoryMutationFailpoint;\n const limits = yield* decodeInput(Limits, yield* SqlMemoryLimits, \"memory storage limits\");\n\n yield* initializeMemorySchema();\n const { get, readDocument } = yield* makeMemoryReader();\n\n const readReceipt = Effect.fn(\"SqliteMemoryStore.readReceipt\")(function* (\n write: MemoryWrite,\n operation: string,\n ) {\n const rawRows = yield* query(\n sql<Record<string, unknown>>`\n SELECT namespace, operation_id, source_id, format_version, command_json, result_json\n FROM effect_agent_memory_receipts_v1\n WHERE namespace = ${write.key.namespace.address} AND operation_id = ${write.operationId}\n `,\n operation,\n );\n\n const rows = yield* decodeRows(MemoryReceiptRow, rawRows, operation);\n\n if (rows.length === 0) return null;\n if (rows.length !== 1) return yield* storageError(operation, \"corrupt\");\n const row = rows[0];\n\n if (row.format_version !== STORAGE_VERSION) {\n return yield* storageError(operation, \"incompatible\");\n }\n\n const command = yield* decodeVersionedJson(\n StoredMemoryCommand,\n row.command_json,\n `${operation} command`,\n );\n\n const result = yield* decodeVersionedJson(\n StoredMemoryResult,\n row.result_json,\n `${operation} result`,\n );\n\n if (\n row.namespace !== command.value.key.namespace.address ||\n row.operation_id !== command.value.operationId ||\n row.source_id !== command.value.key.id ||\n result.value.key.namespace.address !== command.value.key.namespace.address ||\n result.value.key.id !== command.value.key.id\n ) {\n return yield* storageError(operation, \"corrupt\");\n }\n yield* validateDocument(result.value, command.value.key, operation);\n yield* validateReceiptResult(command.value, result.value, operation);\n\n return { commandJson: row.command_json, result: result.value };\n });\n\n const change = Effect.fn(\"SqliteMemoryStore.change\")(function* (write: MemoryWrite) {\n const operation = \"change memory document\";\n const decodedWrite = yield* decodeInput(MemoryWrite.Wire, write, operation);\n\n const commandJson = yield* encodeJson(\n StoredMemoryCommand,\n StoredMemoryCommand.make({ version: STORAGE_VERSION, value: decodedWrite }),\n \"encode memory command\",\n );\n\n yield* failpoint.hit(\"memory:change:before\");\n\n // The adapter must serialize before reading receipts and state. Node uses BEGIN\n // IMMEDIATE; Durable Objects use the driver's storage-backed transaction and permit.\n const transactionResult = yield* sql\n .withTransaction(\n Effect.gen(function* () {\n const receipt = yield* readReceipt(decodedWrite, operation);\n\n if (receipt !== null) {\n if (receipt.commandJson !== commandJson) {\n return yield* MemoryOperationConflict.make({\n key: decodedWrite.key,\n operationId: decodedWrite.operationId,\n });\n }\n\n return { document: receipt.result, changed: false } as const;\n }\n\n const currentRow = yield* readDocument(decodedWrite.key, operation);\n const current = currentRow?.document ?? null;\n const modifiedAt = yield* Clock.currentTimeMillis;\n const next = yield* applyMemoryWrite(current, decodedWrite, modifiedAt);\n\n const resultJson = yield* encodeJson(\n StoredMemoryResult,\n StoredMemoryResult.make({ version: STORAGE_VERSION, value: next }),\n \"encode memory result\",\n );\n\n const documentJson = resultJson;\n\n yield* validateEncodedChange({ commandJson, documentJson, resultJson }, operation);\n\n const bytes = utf8ByteLength;\n const identityBytes = bytes(next.key.namespace.address) + bytes(next.key.id);\n const resultBytes = bytes(resultJson);\n const documentBytes = identityBytes + resultBytes + 128;\n\n const receiptBytes =\n identityBytes +\n bytes(decodedWrite.operationId) +\n bytes(commandJson) +\n resultBytes +\n 128;\n\n if (Math.max(documentBytes, receiptBytes) > limits.maxRowBytes) {\n return yield* storageError(\"memory row byte limit\", \"invalid-input\");\n }\n\n const used = yield* usage;\n\n if (used.bytes < (currentRow?.bytes ?? 0) || (current !== null && used.documents === 0)) {\n return yield* storageError(\"read memory usage\", \"corrupt\");\n }\n\n const maxReceipts =\n limits.maxReceipts -\n (decodedWrite._tag === \"Put\" ? (limits.reservedWithdrawalReceipts ?? 0) : 0);\n\n const maxStorageBytes =\n limits.maxStorageBytes -\n (decodedWrite._tag === \"Put\" ? (limits.reservedWithdrawalBytes ?? 0) : 0);\n\n // Subtract the persisted old row before adding its replacement. Subtraction\n // comparisons avoid overflowing safe integer budgets near unbounded defaults.\n if (\n used.documents > limits.maxDocuments - (current === null ? 1 : 0) ||\n used.receipts >= maxReceipts ||\n used.bytes - (currentRow?.bytes ?? 0) > maxStorageBytes - documentBytes - receiptBytes\n ) {\n return yield* storageError(\"memory storage limit\", \"invalid-input\");\n }\n\n if (current === null) {\n yield* sql`\n INSERT INTO effect_agent_memory_documents_v1 (\n namespace, source_id, format_version, generation, revision, document_json\n ) VALUES (\n ${next.key.namespace.address}, ${next.key.id}, ${STORAGE_VERSION},\n ${next.generation}, ${next.source.revision}, ${documentJson}\n )\n `;\n } else {\n yield* sql`\n UPDATE effect_agent_memory_documents_v1\n SET format_version = ${STORAGE_VERSION},\n generation = ${next.generation},\n revision = ${next.source.revision},\n document_json = ${documentJson}\n WHERE namespace = ${next.key.namespace.address}\n AND source_id = ${next.key.id}\n AND generation = ${current.generation}\n AND revision = ${current.source.revision}\n `;\n }\n\n const changedRows = yield* sql<Record<string, unknown>>`\n SELECT changes() AS changed\n `;\n\n const changed = yield* decodeRows(MemoryChangeCountRow, changedRows, operation);\n\n if (changed.length !== 1 || changed[0].changed !== 1) {\n return yield* storageError(operation, \"corrupt\");\n }\n yield* failpoint.hit(\"memory:change:after-state\");\n yield* sql`\n INSERT INTO effect_agent_memory_receipts_v1 (\n namespace, operation_id, source_id, format_version, command_json, result_json\n ) VALUES (\n ${decodedWrite.key.namespace.address}, ${decodedWrite.operationId}, ${decodedWrite.key.id},\n ${STORAGE_VERSION}, ${commandJson}, ${resultJson}\n )\n `;\n yield* failpoint.hit(\"memory:change:after-receipt\");\n\n return { document: next, changed: true } as const;\n }),\n )\n .pipe(Effect.catchTag(\"SqlError\", () => Effect.fail(storageError(operation))));\n\n if (transactionResult.changed) yield* failpoint.hit(\"memory:change:after\");\n\n return transactionResult.document;\n });\n\n return Context.make(MemoryReader, MemoryReader.fromAdapter({ get })).pipe(\n Context.add(MemoryWriter, MemoryWriter.fromAdapter({ change })),\n );\n});\n\n/** SQLite memory ports with the mutation failpoint kept injectable for recovery tests. */\nexport const memoryStoreLayerWithFailpoints: Layer.Layer<\n MemoryReader | MemoryWriter,\n SqliteMemoryInitializationError,\n SqlClientService.SqlClient | MemoryMutationFailpoint\n> = Layer.effectContext(makeMemoryServices());\n\n/** SQLite memory reader and writer with the production no-op mutation failpoint. */\nexport const memoryStoreLayer: Layer.Layer<\n MemoryReader | MemoryWriter,\n SqliteMemoryInitializationError,\n SqlClientService.SqlClient\n> = memoryStoreLayerWithFailpoints.pipe(Layer.provide(MemoryMutationFailpoint.layer));\n\n/** Reads an existing memory schema without writes, transactions, or mutation failpoints. */\nexport const memoryReaderLayer: Layer.Layer<\n MemoryReader,\n MemoryStorageError,\n SqlClientService.SqlClient\n> = Layer.effect(\n MemoryReader,\n Effect.gen(function* () {\n const sql = yield* SqlClientService.SqlClient;\n const operation = \"open memory reader\";\n\n const tables = yield* query(\n sql<Record<string, unknown>>`\n SELECT name FROM sqlite_master\n WHERE type = 'table' AND name IN (\n 'effect_agent_memory_metadata', ${DOCUMENT_TABLE}, ${RECEIPT_TABLE}\n )\n `,\n operation,\n ).pipe(Effect.flatMap((rows) => decodeRows(MemoryTableRow, rows, operation)));\n\n if (tables.length !== 3) {\n return yield* storageError(operation, tables.length === 0 ? \"unavailable\" : \"incompatible\");\n }\n\n const metadata = yield* query(\n sql<Record<string, unknown>>`\n SELECT version FROM effect_agent_memory_metadata WHERE component = ${METADATA_COMPONENT}\n `,\n operation,\n ).pipe(Effect.flatMap((rows) => decodeRows(MemoryMetadataRow, rows, operation)));\n\n if (metadata.length !== 1 || metadata[0].version !== STORAGE_VERSION) {\n return yield* storageError(operation, \"incompatible\");\n }\n yield* query(\n sql`\n SELECT namespace, source_id, format_version, generation, revision, document_json\n FROM effect_agent_memory_documents_v1 LIMIT 0\n `,\n operation,\n );\n const { get } = yield* makeMemoryReader();\n\n return MemoryReader.fromAdapter({ get });\n }),\n);\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"effect-agent","version":"0.1.0-beta.90","devDependencies":{"@effect/platform-node":"4.0.0-rc.112","@effect/vitest":"4.0.0-rc.112","effect":"4.0.0-rc.112","typescript":"7.0.2","vite-plus":"0.3.0"},"peerDependencies":{"effect":"^4.0.0-rc.112"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./activity-store":{"types":"./dist/durable/ActivityStore.d.mts","default":"./dist/durable/ActivityStore.mjs"},"./admin":{"types":"./dist/durable/Admin.d.mts","default":"./dist/durable/Admin.mjs"},"./agent":{"types":"./dist/core/Agent.d.mts","default":"./dist/core/Agent.mjs"},"./agent-error":{"types":"./dist/core/AgentError.d.mts","default":"./dist/core/AgentError.mjs"},"./agent-policy":{"types":"./dist/core/AgentPolicy.d.mts","default":"./dist/core/AgentPolicy.mjs"},"./agent-registration":{"types":"./dist/durable/AgentRegistration.d.mts","default":"./dist/durable/AgentRegistration.mjs"},"./agent-runtime":{"types":"./dist/engine/AgentRuntime.d.mts","default":"./dist/engine/AgentRuntime.mjs"},"./agent-updates":{"types":"./dist/core/AgentUpdates.d.mts","default":"./dist/core/AgentUpdates.mjs"},"./approval":{"types":"./dist/capabilities/Approval.d.mts","default":"./dist/capabilities/Approval.mjs"},"./budget":{"types":"./dist/capabilities/Budget.d.mts","default":"./dist/capabilities/Budget.mjs"},"./code-executor":{"types":"./dist/sandbox/CodeExecutor.d.mts","default":"./dist/sandbox/CodeExecutor.mjs"},"./code-mode":{"types":"./dist/capabilities/CodeMode.d.mts","default":"./dist/capabilities/CodeMode.mjs"},"./commands":{"types":"./dist/capabilities/Commands.d.mts","default":"./dist/capabilities/Commands.mjs"},"./committed-activity":{"types":"./dist/durable/CommittedActivity.d.mts","default":"./dist/durable/CommittedActivity.mjs"},"./compaction":{"types":"./dist/engine/Compaction.d.mts","default":"./dist/engine/Compaction.mjs"},"./context-compactor":{"types":"./dist/engine/ContextCompactor.d.mts","default":"./dist/engine/ContextCompactor.mjs"},"./context-history":{"types":"./dist/engine/ContextHistory.d.mts","default":"./dist/engine/ContextHistory.mjs"},"./context-tools":{"types":"./dist/capabilities/ContextTools.d.mts","default":"./dist/capabilities/ContextTools.mjs"},"./context-window":{"types":"./dist/engine/ContextWindow.d.mts","default":"./dist/engine/ContextWindow.mjs"},"./digest":{"types":"./dist/durable/Digest.d.mts","default":"./dist/durable/Digest.mjs"},"./durable-agent-runtime":{"types":"./dist/durable/DurableAgentRuntime.d.mts","default":"./dist/durable/DurableAgentRuntime.mjs"},"./durable-failpoint":{"types":"./dist/durable/DurableFailpoint.d.mts","default":"./dist/durable/DurableFailpoint.mjs"},"./durable-step":{"types":"./dist/engine/DurableStep.d.mts","default":"./dist/engine/DurableStep.mjs"},"./ephemeral":{"types":"./dist/Ephemeral.d.mts","default":"./dist/Ephemeral.mjs"},"./event-source":{"types":"./dist/durable/EventSource.d.mts","default":"./dist/durable/EventSource.mjs"},"./git-hub-workflow-source":{"types":"./dist/durable/GitHubWorkflowSource.d.mts","default":"./dist/durable/GitHubWorkflowSource.mjs"},"./id-generator":{"types":"./dist/core/IdGenerator.d.mts","default":"./dist/core/IdGenerator.mjs"},"./identifiers":{"types":"./dist/core/Identifiers.d.mts","default":"./dist/core/Identifiers.mjs"},"./interactive-browser":{"types":"./dist/sandbox/InteractiveBrowser.d.mts","default":"./dist/sandbox/InteractiveBrowser.mjs"},"./mcp":{"types":"./dist/capabilities/Mcp.d.mts","default":"./dist/capabilities/Mcp.mjs"},"./mcp-client":{"types":"./dist/capabilities/McpClient.d.mts","default":"./dist/capabilities/McpClient.mjs"},"./memory":{"types":"./dist/core/Memory.d.mts","default":"./dist/core/Memory.mjs"},"./memory-namespace":{"types":"./dist/core/MemoryNamespace.d.mts","default":"./dist/core/MemoryNamespace.mjs"},"./memory-notes":{"types":"./dist/capabilities/MemoryNotes.d.mts","default":"./dist/capabilities/MemoryNotes.mjs"},"./memory-reference":{"types":"./dist/core/MemoryReference.d.mts","default":"./dist/core/MemoryReference.mjs"},"./memory-revalidation":{"types":"./dist/core/MemoryRevalidation.d.mts","default":"./dist/core/MemoryRevalidation.mjs"},"./memory-store":{"types":"./dist/core/MemoryStore.d.mts","default":"./dist/core/MemoryStore.mjs"},"./message-delivery":{"types":"./dist/durable/MessageDelivery.d.mts","default":"./dist/durable/MessageDelivery.mjs"},"./messaging":{"types":"./dist/capabilities/Messaging.d.mts","default":"./dist/capabilities/Messaging.mjs"},"./messaging-host":{"types":"./dist/engine/MessagingHost.d.mts","default":"./dist/engine/MessagingHost.mjs"},"./model-context":{"types":"./dist/capabilities/ModelContext.d.mts","default":"./dist/capabilities/ModelContext.mjs"},"./operation-authorizer":{"types":"./dist/durable/OperationAuthorizer.d.mts","default":"./dist/durable/OperationAuthorizer.mjs"},"./output":{"types":"./dist/engine/Output.d.mts","default":"./dist/engine/Output.mjs"},"./page-capture":{"types":"./dist/sandbox/PageCapture.d.mts","default":"./dist/sandbox/PageCapture.mjs"},"./page-crawl":{"types":"./dist/sandbox/PageCrawl.d.mts","default":"./dist/sandbox/PageCrawl.mjs"},"./page-screenshot":{"types":"./dist/sandbox/PageScreenshot.d.mts","default":"./dist/sandbox/PageScreenshot.mjs"},"./persistent-history":{"types":"./dist/durable/PersistentHistory.d.mts","default":"./dist/durable/PersistentHistory.mjs"},"./prepared-input-admission":{"types":"./dist/durable/PreparedInputAdmission.d.mts","default":"./dist/durable/PreparedInputAdmission.mjs"},"./protected-browser":{"types":"./dist/sandbox/ProtectedBrowser.d.mts","default":"./dist/sandbox/ProtectedBrowser.mjs"},"./receipt":{"types":"./dist/core/Receipt.d.mts","default":"./dist/core/Receipt.mjs"},"./records":{"types":"./dist/durable/Records.d.mts","default":"./dist/durable/Records.mjs"},"./recovery":{"types":"./dist/durable/Recovery.d.mts","default":"./dist/durable/Recovery.mjs"},"./redaction":{"types":"./dist/capabilities/Redaction.d.mts","default":"./dist/capabilities/Redaction.mjs"},"./remembering":{"types":"./dist/capabilities/Remembering.d.mts","default":"./dist/capabilities/Remembering.mjs"},"./remembering-store":{"types":"./dist/core/RememberingStore.d.mts","default":"./dist/core/RememberingStore.mjs"},"./run-event":{"types":"./dist/core/RunEvent.d.mts","default":"./dist/core/RunEvent.mjs"},"./run-event-sink":{"types":"./dist/engine/RunEventSink.d.mts","default":"./dist/engine/RunEventSink.mjs"},"./run-hooks":{"types":"./dist/capabilities/RunHooks.d.mts","default":"./dist/capabilities/RunHooks.mjs"},"./run-journal":{"types":"./dist/durable/RunJournal.d.mts","default":"./dist/durable/RunJournal.mjs"},"./run-options":{"types":"./dist/engine/RunOptions.d.mts","default":"./dist/engine/RunOptions.mjs"},"./run-policy-usage":{"types":"./dist/core/RunPolicyUsage.d.mts","default":"./dist/core/RunPolicyUsage.mjs"},"./sandbox":{"types":"./dist/sandbox/Sandbox.d.mts","default":"./dist/sandbox/Sandbox.mjs"},"./schedule":{"types":"./dist/durable/Schedule.d.mts","default":"./dist/durable/Schedule.mjs"},"./schedule-transition":{"types":"./dist/durable/ScheduleTransition.d.mts","default":"./dist/durable/ScheduleTransition.mjs"},"./scheduling":{"types":"./dist/durable/Scheduling.d.mts","default":"./dist/durable/Scheduling.mjs"},"./semantic-memory":{"types":"./dist/capabilities/SemanticMemory.d.mts","default":"./dist/capabilities/SemanticMemory.mjs"},"./semantic-memory-index":{"types":"./dist/core/SemanticMemoryIndex.d.mts","default":"./dist/core/SemanticMemoryIndex.mjs"},"./semantic-memory-revalidation":{"types":"./dist/core/SemanticMemoryRevalidation.d.mts","default":"./dist/core/SemanticMemoryRevalidation.mjs"},"./sql-memory-store":{"types":"./dist/durable/SqlMemoryStore.d.mts","default":"./dist/durable/SqlMemoryStore.mjs"},"./sql-message-delivery-store":{"types":"./dist/durable/SqlMessageDeliveryStore.d.mts","default":"./dist/durable/SqlMessageDeliveryStore.mjs"},"./sql-storage-v2-upgrade":{"types":"./dist/durable/SqlStorageV2Upgrade.d.mts","default":"./dist/durable/SqlStorageV2Upgrade.mjs"},"./sql-subscription-store":{"types":"./dist/durable/SqlSubscriptionStore.d.mts","default":"./dist/durable/SqlSubscriptionStore.mjs"},"./subagent":{"types":"./dist/capabilities/Subagent.d.mts","default":"./dist/capabilities/Subagent.mjs"},"./subagent-contract":{"types":"./dist/core/SubagentContract.d.mts","default":"./dist/core/SubagentContract.mjs"},"./subagent-host":{"types":"./dist/engine/SubagentHost.d.mts","default":"./dist/engine/SubagentHost.mjs"},"./subagent-reservations":{"types":"./dist/capabilities/SubagentReservations.d.mts","default":"./dist/capabilities/SubagentReservations.mjs"},"./submission-ledger":{"types":"./dist/durable/SubmissionLedger.d.mts","default":"./dist/durable/SubmissionLedger.mjs"},"./submission-status":{"types":"./dist/durable/SubmissionStatus.d.mts","default":"./dist/durable/SubmissionStatus.mjs"},"./subscription":{"types":"./dist/durable/Subscription.d.mts","default":"./dist/durable/Subscription.mjs"},"./subscription-input":{"types":"./dist/durable/SubscriptionInput.d.mts","default":"./dist/durable/SubscriptionInput.mjs"},"./subscription-tools":{"types":"./dist/durable/SubscriptionTools.d.mts","default":"./dist/durable/SubscriptionTools.mjs"},"./subscription-transition":{"types":"./dist/durable/SubscriptionTransition.d.mts","default":"./dist/durable/SubscriptionTransition.mjs"},"./subscriptions":{"types":"./dist/durable/Subscriptions.d.mts","default":"./dist/durable/Subscriptions.mjs"},"./testing/certification":{"types":"./dist/durable/Certification.d.mts","default":"./dist/durable/Certification.mjs"},"./testing/durable-failpoint-test-control":{"types":"./dist/durable/DurableFailpointTestControl.d.mts","default":"./dist/durable/DurableFailpointTestControl.mjs"},"./testing/message-delivery-store-conformance":{"types":"./dist/durable/MessageDeliveryStoreConformance.d.mts","default":"./dist/durable/MessageDeliveryStoreConformance.mjs"},"./testing/schedule-store-conformance":{"types":"./dist/durable/ScheduleStoreConformance.d.mts","default":"./dist/durable/ScheduleStoreConformance.mjs"},"./testing/submission-ledger-conformance":{"types":"./dist/durable/SubmissionLedgerConformance.d.mts","default":"./dist/durable/SubmissionLedgerConformance.mjs"},"./testing/subscription-store-conformance":{"types":"./dist/durable/SubscriptionStoreConformance.d.mts","default":"./dist/durable/SubscriptionStoreConformance.mjs"},"./testing/thread-store-conformance":{"types":"./dist/durable/ThreadStoreConformance.d.mts","default":"./dist/durable/ThreadStoreConformance.mjs"},"./thread":{"types":"./dist/core/Thread.d.mts","default":"./dist/core/Thread.mjs"},"./thread-context-history":{"types":"./dist/durable/ThreadContextHistory.d.mts","default":"./dist/durable/ThreadContextHistory.mjs"},"./thread-context-history-projection":{"types":"./dist/durable/ThreadContextHistoryProjection.d.mts","default":"./dist/durable/ThreadContextHistoryProjection.mjs"},"./thread-history":{"types":"./dist/engine/ThreadHistory.d.mts","default":"./dist/engine/ThreadHistory.mjs"},"./thread-invariants":{"types":"./dist/durable/ThreadInvariants.d.mts","default":"./dist/durable/ThreadInvariants.mjs"},"./thread-projection":{"types":"./dist/durable/ThreadProjection.d.mts","default":"./dist/durable/ThreadProjection.mjs"},"./thread-projection-maintenance":{"types":"./dist/durable/ThreadProjectionMaintenance.d.mts","default":"./dist/durable/ThreadProjectionMaintenance.mjs"},"./thread-store":{"types":"./dist/durable/ThreadStore.d.mts","default":"./dist/durable/ThreadStore.mjs"},"./tool-broker":{"types":"./dist/engine/ToolBroker.d.mts","default":"./dist/engine/ToolBroker.mjs"},"./tool-discovery":{"types":"./dist/capabilities/ToolDiscovery.d.mts","default":"./dist/capabilities/ToolDiscovery.mjs"},"./tool-exposure":{"types":"./dist/ToolExposure.d.mts","default":"./dist/ToolExposure.mjs"},"./tool-reconciler":{"types":"./dist/durable/ToolReconciler.d.mts","default":"./dist/durable/ToolReconciler.mjs"},"./tool-result":{"types":"./dist/core/ToolResult.d.mts","default":"./dist/core/ToolResult.mjs"},"./usage":{"types":"./dist/core/Usage.d.mts","default":"./dist/core/Usage.mjs"},"./wake-scheduler":{"types":"./dist/durable/WakeScheduler.d.mts","default":"./dist/durable/WakeScheduler.mjs"},"./web-capture":{"types":"./dist/capabilities/WebCapture.d.mts","default":"./dist/capabilities/WebCapture.mjs"},"./web-search":{"types":"./dist/capabilities/WebSearch.d.mts","default":"./dist/capabilities/WebSearch.mjs"},"./worker":{"types":"./dist/core/Worker.d.mts","default":"./dist/core/Worker.mjs"},"./worker-host":{"types":"./dist/durable/WorkerHost.d.mts","default":"./dist/durable/WorkerHost.mjs"}},"description":"Effect-native agents, execution, subagents, and sandbox contracts in one tree-shakeable package.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/danieljvdm/effect-agent.git","directory":"packages/effect-agent"},"files":["dist","src"],"type":"module","sideEffects":[],"publishConfig":{"access":"public"},"scripts":{"build":"vp pack","check":"tsc --noEmit -p tsconfig.json","test":"vp test --passWithNoTests"}}
|
|
1
|
+
{"name":"effect-agent","version":"0.1.0-beta.91","devDependencies":{"@effect/platform-node":"4.0.0-rc.112","@effect/vitest":"4.0.0-rc.112","effect":"4.0.0-rc.112","typescript":"7.0.2","vite-plus":"0.3.0"},"peerDependencies":{"effect":"^4.0.0-rc.112"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./activity-store":{"types":"./dist/durable/ActivityStore.d.mts","default":"./dist/durable/ActivityStore.mjs"},"./admin":{"types":"./dist/durable/Admin.d.mts","default":"./dist/durable/Admin.mjs"},"./agent":{"types":"./dist/core/Agent.d.mts","default":"./dist/core/Agent.mjs"},"./agent-error":{"types":"./dist/core/AgentError.d.mts","default":"./dist/core/AgentError.mjs"},"./agent-policy":{"types":"./dist/core/AgentPolicy.d.mts","default":"./dist/core/AgentPolicy.mjs"},"./agent-registration":{"types":"./dist/durable/AgentRegistration.d.mts","default":"./dist/durable/AgentRegistration.mjs"},"./agent-runtime":{"types":"./dist/engine/AgentRuntime.d.mts","default":"./dist/engine/AgentRuntime.mjs"},"./agent-updates":{"types":"./dist/core/AgentUpdates.d.mts","default":"./dist/core/AgentUpdates.mjs"},"./approval":{"types":"./dist/capabilities/Approval.d.mts","default":"./dist/capabilities/Approval.mjs"},"./budget":{"types":"./dist/capabilities/Budget.d.mts","default":"./dist/capabilities/Budget.mjs"},"./code-executor":{"types":"./dist/sandbox/CodeExecutor.d.mts","default":"./dist/sandbox/CodeExecutor.mjs"},"./code-mode":{"types":"./dist/capabilities/CodeMode.d.mts","default":"./dist/capabilities/CodeMode.mjs"},"./commands":{"types":"./dist/capabilities/Commands.d.mts","default":"./dist/capabilities/Commands.mjs"},"./committed-activity":{"types":"./dist/durable/CommittedActivity.d.mts","default":"./dist/durable/CommittedActivity.mjs"},"./compaction":{"types":"./dist/engine/Compaction.d.mts","default":"./dist/engine/Compaction.mjs"},"./context-compactor":{"types":"./dist/engine/ContextCompactor.d.mts","default":"./dist/engine/ContextCompactor.mjs"},"./context-history":{"types":"./dist/engine/ContextHistory.d.mts","default":"./dist/engine/ContextHistory.mjs"},"./context-tools":{"types":"./dist/capabilities/ContextTools.d.mts","default":"./dist/capabilities/ContextTools.mjs"},"./context-window":{"types":"./dist/engine/ContextWindow.d.mts","default":"./dist/engine/ContextWindow.mjs"},"./digest":{"types":"./dist/durable/Digest.d.mts","default":"./dist/durable/Digest.mjs"},"./durable-agent-runtime":{"types":"./dist/durable/DurableAgentRuntime.d.mts","default":"./dist/durable/DurableAgentRuntime.mjs"},"./durable-failpoint":{"types":"./dist/durable/DurableFailpoint.d.mts","default":"./dist/durable/DurableFailpoint.mjs"},"./durable-step":{"types":"./dist/engine/DurableStep.d.mts","default":"./dist/engine/DurableStep.mjs"},"./ephemeral":{"types":"./dist/Ephemeral.d.mts","default":"./dist/Ephemeral.mjs"},"./event-source":{"types":"./dist/durable/EventSource.d.mts","default":"./dist/durable/EventSource.mjs"},"./git-hub-workflow-source":{"types":"./dist/durable/GitHubWorkflowSource.d.mts","default":"./dist/durable/GitHubWorkflowSource.mjs"},"./id-generator":{"types":"./dist/core/IdGenerator.d.mts","default":"./dist/core/IdGenerator.mjs"},"./identifiers":{"types":"./dist/core/Identifiers.d.mts","default":"./dist/core/Identifiers.mjs"},"./interactive-browser":{"types":"./dist/sandbox/InteractiveBrowser.d.mts","default":"./dist/sandbox/InteractiveBrowser.mjs"},"./mcp":{"types":"./dist/capabilities/Mcp.d.mts","default":"./dist/capabilities/Mcp.mjs"},"./mcp-client":{"types":"./dist/capabilities/McpClient.d.mts","default":"./dist/capabilities/McpClient.mjs"},"./memory":{"types":"./dist/core/Memory.d.mts","default":"./dist/core/Memory.mjs"},"./memory-namespace":{"types":"./dist/core/MemoryNamespace.d.mts","default":"./dist/core/MemoryNamespace.mjs"},"./memory-notes":{"types":"./dist/capabilities/MemoryNotes.d.mts","default":"./dist/capabilities/MemoryNotes.mjs"},"./memory-reference":{"types":"./dist/core/MemoryReference.d.mts","default":"./dist/core/MemoryReference.mjs"},"./memory-revalidation":{"types":"./dist/core/MemoryRevalidation.d.mts","default":"./dist/core/MemoryRevalidation.mjs"},"./memory-store":{"types":"./dist/core/MemoryStore.d.mts","default":"./dist/core/MemoryStore.mjs"},"./message-delivery":{"types":"./dist/durable/MessageDelivery.d.mts","default":"./dist/durable/MessageDelivery.mjs"},"./messaging":{"types":"./dist/capabilities/Messaging.d.mts","default":"./dist/capabilities/Messaging.mjs"},"./messaging-host":{"types":"./dist/engine/MessagingHost.d.mts","default":"./dist/engine/MessagingHost.mjs"},"./model-context":{"types":"./dist/capabilities/ModelContext.d.mts","default":"./dist/capabilities/ModelContext.mjs"},"./operation-authorizer":{"types":"./dist/durable/OperationAuthorizer.d.mts","default":"./dist/durable/OperationAuthorizer.mjs"},"./output":{"types":"./dist/engine/Output.d.mts","default":"./dist/engine/Output.mjs"},"./page-capture":{"types":"./dist/sandbox/PageCapture.d.mts","default":"./dist/sandbox/PageCapture.mjs"},"./page-crawl":{"types":"./dist/sandbox/PageCrawl.d.mts","default":"./dist/sandbox/PageCrawl.mjs"},"./page-screenshot":{"types":"./dist/sandbox/PageScreenshot.d.mts","default":"./dist/sandbox/PageScreenshot.mjs"},"./persistent-history":{"types":"./dist/durable/PersistentHistory.d.mts","default":"./dist/durable/PersistentHistory.mjs"},"./prepared-input-admission":{"types":"./dist/durable/PreparedInputAdmission.d.mts","default":"./dist/durable/PreparedInputAdmission.mjs"},"./protected-browser":{"types":"./dist/sandbox/ProtectedBrowser.d.mts","default":"./dist/sandbox/ProtectedBrowser.mjs"},"./receipt":{"types":"./dist/core/Receipt.d.mts","default":"./dist/core/Receipt.mjs"},"./records":{"types":"./dist/durable/Records.d.mts","default":"./dist/durable/Records.mjs"},"./recovery":{"types":"./dist/durable/Recovery.d.mts","default":"./dist/durable/Recovery.mjs"},"./redaction":{"types":"./dist/capabilities/Redaction.d.mts","default":"./dist/capabilities/Redaction.mjs"},"./remembering":{"types":"./dist/capabilities/Remembering.d.mts","default":"./dist/capabilities/Remembering.mjs"},"./remembering-store":{"types":"./dist/core/RememberingStore.d.mts","default":"./dist/core/RememberingStore.mjs"},"./run-event":{"types":"./dist/core/RunEvent.d.mts","default":"./dist/core/RunEvent.mjs"},"./run-event-sink":{"types":"./dist/engine/RunEventSink.d.mts","default":"./dist/engine/RunEventSink.mjs"},"./run-hooks":{"types":"./dist/capabilities/RunHooks.d.mts","default":"./dist/capabilities/RunHooks.mjs"},"./run-journal":{"types":"./dist/durable/RunJournal.d.mts","default":"./dist/durable/RunJournal.mjs"},"./run-options":{"types":"./dist/engine/RunOptions.d.mts","default":"./dist/engine/RunOptions.mjs"},"./run-policy-usage":{"types":"./dist/core/RunPolicyUsage.d.mts","default":"./dist/core/RunPolicyUsage.mjs"},"./sandbox":{"types":"./dist/sandbox/Sandbox.d.mts","default":"./dist/sandbox/Sandbox.mjs"},"./schedule":{"types":"./dist/durable/Schedule.d.mts","default":"./dist/durable/Schedule.mjs"},"./schedule-transition":{"types":"./dist/durable/ScheduleTransition.d.mts","default":"./dist/durable/ScheduleTransition.mjs"},"./scheduling":{"types":"./dist/durable/Scheduling.d.mts","default":"./dist/durable/Scheduling.mjs"},"./semantic-memory":{"types":"./dist/capabilities/SemanticMemory.d.mts","default":"./dist/capabilities/SemanticMemory.mjs"},"./semantic-memory-index":{"types":"./dist/core/SemanticMemoryIndex.d.mts","default":"./dist/core/SemanticMemoryIndex.mjs"},"./semantic-memory-revalidation":{"types":"./dist/core/SemanticMemoryRevalidation.d.mts","default":"./dist/core/SemanticMemoryRevalidation.mjs"},"./sql-memory-store":{"types":"./dist/durable/SqlMemoryStore.d.mts","default":"./dist/durable/SqlMemoryStore.mjs"},"./sql-message-delivery-store":{"types":"./dist/durable/SqlMessageDeliveryStore.d.mts","default":"./dist/durable/SqlMessageDeliveryStore.mjs"},"./sql-storage-v2-upgrade":{"types":"./dist/durable/SqlStorageV2Upgrade.d.mts","default":"./dist/durable/SqlStorageV2Upgrade.mjs"},"./sql-subscription-store":{"types":"./dist/durable/SqlSubscriptionStore.d.mts","default":"./dist/durable/SqlSubscriptionStore.mjs"},"./subagent":{"types":"./dist/capabilities/Subagent.d.mts","default":"./dist/capabilities/Subagent.mjs"},"./subagent-contract":{"types":"./dist/core/SubagentContract.d.mts","default":"./dist/core/SubagentContract.mjs"},"./subagent-host":{"types":"./dist/engine/SubagentHost.d.mts","default":"./dist/engine/SubagentHost.mjs"},"./subagent-reservations":{"types":"./dist/capabilities/SubagentReservations.d.mts","default":"./dist/capabilities/SubagentReservations.mjs"},"./submission-ledger":{"types":"./dist/durable/SubmissionLedger.d.mts","default":"./dist/durable/SubmissionLedger.mjs"},"./submission-status":{"types":"./dist/durable/SubmissionStatus.d.mts","default":"./dist/durable/SubmissionStatus.mjs"},"./subscription":{"types":"./dist/durable/Subscription.d.mts","default":"./dist/durable/Subscription.mjs"},"./subscription-input":{"types":"./dist/durable/SubscriptionInput.d.mts","default":"./dist/durable/SubscriptionInput.mjs"},"./subscription-tools":{"types":"./dist/durable/SubscriptionTools.d.mts","default":"./dist/durable/SubscriptionTools.mjs"},"./subscription-transition":{"types":"./dist/durable/SubscriptionTransition.d.mts","default":"./dist/durable/SubscriptionTransition.mjs"},"./subscriptions":{"types":"./dist/durable/Subscriptions.d.mts","default":"./dist/durable/Subscriptions.mjs"},"./testing/certification":{"types":"./dist/durable/Certification.d.mts","default":"./dist/durable/Certification.mjs"},"./testing/durable-failpoint-test-control":{"types":"./dist/durable/DurableFailpointTestControl.d.mts","default":"./dist/durable/DurableFailpointTestControl.mjs"},"./testing/message-delivery-store-conformance":{"types":"./dist/durable/MessageDeliveryStoreConformance.d.mts","default":"./dist/durable/MessageDeliveryStoreConformance.mjs"},"./testing/schedule-store-conformance":{"types":"./dist/durable/ScheduleStoreConformance.d.mts","default":"./dist/durable/ScheduleStoreConformance.mjs"},"./testing/submission-ledger-conformance":{"types":"./dist/durable/SubmissionLedgerConformance.d.mts","default":"./dist/durable/SubmissionLedgerConformance.mjs"},"./testing/subscription-store-conformance":{"types":"./dist/durable/SubscriptionStoreConformance.d.mts","default":"./dist/durable/SubscriptionStoreConformance.mjs"},"./testing/thread-store-conformance":{"types":"./dist/durable/ThreadStoreConformance.d.mts","default":"./dist/durable/ThreadStoreConformance.mjs"},"./thread":{"types":"./dist/core/Thread.d.mts","default":"./dist/core/Thread.mjs"},"./thread-context-history":{"types":"./dist/durable/ThreadContextHistory.d.mts","default":"./dist/durable/ThreadContextHistory.mjs"},"./thread-context-history-projection":{"types":"./dist/durable/ThreadContextHistoryProjection.d.mts","default":"./dist/durable/ThreadContextHistoryProjection.mjs"},"./thread-history":{"types":"./dist/engine/ThreadHistory.d.mts","default":"./dist/engine/ThreadHistory.mjs"},"./thread-invariants":{"types":"./dist/durable/ThreadInvariants.d.mts","default":"./dist/durable/ThreadInvariants.mjs"},"./thread-projection":{"types":"./dist/durable/ThreadProjection.d.mts","default":"./dist/durable/ThreadProjection.mjs"},"./thread-projection-maintenance":{"types":"./dist/durable/ThreadProjectionMaintenance.d.mts","default":"./dist/durable/ThreadProjectionMaintenance.mjs"},"./thread-store":{"types":"./dist/durable/ThreadStore.d.mts","default":"./dist/durable/ThreadStore.mjs"},"./tool-broker":{"types":"./dist/engine/ToolBroker.d.mts","default":"./dist/engine/ToolBroker.mjs"},"./tool-discovery":{"types":"./dist/capabilities/ToolDiscovery.d.mts","default":"./dist/capabilities/ToolDiscovery.mjs"},"./tool-exposure":{"types":"./dist/ToolExposure.d.mts","default":"./dist/ToolExposure.mjs"},"./tool-reconciler":{"types":"./dist/durable/ToolReconciler.d.mts","default":"./dist/durable/ToolReconciler.mjs"},"./tool-result":{"types":"./dist/core/ToolResult.d.mts","default":"./dist/core/ToolResult.mjs"},"./usage":{"types":"./dist/core/Usage.d.mts","default":"./dist/core/Usage.mjs"},"./wake-scheduler":{"types":"./dist/durable/WakeScheduler.d.mts","default":"./dist/durable/WakeScheduler.mjs"},"./web-capture":{"types":"./dist/capabilities/WebCapture.d.mts","default":"./dist/capabilities/WebCapture.mjs"},"./web-search":{"types":"./dist/capabilities/WebSearch.d.mts","default":"./dist/capabilities/WebSearch.mjs"},"./worker":{"types":"./dist/core/Worker.d.mts","default":"./dist/core/Worker.mjs"},"./worker-host":{"types":"./dist/durable/WorkerHost.d.mts","default":"./dist/durable/WorkerHost.mjs"}},"description":"Effect-native agents, execution, subagents, and sandbox contracts in one tree-shakeable package.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/danieljvdm/effect-agent.git","directory":"packages/effect-agent"},"files":["dist","src"],"type":"module","sideEffects":[],"publishConfig":{"access":"public"},"scripts":{"build":"vp pack","check":"tsc --noEmit -p tsconfig.json","test":"vp test --passWithNoTests"}}
|
|
@@ -32,7 +32,10 @@ const EncodedMemoryChange = Schema.Struct({
|
|
|
32
32
|
resultJson: StoredJson,
|
|
33
33
|
});
|
|
34
34
|
|
|
35
|
-
const equivalentContent = Schema.toEquivalence(
|
|
35
|
+
const equivalentContent = Schema.toEquivalence(
|
|
36
|
+
Schema.toEncoded(MemoryWrite.Wire.members[0].fields.content),
|
|
37
|
+
);
|
|
38
|
+
|
|
36
39
|
const equivalentScopes = Schema.toEquivalence(MemoryWrite.Wire.members[0].fields.scopes);
|
|
37
40
|
|
|
38
41
|
/**
|
|
@@ -616,13 +619,14 @@ const makeMemoryServices = Effect.fn("SqliteMemoryStore.make")(function* () {
|
|
|
616
619
|
|
|
617
620
|
const bytes = utf8ByteLength;
|
|
618
621
|
const identityBytes = bytes(next.key.namespace.address) + bytes(next.key.id);
|
|
619
|
-
const
|
|
622
|
+
const resultBytes = bytes(resultJson);
|
|
623
|
+
const documentBytes = identityBytes + resultBytes + 128;
|
|
620
624
|
|
|
621
625
|
const receiptBytes =
|
|
622
626
|
identityBytes +
|
|
623
627
|
bytes(decodedWrite.operationId) +
|
|
624
628
|
bytes(commandJson) +
|
|
625
|
-
|
|
629
|
+
resultBytes +
|
|
626
630
|
128;
|
|
627
631
|
|
|
628
632
|
if (Math.max(documentBytes, receiptBytes) > limits.maxRowBytes) {
|