@alistigo/claude-storage-plugin 0.4.2 → 0.5.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/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -458,7 +458,7 @@ class pe {
|
|
|
458
458
|
function Oe() {
|
|
459
459
|
return typeof window < "u" && typeof window.claude?.complete == "function";
|
|
460
460
|
}
|
|
461
|
-
const je = "0.
|
|
461
|
+
const je = "0.5.0", Ee = {
|
|
462
462
|
version: je
|
|
463
463
|
}, Se = {
|
|
464
464
|
name: "@alistigo/claude-storage-plugin",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../claude-artifact-api/src/index.ts","../../../node_modules/.pnpm/quick-format-unescaped@4.0.4/node_modules/quick-format-unescaped/index.js","../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/browser.js","../../logger/dist/index.js","../src/retry.ts","../src/claude-key-value-store.ts","../src/claude-storage-plugin.ts"],"sourcesContent":["export interface ClaudeStorageGetResult {\n key: string;\n value: unknown;\n shared: boolean;\n \"@type\": string;\n}\n\nexport interface ClaudeStorageSetResult {\n key: string;\n value: unknown;\n shared: boolean;\n \"@type\": string;\n}\n\nexport interface ClaudeStorageDeleteResult {\n key: string;\n deleted: boolean;\n shared: boolean;\n \"@type\": string;\n}\n\nexport interface ClaudeStorageListResult {\n keys: string[];\n prefix: string;\n shared: boolean;\n \"@type\": string;\n}\n\nexport interface ClaudeStorage {\n /** Rejects (never resolves) when the key does not exist. */\n get(key: string, shared?: boolean): Promise<ClaudeStorageGetResult>;\n set(key: string, value: unknown, shared?: boolean): Promise<ClaudeStorageSetResult>;\n /** Rejects (never resolves) when the key does not exist. */\n delete(key: string, shared?: boolean): Promise<ClaudeStorageDeleteResult>;\n list(prefix?: string, shared?: boolean): Promise<ClaudeStorageListResult>;\n}\n\nexport interface ClaudeApi {\n complete(prompt: string): Promise<string>;\n}\n\ndeclare global {\n interface Window {\n storage?: ClaudeStorage;\n claude?: ClaudeApi;\n /** Dev-mode override injected by the playground — supersedes URL-based detection in artifactContext(). */\n claudeArtifactStatus?: \"published\";\n }\n}\n\nexport interface ArtifactContext {\n /** True only when the artifact is accessed via its published public URL. */\n published: boolean;\n /** The artifact UUID extracted from the public URL, or null in draft mode. */\n artifactId: string | null;\n}\n\n/**\n * Detects whether the artifact is running in draft (AI preview panel) or\n * published (public URL) mode by inspecting document.baseURI.\n *\n * Draft: https://www.claudeusercontent.com/?domain=… → published: false\n * Published: https://www.claudeusercontent.com/artifact/<uuid> → published: true\n */\nfunction baseURIPath(): string {\n try {\n return new URL(document.baseURI).pathname;\n } catch {\n return \"\";\n }\n}\n\nexport function artifactContext(): ArtifactContext {\n // Playground injects window.claudeArtifactStatus = \"published\" to simulate published mode.\n if (window.claudeArtifactStatus === \"published\") {\n return { published: true, artifactId: null };\n }\n const m = baseURIPath().match(/^\\/artifact\\/([0-9a-f-]{36})/i);\n return { published: Boolean(m), artifactId: m?.[1] ?? null };\n}\n","'use strict'\nfunction tryStringify (o) {\n try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n var ss = (opts && opts.stringify) || tryStringify\n var offset = 1\n if (typeof f === 'object' && f !== null) {\n var len = args.length + offset\n if (len === 1) return f\n var objects = new Array(len)\n objects[0] = ss(f)\n for (var index = 1; index < len; index++) {\n objects[index] = ss(args[index])\n }\n return objects.join(' ')\n }\n if (typeof f !== 'string') {\n return f\n }\n var argLen = args.length\n if (argLen === 0) return f\n var str = ''\n var a = 1 - offset\n var lastPos = -1\n var flen = (f && f.length) || 0\n for (var i = 0; i < flen;) {\n if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n lastPos = lastPos > -1 ? lastPos : 0\n switch (f.charCodeAt(i + 1)) {\n case 100: // 'd'\n case 102: // 'f'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Number(args[a])\n lastPos = i + 2\n i++\n break\n case 105: // 'i'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Math.floor(Number(args[a]))\n lastPos = i + 2\n i++\n break\n case 79: // 'O'\n case 111: // 'o'\n case 106: // 'j'\n if (a >= argLen)\n break\n if (args[a] === undefined) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n var type = typeof args[a]\n if (type === 'string') {\n str += '\\'' + args[a] + '\\''\n lastPos = i + 2\n i++\n break\n }\n if (type === 'function') {\n str += args[a].name || '<anonymous>'\n lastPos = i + 2\n i++\n break\n }\n str += ss(args[a])\n lastPos = i + 2\n i++\n break\n case 115: // 's'\n if (a >= argLen)\n break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += String(args[a])\n lastPos = i + 2\n i++\n break\n case 37: // '%'\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += '%'\n lastPos = i + 2\n i++\n a--\n break\n }\n ++a\n }\n ++i\n }\n if (lastPos === -1)\n return f\n else if (lastPos < flen) {\n str += f.slice(lastPos)\n }\n\n return str\n}\n","'use strict'\n\nconst format = require('quick-format-unescaped')\n\nmodule.exports = pino\n\nconst _console = pfGlobalThisOrFallback().console || {}\nconst stdSerializers = {\n mapHttpRequest: mock,\n mapHttpResponse: mock,\n wrapRequestSerializer: passthrough,\n wrapResponseSerializer: passthrough,\n wrapErrorSerializer: passthrough,\n req: mock,\n res: mock,\n err: asErrValue,\n errWithCause: asErrValue\n}\nfunction levelToValue (level, logger) {\n return level === 'silent'\n ? Infinity\n : logger.levels.values[level]\n}\nconst baseLogFunctionSymbol = Symbol('pino.logFuncs')\nconst hierarchySymbol = Symbol('pino.hierarchy')\n\nconst logFallbackMap = {\n error: 'log',\n fatal: 'error',\n warn: 'error',\n info: 'log',\n debug: 'log',\n trace: 'log'\n}\n\nfunction appendChildLogger (parentLogger, childLogger) {\n const newEntry = {\n logger: childLogger,\n parent: parentLogger[hierarchySymbol]\n }\n childLogger[hierarchySymbol] = newEntry\n}\n\nfunction setupBaseLogFunctions (logger, levels, proto) {\n const logFunctions = {}\n levels.forEach(level => {\n logFunctions[level] = proto[level] ? proto[level] : (_console[level] || _console[logFallbackMap[level] || 'log'] || noop)\n })\n logger[baseLogFunctionSymbol] = logFunctions\n}\n\nfunction shouldSerialize (serialize, serializers) {\n if (Array.isArray(serialize)) {\n const hasToFilter = serialize.filter(function (k) {\n return k !== '!stdSerializers.err'\n })\n return hasToFilter\n } else if (serialize === true) {\n return Object.keys(serializers)\n }\n\n return false\n}\n\nfunction pino (opts) {\n opts = opts || {}\n opts.browser = opts.browser || {}\n\n const transmit = opts.browser.transmit\n if (transmit && typeof transmit.send !== 'function') { throw Error('pino: transmit option must have a send function') }\n\n const proto = opts.browser.write || _console\n if (opts.browser.write) opts.browser.asObject = true\n const serializers = opts.serializers || {}\n const serialize = shouldSerialize(opts.browser.serialize, serializers)\n let stdErrSerialize = opts.browser.serialize\n\n if (\n Array.isArray(opts.browser.serialize) &&\n opts.browser.serialize.indexOf('!stdSerializers.err') > -1\n ) stdErrSerialize = false\n\n const customLevels = Object.keys(opts.customLevels || {})\n const levels = ['error', 'fatal', 'warn', 'info', 'debug', 'trace'].concat(customLevels)\n\n if (typeof proto === 'function') {\n levels.forEach(function (level) {\n proto[level] = proto\n })\n }\n if (opts.enabled === false || opts.browser.disabled) opts.level = 'silent'\n const level = opts.level || 'info'\n const logger = Object.create(proto)\n if (!logger.log) logger.log = noop\n\n setupBaseLogFunctions(logger, levels, proto)\n // setup root hierarchy entry\n appendChildLogger({}, logger)\n\n Object.defineProperty(logger, 'levelVal', {\n get: getLevelVal\n })\n Object.defineProperty(logger, 'level', {\n get: getLevel,\n set: setLevel\n })\n\n const setOpts = {\n transmit,\n serialize,\n asObject: opts.browser.asObject,\n asObjectBindingsOnly: opts.browser.asObjectBindingsOnly,\n formatters: opts.browser.formatters,\n levels,\n timestamp: getTimeFunction(opts),\n messageKey: opts.messageKey || 'msg',\n onChild: opts.onChild || noop\n }\n logger.levels = getLevels(opts)\n logger.level = level\n\n logger.isLevelEnabled = function (level) {\n if (!this.levels.values[level]) {\n return false\n }\n\n return this.levels.values[level] >= this.levels.values[this.level]\n }\n logger.setMaxListeners = logger.getMaxListeners =\n logger.emit = logger.addListener = logger.on =\n logger.prependListener = logger.once =\n logger.prependOnceListener = logger.removeListener =\n logger.removeAllListeners = logger.listeners =\n logger.listenerCount = logger.eventNames =\n logger.write = logger.flush = noop\n logger.serializers = serializers\n logger._serialize = serialize\n logger._stdErrSerialize = stdErrSerialize\n logger.child = function (...args) { return child.call(this, setOpts, ...args) }\n\n if (transmit) logger._logEvent = createLogEventShape()\n\n function getLevelVal () {\n return levelToValue(this.level, this)\n }\n\n function getLevel () {\n return this._level\n }\n function setLevel (level) {\n if (level !== 'silent' && !this.levels.values[level]) {\n throw Error('unknown level ' + level)\n }\n this._level = level\n\n set(this, setOpts, logger, 'error') // <-- must stay first\n set(this, setOpts, logger, 'fatal')\n set(this, setOpts, logger, 'warn')\n set(this, setOpts, logger, 'info')\n set(this, setOpts, logger, 'debug')\n set(this, setOpts, logger, 'trace')\n\n customLevels.forEach((level) => {\n set(this, setOpts, logger, level)\n })\n }\n\n function child (setOpts, bindings, childOptions) {\n if (!bindings) {\n throw new Error('missing bindings for child Pino')\n }\n childOptions = childOptions || {}\n if (serialize && bindings.serializers) {\n childOptions.serializers = bindings.serializers\n }\n const childOptionsSerializers = childOptions.serializers\n if (serialize && childOptionsSerializers) {\n var childSerializers = Object.assign({}, serializers, childOptionsSerializers)\n var childSerialize = opts.browser.serialize === true\n ? Object.keys(childSerializers)\n : serialize\n delete bindings.serializers\n applySerializers([bindings], childSerialize, childSerializers, this._stdErrSerialize)\n }\n function Child (parent) {\n this._childLevel = (parent._childLevel | 0) + 1\n\n // make sure bindings are available in the `set` function\n this.bindings = bindings\n\n if (childSerializers) {\n this.serializers = childSerializers\n this._serialize = childSerialize\n }\n if (transmit) {\n this._logEvent = createLogEventShape(\n [].concat(parent._logEvent.bindings, bindings)\n )\n }\n }\n Child.prototype = this\n const newLogger = new Child(this)\n\n // must happen before the level is assigned\n appendChildLogger(this, newLogger)\n newLogger.child = function (...args) { return child.call(this, setOpts, ...args) }\n // required to actually initialize the logger functions for any given child\n newLogger.level = childOptions.level || this.level // allow level to be set by childOptions\n setOpts.onChild(newLogger)\n\n return newLogger\n }\n return logger\n}\n\nfunction getLevels (opts) {\n const customLevels = opts.customLevels || {}\n\n const values = Object.assign({}, pino.levels.values, customLevels)\n const labels = Object.assign({}, pino.levels.labels, invertObject(customLevels))\n\n return {\n values,\n labels\n }\n}\n\nfunction invertObject (obj) {\n const inverted = {}\n Object.keys(obj).forEach(function (key) {\n inverted[obj[key]] = key\n })\n return inverted\n}\n\npino.levels = {\n values: {\n fatal: 60,\n error: 50,\n warn: 40,\n info: 30,\n debug: 20,\n trace: 10\n },\n labels: {\n 10: 'trace',\n 20: 'debug',\n 30: 'info',\n 40: 'warn',\n 50: 'error',\n 60: 'fatal'\n }\n}\n\npino.stdSerializers = stdSerializers\npino.stdTimeFunctions = Object.assign({}, { nullTime, epochTime, unixTime, isoTime })\n\nfunction getBindingChain (logger) {\n const bindings = []\n if (logger.bindings) {\n bindings.push(logger.bindings)\n }\n\n // traverse up the tree to get all bindings\n let hierarchy = logger[hierarchySymbol]\n while (hierarchy.parent) {\n hierarchy = hierarchy.parent\n if (hierarchy.logger.bindings) {\n bindings.push(hierarchy.logger.bindings)\n }\n }\n\n return bindings.reverse()\n}\n\nfunction set (self, opts, rootLogger, level) {\n // override the current log functions with either `noop` or the base log function\n Object.defineProperty(self, level, {\n value: (levelToValue(self.level, rootLogger) > levelToValue(level, rootLogger)\n ? noop\n : rootLogger[baseLogFunctionSymbol][level]),\n writable: true,\n enumerable: true,\n configurable: true\n })\n\n if (self[level] === noop) {\n if (!opts.transmit) return\n\n const transmitLevel = opts.transmit.level || self.level\n const transmitValue = levelToValue(transmitLevel, rootLogger)\n const methodValue = levelToValue(level, rootLogger)\n if (methodValue < transmitValue) return\n }\n\n // make sure the log format is correct\n self[level] = createWrap(self, opts, rootLogger, level)\n\n // prepend bindings if it is not the root logger\n const bindings = getBindingChain(self)\n if (bindings.length === 0) {\n // early exit in case for rootLogger\n return\n }\n self[level] = prependBindingsInArguments(bindings, self[level])\n}\n\nfunction prependBindingsInArguments (bindings, logFunc) {\n return function () {\n return logFunc.apply(this, [...bindings, ...arguments])\n }\n}\n\nfunction createWrap (self, opts, rootLogger, level) {\n return (function (write) {\n return function LOG () {\n const ts = opts.timestamp()\n const args = new Array(arguments.length)\n const proto = (Object.getPrototypeOf && Object.getPrototypeOf(this) === _console) ? _console : this\n for (var i = 0; i < args.length; i++) args[i] = arguments[i]\n\n var argsIsSerialized = false\n if (opts.serialize) {\n applySerializers(args, this._serialize, this.serializers, this._stdErrSerialize)\n argsIsSerialized = true\n }\n if (opts.asObject || opts.formatters) {\n write.call(proto, ...asObject(this, level, args, ts, opts))\n } else write.apply(proto, args)\n\n if (opts.transmit) {\n const transmitLevel = opts.transmit.level || self._level\n const transmitValue = levelToValue(transmitLevel, rootLogger)\n const methodValue = levelToValue(level, rootLogger)\n if (methodValue < transmitValue) return\n transmit(this, {\n ts,\n methodLevel: level,\n methodValue,\n transmitLevel,\n transmitValue: rootLogger.levels.values[opts.transmit.level || self._level],\n send: opts.transmit.send,\n val: levelToValue(self._level, rootLogger)\n }, args, argsIsSerialized)\n }\n }\n })(self[baseLogFunctionSymbol][level])\n}\n\nfunction asObject (logger, level, args, ts, opts) {\n const {\n level: levelFormatter,\n log: logObjectFormatter = (obj) => obj\n } = opts.formatters || {}\n const argsCloned = args.slice()\n let msg = argsCloned[0]\n const logObject = {}\n\n let lvl = (logger._childLevel | 0) + 1\n if (lvl < 1) lvl = 1\n\n if (ts) {\n logObject.time = ts\n }\n\n if (levelFormatter) {\n const formattedLevel = levelFormatter(level, logger.levels.values[level])\n Object.assign(logObject, formattedLevel)\n } else {\n logObject.level = logger.levels.values[level]\n }\n\n if (opts.asObjectBindingsOnly) {\n if (msg !== null && typeof msg === 'object') {\n while (lvl-- && typeof argsCloned[0] === 'object') {\n Object.assign(logObject, argsCloned.shift())\n }\n }\n\n const formattedLogObject = logObjectFormatter(logObject)\n return [formattedLogObject, ...argsCloned]\n } else {\n // deliberate, catching objects, arrays\n if (msg !== null && typeof msg === 'object') {\n while (lvl-- && typeof argsCloned[0] === 'object') {\n Object.assign(logObject, argsCloned.shift())\n }\n msg = argsCloned.length ? format(argsCloned.shift(), argsCloned) : undefined\n } else if (typeof msg === 'string') msg = format(argsCloned.shift(), argsCloned)\n if (msg !== undefined) logObject[opts.messageKey] = msg\n\n const formattedLogObject = logObjectFormatter(logObject)\n return [formattedLogObject]\n }\n}\n\nfunction applySerializers (args, serialize, serializers, stdErrSerialize) {\n for (const i in args) {\n if (stdErrSerialize && args[i] instanceof Error) {\n args[i] = pino.stdSerializers.err(args[i])\n } else if (typeof args[i] === 'object' && !Array.isArray(args[i]) && serialize) {\n for (const k in args[i]) {\n if (serialize.indexOf(k) > -1 && k in serializers) {\n args[i][k] = serializers[k](args[i][k])\n }\n }\n }\n }\n}\n\nfunction transmit (logger, opts, args, argsIsSerialized = false) {\n const send = opts.send\n const ts = opts.ts\n const methodLevel = opts.methodLevel\n const methodValue = opts.methodValue\n const val = opts.val\n const bindings = logger._logEvent.bindings\n\n if (!argsIsSerialized) {\n applySerializers(\n args,\n logger._serialize || Object.keys(logger.serializers),\n logger.serializers,\n logger._stdErrSerialize === undefined ? true : logger._stdErrSerialize\n )\n }\n\n logger._logEvent.ts = ts\n logger._logEvent.messages = args.filter(function (arg) {\n // bindings can only be objects, so reference equality check via indexOf is fine\n return bindings.indexOf(arg) === -1\n })\n\n logger._logEvent.level.label = methodLevel\n logger._logEvent.level.value = methodValue\n\n send(methodLevel, logger._logEvent, val)\n\n logger._logEvent = createLogEventShape(bindings)\n}\n\nfunction createLogEventShape (bindings) {\n return {\n ts: 0,\n messages: [],\n bindings: bindings || [],\n level: { label: '', value: 0 }\n }\n}\n\nfunction asErrValue (err) {\n const obj = {\n type: err.constructor.name,\n msg: err.message,\n stack: err.stack\n }\n for (const key in err) {\n if (obj[key] === undefined) {\n obj[key] = err[key]\n }\n }\n return obj\n}\n\nfunction getTimeFunction (opts) {\n if (typeof opts.timestamp === 'function') {\n return opts.timestamp\n }\n if (opts.timestamp === false) {\n return nullTime\n }\n return epochTime\n}\n\nfunction mock () { return {} }\nfunction passthrough (a) { return a }\nfunction noop () {}\n\nfunction nullTime () { return false }\nfunction epochTime () { return Date.now() }\nfunction unixTime () { return Math.round(Date.now() / 1000.0) }\nfunction isoTime () { return new Date(Date.now()).toISOString() } // using Date.now() for testability\n\n/* eslint-disable */\n/* istanbul ignore next */\nfunction pfGlobalThisOrFallback () {\n function defd (o) { return typeof o !== 'undefined' && o }\n try {\n if (typeof globalThis !== 'undefined') return globalThis\n Object.defineProperty(Object.prototype, 'globalThis', {\n get: function () {\n delete Object.prototype.globalThis\n return (this.globalThis = this)\n },\n configurable: true\n })\n return globalThis\n } catch (e) {\n return defd(self) || defd(window) || defd(this) || {}\n }\n}\n/* eslint-enable */\n\nmodule.exports.default = pino\nmodule.exports.pino = pino\n","import pino from \"pino\";\n// Root logger — starts silent. App entry points call setLogLevel() before rendering.\n// Changing root.level propagates to all child loggers at write time (pino checks the\n// root level before forwarding to its transport).\nconst root = pino({\n level: \"silent\",\n browser: { asObject: true },\n});\nexport const setLogLevel = (level) => {\n root.level = level;\n};\n// Creates a child logger with a bound `module` field on every log entry.\n// Optionally accepts additional static context (e.g. { listId }).\nexport const createLogger = (module, ctx) => root.child({ module, ...ctx });\n//# sourceMappingURL=index.js.map","import { createLogger } from \"@alistigo/logger\";\n\nconst log = createLogger(\"alistigo:claude-storage:retry\");\n\nconst STORAGE_TIMEOUT_MS = 1000;\nconst STORAGE_MAX_RETRIES = 3;\n\ntype AttemptResult<T> =\n | { tag: \"ok\"; value: T }\n | { tag: \"timeout\" }\n | { tag: \"error\"; err: unknown };\n\nfunction attemptWithTimeout<T>(\n factory: () => Promise<T>,\n timeoutMs: number,\n): Promise<AttemptResult<T>> {\n return Promise.race([\n factory()\n .then((value): AttemptResult<T> => ({ tag: \"ok\", value }))\n .catch((err): AttemptResult<T> => ({ tag: \"error\", err })),\n new Promise<AttemptResult<T>>((resolve) =>\n setTimeout(() => resolve({ tag: \"timeout\" }), timeoutMs),\n ),\n ]);\n}\n\n/**\n * Calls `factory()` and waits up to `timeoutMs` (default 1 s). On timeout retries up to\n * `maxRetries` (default 3) times. Non-timeout errors are re-thrown immediately.\n * After all attempts time out, throws a descriptive error.\n */\nexport async function withStorageRetry<T>(\n factory: () => Promise<T>,\n timeoutMs = STORAGE_TIMEOUT_MS,\n maxRetries = STORAGE_MAX_RETRIES,\n): Promise<T> {\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n const result = await attemptWithTimeout(factory, timeoutMs);\n if (result.tag === \"ok\") return result.value;\n if (result.tag === \"error\") throw result.err;\n if (attempt < maxRetries) {\n log.debug({ attempt }, \"claude storage timed out, retrying\");\n }\n }\n throw new Error(`Claude storage timed out after ${maxRetries + 1} attempts`);\n}\n","import type { KeyValueStore } from \"@alistigo/artifact-plugin-api\";\nimport { artifactContext, type ClaudeStorage } from \"@alistigo/claude-artifact-api\";\nimport { createLogger } from \"@alistigo/logger\";\nimport { withStorageRetry } from \"./retry.js\";\n\nconst log = createLogger(\"alistigo:claude-storage\");\n\nexport class ClaudeKeyValueStore implements KeyValueStore {\n private get storage(): ClaudeStorage {\n const s = (window as Window).storage;\n if (!s)\n throw new Error(\n \"ClaudeKeyValueStore requires window.storage — check isClaudeArtifactContext() first\",\n );\n return s;\n }\n\n private requirePublished(): void {\n if (!artifactContext().published) {\n throw new Error(\n \"Storage is unavailable in draft mode — publish the artifact and open it via its public URL.\",\n );\n }\n }\n\n async get(key: string): Promise<unknown> {\n this.requirePublished();\n try {\n log.debug({ key }, \"get\");\n const result = await withStorageRetry(() => this.storage.get(key));\n const raw = result.value;\n return typeof raw === \"string\" ? (JSON.parse(raw) as unknown) : raw;\n } catch (err) {\n log.debug({ key, err }, \"get returned nothing (key may not exist)\");\n return undefined;\n }\n }\n\n async set(key: string, value: unknown): Promise<void> {\n this.requirePublished();\n log.debug({ key }, \"set\");\n await withStorageRetry(() => this.storage.set(key, JSON.stringify(value)));\n }\n\n async del(key: string): Promise<void> {\n this.requirePublished();\n log.debug({ key }, \"del\");\n await withStorageRetry(() => this.storage.delete(key));\n }\n\n async list(prefix = \"\"): Promise<string[]> {\n this.requirePublished();\n try {\n log.debug({ prefix }, \"list\");\n const result = await withStorageRetry(() => this.storage.list(prefix));\n return result?.keys ?? [];\n } catch {\n return [];\n }\n }\n}\n\n/** Returns true when running inside a Claude artifact that exposes window.claude */\nexport function isClaudeArtifactContext(): boolean {\n return typeof window !== \"undefined\" && typeof window.claude?.complete === \"function\";\n}\n","import type { AlistigoPlugin } from \"@alistigo/artifact-plugin-api\";\nimport pkg from \"../package.json\" with { type: \"json\" };\nimport { ClaudeKeyValueStore, isClaudeArtifactContext } from \"./claude-key-value-store.js\";\nimport { withStorageRetry } from \"./retry.js\";\n\nconst claudeStoragePlugin: AlistigoPlugin = {\n name: \"@alistigo/claude-storage-plugin\",\n version: pkg.version,\n type: \"storage\",\n storage: {\n isAvailable(): boolean {\n return isClaudeArtifactContext();\n },\n createStore() {\n return new ClaudeKeyValueStore();\n },\n async listKeys(prefix = \"\"): Promise<Array<{ key: string; value: string }>> {\n const storage = window.storage;\n if (!storage) return [];\n try {\n const result = await withStorageRetry(() => storage.list(prefix));\n if (!result) return [];\n const entries = await Promise.all(\n result.keys.map(async (key) => {\n try {\n const item = await withStorageRetry(() => storage.get(key));\n return { key, value: item.value };\n } catch {\n return null;\n }\n }),\n );\n return entries.filter((e): e is { key: string; value: string } => e !== null);\n } catch {\n return [];\n }\n },\n },\n};\n\nexport default claudeStoragePlugin;\n"],"names":["baseURIPath","artifactContext","m","tryStringify","o","quickFormatUnescaped","format","f","args","opts","ss","offset","len","objects","index","argLen","str","a","lastPos","flen","i","type","require$$0","browserModule","pino","_console","pfGlobalThisOrFallback","stdSerializers","mock","passthrough","asErrValue","levelToValue","level","logger","baseLogFunctionSymbol","hierarchySymbol","logFallbackMap","appendChildLogger","parentLogger","childLogger","newEntry","setupBaseLogFunctions","levels","proto","logFunctions","noop","shouldSerialize","serialize","serializers","k","transmit","stdErrSerialize","customLevels","getLevelVal","getLevel","setLevel","setOpts","getTimeFunction","getLevels","child","createLogEventShape","set","bindings","childOptions","childOptionsSerializers","childSerializers","childSerialize","applySerializers","Child","parent","newLogger","values","labels","invertObject","obj","inverted","key","nullTime","epochTime","unixTime","isoTime","getBindingChain","hierarchy","self","rootLogger","transmitLevel","transmitValue","createWrap","prependBindingsInArguments","logFunc","write","ts","argsIsSerialized","asObject","methodValue","levelFormatter","logObjectFormatter","argsCloned","msg","logObject","lvl","formattedLevel","send","methodLevel","val","arg","err","defd","root","createLogger","module","ctx","log","STORAGE_TIMEOUT_MS","STORAGE_MAX_RETRIES","attemptWithTimeout","factory","timeoutMs","value","resolve","withStorageRetry","maxRetries","attempt","result","ClaudeKeyValueStore","raw","prefix","isClaudeArtifactContext","claudeStoragePlugin","pkg","storage","item","e"],"mappings":"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","x_google_ignoreList":[1,2]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../claude-artifact-api/src/index.ts","../../../node_modules/.pnpm/quick-format-unescaped@4.0.4/node_modules/quick-format-unescaped/index.js","../../../node_modules/.pnpm/pino@9.14.0/node_modules/pino/browser.js","../../logger/dist/index.js","../src/retry.ts","../src/claude-key-value-store.ts","../src/claude-storage-plugin.ts"],"sourcesContent":["export interface ClaudeStorageGetResult {\n key: string;\n value: string;\n shared: boolean;\n \"@type\": string;\n}\n\nexport interface ClaudeStorageSetResult {\n key: string;\n value: string;\n shared: boolean;\n \"@type\": string;\n}\n\nexport interface ClaudeStorageDeleteResult {\n key: string;\n deleted: boolean;\n shared: boolean;\n \"@type\": string;\n}\n\nexport interface ClaudeStorageListResult {\n keys: string[];\n prefix: string;\n shared: boolean;\n \"@type\": string;\n}\n\nexport interface ClaudeStorage {\n /** Rejects (never resolves) when the key does not exist. */\n get(key: string, shared?: boolean): Promise<ClaudeStorageGetResult>;\n set(key: string, value: string, shared?: boolean): Promise<ClaudeStorageSetResult>;\n /** Rejects (never resolves) when the key does not exist. */\n delete(key: string, shared?: boolean): Promise<ClaudeStorageDeleteResult>;\n list(prefix?: string, shared?: boolean): Promise<ClaudeStorageListResult>;\n}\n\nexport interface ClaudeApi {\n complete(prompt: string): Promise<string>;\n}\n\ndeclare global {\n interface Window {\n storage?: ClaudeStorage;\n claude?: ClaudeApi;\n /** Dev-mode override injected by the playground — supersedes URL-based detection in artifactContext(). */\n claudeArtifactStatus?: \"published\";\n }\n}\n\nexport interface ArtifactContext {\n /** True only when the artifact is accessed via its published public URL. */\n published: boolean;\n /** The artifact UUID extracted from the public URL, or null in draft mode. */\n artifactId: string | null;\n}\n\n/**\n * Detects whether the artifact is running in draft (AI preview panel) or\n * published (public URL) mode by inspecting document.baseURI.\n *\n * Draft: https://www.claudeusercontent.com/?domain=… → published: false\n * Published: https://www.claudeusercontent.com/artifact/<uuid> → published: true\n */\nfunction baseURIPath(): string {\n try {\n return new URL(document.baseURI).pathname;\n } catch {\n return \"\";\n }\n}\n\nexport function artifactContext(): ArtifactContext {\n // Playground injects window.claudeArtifactStatus = \"published\" to simulate published mode.\n if (window.claudeArtifactStatus === \"published\") {\n return { published: true, artifactId: null };\n }\n const m = baseURIPath().match(/^\\/artifact\\/([0-9a-f-]{36})/i);\n return { published: Boolean(m), artifactId: m?.[1] ?? null };\n}\n","'use strict'\nfunction tryStringify (o) {\n try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n var ss = (opts && opts.stringify) || tryStringify\n var offset = 1\n if (typeof f === 'object' && f !== null) {\n var len = args.length + offset\n if (len === 1) return f\n var objects = new Array(len)\n objects[0] = ss(f)\n for (var index = 1; index < len; index++) {\n objects[index] = ss(args[index])\n }\n return objects.join(' ')\n }\n if (typeof f !== 'string') {\n return f\n }\n var argLen = args.length\n if (argLen === 0) return f\n var str = ''\n var a = 1 - offset\n var lastPos = -1\n var flen = (f && f.length) || 0\n for (var i = 0; i < flen;) {\n if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n lastPos = lastPos > -1 ? lastPos : 0\n switch (f.charCodeAt(i + 1)) {\n case 100: // 'd'\n case 102: // 'f'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Number(args[a])\n lastPos = i + 2\n i++\n break\n case 105: // 'i'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Math.floor(Number(args[a]))\n lastPos = i + 2\n i++\n break\n case 79: // 'O'\n case 111: // 'o'\n case 106: // 'j'\n if (a >= argLen)\n break\n if (args[a] === undefined) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n var type = typeof args[a]\n if (type === 'string') {\n str += '\\'' + args[a] + '\\''\n lastPos = i + 2\n i++\n break\n }\n if (type === 'function') {\n str += args[a].name || '<anonymous>'\n lastPos = i + 2\n i++\n break\n }\n str += ss(args[a])\n lastPos = i + 2\n i++\n break\n case 115: // 's'\n if (a >= argLen)\n break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += String(args[a])\n lastPos = i + 2\n i++\n break\n case 37: // '%'\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += '%'\n lastPos = i + 2\n i++\n a--\n break\n }\n ++a\n }\n ++i\n }\n if (lastPos === -1)\n return f\n else if (lastPos < flen) {\n str += f.slice(lastPos)\n }\n\n return str\n}\n","'use strict'\n\nconst format = require('quick-format-unescaped')\n\nmodule.exports = pino\n\nconst _console = pfGlobalThisOrFallback().console || {}\nconst stdSerializers = {\n mapHttpRequest: mock,\n mapHttpResponse: mock,\n wrapRequestSerializer: passthrough,\n wrapResponseSerializer: passthrough,\n wrapErrorSerializer: passthrough,\n req: mock,\n res: mock,\n err: asErrValue,\n errWithCause: asErrValue\n}\nfunction levelToValue (level, logger) {\n return level === 'silent'\n ? Infinity\n : logger.levels.values[level]\n}\nconst baseLogFunctionSymbol = Symbol('pino.logFuncs')\nconst hierarchySymbol = Symbol('pino.hierarchy')\n\nconst logFallbackMap = {\n error: 'log',\n fatal: 'error',\n warn: 'error',\n info: 'log',\n debug: 'log',\n trace: 'log'\n}\n\nfunction appendChildLogger (parentLogger, childLogger) {\n const newEntry = {\n logger: childLogger,\n parent: parentLogger[hierarchySymbol]\n }\n childLogger[hierarchySymbol] = newEntry\n}\n\nfunction setupBaseLogFunctions (logger, levels, proto) {\n const logFunctions = {}\n levels.forEach(level => {\n logFunctions[level] = proto[level] ? proto[level] : (_console[level] || _console[logFallbackMap[level] || 'log'] || noop)\n })\n logger[baseLogFunctionSymbol] = logFunctions\n}\n\nfunction shouldSerialize (serialize, serializers) {\n if (Array.isArray(serialize)) {\n const hasToFilter = serialize.filter(function (k) {\n return k !== '!stdSerializers.err'\n })\n return hasToFilter\n } else if (serialize === true) {\n return Object.keys(serializers)\n }\n\n return false\n}\n\nfunction pino (opts) {\n opts = opts || {}\n opts.browser = opts.browser || {}\n\n const transmit = opts.browser.transmit\n if (transmit && typeof transmit.send !== 'function') { throw Error('pino: transmit option must have a send function') }\n\n const proto = opts.browser.write || _console\n if (opts.browser.write) opts.browser.asObject = true\n const serializers = opts.serializers || {}\n const serialize = shouldSerialize(opts.browser.serialize, serializers)\n let stdErrSerialize = opts.browser.serialize\n\n if (\n Array.isArray(opts.browser.serialize) &&\n opts.browser.serialize.indexOf('!stdSerializers.err') > -1\n ) stdErrSerialize = false\n\n const customLevels = Object.keys(opts.customLevels || {})\n const levels = ['error', 'fatal', 'warn', 'info', 'debug', 'trace'].concat(customLevels)\n\n if (typeof proto === 'function') {\n levels.forEach(function (level) {\n proto[level] = proto\n })\n }\n if (opts.enabled === false || opts.browser.disabled) opts.level = 'silent'\n const level = opts.level || 'info'\n const logger = Object.create(proto)\n if (!logger.log) logger.log = noop\n\n setupBaseLogFunctions(logger, levels, proto)\n // setup root hierarchy entry\n appendChildLogger({}, logger)\n\n Object.defineProperty(logger, 'levelVal', {\n get: getLevelVal\n })\n Object.defineProperty(logger, 'level', {\n get: getLevel,\n set: setLevel\n })\n\n const setOpts = {\n transmit,\n serialize,\n asObject: opts.browser.asObject,\n asObjectBindingsOnly: opts.browser.asObjectBindingsOnly,\n formatters: opts.browser.formatters,\n levels,\n timestamp: getTimeFunction(opts),\n messageKey: opts.messageKey || 'msg',\n onChild: opts.onChild || noop\n }\n logger.levels = getLevels(opts)\n logger.level = level\n\n logger.isLevelEnabled = function (level) {\n if (!this.levels.values[level]) {\n return false\n }\n\n return this.levels.values[level] >= this.levels.values[this.level]\n }\n logger.setMaxListeners = logger.getMaxListeners =\n logger.emit = logger.addListener = logger.on =\n logger.prependListener = logger.once =\n logger.prependOnceListener = logger.removeListener =\n logger.removeAllListeners = logger.listeners =\n logger.listenerCount = logger.eventNames =\n logger.write = logger.flush = noop\n logger.serializers = serializers\n logger._serialize = serialize\n logger._stdErrSerialize = stdErrSerialize\n logger.child = function (...args) { return child.call(this, setOpts, ...args) }\n\n if (transmit) logger._logEvent = createLogEventShape()\n\n function getLevelVal () {\n return levelToValue(this.level, this)\n }\n\n function getLevel () {\n return this._level\n }\n function setLevel (level) {\n if (level !== 'silent' && !this.levels.values[level]) {\n throw Error('unknown level ' + level)\n }\n this._level = level\n\n set(this, setOpts, logger, 'error') // <-- must stay first\n set(this, setOpts, logger, 'fatal')\n set(this, setOpts, logger, 'warn')\n set(this, setOpts, logger, 'info')\n set(this, setOpts, logger, 'debug')\n set(this, setOpts, logger, 'trace')\n\n customLevels.forEach((level) => {\n set(this, setOpts, logger, level)\n })\n }\n\n function child (setOpts, bindings, childOptions) {\n if (!bindings) {\n throw new Error('missing bindings for child Pino')\n }\n childOptions = childOptions || {}\n if (serialize && bindings.serializers) {\n childOptions.serializers = bindings.serializers\n }\n const childOptionsSerializers = childOptions.serializers\n if (serialize && childOptionsSerializers) {\n var childSerializers = Object.assign({}, serializers, childOptionsSerializers)\n var childSerialize = opts.browser.serialize === true\n ? Object.keys(childSerializers)\n : serialize\n delete bindings.serializers\n applySerializers([bindings], childSerialize, childSerializers, this._stdErrSerialize)\n }\n function Child (parent) {\n this._childLevel = (parent._childLevel | 0) + 1\n\n // make sure bindings are available in the `set` function\n this.bindings = bindings\n\n if (childSerializers) {\n this.serializers = childSerializers\n this._serialize = childSerialize\n }\n if (transmit) {\n this._logEvent = createLogEventShape(\n [].concat(parent._logEvent.bindings, bindings)\n )\n }\n }\n Child.prototype = this\n const newLogger = new Child(this)\n\n // must happen before the level is assigned\n appendChildLogger(this, newLogger)\n newLogger.child = function (...args) { return child.call(this, setOpts, ...args) }\n // required to actually initialize the logger functions for any given child\n newLogger.level = childOptions.level || this.level // allow level to be set by childOptions\n setOpts.onChild(newLogger)\n\n return newLogger\n }\n return logger\n}\n\nfunction getLevels (opts) {\n const customLevels = opts.customLevels || {}\n\n const values = Object.assign({}, pino.levels.values, customLevels)\n const labels = Object.assign({}, pino.levels.labels, invertObject(customLevels))\n\n return {\n values,\n labels\n }\n}\n\nfunction invertObject (obj) {\n const inverted = {}\n Object.keys(obj).forEach(function (key) {\n inverted[obj[key]] = key\n })\n return inverted\n}\n\npino.levels = {\n values: {\n fatal: 60,\n error: 50,\n warn: 40,\n info: 30,\n debug: 20,\n trace: 10\n },\n labels: {\n 10: 'trace',\n 20: 'debug',\n 30: 'info',\n 40: 'warn',\n 50: 'error',\n 60: 'fatal'\n }\n}\n\npino.stdSerializers = stdSerializers\npino.stdTimeFunctions = Object.assign({}, { nullTime, epochTime, unixTime, isoTime })\n\nfunction getBindingChain (logger) {\n const bindings = []\n if (logger.bindings) {\n bindings.push(logger.bindings)\n }\n\n // traverse up the tree to get all bindings\n let hierarchy = logger[hierarchySymbol]\n while (hierarchy.parent) {\n hierarchy = hierarchy.parent\n if (hierarchy.logger.bindings) {\n bindings.push(hierarchy.logger.bindings)\n }\n }\n\n return bindings.reverse()\n}\n\nfunction set (self, opts, rootLogger, level) {\n // override the current log functions with either `noop` or the base log function\n Object.defineProperty(self, level, {\n value: (levelToValue(self.level, rootLogger) > levelToValue(level, rootLogger)\n ? noop\n : rootLogger[baseLogFunctionSymbol][level]),\n writable: true,\n enumerable: true,\n configurable: true\n })\n\n if (self[level] === noop) {\n if (!opts.transmit) return\n\n const transmitLevel = opts.transmit.level || self.level\n const transmitValue = levelToValue(transmitLevel, rootLogger)\n const methodValue = levelToValue(level, rootLogger)\n if (methodValue < transmitValue) return\n }\n\n // make sure the log format is correct\n self[level] = createWrap(self, opts, rootLogger, level)\n\n // prepend bindings if it is not the root logger\n const bindings = getBindingChain(self)\n if (bindings.length === 0) {\n // early exit in case for rootLogger\n return\n }\n self[level] = prependBindingsInArguments(bindings, self[level])\n}\n\nfunction prependBindingsInArguments (bindings, logFunc) {\n return function () {\n return logFunc.apply(this, [...bindings, ...arguments])\n }\n}\n\nfunction createWrap (self, opts, rootLogger, level) {\n return (function (write) {\n return function LOG () {\n const ts = opts.timestamp()\n const args = new Array(arguments.length)\n const proto = (Object.getPrototypeOf && Object.getPrototypeOf(this) === _console) ? _console : this\n for (var i = 0; i < args.length; i++) args[i] = arguments[i]\n\n var argsIsSerialized = false\n if (opts.serialize) {\n applySerializers(args, this._serialize, this.serializers, this._stdErrSerialize)\n argsIsSerialized = true\n }\n if (opts.asObject || opts.formatters) {\n write.call(proto, ...asObject(this, level, args, ts, opts))\n } else write.apply(proto, args)\n\n if (opts.transmit) {\n const transmitLevel = opts.transmit.level || self._level\n const transmitValue = levelToValue(transmitLevel, rootLogger)\n const methodValue = levelToValue(level, rootLogger)\n if (methodValue < transmitValue) return\n transmit(this, {\n ts,\n methodLevel: level,\n methodValue,\n transmitLevel,\n transmitValue: rootLogger.levels.values[opts.transmit.level || self._level],\n send: opts.transmit.send,\n val: levelToValue(self._level, rootLogger)\n }, args, argsIsSerialized)\n }\n }\n })(self[baseLogFunctionSymbol][level])\n}\n\nfunction asObject (logger, level, args, ts, opts) {\n const {\n level: levelFormatter,\n log: logObjectFormatter = (obj) => obj\n } = opts.formatters || {}\n const argsCloned = args.slice()\n let msg = argsCloned[0]\n const logObject = {}\n\n let lvl = (logger._childLevel | 0) + 1\n if (lvl < 1) lvl = 1\n\n if (ts) {\n logObject.time = ts\n }\n\n if (levelFormatter) {\n const formattedLevel = levelFormatter(level, logger.levels.values[level])\n Object.assign(logObject, formattedLevel)\n } else {\n logObject.level = logger.levels.values[level]\n }\n\n if (opts.asObjectBindingsOnly) {\n if (msg !== null && typeof msg === 'object') {\n while (lvl-- && typeof argsCloned[0] === 'object') {\n Object.assign(logObject, argsCloned.shift())\n }\n }\n\n const formattedLogObject = logObjectFormatter(logObject)\n return [formattedLogObject, ...argsCloned]\n } else {\n // deliberate, catching objects, arrays\n if (msg !== null && typeof msg === 'object') {\n while (lvl-- && typeof argsCloned[0] === 'object') {\n Object.assign(logObject, argsCloned.shift())\n }\n msg = argsCloned.length ? format(argsCloned.shift(), argsCloned) : undefined\n } else if (typeof msg === 'string') msg = format(argsCloned.shift(), argsCloned)\n if (msg !== undefined) logObject[opts.messageKey] = msg\n\n const formattedLogObject = logObjectFormatter(logObject)\n return [formattedLogObject]\n }\n}\n\nfunction applySerializers (args, serialize, serializers, stdErrSerialize) {\n for (const i in args) {\n if (stdErrSerialize && args[i] instanceof Error) {\n args[i] = pino.stdSerializers.err(args[i])\n } else if (typeof args[i] === 'object' && !Array.isArray(args[i]) && serialize) {\n for (const k in args[i]) {\n if (serialize.indexOf(k) > -1 && k in serializers) {\n args[i][k] = serializers[k](args[i][k])\n }\n }\n }\n }\n}\n\nfunction transmit (logger, opts, args, argsIsSerialized = false) {\n const send = opts.send\n const ts = opts.ts\n const methodLevel = opts.methodLevel\n const methodValue = opts.methodValue\n const val = opts.val\n const bindings = logger._logEvent.bindings\n\n if (!argsIsSerialized) {\n applySerializers(\n args,\n logger._serialize || Object.keys(logger.serializers),\n logger.serializers,\n logger._stdErrSerialize === undefined ? true : logger._stdErrSerialize\n )\n }\n\n logger._logEvent.ts = ts\n logger._logEvent.messages = args.filter(function (arg) {\n // bindings can only be objects, so reference equality check via indexOf is fine\n return bindings.indexOf(arg) === -1\n })\n\n logger._logEvent.level.label = methodLevel\n logger._logEvent.level.value = methodValue\n\n send(methodLevel, logger._logEvent, val)\n\n logger._logEvent = createLogEventShape(bindings)\n}\n\nfunction createLogEventShape (bindings) {\n return {\n ts: 0,\n messages: [],\n bindings: bindings || [],\n level: { label: '', value: 0 }\n }\n}\n\nfunction asErrValue (err) {\n const obj = {\n type: err.constructor.name,\n msg: err.message,\n stack: err.stack\n }\n for (const key in err) {\n if (obj[key] === undefined) {\n obj[key] = err[key]\n }\n }\n return obj\n}\n\nfunction getTimeFunction (opts) {\n if (typeof opts.timestamp === 'function') {\n return opts.timestamp\n }\n if (opts.timestamp === false) {\n return nullTime\n }\n return epochTime\n}\n\nfunction mock () { return {} }\nfunction passthrough (a) { return a }\nfunction noop () {}\n\nfunction nullTime () { return false }\nfunction epochTime () { return Date.now() }\nfunction unixTime () { return Math.round(Date.now() / 1000.0) }\nfunction isoTime () { return new Date(Date.now()).toISOString() } // using Date.now() for testability\n\n/* eslint-disable */\n/* istanbul ignore next */\nfunction pfGlobalThisOrFallback () {\n function defd (o) { return typeof o !== 'undefined' && o }\n try {\n if (typeof globalThis !== 'undefined') return globalThis\n Object.defineProperty(Object.prototype, 'globalThis', {\n get: function () {\n delete Object.prototype.globalThis\n return (this.globalThis = this)\n },\n configurable: true\n })\n return globalThis\n } catch (e) {\n return defd(self) || defd(window) || defd(this) || {}\n }\n}\n/* eslint-enable */\n\nmodule.exports.default = pino\nmodule.exports.pino = pino\n","import pino from \"pino\";\n// Root logger — starts silent. App entry points call setLogLevel() before rendering.\n// Changing root.level propagates to all child loggers at write time (pino checks the\n// root level before forwarding to its transport).\nconst root = pino({\n level: \"silent\",\n browser: { asObject: true },\n});\nexport const setLogLevel = (level) => {\n root.level = level;\n};\n// Creates a child logger with a bound `module` field on every log entry.\n// Optionally accepts additional static context (e.g. { listId }).\nexport const createLogger = (module, ctx) => root.child({ module, ...ctx });\n//# sourceMappingURL=index.js.map","import { createLogger } from \"@alistigo/logger\";\n\nconst log = createLogger(\"alistigo:claude-storage:retry\");\n\nconst STORAGE_TIMEOUT_MS = 1000;\nconst STORAGE_MAX_RETRIES = 3;\n\ntype AttemptResult<T> =\n | { tag: \"ok\"; value: T }\n | { tag: \"timeout\" }\n | { tag: \"error\"; err: unknown };\n\nfunction attemptWithTimeout<T>(\n factory: () => Promise<T>,\n timeoutMs: number,\n): Promise<AttemptResult<T>> {\n return Promise.race([\n factory()\n .then((value): AttemptResult<T> => ({ tag: \"ok\", value }))\n .catch((err): AttemptResult<T> => ({ tag: \"error\", err })),\n new Promise<AttemptResult<T>>((resolve) =>\n setTimeout(() => resolve({ tag: \"timeout\" }), timeoutMs),\n ),\n ]);\n}\n\n/**\n * Calls `factory()` and waits up to `timeoutMs` (default 1 s). On timeout retries up to\n * `maxRetries` (default 3) times. Non-timeout errors are re-thrown immediately.\n * After all attempts time out, throws a descriptive error.\n */\nexport async function withStorageRetry<T>(\n factory: () => Promise<T>,\n timeoutMs = STORAGE_TIMEOUT_MS,\n maxRetries = STORAGE_MAX_RETRIES,\n): Promise<T> {\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n const result = await attemptWithTimeout(factory, timeoutMs);\n if (result.tag === \"ok\") return result.value;\n if (result.tag === \"error\") throw result.err;\n if (attempt < maxRetries) {\n log.debug({ attempt }, \"claude storage timed out, retrying\");\n }\n }\n throw new Error(`Claude storage timed out after ${maxRetries + 1} attempts`);\n}\n","import type { KeyValueStore } from \"@alistigo/artifact-plugin-api\";\nimport { artifactContext, type ClaudeStorage } from \"@alistigo/claude-artifact-api\";\nimport { createLogger } from \"@alistigo/logger\";\nimport { withStorageRetry } from \"./retry.js\";\n\nconst log = createLogger(\"alistigo:claude-storage\");\n\nexport class ClaudeKeyValueStore implements KeyValueStore {\n private get storage(): ClaudeStorage {\n const s = (window as Window).storage;\n if (!s)\n throw new Error(\n \"ClaudeKeyValueStore requires window.storage — check isClaudeArtifactContext() first\",\n );\n return s;\n }\n\n private requirePublished(): void {\n if (!artifactContext().published) {\n throw new Error(\n \"Storage is unavailable in draft mode — publish the artifact and open it via its public URL.\",\n );\n }\n }\n\n async get(key: string): Promise<unknown> {\n this.requirePublished();\n try {\n log.debug({ key }, \"get\");\n const result = await withStorageRetry(() => this.storage.get(key));\n const raw = result.value;\n return typeof raw === \"string\" ? (JSON.parse(raw) as unknown) : raw;\n } catch (err) {\n log.debug({ key, err }, \"get returned nothing (key may not exist)\");\n return undefined;\n }\n }\n\n async set(key: string, value: unknown): Promise<void> {\n this.requirePublished();\n log.debug({ key }, \"set\");\n await withStorageRetry(() => this.storage.set(key, JSON.stringify(value)));\n }\n\n async del(key: string): Promise<void> {\n this.requirePublished();\n log.debug({ key }, \"del\");\n await withStorageRetry(() => this.storage.delete(key));\n }\n\n async list(prefix = \"\"): Promise<string[]> {\n this.requirePublished();\n try {\n log.debug({ prefix }, \"list\");\n const result = await withStorageRetry(() => this.storage.list(prefix));\n return result?.keys ?? [];\n } catch {\n return [];\n }\n }\n}\n\n/** Returns true when running inside a Claude artifact that exposes window.claude */\nexport function isClaudeArtifactContext(): boolean {\n return typeof window !== \"undefined\" && typeof window.claude?.complete === \"function\";\n}\n","import type { AlistigoPlugin } from \"@alistigo/artifact-plugin-api\";\nimport pkg from \"../package.json\" with { type: \"json\" };\nimport { ClaudeKeyValueStore, isClaudeArtifactContext } from \"./claude-key-value-store.js\";\nimport { withStorageRetry } from \"./retry.js\";\n\nconst claudeStoragePlugin: AlistigoPlugin = {\n name: \"@alistigo/claude-storage-plugin\",\n version: pkg.version,\n type: \"storage\",\n storage: {\n isAvailable(): boolean {\n return isClaudeArtifactContext();\n },\n createStore() {\n return new ClaudeKeyValueStore();\n },\n async listKeys(prefix = \"\"): Promise<Array<{ key: string; value: string }>> {\n const storage = window.storage;\n if (!storage) return [];\n try {\n const result = await withStorageRetry(() => storage.list(prefix));\n if (!result) return [];\n const entries = await Promise.all(\n result.keys.map(async (key) => {\n try {\n const item = await withStorageRetry(() => storage.get(key));\n return { key, value: item.value };\n } catch {\n return null;\n }\n }),\n );\n return entries.filter((e): e is { key: string; value: string } => e !== null);\n } catch {\n return [];\n }\n },\n },\n};\n\nexport default claudeStoragePlugin;\n"],"names":["baseURIPath","artifactContext","m","tryStringify","o","quickFormatUnescaped","format","f","args","opts","ss","offset","len","objects","index","argLen","str","a","lastPos","flen","i","type","require$$0","browserModule","pino","_console","pfGlobalThisOrFallback","stdSerializers","mock","passthrough","asErrValue","levelToValue","level","logger","baseLogFunctionSymbol","hierarchySymbol","logFallbackMap","appendChildLogger","parentLogger","childLogger","newEntry","setupBaseLogFunctions","levels","proto","logFunctions","noop","shouldSerialize","serialize","serializers","k","transmit","stdErrSerialize","customLevels","getLevelVal","getLevel","setLevel","setOpts","getTimeFunction","getLevels","child","createLogEventShape","set","bindings","childOptions","childOptionsSerializers","childSerializers","childSerialize","applySerializers","Child","parent","newLogger","values","labels","invertObject","obj","inverted","key","nullTime","epochTime","unixTime","isoTime","getBindingChain","hierarchy","self","rootLogger","transmitLevel","transmitValue","createWrap","prependBindingsInArguments","logFunc","write","ts","argsIsSerialized","asObject","methodValue","levelFormatter","logObjectFormatter","argsCloned","msg","logObject","lvl","formattedLevel","send","methodLevel","val","arg","err","defd","root","createLogger","module","ctx","log","STORAGE_TIMEOUT_MS","STORAGE_MAX_RETRIES","attemptWithTimeout","factory","timeoutMs","value","resolve","withStorageRetry","maxRetries","attempt","result","ClaudeKeyValueStore","raw","prefix","isClaudeArtifactContext","claudeStoragePlugin","pkg","storage","item","e"],"mappings":"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","x_google_ignoreList":[1,2]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alistigo/claude-storage-plugin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Window.storage-backed AlistigoPlugin (type: storage) implementation for the Claude artifact runtime.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
"access": "public"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@alistigo/
|
|
46
|
-
"@alistigo/logger": "0.
|
|
47
|
-
"@alistigo/artifact-
|
|
45
|
+
"@alistigo/artifact-plugin-api": "0.4.0",
|
|
46
|
+
"@alistigo/logger": "0.3.0",
|
|
47
|
+
"@alistigo/claude-artifact-api": "0.3.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"vite": "^7.0.0"
|