@oscharko-dev/keiko-memory-governance 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -0
- package/dist/conflict.d.ts +9 -0
- package/dist/conflict.d.ts.map +1 -0
- package/dist/conflict.js +236 -0
- package/dist/correction.d.ts +17 -0
- package/dist/correction.d.ts.map +1 -0
- package/dist/correction.js +69 -0
- package/dist/errors.d.ts +7 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +15 -0
- package/dist/forget.d.ts +5 -0
- package/dist/forget.d.ts.map +1 -0
- package/dist/forget.js +142 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/maintenance.d.ts +33 -0
- package/dist/maintenance.d.ts.map +1 -0
- package/dist/maintenance.js +180 -0
- package/dist/retention.d.ts +5 -0
- package/dist/retention.d.ts.map +1 -0
- package/dist/retention.js +54 -0
- package/dist/status-ops.d.ts +6 -0
- package/dist/status-ops.d.ts.map +1 -0
- package/dist/status-ops.js +86 -0
- package/dist/suppression.d.ts +11 -0
- package/dist/suppression.d.ts.map +1 -0
- package/dist/suppression.js +85 -0
- package/dist/types.d.ts +51 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +32 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +1 -0
- package/package.json +31 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2025.float16.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../keiko-contracts/dist/memory.d.ts","../../keiko-contracts/dist/memory-records.d.ts","../../keiko-contracts/dist/memory-operations.d.ts","../../keiko-contracts/dist/memory-validation.d.ts","../../keiko-contracts/dist/memory-operations-validation.d.ts","../../keiko-contracts/dist/memory-retrieval-validation.d.ts","../../keiko-contracts/dist/memory-audit-validation.d.ts","../../keiko-contracts/dist/memory-audit-events.d.ts","../../keiko-contracts/dist/memory-record-validation.d.ts","../../keiko-contracts/dist/memory-barrel.d.ts","../src/errors.ts","../src/types.ts","../src/conflict.ts","../src/correction.ts","../src/forget.ts","../src/version.ts","../src/retention.ts","../src/status-ops.ts","../src/suppression.ts","../src/maintenance.ts","../src/index.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/utility.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client-stats.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/undici-types/h2c-client.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/socks5-proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/path/posix.d.ts","../../../node_modules/@types/node/path/win32.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/quic.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/iter.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/test/reporters.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/util/types.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/zlib/iter.d.ts","../../../node_modules/@types/node/index.d.ts"],"fileIdsList":[[84,145,146,148,156,160,163,165,166,167,179],[84,147,148,156,160,163,165,166,167,179],[148,156,160,163,165,166,167,179],[84,148,156,160,163,165,166,167,179,188],[84,148,149,154,156,159,160,163,165,166,167,169,179,184,197],[84,148,149,150,156,159,160,163,165,166,167,179],[84,148,156,160,163,165,166,167,179],[84,148,151,156,160,163,165,166,167,179,198],[84,148,152,153,156,160,163,165,166,167,170,179],[84,148,153,156,160,163,165,166,167,179,184,194],[84,148,154,156,159,160,163,165,166,167,169,179],[84,147,148,155,156,160,163,165,166,167,179],[84,148,156,157,160,163,165,166,167,179],[84,148,156,158,159,160,163,165,166,167,179],[84,147,148,156,159,160,163,165,166,167,179],[84,148,156,159,160,161,163,165,166,167,179,184,197],[84,148,156,159,160,161,163,165,166,167,179,184,186,188],[84,135,148,156,159,160,162,163,165,166,167,169,179,184,197],[84,148,156,159,160,162,163,165,166,167,169,179,184,194,197],[84,148,156,160,162,163,164,165,166,167,179,184,194,197],[82,83,84,85,86,87,88,89,90,91,92,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205],[84,148,156,159,160,163,165,166,167,179],[84,148,156,160,163,165,167,179],[84,148,156,160,163,165,166,167,168,179,197],[84,148,156,159,160,163,165,166,167,169,179,184],[84,148,156,160,163,165,166,167,170,179],[84,148,156,160,163,165,166,167,171,179],[84,148,156,159,160,163,165,166,167,174,179],[84,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204],[84,148,156,160,163,165,166,167,176,179],[84,148,156,160,163,165,166,167,177,179],[84,148,153,156,160,163,165,166,167,169,179,188],[84,148,156,159,160,163,165,166,167,179,180],[84,148,156,160,163,165,166,167,179,181,198,201],[84,148,156,159,160,163,165,166,167,179,184,187,188],[84,148,156,160,163,165,166,167,179,185,188],[84,148,156,160,163,165,166,167,179,186],[84,148,156,160,163,165,166,167,179,188,198],[84,148,156,160,163,165,166,167,179,189],[84,145,148,156,160,163,165,166,167,179,184,191,197],[84,148,156,160,163,165,166,167,179,184,190],[84,148,156,159,160,163,165,166,167,179,192,193],[84,148,156,160,163,165,166,167,179,192,193],[84,148,153,156,160,163,165,166,167,169,179,184,194],[84,148,156,160,163,165,166,167,179,195],[84,148,156,160,163,165,166,167,169,179,196],[84,148,156,160,162,163,165,166,167,177,179,197],[84,148,156,160,163,165,166,167,179,198,199],[84,148,153,156,160,163,165,166,167,179,199],[84,148,156,160,163,165,166,167,179,184,200],[84,148,156,160,163,165,166,167,168,179,201],[84,148,156,160,163,165,166,167,179,202],[84,148,151,156,160,163,165,166,167,179],[84,148,153,156,160,163,165,166,167,179],[84,148,156,160,163,165,166,167,179,198],[84,135,148,156,160,163,165,166,167,179],[84,148,156,160,163,165,166,167,179,197],[84,148,156,160,163,165,166,167,179,203],[84,148,156,160,163,165,166,167,174,179],[84,148,156,160,163,165,166,167,179,193],[84,135,148,156,159,160,161,163,165,166,167,174,179,184,188,197,200,201,203],[84,148,156,160,163,165,166,167,179,184,204],[84,148,156,160,163,165,166,167,179,186,205],[84,99,102,105,106,148,156,160,163,165,166,167,179,197],[84,102,148,156,160,163,165,166,167,179,184,197],[84,102,106,148,156,160,163,165,166,167,179,197],[84,148,156,160,163,165,166,167,179,184],[84,96,148,156,160,163,165,166,167,179],[84,100,148,156,160,163,165,166,167,179],[84,98,99,102,148,156,160,163,165,166,167,179,197],[84,148,156,160,163,165,166,167,169,179,194],[84,148,156,160,163,165,166,167,179,206],[84,96,148,156,160,163,165,166,167,179,206],[84,98,102,148,156,160,163,165,166,167,169,179,197],[84,93,94,95,97,101,148,156,159,160,163,165,166,167,179,184,197],[84,102,111,119,148,156,160,163,165,166,167,179],[84,94,100,148,156,160,163,165,166,167,179],[84,102,129,130,148,156,160,163,165,166,167,179],[84,94,97,102,148,156,160,163,165,166,167,179,188,197,206],[84,102,148,156,160,163,165,166,167,179],[84,98,102,148,156,160,163,165,166,167,179,197],[84,93,148,156,160,163,165,166,167,179],[84,96,97,98,100,101,102,103,104,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,148,156,160,163,165,166,167,179],[84,102,122,125,148,156,160,163,165,166,167,179],[84,102,111,112,113,148,156,160,163,165,166,167,179],[84,100,102,112,114,148,156,160,163,165,166,167,179],[84,101,148,156,160,163,165,166,167,179],[84,94,96,102,148,156,160,163,165,166,167,179],[84,102,106,112,114,148,156,160,163,165,166,167,179],[84,106,148,156,160,163,165,166,167,179],[84,100,102,105,148,156,160,163,165,166,167,179,197],[84,94,98,102,111,148,156,160,163,165,166,167,179],[84,102,122,148,156,160,163,165,166,167,179],[84,114,148,156,160,163,165,166,167,179],[84,94,98,102,106,148,156,160,163,165,166,167,179],[84,96,102,129,148,156,160,163,165,166,167,179,188,203,206],[70,84,148,156,160,163,165,166,167,179],[63,64,84,148,156,160,163,165,166,167,179],[61,62,63,64,65,66,67,68,69,84,148,156,160,163,165,166,167,179],[61,62,84,148,156,160,163,165,166,167,179],[61,62,64,84,148,156,160,163,165,166,167,179],[61,84,148,156,160,163,165,166,167,179],[61,63,64,84,148,156,160,163,165,166,167,179],[70,71,72,84,148,156,160,163,165,166,167,179],[71,72,73,74,75,76,77,78,79,80,84,148,156,160,163,165,166,167,179],[70,71,84,148,156,160,163,165,166,167,179]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"cfacb6c5b29f3c8f81194ca5c6c1d5a87108a2ec1df233f974b279a58b3c15e3","impliedFormat":99},{"version":"170837accdba3f0567fe1c6fb278ce3949317bb5404a26f7cc5648181f421add","impliedFormat":99},{"version":"1d794adbdc230d523976786d1257203e483115edf3a2ea704fa7024e040b4dc4","impliedFormat":99},{"version":"ad8891163f0b0902e2a8b87bb63e8c5a99e2f96237e511c21abd4b642049f51d","impliedFormat":99},{"version":"99e1bcef17ff12ae645785c60b2885d3186ae8ce397c9779bbca7594aa30086e","impliedFormat":99},{"version":"ea8ae4e64942c8587f53535dedc63b29fba78db899694d8d0ec3c6a275cc33a5","impliedFormat":99},{"version":"3ddf59fa92042ab494e3f65a7f62fb9aebf97b2b69680166c95d9ce25a4e072d","impliedFormat":99},{"version":"ff6c36564ed2bdc2cbb4bae471d055c56ae6e42b8c8f976543a31bc65c103c7a","impliedFormat":99},{"version":"cc45394ddbef9f6dc1d8a674f430159356517b380c88858bc90775d895d8c397","impliedFormat":99},{"version":"d85cbbb8501835920b144c9f46389a298e22918e3b49cfa6cb72f69f44c3cd45","impliedFormat":99},{"version":"6eb257e5fd8dbb337636ce3bced97a33f95922f9fe17a44ad6db1f90f82f21d9","signature":"177875e11c7afdf96b2e208f9345423bedf3cd3565700264b5f0eb94c125c671","impliedFormat":99},{"version":"925def2fd1f9b39f4dfa1ec732d041e247b261973bfd32a7620573d197d9a9b1","signature":"6bb3d4cdd5b7e4384cb6d76142663c44cf5140960722bf2dc3da43924f2d8f54","impliedFormat":99},{"version":"8b66f7abbfff7e70fcb212cfd867b6ff51f2d88ea123701b05ad429ddd53d471","signature":"3119f1b56e8b3f4483c5422801595b9b175aaf98056a13ccc95403afdd0e7cf0","impliedFormat":99},{"version":"49f8c2226511a8617a8aa323bc0f2311b22b779c867c7824bc08625d3054292c","signature":"7a98d7b5aede6297f44e8fc130e02ebf10d8a99edc28e5652db3fd16cbdf47fe","impliedFormat":99},{"version":"cf620f2ea63713c0a70f0c628b810eafe603309c665abbcd6cdbcbeb23252f36","signature":"bd88b6302079c34f757624b22a45498c1fa84dfd77157963fba48c6078383f53","impliedFormat":99},{"version":"a7b615a21e912237aa1ef4086fce3bee3f73da025ae1672129ffffeebc0a78a5","signature":"9c7ad598b64a0064f16b9522af69367ad558d2136f575e23d972a52ee4af5cb4","impliedFormat":99},{"version":"b8f15d410adfa21355a503e475f2729eebc5a6c0ef650049790a8e1b8c7ad088","signature":"a7c198bebb07d24781b548a9abd4873c5efa210978fb087672b16c8952b204d9","impliedFormat":99},{"version":"0d0f0ef7d2abffddf8ff14ec012fb6a63a65c9cd70165b75a2e83f427b79fc9e","signature":"3b930428870ae9a5dceb58fe632cdfdb51d497bac3fd3df7a33242170d6eb0b4","impliedFormat":99},{"version":"fd9b6d3e196f30eba0208b9eaa591223dcb104e1dfdb7b705146e6216c659c75","signature":"4e829779d75d0b8e9b917331a40f8c271c8f4992174f5992ffa7a2bce89dfb31","impliedFormat":99},{"version":"4846968254ca67d155802bd3cb70765b9cd609412d9b036d7af272b82be9c8ea","signature":"0bfeaac6663f3518647a4941147e5cde9171821bd3a8fe262997dac7ae2b4fbc","impliedFormat":99},{"version":"344febdae476ae1cccc0f0e1fe2d91d682654a2cb716568b3c059511c09134a6","signature":"25a7263df79b870d7ecadc85d681069f541fce68988124278ab515a672b2576d","impliedFormat":99},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc2110f7decca6bfb9392e30421cfa1436479e4a6756e8fec6cbc22625d4f881","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"10ec5e82144dfac6f04fa5d1d6c11763b3e4dbbac6d99101427219ab3e2ae887","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"14e9acf826baba0ef4b5665704084896e7bcc06f65a9ab13af7e93d27d6b7069","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"21adf13435b9b748529c8cedf80f884e5130b9684188120a686cd2b26a2059c7","impliedFormat":1},{"version":"eec76bf6b9346f3f95fa402621b889489e96930e72295b0369022f332e9b4a6a","impliedFormat":1},{"version":"0ecd58f413f9bc3b7d4383eae31b0c8fc576985cd7404d6f99f8c643543ade74","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"9c32412007b5662fd34a8eb04292fb5314ec370d7016d1c2fb8aa193c807fe22","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"6ebe8ebb8659aaa9d1acbf3710d7dae3e923e97610238b9511c25dc39023a166","impliedFormat":1},{"version":"e85d7f8068f6a26710bff0cc8c0fc5e47f71089c3780fbede05857331d2ddec9","impliedFormat":1},{"version":"7befaf0e76b5671be1d47b77fcc65f2b0aad91cc26529df1904f4a7c46d216e9","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"d33ce35e3f9cfcc1d94eca415bdd3bde94d5b153ffdd33e6c4455c029986c630","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"4dc59f6e1dbf3d5f66660fceabe6c174d3261b37b696ae1854f0dbaf255fc753","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"436d7b4543b340b0f3eef4310d524242e41369b9652aa9c70428767c4dcac455","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"114f493b30f364255290472111b5a4791d5902c308645670cd0401429cbc6930","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"d2ae155afe8a01cc0ae612d99117cf8ef16692ba7c4366590156fdec1bcf2d8c","impliedFormat":1},{"version":"3f5e5d9be35913db9fea42a63f3df0b7e3c8703b97670a2125587b4dbbd56d7c","impliedFormat":1},{"version":"c8b8968311ec4e5e97b7b5fb8a65efaba455db9bdcfd7fff7fb15f6e317bfba0","impliedFormat":1},{"version":"57c23df0b5f7a8e26363a3849b0bc7763f6b241207157c8e40089d1df4116f35","affectsGlobalScope":true,"impliedFormat":1},{"version":"3b8bc0c17b54081b0878673989216229e575d67a10874e84566a21025a2461ee","impliedFormat":1},{"version":"5b0db5a58b73498792a29bfebc333438e61906fef75da898b410e24e52229e6f","impliedFormat":1},{"version":"dbe055b2b29a7bab2c1ca8f259436306adb43f469dca7e639a02cd3695d3f621","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"aecbf1d9e6a18dab7d92ef8a89a1444b47e1eb6134cb2bb776a26d55ff58c29a","impliedFormat":1},{"version":"2ea729503db9793f2691162fec3dd1118cab62e96d025f8eeb376d43ec293395","impliedFormat":1},{"version":"9ec87fea42b92894b0f209931a880789d43c3397d09dd99c631ae40a2f7071d1","impliedFormat":1},{"version":"c68e88cdfadfb6c8ba5fc38e58a3a166b0beae77b1f05b7d921150a32a5ffb8d","impliedFormat":1},{"version":"2bc7aa4fba46df0bd495425a7c8201437a7d465f83854fac859df2d67f664df3","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"1fede9296beac11ce8e6b425396a1791f64341f2be85deebb6286faf6e16306e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce697b6a251d9cad53998c7fd3098072df883b525ec45d83530e434dc6d80dc6","impliedFormat":1},{"version":"719412f054e6ecc35489462c9a21bab0323d173a7d04e55b0ace4b5d86fbeb07","impliedFormat":1},{"version":"0eb5d0cbf09de5d34542b977fd6a933bb2e0817bffe8e1a541b2f1ad1b9af1ff","impliedFormat":1},{"version":"3db996ecdee7aabecc5385976cc07eb66216034a273c07b17d1a85292e9bab0c","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"c32c840c62d8bd7aeb3147aa6754cd2d922b990a6b6634530cb2ebdce5adc8e9","impliedFormat":1},{"version":"5ff4433a2deae4f85ab1377e90a7554ce6b47ae51c69a84ca30a6e22fae85834","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"c1fa52b3d014001e8662fa2669d90ea15373958a288e3b83a3b621733d25292a","affectsGlobalScope":true,"impliedFormat":1},{"version":"cbed824fec91efefc7bbdcb8b43d1a531fdbebd0e2ef19481501ff365a93cb70","impliedFormat":1},{"version":"d0716593b3f2b0451bcf0c24cfa86dec2235c325c89f201934248b7c742715fc","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"2991bca2cc0f0628a278df2a2ccdb8d6cbcb700f3761abbed62bba137d5b1790","impliedFormat":1},{"version":"5e66972e83eb4dc7123939bf816e6cbd9ad81af5552db1cab84e6bd9c64d2ecc","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"8413d0641f293aed551c7464615b770d34a02dedede889b9591172287d68e773","impliedFormat":1},{"version":"0ea59f7d3e51440baa64f429253759b106cfcbaf51e474cae606e02265b37cf8","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"1b241e24f3227d078c06aeda6e050187ad59a4e591f4467abed44d92b084e08d","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"7fde0e1be5c8be204ffbf428abfcf01da2eb0f130e1bc3f539eb7275f4fd1f58","impliedFormat":1},{"version":"e284328553df5f425a5d33d36a0c3fa66b46af9d097cad6f4d2e8696dfdeb0f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"f36b3fbe2be150a9ca140da48593f21e6a8172004f92ddc549b43efec39f3e54","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"016b29bf4926b80255a108c53a1451717350059da04fcae64d1075f5e93bbb39","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"1c4f139ade4f6ebf45463505f8155173e5d7a5305e50e0aae0a5e712d6ff3b48","impliedFormat":1},{"version":"e16b319e5aca1031168de823c4946ff8e29629c4c8cc0ec0fcfe2a8ab2155043","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"9d3821bc75c59577e52643324cec92fc2145642e8d17cf7ee07a3181f21d985d","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"201db9cf1687fab1adf5282fcba861f382b32303dc4f67c89d59655e78a25461","impliedFormat":1},{"version":"2c3c5c0f54055e87640f5d233716fd889f3034fc7911d603b642369b0dbeb2a7","impliedFormat":1},{"version":"0a20eaf2e4b1e3c1e1f87f7bccb0c936375b23b022baeea750519b7c9bc6ce83","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"a16b91b27bd6b706c687c88cbc8a7d4ee98e5ed6043026d6b84bda923c0aed67","impliedFormat":1},{"version":"1c9e5b1a17b1fc9b3711fb36e0690421261ab2880f15b145155b5b2ba2ab6c2d","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"6eeded8c7e352be6e0efb83f4935ec752513c4d22043b52522b90849a49a3a11","impliedFormat":1},{"version":"6c1ad90050ffbb151cacc68e2d06ea1a26a945659391e32651f5d42b86fd7f2c","impliedFormat":1},{"version":"afa1c49f8e559e413d57343339db857d2a8159435cf9cf7d4deb41718fff1b88","impliedFormat":1},{"version":"6953d7597831d0860c7034cf4f0419687d263b6b98a4b32e37ce6d49615c36e2","impliedFormat":1}],"root":[[71,81]],"options":{"composite":true,"declaration":true,"declarationMap":true,"exactOptionalPropertyTypes":true,"module":199,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[145,1],[146,1],[147,2],[84,3],[148,4],[149,5],[150,6],[82,7],[151,8],[152,9],[153,10],[154,11],[155,12],[156,13],[157,13],[158,14],[159,15],[160,16],[161,17],[85,7],[83,7],[162,18],[163,19],[164,20],[206,21],[165,22],[166,23],[167,22],[168,24],[169,25],[170,26],[171,27],[172,27],[173,27],[174,28],[175,29],[176,30],[177,31],[178,32],[179,33],[180,33],[181,34],[182,7],[183,7],[184,35],[185,36],[186,37],[187,35],[188,38],[189,39],[190,40],[191,41],[192,42],[193,43],[194,44],[195,45],[196,46],[197,47],[198,48],[199,49],[200,50],[201,51],[202,52],[86,22],[87,7],[88,53],[89,54],[90,7],[91,55],[92,7],[136,56],[137,57],[138,58],[139,58],[140,59],[141,7],[142,4],[143,60],[144,57],[203,61],[204,62],[205,63],[59,7],[60,7],[10,7],[12,7],[11,7],[2,7],[13,7],[14,7],[15,7],[16,7],[17,7],[18,7],[19,7],[20,7],[3,7],[21,7],[22,7],[4,7],[23,7],[27,7],[24,7],[25,7],[26,7],[28,7],[29,7],[30,7],[5,7],[31,7],[32,7],[33,7],[34,7],[6,7],[38,7],[35,7],[36,7],[37,7],[39,7],[7,7],[40,7],[45,7],[46,7],[41,7],[42,7],[43,7],[44,7],[8,7],[50,7],[47,7],[48,7],[49,7],[51,7],[9,7],[52,7],[53,7],[54,7],[56,7],[55,7],[57,7],[1,7],[58,7],[111,64],[124,65],[108,66],[125,67],[134,68],[99,69],[100,70],[98,71],[133,72],[128,73],[132,74],[102,75],[121,76],[101,77],[131,78],[96,79],[97,73],[103,80],[104,7],[110,81],[107,80],[94,82],[135,83],[126,84],[114,85],[113,80],[115,86],[118,87],[112,88],[116,89],[129,72],[105,90],[106,91],[119,92],[95,67],[123,93],[122,80],[109,91],[117,94],[120,95],[127,7],[93,7],[130,96],[68,97],[67,98],[70,99],[65,98],[63,100],[69,101],[62,102],[66,103],[64,100],[61,7],[73,104],[74,104],[71,7],[75,104],[81,105],[80,97],[77,104],[78,104],[79,106],[72,97],[76,7]],"latestChangedDtsFile":"./index.d.ts","version":"6.0.3"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { MemoryRecord, MemorySupersession } from "@oscharko-dev/keiko-contracts/memory";
|
|
2
|
+
import type { ConflictPair, ConflictResolution, GovernanceContext, StatusTransition } from "./types.js";
|
|
3
|
+
export declare function detectConflictPair(a: MemoryRecord, b: MemoryRecord): ConflictPair;
|
|
4
|
+
export interface ConflictTransitionResult {
|
|
5
|
+
readonly supersessions: readonly MemorySupersession[];
|
|
6
|
+
readonly statusTransitions: readonly StatusTransition[];
|
|
7
|
+
}
|
|
8
|
+
export declare function buildConflictTransitions(conflictedMemories: readonly MemoryRecord[], resolution: ConflictResolution, context: GovernanceContext): ConflictTransitionResult;
|
|
9
|
+
//# sourceMappingURL=conflict.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict.d.ts","sourceRoot":"","sources":["../src/conflict.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAEV,YAAY,EAGZ,kBAAkB,EACnB,MAAM,sCAAsC,CAAC;AAO9C,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAwIpB,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,YAAY,CAEjF;AA8ED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,aAAa,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACtD,QAAQ,CAAC,iBAAiB,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACzD;AAED,wBAAgB,wBAAwB,CACtC,kBAAkB,EAAE,SAAS,YAAY,EAAE,EAC3C,UAAU,EAAE,kBAAkB,EAC9B,OAAO,EAAE,iBAAiB,GACzB,wBAAwB,CAgB1B"}
|
package/dist/conflict.js
ADDED
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
// Conflict detection + status transitions.
|
|
2
|
+
//
|
|
3
|
+
// detectConflictPair — pure pairwise predicate over two MemoryRecords. The detection is
|
|
4
|
+
// deliberately narrow:
|
|
5
|
+
//
|
|
6
|
+
// - "negation-flip" one side carries a negation marker (" not " or "nt ") that the
|
|
7
|
+
// other does not, and the non-negated tokens otherwise align
|
|
8
|
+
// (Jaccard >= 0.4). Same negation detection as the consolidation
|
|
9
|
+
// layer (#208 conflicts.ts), reused here so the two layers agree
|
|
10
|
+
// on what counts as a polarity-flip.
|
|
11
|
+
// - "polarity-mismatch" the bodies share the same subject (Jaccard >= 0.4) and one
|
|
12
|
+
// side has a "yes"/"true" affirmation marker while the other has
|
|
13
|
+
// a "no"/"false" denial marker. Distinct from negation: this is
|
|
14
|
+
// a vocabulary-level flip, not a grammatical-particle flip.
|
|
15
|
+
// - "value-mismatch" the records share scope AND type AND key tokens but resolve to
|
|
16
|
+
// different bodies entirely. This is the catch-all for "two
|
|
17
|
+
// decisions about the same thing that contradict structurally".
|
|
18
|
+
// Only fires when Jaccard is in [0.4, 0.85) — at >= 0.85 we let
|
|
19
|
+
// consolidation collapse the duplicates instead.
|
|
20
|
+
//
|
|
21
|
+
// The detection ORDER above is the precedence order: a pair that matches negation-flip
|
|
22
|
+
// is not also reported as value-mismatch.
|
|
23
|
+
//
|
|
24
|
+
// buildConflictTransitions — pure: takes a list of memories plus an explicit
|
|
25
|
+
// {winner, losers} resolution and emits a StatusTransition per loser plus a Supersession
|
|
26
|
+
// per loser linking loser→winner. Every transition is checked against
|
|
27
|
+
// MEMORY_STATUS_TRANSITIONS via the contracts `checkStatusTransition` helper; an illegal
|
|
28
|
+
// transition throws GovernanceError("illegal-status-transition") with the offending
|
|
29
|
+
// from/to pair in details.
|
|
30
|
+
import { checkStatusTransition, validateMemorySupersession, } from "@oscharko-dev/keiko-contracts/memory";
|
|
31
|
+
import { GovernanceError } from "./errors.js";
|
|
32
|
+
// ─── Body-normalisation helpers (no regex, no external deps) ──────────────────
|
|
33
|
+
function mapCharToSafe(ch) {
|
|
34
|
+
const code = ch.charCodeAt(0);
|
|
35
|
+
const isLetter = code >= 97 && code <= 122;
|
|
36
|
+
const isDigit = code >= 48 && code <= 57;
|
|
37
|
+
if (isLetter || isDigit)
|
|
38
|
+
return ch;
|
|
39
|
+
const isSpace = ch === " " || ch === "\t" || ch === "\n" || ch === "\r";
|
|
40
|
+
return isSpace ? " " : "";
|
|
41
|
+
}
|
|
42
|
+
function collapseSpaces(input) {
|
|
43
|
+
let collapsed = "";
|
|
44
|
+
let prevSpace = false;
|
|
45
|
+
for (const ch of input) {
|
|
46
|
+
const sp = ch === " ";
|
|
47
|
+
if (sp && prevSpace)
|
|
48
|
+
continue;
|
|
49
|
+
collapsed += ch;
|
|
50
|
+
prevSpace = sp;
|
|
51
|
+
}
|
|
52
|
+
return collapsed.trim();
|
|
53
|
+
}
|
|
54
|
+
function normalizeBody(body) {
|
|
55
|
+
let out = "";
|
|
56
|
+
for (const ch of body.toLowerCase()) {
|
|
57
|
+
out += mapCharToSafe(ch);
|
|
58
|
+
}
|
|
59
|
+
return collapseSpaces(out);
|
|
60
|
+
}
|
|
61
|
+
function tokenize(body) {
|
|
62
|
+
const norm = normalizeBody(body);
|
|
63
|
+
if (norm.length === 0)
|
|
64
|
+
return [];
|
|
65
|
+
return norm.split(" ");
|
|
66
|
+
}
|
|
67
|
+
function scopeCoordinateKey(scope) {
|
|
68
|
+
switch (scope.kind) {
|
|
69
|
+
case "user":
|
|
70
|
+
return `user:${scope.userId}`;
|
|
71
|
+
case "workspace":
|
|
72
|
+
return `workspace:${scope.workspaceId}`;
|
|
73
|
+
case "project":
|
|
74
|
+
return `project:${scope.projectId}`;
|
|
75
|
+
case "workflow":
|
|
76
|
+
return `workflow:${scope.workflowDefinitionId}`;
|
|
77
|
+
case "global":
|
|
78
|
+
return "global";
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function jaccardSimilarity(a, b) {
|
|
82
|
+
const aTokens = new Set(tokenize(a));
|
|
83
|
+
const bTokens = new Set(tokenize(b));
|
|
84
|
+
if (aTokens.size === 0 && bTokens.size === 0)
|
|
85
|
+
return 1;
|
|
86
|
+
let intersect = 0;
|
|
87
|
+
for (const tok of aTokens) {
|
|
88
|
+
if (bTokens.has(tok))
|
|
89
|
+
intersect += 1;
|
|
90
|
+
}
|
|
91
|
+
const union = aTokens.size + bTokens.size - intersect;
|
|
92
|
+
return union === 0 ? 0 : intersect / union;
|
|
93
|
+
}
|
|
94
|
+
const NEGATION_CONTRACTIONS = [
|
|
95
|
+
"aint",
|
|
96
|
+
"arent",
|
|
97
|
+
"cant",
|
|
98
|
+
"couldnt",
|
|
99
|
+
"didnt",
|
|
100
|
+
"doesnt",
|
|
101
|
+
"dont",
|
|
102
|
+
"hadnt",
|
|
103
|
+
"hasnt",
|
|
104
|
+
"havent",
|
|
105
|
+
"isnt",
|
|
106
|
+
"mustnt",
|
|
107
|
+
"shouldnt",
|
|
108
|
+
"wasnt",
|
|
109
|
+
"werent",
|
|
110
|
+
"wont",
|
|
111
|
+
"wouldnt",
|
|
112
|
+
];
|
|
113
|
+
function hasNegation(body) {
|
|
114
|
+
for (const token of tokenize(body)) {
|
|
115
|
+
if (token === "not")
|
|
116
|
+
return true;
|
|
117
|
+
for (const contraction of NEGATION_CONTRACTIONS) {
|
|
118
|
+
if (token === contraction)
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
const AFFIRM_MARKERS = [" yes ", " true ", " correct ", " confirmed "];
|
|
125
|
+
const DENY_MARKERS = [" no ", " false ", " wrong ", " denied "];
|
|
126
|
+
function hasAnyMarker(body, markers) {
|
|
127
|
+
const padded = ` ${normalizeBody(body)} `;
|
|
128
|
+
for (const marker of markers) {
|
|
129
|
+
if (padded.includes(marker))
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
// ─── Detection thresholds ─────────────────────────────────────────────────────
|
|
135
|
+
const CONFLICT_OVERLAP_THRESHOLD = 0.4;
|
|
136
|
+
const DEDUP_OVERLAP_THRESHOLD = 0.85;
|
|
137
|
+
// ─── Pairwise conflict detection ──────────────────────────────────────────────
|
|
138
|
+
function differentScopeOrType(a, b) {
|
|
139
|
+
if (a.type !== b.type)
|
|
140
|
+
return true;
|
|
141
|
+
if (scopeCoordinateKey(a.scope) !== scopeCoordinateKey(b.scope))
|
|
142
|
+
return true;
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
function classifyConflict(a, b) {
|
|
146
|
+
if (differentScopeOrType(a, b))
|
|
147
|
+
return { hasConflict: false };
|
|
148
|
+
const overlap = jaccardSimilarity(a.body, b.body);
|
|
149
|
+
if (overlap < CONFLICT_OVERLAP_THRESHOLD)
|
|
150
|
+
return { hasConflict: false };
|
|
151
|
+
if (hasNegation(a.body) !== hasNegation(b.body)) {
|
|
152
|
+
return { hasConflict: true, reason: "negation-flip" };
|
|
153
|
+
}
|
|
154
|
+
const aAffirm = hasAnyMarker(a.body, AFFIRM_MARKERS);
|
|
155
|
+
const bAffirm = hasAnyMarker(b.body, AFFIRM_MARKERS);
|
|
156
|
+
const aDeny = hasAnyMarker(a.body, DENY_MARKERS);
|
|
157
|
+
const bDeny = hasAnyMarker(b.body, DENY_MARKERS);
|
|
158
|
+
if ((aAffirm && bDeny) || (aDeny && bAffirm)) {
|
|
159
|
+
return { hasConflict: true, reason: "polarity-mismatch" };
|
|
160
|
+
}
|
|
161
|
+
if (a.body !== b.body && overlap < DEDUP_OVERLAP_THRESHOLD) {
|
|
162
|
+
return { hasConflict: true, reason: "value-mismatch" };
|
|
163
|
+
}
|
|
164
|
+
return { hasConflict: false };
|
|
165
|
+
}
|
|
166
|
+
export function detectConflictPair(a, b) {
|
|
167
|
+
return classifyConflict(a, b);
|
|
168
|
+
}
|
|
169
|
+
// ─── Conflict resolution transitions + supersessions ──────────────────────────
|
|
170
|
+
function indexById(memories) {
|
|
171
|
+
const map = new Map();
|
|
172
|
+
for (const m of memories)
|
|
173
|
+
map.set(m.id, m);
|
|
174
|
+
return map;
|
|
175
|
+
}
|
|
176
|
+
function assertResolutionWellFormed(resolution, index) {
|
|
177
|
+
if (resolution.losers.length === 0) {
|
|
178
|
+
throw new GovernanceError("invalid-resolution", "losers list must be non-empty");
|
|
179
|
+
}
|
|
180
|
+
if (!index.has(resolution.winner)) {
|
|
181
|
+
throw new GovernanceError("invalid-resolution", "winner is not in the conflicted set");
|
|
182
|
+
}
|
|
183
|
+
for (const loserId of resolution.losers) {
|
|
184
|
+
if (loserId === resolution.winner) {
|
|
185
|
+
throw new GovernanceError("invalid-resolution", "losers list must not contain the winner");
|
|
186
|
+
}
|
|
187
|
+
if (!index.has(loserId)) {
|
|
188
|
+
throw new GovernanceError("invalid-resolution", `loser ${loserId} is not in the conflicted set`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
function buildLoserTransition(loser, nowMs, targetStatus) {
|
|
193
|
+
const check = checkStatusTransition(loser.status, targetStatus);
|
|
194
|
+
if (!check.ok) {
|
|
195
|
+
throw new GovernanceError("illegal-status-transition", check.reason ?? `illegal transition: ${loser.status} -> ${targetStatus}`, [`memoryId: ${loser.id}`, `from: ${loser.status}`, `to: ${targetStatus}`]);
|
|
196
|
+
}
|
|
197
|
+
return {
|
|
198
|
+
memoryId: loser.id,
|
|
199
|
+
from: loser.status,
|
|
200
|
+
to: targetStatus,
|
|
201
|
+
transitionedAt: nowMs,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
function buildLoserSupersession(loserId, winnerId, context) {
|
|
205
|
+
const env = {
|
|
206
|
+
schemaVersion: "1",
|
|
207
|
+
oldMemoryId: loserId,
|
|
208
|
+
newMemoryId: winnerId,
|
|
209
|
+
reviewerId: context.reviewerId,
|
|
210
|
+
supersededAt: context.nowMs,
|
|
211
|
+
reason: "conflict-resolution",
|
|
212
|
+
edgeKind: "supersedes",
|
|
213
|
+
};
|
|
214
|
+
const v = validateMemorySupersession(env);
|
|
215
|
+
if (!v.ok) {
|
|
216
|
+
throw new GovernanceError("envelope-validation-failed", "conflict supersession failed contracts validation", v.errors);
|
|
217
|
+
}
|
|
218
|
+
return env;
|
|
219
|
+
}
|
|
220
|
+
export function buildConflictTransitions(conflictedMemories, resolution, context) {
|
|
221
|
+
const index = indexById(conflictedMemories);
|
|
222
|
+
assertResolutionWellFormed(resolution, index);
|
|
223
|
+
const supersessions = [];
|
|
224
|
+
const transitions = [];
|
|
225
|
+
for (const loserId of resolution.losers) {
|
|
226
|
+
const loser = index.get(loserId);
|
|
227
|
+
if (loser === undefined) {
|
|
228
|
+
// Guarded by assertResolutionWellFormed above; the explicit branch satisfies
|
|
229
|
+
// noUncheckedIndexedAccess without a non-null assertion.
|
|
230
|
+
throw new GovernanceError("invalid-resolution", `loser ${loserId} missing after index`);
|
|
231
|
+
}
|
|
232
|
+
transitions.push(buildLoserTransition(loser, context.nowMs, "conflicted"));
|
|
233
|
+
supersessions.push(buildLoserSupersession(loserId, resolution.winner, context));
|
|
234
|
+
}
|
|
235
|
+
return { supersessions, statusTransitions: transitions };
|
|
236
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { MemoryId, MemoryProposal, MemoryProposalId, MemoryRecord, MemorySensitivity, MemorySupersession } from "@oscharko-dev/keiko-contracts/memory";
|
|
2
|
+
import type { GovernanceContext } from "./types.js";
|
|
3
|
+
export interface BuildCorrectionInput {
|
|
4
|
+
readonly olderMemory: MemoryRecord;
|
|
5
|
+
readonly correctedBody: string;
|
|
6
|
+
readonly context: GovernanceContext;
|
|
7
|
+
readonly newProposalId: MemoryProposalId;
|
|
8
|
+
readonly newMemoryId: MemoryId;
|
|
9
|
+
readonly sensitivity?: MemorySensitivity;
|
|
10
|
+
readonly reason?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface CorrectionEnvelopes {
|
|
13
|
+
readonly proposal: MemoryProposal;
|
|
14
|
+
readonly supersession: MemorySupersession;
|
|
15
|
+
}
|
|
16
|
+
export declare function buildCorrection(input: BuildCorrectionInput): CorrectionEnvelopes;
|
|
17
|
+
//# sourceMappingURL=correction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"correction.d.ts","sourceRoot":"","sources":["../src/correction.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,sCAAsC,CAAC;AAO9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;CAC3C;AAgDD,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,mBAAmB,CAqBhF"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// buildCorrection — single-call builder that pairs a `correction`-type MemoryProposal
|
|
2
|
+
// with the matching MemorySupersession linking the old MemoryId to the freshly-minted
|
|
3
|
+
// MemoryId of the corrected fact.
|
|
4
|
+
//
|
|
5
|
+
// Flow at the caller:
|
|
6
|
+
// 1. Caller mints a fresh proposalId AND the prospective newMemoryId (e.g. uuid v7).
|
|
7
|
+
// 2. Caller invokes buildCorrection(olderMemory, correctedBody, ctx, ids, sensitivity?).
|
|
8
|
+
// 3. Caller persists the proposal via the vault (#206); on acceptance the vault SHOULD
|
|
9
|
+
// accept with `mintedMemoryId === newMemoryId` (the prospective id is stable).
|
|
10
|
+
// 4. Caller applies the supersession to the vault and audit ledger.
|
|
11
|
+
//
|
|
12
|
+
// The builder validates BOTH envelopes through the contracts validators before returning,
|
|
13
|
+
// so a structurally-invalid envelope cannot cross the public API. The supersession edge
|
|
14
|
+
// kind is pinned to the literal "supersedes" per the contracts type.
|
|
15
|
+
import { validateMemoryProposal, validateMemorySupersession, } from "@oscharko-dev/keiko-contracts/memory";
|
|
16
|
+
import { GovernanceError } from "./errors.js";
|
|
17
|
+
const DEFAULT_REASON = "user-issued correction";
|
|
18
|
+
function buildProposal(input) {
|
|
19
|
+
const { olderMemory, correctedBody, context, newProposalId, sensitivity } = input;
|
|
20
|
+
const provenance = {
|
|
21
|
+
sourceKind: "accepted-correction",
|
|
22
|
+
capturedAt: context.nowMs,
|
|
23
|
+
confidence: olderMemory.provenance.confidence,
|
|
24
|
+
sensitivity: sensitivity ?? olderMemory.provenance.sensitivity,
|
|
25
|
+
};
|
|
26
|
+
return {
|
|
27
|
+
schemaVersion: "1",
|
|
28
|
+
proposalId: newProposalId,
|
|
29
|
+
proposedAt: context.nowMs,
|
|
30
|
+
scope: olderMemory.scope,
|
|
31
|
+
type: "correction",
|
|
32
|
+
body: correctedBody,
|
|
33
|
+
tags: olderMemory.tags,
|
|
34
|
+
provenance,
|
|
35
|
+
validity: { validFrom: context.nowMs },
|
|
36
|
+
initialStatus: "proposed",
|
|
37
|
+
captureReason: input.reason ?? DEFAULT_REASON,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function buildSupersession(input) {
|
|
41
|
+
return {
|
|
42
|
+
schemaVersion: "1",
|
|
43
|
+
oldMemoryId: input.olderMemory.id,
|
|
44
|
+
newMemoryId: input.newMemoryId,
|
|
45
|
+
reviewerId: input.context.reviewerId,
|
|
46
|
+
supersededAt: input.context.nowMs,
|
|
47
|
+
reason: input.reason ?? DEFAULT_REASON,
|
|
48
|
+
edgeKind: "supersedes",
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function assertOldNewDiffer(oldId, newId) {
|
|
52
|
+
if (oldId === newId) {
|
|
53
|
+
throw new GovernanceError("invalid-resolution", "correction supersession requires oldMemoryId !== newMemoryId");
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export function buildCorrection(input) {
|
|
57
|
+
assertOldNewDiffer(input.olderMemory.id, input.newMemoryId);
|
|
58
|
+
const proposal = buildProposal(input);
|
|
59
|
+
const supersession = buildSupersession(input);
|
|
60
|
+
const pValid = validateMemoryProposal(proposal);
|
|
61
|
+
if (!pValid.ok) {
|
|
62
|
+
throw new GovernanceError("envelope-validation-failed", "correction proposal failed contracts validation", pValid.errors);
|
|
63
|
+
}
|
|
64
|
+
const sValid = validateMemorySupersession(supersession);
|
|
65
|
+
if (!sValid.ok) {
|
|
66
|
+
throw new GovernanceError("envelope-validation-failed", "correction supersession failed contracts validation", sValid.errors);
|
|
67
|
+
}
|
|
68
|
+
return { proposal, supersession };
|
|
69
|
+
}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type GovernanceErrorCode = "envelope-validation-failed" | "illegal-status-transition" | "invalid-resolution" | "invalid-threshold" | "invalid-validity-window" | "idempotent-noop" | "unsupported-selector" | "invalid-selector-input" | "memory-not-eligible";
|
|
2
|
+
export declare class GovernanceError extends Error {
|
|
3
|
+
readonly code: GovernanceErrorCode;
|
|
4
|
+
readonly details?: readonly string[];
|
|
5
|
+
constructor(code: GovernanceErrorCode, message: string, details?: readonly string[]);
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,mBAAmB,GAC3B,4BAA4B,GAC5B,2BAA2B,GAC3B,oBAAoB,GACpB,mBAAmB,GACnB,yBAAyB,GACzB,iBAAiB,GACjB,sBAAsB,GACtB,wBAAwB,GACxB,qBAAqB,CAAC;AAE1B,qBAAa,eAAgB,SAAQ,KAAK;IACxC,SAAgB,IAAI,EAAE,mBAAmB,CAAC;IAC1C,SAAgB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;gBAEzB,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE;CAQ3F"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// GovernanceError — the single error class every public builder throws. The discriminator
|
|
2
|
+
// is the `code` property; downstream callers branch on the code rather than reading the
|
|
3
|
+
// message string.
|
|
4
|
+
export class GovernanceError extends Error {
|
|
5
|
+
code;
|
|
6
|
+
details;
|
|
7
|
+
constructor(code, message, details) {
|
|
8
|
+
super(`GovernanceError(${code}): ${message}`);
|
|
9
|
+
this.name = "GovernanceError";
|
|
10
|
+
this.code = code;
|
|
11
|
+
if (details !== undefined) {
|
|
12
|
+
this.details = details;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
package/dist/forget.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MemoryForget, MemoryRecord } from "@oscharko-dev/keiko-contracts/memory";
|
|
2
|
+
import type { BuildForgetOperationsOptions, ForgetSelector, GovernanceContext, SelectMemoriesForForgetOptions } from "./types.js";
|
|
3
|
+
export declare function selectMemoriesForForget(memories: readonly MemoryRecord[], selector: ForgetSelector, options: SelectMemoriesForForgetOptions): readonly MemoryRecord[];
|
|
4
|
+
export declare function buildForgetOperations(memories: readonly MemoryRecord[], context: GovernanceContext, options: BuildForgetOperationsOptions): readonly MemoryForget[];
|
|
5
|
+
//# sourceMappingURL=forget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../src/forget.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAe,MAAM,sCAAsC,CAAC;AAIpG,OAAO,KAAK,EACV,4BAA4B,EAC5B,cAAc,EACd,iBAAiB,EACjB,8BAA8B,EAC/B,MAAM,YAAY,CAAC;AAuGpB,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,8BAA8B,GACtC,SAAS,YAAY,EAAE,CAazB;AA6BD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,4BAA4B,GACpC,SAAS,YAAY,EAAE,CAYzB"}
|