@canaryai/cli 0.2.5 → 0.2.6
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/{chunk-ILEPYWZX.js → chunk-A44B2PEA.js} +2 -2
- package/dist/chunk-AHYNXUHF.js +37 -0
- package/dist/chunk-AHYNXUHF.js.map +1 -0
- package/dist/chunk-P5Z2Y5VV.js +94 -0
- package/dist/chunk-P5Z2Y5VV.js.map +1 -0
- package/dist/chunk-PDC425CK.js +46893 -0
- package/dist/chunk-PDC425CK.js.map +1 -0
- package/dist/{chunk-FIQBGAKW.js → chunk-RYCPA32L.js} +4 -4
- package/dist/{chunk-FIQBGAKW.js.map → chunk-RYCPA32L.js.map} +1 -1
- package/dist/chunk-VKVL7WBN.js +50 -0
- package/dist/{debug-workflow-PT3OUR3V.js → debug-workflow-G5ZAZCYG.js} +6 -3
- package/dist/{debug-workflow-PT3OUR3V.js.map → debug-workflow-G5ZAZCYG.js.map} +1 -1
- package/dist/dist-5CSYV6PJ.js +336 -0
- package/dist/dist-5CSYV6PJ.js.map +1 -0
- package/dist/{docs-RUZXLATL.js → docs-QLCF2LS6.js} +5 -3
- package/dist/{docs-RUZXLATL.js.map → docs-QLCF2LS6.js.map} +1 -1
- package/dist/{feature-flag-S5B5GLPP.js → feature-flag-2FDSKOVX.js} +2 -2
- package/dist/index.js +15 -13
- package/dist/index.js.map +1 -1
- package/dist/{issues-4ZEDHPLW.js → issues-6ZDNDSD6.js} +2 -2
- package/dist/{knobs-RKUVK3HC.js → knobs-MZRTYS3P.js} +2 -2
- package/dist/{local-browser-J6WGFLVD.js → local-browser-5ZVPHF5H.js} +6 -3
- package/dist/{local-browser-J6WGFLVD.js.map → local-browser-5ZVPHF5H.js.map} +1 -1
- package/dist/{mcp-HGYBMDYZ.js → mcp-Q666YHHT.js} +14 -13
- package/dist/mcp-Q666YHHT.js.map +1 -0
- package/dist/pdf-extract-XYDS42VL.js +13 -0
- package/dist/pdf-extract-XYDS42VL.js.map +1 -0
- package/dist/pdfjs-HMUKB5WW.js +35243 -0
- package/dist/pdfjs-HMUKB5WW.js.map +1 -0
- package/dist/{psql-WVIHMC6A.js → psql-2YPIRMDY.js} +2 -2
- package/dist/{record-MMFESD4M.js → record-W5QERB5Z.js} +6 -4
- package/dist/{record-MMFESD4M.js.map → record-W5QERB5Z.js.map} +1 -1
- package/dist/{redis-RGHECKV5.js → redis-A7GWM23E.js} +2 -2
- package/dist/{release-ZOD4Y2BF.js → release-L4IXOHDF.js} +2 -2
- package/dist/runner/preload.js +2 -2
- package/dist/src-GSLFE4NP.js +146 -0
- package/dist/src-GSLFE4NP.js.map +1 -0
- package/dist/test.js +2 -2
- package/package.json +2 -3
- package/dist/chunk-VLFUCAPZ.js +0 -12
- package/dist/mcp-HGYBMDYZ.js.map +0 -1
- /package/dist/{chunk-ILEPYWZX.js.map → chunk-A44B2PEA.js.map} +0 -0
- /package/dist/{chunk-VLFUCAPZ.js.map → chunk-VKVL7WBN.js.map} +0 -0
- /package/dist/{feature-flag-S5B5GLPP.js.map → feature-flag-2FDSKOVX.js.map} +0 -0
- /package/dist/{issues-4ZEDHPLW.js.map → issues-6ZDNDSD6.js.map} +0 -0
- /package/dist/{knobs-RKUVK3HC.js.map → knobs-MZRTYS3P.js.map} +0 -0
- /package/dist/{psql-WVIHMC6A.js.map → psql-2YPIRMDY.js.map} +0 -0
- /package/dist/{redis-RGHECKV5.js.map → redis-A7GWM23E.js.map} +0 -0
- /package/dist/{release-ZOD4Y2BF.js.map → release-L4IXOHDF.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.bun/unpdf@1.4.0/node_modules/unpdf/dist/index.mjs"],"sourcesContent":["let resolvedModule;\nconst isNode = globalThis.process?.release?.name === \"node\";\nconst isBrowser = typeof window !== \"undefined\";\nasync function getDocumentProxy(data, options = {}) {\n const { getDocument } = await getResolvedPDFJS();\n const pdf = await getDocument({\n data,\n isEvalSupported: false,\n // See: https://github.com/mozilla/pdf.js/issues/4244#issuecomment-1479534301\n useSystemFonts: true,\n ...options\n }).promise;\n return pdf;\n}\nasync function getResolvedPDFJS() {\n if (!resolvedModule) {\n await resolvePDFJSImport();\n }\n return resolvedModule;\n}\nasync function resolvePDFJSImport(pdfjsResolver, { reload = false } = {}) {\n if (resolvedModule && !reload) {\n return;\n }\n if (pdfjsResolver) {\n try {\n resolvedModule = await interopDefault(pdfjsResolver());\n return;\n } catch (error) {\n throw new Error(`PDF.js could not be resolved: ${error}`);\n }\n }\n try {\n resolvedModule = await import('unpdf/pdfjs');\n } catch (error) {\n throw new Error(`Serverless PDF.js bundle could not be resolved: ${error}`);\n }\n}\nfunction isPDFDocumentProxy(data) {\n return typeof data === \"object\" && data !== null && \"_pdfInfo\" in data;\n}\nasync function interopDefault(m) {\n const resolved = await m;\n return resolved.default || resolved;\n}\n\nlet resolvedCanvasModule;\n/**\n * Derived from the PDF.js project by the Mozilla Foundation.\n * @see https://github.com/mozilla/pdf.js/blob/b8de9a372f9bbf7e33adb362eeae5ef1919dba73/src/display/canvas_factory.js#L18\n * @license Apache-2.0\n */\nclass BaseCanvasFactory {\n #enableHWA = false;\n constructor({ enableHWA = false } = {}) {\n this.#enableHWA = enableHWA;\n }\n create(width, height) {\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\", {\n willReadFrequently: !this.#enableHWA\n })\n };\n }\n reset({ canvas }, width, height) {\n if (!canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvas.width = width;\n canvas.height = height;\n }\n destroy(context) {\n if (!context.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n context.canvas.width = 0;\n context.canvas.height = 0;\n context.canvas = void 0;\n context.context = void 0;\n }\n // eslint-disable-next-line unused-imports/no-unused-vars\n _createCanvas(width, height) {\n throw new Error(\"Not implemented\");\n }\n}\n/**\n * Derived from the PDF.js project by the Mozilla Foundation.\n * @see https://github.com/mozilla/pdf.js/blob/b8de9a372f9bbf7e33adb362eeae5ef1919dba73/src/display/canvas_factory.js#L18\n * @license Apache-2.0\n */\nclass DOMCanvasFactory extends BaseCanvasFactory {\n _document;\n constructor({ ownerDocument = globalThis.document, enableHWA = false } = {}) {\n super({ enableHWA });\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n constructor({ enableHWA = false } = {}) {\n super({ enableHWA });\n }\n _createCanvas(width, height) {\n if (!resolvedCanvasModule) {\n throw new Error(\"@napi-rs/canvas module is not resolved\");\n }\n return resolvedCanvasModule.createCanvas(width, height);\n }\n}\nasync function resolveCanvasModule(canvasImport) {\n resolvedCanvasModule ??= await interopDefault(canvasImport());\n}\nfunction injectCanvasConstructors() {\n if (!resolvedCanvasModule)\n return;\n if (typeof globalThis.DOMMatrix === \"undefined\")\n globalThis.DOMMatrix = resolvedCanvasModule.DOMMatrix;\n if (typeof globalThis.ImageData === \"undefined\")\n globalThis.ImageData = resolvedCanvasModule.ImageData;\n if (typeof globalThis.Path2D === \"undefined\")\n globalThis.Path2D = resolvedCanvasModule.Path2D;\n}\n\nasync function extractImages$1(data, pageNumber) {\n const pdf = isPDFDocumentProxy(data) ? data : await getDocumentProxy(data);\n if (pageNumber < 1 || pageNumber > pdf.numPages) {\n throw new Error(`Invalid page number. Must be between 1 and ${pdf.numPages}.`);\n }\n const page = await pdf.getPage(pageNumber);\n const operatorList = await page.getOperatorList();\n const { OPS } = await getResolvedPDFJS();\n const images = [];\n for (let i = 0; i < operatorList.fnArray.length; i++) {\n const op = operatorList.fnArray[i];\n if (op !== OPS.paintImageXObject) {\n continue;\n }\n const imageKey = operatorList.argsArray[i][0];\n const image = await new Promise(\n (resolve) => (imageKey.startsWith(\"g_\") ? page.commonObjs : page.objs).get(imageKey, resolve)\n );\n if (!image || !image.data || !image.width || !image.height) {\n continue;\n }\n const { width, height, data: data2 } = image;\n const calculatedChannels = data2.length / (width * height);\n if (![1, 3, 4].includes(calculatedChannels)) {\n continue;\n }\n const channels = calculatedChannels;\n images.push({\n data: data2,\n width,\n height,\n channels,\n key: imageKey\n });\n }\n return images;\n}\nasync function renderPageAsImage$1(data, pageNumber, options = {}) {\n const CanvasFactory = await createIsomorphicCanvasFactory(options.canvasImport);\n const pdf = isPDFDocumentProxy(data) ? data : await getDocumentProxy(data, { CanvasFactory });\n const page = await pdf.getPage(pageNumber);\n if (pageNumber < 1 || pageNumber > pdf.numPages) {\n throw new Error(`Invalid page number. Must be between 1 and ${pdf.numPages}.`);\n }\n const defaultViewport = page.getViewport({ scale: 1 });\n let scale = options.scale || 1;\n if (options.width) {\n scale = options.width / defaultViewport.width;\n } else if (options.height) {\n scale = options.height / defaultViewport.height;\n }\n const viewport = page.getViewport({ scale: Math.max(0, scale) });\n const drawingContext = new CanvasFactory().create(viewport.width, viewport.height);\n await page.render({\n canvas: drawingContext.canvas,\n canvasContext: drawingContext.context,\n viewport\n }).promise;\n const dataUrl = drawingContext.canvas.toDataURL();\n if (options.toDataURL) {\n return dataUrl;\n }\n const response = await fetch(dataUrl);\n return await response.arrayBuffer();\n}\nasync function createIsomorphicCanvasFactory(canvasImport) {\n if (isBrowser)\n return DOMCanvasFactory;\n if (isNode) {\n if (!canvasImport) {\n throw new Error('Parameter \"canvasImport\" is required in Node.js environment.');\n }\n await resolveCanvasModule(canvasImport);\n injectCanvasConstructors();\n return NodeCanvasFactory;\n }\n throw new Error(\"Unsupported environment for canvas creation.\");\n}\n\nasync function extractLinks$1(data) {\n const pdf = isPDFDocumentProxy(data) ? data : await getDocumentProxy(data);\n const pageLinks = await Promise.all(\n Array.from({ length: pdf.numPages }, (_, i) => getPageLinks(pdf, i + 1))\n );\n return {\n totalPages: pdf.numPages,\n links: pageLinks.flat()\n };\n}\nasync function getPageLinks(document, pageNumber) {\n const page = await document.getPage(pageNumber);\n const annotations = await page.getAnnotations();\n const links = [];\n for (const annotation of annotations) {\n if (annotation.subtype === \"Link\" && annotation.url) {\n links.push(annotation.url);\n }\n }\n return links;\n}\n\nconst XMP_DATE_PROPERTIES = [\n \"xmp:createdate\",\n \"xmp:modifydate\",\n \"xmp:metadatadate\",\n \"xap:createdate\",\n \"xap:modifydate\",\n \"xap:metadatadate\"\n];\nasync function getMeta$1(data, options = {}) {\n const pdf = isPDFDocumentProxy(data) ? data : await getDocumentProxy(data);\n const meta = await pdf.getMetadata();\n const info = meta?.info || {};\n if (options.parseDates) {\n const { PDFDateString } = await getResolvedPDFJS();\n if (info?.CreationDate) {\n info.CreationDate = PDFDateString.toDateObject(info?.CreationDate);\n }\n if (info?.ModDate) {\n info.ModDate = PDFDateString.toDateObject(info?.ModDate);\n }\n if (meta.metadata) {\n meta.metadata = new Proxy(meta.metadata, {\n get(target, prop) {\n if (prop === \"get\") {\n return (name) => {\n const value = target.get(name);\n if (XMP_DATE_PROPERTIES.includes(name) && value) {\n return parseISODateString(value);\n }\n return value;\n };\n }\n return target[prop];\n }\n });\n }\n }\n return {\n info,\n metadata: meta?.metadata || {}\n };\n}\nfunction parseISODateString(isoDateString) {\n if (!isoDateString)\n return;\n const parsedDate = Date.parse(isoDateString);\n if (!Number.isNaN(parsedDate)) {\n return new Date(parsedDate);\n }\n}\n\nasync function extractText$1(data, options = {}) {\n const { mergePages = false } = options;\n const pdf = isPDFDocumentProxy(data) ? data : await getDocumentProxy(data);\n const texts = await Promise.all(\n Array.from({ length: pdf.numPages }, (_, i) => getPageText(pdf, i + 1))\n );\n return {\n totalPages: pdf.numPages,\n text: mergePages ? texts.join(\"\\n\").replace(/\\s+/g, \" \") : texts\n };\n}\nasync function getPageText(document, pageNumber) {\n const page = await document.getPage(pageNumber);\n const content = await page.getTextContent();\n return content.items.filter((item) => item.str != null).map((item) => item.str + (item.hasEOL ? \"\\n\" : \"\")).join(\"\");\n}\n\nasync function definePDFJSModule(pdfjs) {\n await resolvePDFJSImport(pdfjs, { reload: true });\n}\nasync function configureUnPDF(options) {\n await resolvePDFJSImport(options.pdfjs, { reload: true });\n}\n\nconst getMeta = async (...args) => {\n await resolvePDFJSImport();\n return await getMeta$1(...args);\n};\nconst extractText = async (...args) => {\n await resolvePDFJSImport();\n return await extractText$1(...args);\n};\nconst extractImages = async (...args) => {\n await resolvePDFJSImport();\n return await extractImages$1(...args);\n};\nconst renderPageAsImage = async (...args) => {\n await resolvePDFJSImport();\n return await renderPageAsImage$1(...args);\n};\nconst extractLinks = async (...args) => {\n await resolvePDFJSImport();\n return await extractLinks$1(...args);\n};\n\nexport { configureUnPDF, createIsomorphicCanvasFactory, definePDFJSModule, extractImages, extractLinks, extractText, getDocumentProxy, getMeta, getResolvedPDFJS, renderPageAsImage, resolvePDFJSImport };\n"],"mappings":"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","names":[]}
|
|
@@ -8,12 +8,14 @@ import {
|
|
|
8
8
|
hasFlag,
|
|
9
9
|
resolveConfig
|
|
10
10
|
} from "./chunk-PWWQGYFG.js";
|
|
11
|
-
import
|
|
11
|
+
import {
|
|
12
|
+
getSubDir
|
|
13
|
+
} from "./chunk-AHYNXUHF.js";
|
|
14
|
+
import "./chunk-VKVL7WBN.js";
|
|
12
15
|
|
|
13
16
|
// src/docs.ts
|
|
14
17
|
import { readFile, writeFile, mkdir } from "fs/promises";
|
|
15
18
|
import path from "path";
|
|
16
|
-
import { getSubDir } from "@chatsdet/tmp";
|
|
17
19
|
import process from "process";
|
|
18
20
|
var DEFAULT_PULL_DIR = getSubDir("docs");
|
|
19
21
|
async function handleList(argv, apiUrl, token) {
|
|
@@ -268,4 +270,4 @@ async function runDocs(argv) {
|
|
|
268
270
|
export {
|
|
269
271
|
runDocs
|
|
270
272
|
};
|
|
271
|
-
//# sourceMappingURL=docs-
|
|
273
|
+
//# sourceMappingURL=docs-QLCF2LS6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/docs.ts"],"sourcesContent":["/**\n * CLI Documentation Management\n *\n * Allows agents and superadmins to list, pull, edit, and push documentation pages.\n */\n\nimport { readFile, writeFile, mkdir } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { getSubDir } from \"@chatsdet/tmp\";\nimport process from \"node:process\";\nimport { resolveConfig, getArgValue, hasFlag } from \"./auth.js\";\nimport { apiRequest, fetchList } from \"./cli-helpers.js\";\n\ntype DocsPageListItem = {\n slug: string;\n title: string;\n description: string | null;\n updatedAt: string;\n publishedBy: string | null;\n};\n\ntype DocsPageContent = {\n slug: string;\n path: string;\n title: string;\n description: string | null;\n content: string;\n checksum: string;\n updatedAt: string;\n publishedBy: string | null;\n};\n\ntype DocsVersionItem = {\n version: number;\n title: string;\n checksum: string;\n message: string | null;\n createdBy: string;\n createdAt: string;\n};\n\ntype DocsApiResponse = {\n ok: boolean;\n error?: string;\n data?: {\n slug?: string;\n title?: string;\n pages?: DocsPageListItem[];\n content?: string;\n versions?: DocsVersionItem[];\n };\n};\n\nconst DEFAULT_PULL_DIR = getSubDir('docs');\n\nasync function handleList(argv: string[], apiUrl: string, token: string): Promise<void> {\n const jsonOutput = hasFlag(argv, \"--json\");\n const pages = await fetchList<DocsPageListItem>(apiUrl, token, \"/public/docs/pages\", \"pages\");\n\n if (jsonOutput) {\n console.log(JSON.stringify(pages, null, 2));\n return;\n }\n\n if (pages.length === 0) {\n console.log(\"No documentation pages found.\");\n return;\n }\n\n for (const page of pages) {\n const date = new Date(page.updatedAt).toISOString().slice(0, 10);\n const by = page.publishedBy ? ` (${page.publishedBy})` : \"\";\n console.log(` ${page.slug} ${page.title} [${date}${by}]`);\n }\n}\n\nasync function handleGet(argv: string[], apiUrl: string, token: string): Promise<void> {\n const slug = argv[0];\n if (!slug || slug.startsWith(\"--\")) {\n console.error(\"Error: Missing slug.\");\n console.error(\"Usage: canary docs get <slug>\");\n process.exit(1);\n }\n\n const res = await fetch(`${apiUrl}/public/docs/pages/raw?slug=${encodeURIComponent(slug)}`, {\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (res.status === 404) {\n console.error(`Error: Page not found: ${slug}`);\n process.exit(1);\n }\n\n if (!res.ok) {\n console.error(`Error: ${res.statusText}`);\n process.exit(1);\n }\n\n const content = await res.text();\n console.log(content);\n}\n\nasync function handlePull(argv: string[], apiUrl: string, token: string): Promise<void> {\n const slug = argv[0];\n if (!slug || slug.startsWith(\"--\")) {\n console.error(\"Error: Missing slug.\");\n console.error(\"Usage: canary docs pull <slug> [--output <path>]\");\n process.exit(1);\n }\n\n const outputPath = getArgValue(argv, \"--output\") ?? path.join(DEFAULT_PULL_DIR, `${slug}.md`);\n\n const res = await fetch(`${apiUrl}/public/docs/pages/raw?slug=${encodeURIComponent(slug)}`, {\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (res.status === 404) {\n console.error(`Error: Page not found: ${slug}`);\n process.exit(1);\n }\n\n if (!res.ok) {\n console.error(`Error: ${res.statusText}`);\n process.exit(1);\n }\n\n const content = await res.text();\n await mkdir(path.dirname(outputPath), { recursive: true });\n await writeFile(outputPath, content, \"utf8\");\n console.log(`Pulled ${slug} → ${outputPath}`);\n}\n\nasync function handlePush(argv: string[], apiUrl: string, token: string): Promise<void> {\n const slug = argv[0];\n if (!slug || slug.startsWith(\"--\")) {\n console.error(\"Error: Missing slug.\");\n console.error(\"Usage: canary docs push <slug> --file <path> [--message <text>]\");\n process.exit(1);\n }\n\n const filePath = getArgValue(argv, \"--file\");\n if (!filePath) {\n console.error(\"Error: Missing --file <path>.\");\n process.exit(1);\n }\n\n const message = getArgValue(argv, \"--message\") ?? undefined;\n const createdBy = getArgValue(argv, \"--created-by\") ?? undefined;\n\n let content: string;\n try {\n content = await readFile(filePath, \"utf8\");\n } catch {\n console.error(`Error: Could not read file: ${filePath}`);\n process.exit(1);\n }\n\n const result = await apiRequest<DocsApiResponse>(\n apiUrl,\n token,\n \"PUT\",\n `/superadmin/docs/pages?slug=${encodeURIComponent(slug)}`,\n { content, message, createdBy }\n );\n\n if (!result.ok) {\n console.error(`Error: ${result.error}`);\n process.exit(1);\n }\n\n console.log(`Published new version of ${slug}`);\n}\n\nasync function handleHistory(argv: string[], apiUrl: string, token: string): Promise<void> {\n const slug = argv[0];\n if (!slug || slug.startsWith(\"--\")) {\n console.error(\"Error: Missing slug.\");\n console.error(\"Usage: canary docs history <slug>\");\n process.exit(1);\n }\n\n const jsonOutput = hasFlag(argv, \"--json\");\n\n const res = await fetch(\n `${apiUrl}/public/docs/pages/versions?slug=${encodeURIComponent(slug)}`,\n { headers: { Authorization: `Bearer ${token}` } }\n );\n\n if (!res.ok) {\n const body = await res.json().catch(() => ({ error: res.statusText }));\n console.error(`Error: ${(body as { error?: string }).error ?? res.statusText}`);\n process.exit(1);\n }\n\n const body = (await res.json()) as DocsApiResponse;\n const versions = body.data?.versions ?? [];\n\n if (jsonOutput) {\n console.log(JSON.stringify(versions, null, 2));\n return;\n }\n\n if (versions.length === 0) {\n console.log(`No versions found for ${slug}.`);\n return;\n }\n\n for (const v of versions) {\n const date = new Date(v.createdAt).toISOString().slice(0, 19).replace(\"T\", \" \");\n const msg = v.message ? ` — ${v.message}` : \"\";\n console.log(` v${v.version} ${date} ${v.createdBy}${msg}`);\n }\n}\n\nasync function handleCreate(argv: string[], apiUrl: string, token: string): Promise<void> {\n const slug = argv[0];\n if (!slug || slug.startsWith(\"--\")) {\n console.error(\"Error: Missing slug.\");\n console.error(\"Usage: canary docs create <slug> --file <path> --title <text>\");\n process.exit(1);\n }\n\n const filePath = getArgValue(argv, \"--file\");\n const title = getArgValue(argv, \"--title\");\n\n if (!filePath) {\n console.error(\"Error: Missing --file <path>.\");\n process.exit(1);\n }\n if (!title) {\n console.error(\"Error: Missing --title <text>.\");\n process.exit(1);\n }\n\n const description = getArgValue(argv, \"--description\") ?? undefined;\n const message = getArgValue(argv, \"--message\") ?? undefined;\n\n let content: string;\n try {\n content = await readFile(filePath, \"utf8\");\n } catch {\n console.error(`Error: Could not read file: ${filePath}`);\n process.exit(1);\n }\n\n const result = await apiRequest<DocsApiResponse>(apiUrl, token, \"POST\", \"/superadmin/docs/pages\", {\n slug,\n title,\n description,\n content,\n message,\n });\n\n if (!result.ok) {\n console.error(`Error: ${result.error}`);\n process.exit(1);\n }\n\n console.log(`Created page: ${slug}`);\n}\n\nasync function handleDelete(argv: string[], apiUrl: string, token: string): Promise<void> {\n const slug = argv[0];\n if (!slug || slug.startsWith(\"--\")) {\n console.error(\"Error: Missing slug.\");\n console.error(\"Usage: canary docs delete <slug>\");\n process.exit(1);\n }\n\n const result = await apiRequest<DocsApiResponse>(\n apiUrl,\n token,\n \"DELETE\",\n `/superadmin/docs/pages?slug=${encodeURIComponent(slug)}`\n );\n\n if (!result.ok) {\n console.error(`Error: ${result.error}`);\n process.exit(1);\n }\n\n console.log(`Deleted page: ${slug}`);\n}\n\nfunction printDocsHelp(): void {\n console.log(\n [\n \"Usage: canary docs <sub-command> [options]\",\n \"\",\n \"Sub-commands:\",\n \" list List all doc pages\",\n \" get <slug> Print content to stdout\",\n \" pull <slug> [--output <path>] Download to local file\",\n \" push <slug> --file <path> [--message] Publish new version\",\n \" history <slug> Show version history\",\n \" create <slug> --file <path> --title ... Create new page\",\n \" delete <slug> Soft-delete a page\",\n \"\",\n \"Options:\",\n \" --file <path> Path to markdown file\",\n \" --title <text> Page title (create only)\",\n \" --description <text> Page description (create only)\",\n \" --message <text> Version commit message\",\n \" --output <path> Output path for pull (default: /tmp/canary/docs/<slug>.md)\",\n \" --json Output as JSON (list, history)\",\n \" --env <env> Target environment (prod, dev)\",\n \" --api-url <url> API URL override\",\n \" --token <key> API token override\",\n ].join(\"\\n\")\n );\n}\n\nexport async function runDocs(argv: string[]): Promise<void> {\n const [subCommand, ...rest] = argv;\n\n if (!subCommand || subCommand === \"help\" || hasFlag(argv, \"--help\", \"-h\")) {\n printDocsHelp();\n return;\n }\n\n const { apiUrl, token } = await resolveConfig(argv);\n\n switch (subCommand) {\n case \"list\":\n await handleList(rest, apiUrl, token);\n break;\n case \"get\":\n await handleGet(rest, apiUrl, token);\n break;\n case \"pull\":\n await handlePull(rest, apiUrl, token);\n break;\n case \"push\":\n await handlePush(rest, apiUrl, token);\n break;\n case \"history\":\n await handleHistory(rest, apiUrl, token);\n break;\n case \"create\":\n await handleCreate(rest, apiUrl, token);\n break;\n case \"delete\":\n await handleDelete(rest, apiUrl, token);\n break;\n default:\n console.error(`Unknown sub-command: ${subCommand}`);\n printDocsHelp();\n process.exit(1);\n }\n}\n"],"mappings":"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","names":["body"]}
|
|
1
|
+
{"version":3,"sources":["../src/docs.ts"],"sourcesContent":["/**\n * CLI Documentation Management\n *\n * Allows agents and superadmins to list, pull, edit, and push documentation pages.\n */\n\nimport { readFile, writeFile, mkdir } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { getSubDir } from \"@chatsdet/tmp\";\nimport process from \"node:process\";\nimport { resolveConfig, getArgValue, hasFlag } from \"./auth.js\";\nimport { apiRequest, fetchList } from \"./cli-helpers.js\";\n\ntype DocsPageListItem = {\n slug: string;\n title: string;\n description: string | null;\n updatedAt: string;\n publishedBy: string | null;\n};\n\ntype DocsPageContent = {\n slug: string;\n path: string;\n title: string;\n description: string | null;\n content: string;\n checksum: string;\n updatedAt: string;\n publishedBy: string | null;\n};\n\ntype DocsVersionItem = {\n version: number;\n title: string;\n checksum: string;\n message: string | null;\n createdBy: string;\n createdAt: string;\n};\n\ntype DocsApiResponse = {\n ok: boolean;\n error?: string;\n data?: {\n slug?: string;\n title?: string;\n pages?: DocsPageListItem[];\n content?: string;\n versions?: DocsVersionItem[];\n };\n};\n\nconst DEFAULT_PULL_DIR = getSubDir('docs');\n\nasync function handleList(argv: string[], apiUrl: string, token: string): Promise<void> {\n const jsonOutput = hasFlag(argv, \"--json\");\n const pages = await fetchList<DocsPageListItem>(apiUrl, token, \"/public/docs/pages\", \"pages\");\n\n if (jsonOutput) {\n console.log(JSON.stringify(pages, null, 2));\n return;\n }\n\n if (pages.length === 0) {\n console.log(\"No documentation pages found.\");\n return;\n }\n\n for (const page of pages) {\n const date = new Date(page.updatedAt).toISOString().slice(0, 10);\n const by = page.publishedBy ? ` (${page.publishedBy})` : \"\";\n console.log(` ${page.slug} ${page.title} [${date}${by}]`);\n }\n}\n\nasync function handleGet(argv: string[], apiUrl: string, token: string): Promise<void> {\n const slug = argv[0];\n if (!slug || slug.startsWith(\"--\")) {\n console.error(\"Error: Missing slug.\");\n console.error(\"Usage: canary docs get <slug>\");\n process.exit(1);\n }\n\n const res = await fetch(`${apiUrl}/public/docs/pages/raw?slug=${encodeURIComponent(slug)}`, {\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (res.status === 404) {\n console.error(`Error: Page not found: ${slug}`);\n process.exit(1);\n }\n\n if (!res.ok) {\n console.error(`Error: ${res.statusText}`);\n process.exit(1);\n }\n\n const content = await res.text();\n console.log(content);\n}\n\nasync function handlePull(argv: string[], apiUrl: string, token: string): Promise<void> {\n const slug = argv[0];\n if (!slug || slug.startsWith(\"--\")) {\n console.error(\"Error: Missing slug.\");\n console.error(\"Usage: canary docs pull <slug> [--output <path>]\");\n process.exit(1);\n }\n\n const outputPath = getArgValue(argv, \"--output\") ?? path.join(DEFAULT_PULL_DIR, `${slug}.md`);\n\n const res = await fetch(`${apiUrl}/public/docs/pages/raw?slug=${encodeURIComponent(slug)}`, {\n headers: { Authorization: `Bearer ${token}` },\n });\n\n if (res.status === 404) {\n console.error(`Error: Page not found: ${slug}`);\n process.exit(1);\n }\n\n if (!res.ok) {\n console.error(`Error: ${res.statusText}`);\n process.exit(1);\n }\n\n const content = await res.text();\n await mkdir(path.dirname(outputPath), { recursive: true });\n await writeFile(outputPath, content, \"utf8\");\n console.log(`Pulled ${slug} → ${outputPath}`);\n}\n\nasync function handlePush(argv: string[], apiUrl: string, token: string): Promise<void> {\n const slug = argv[0];\n if (!slug || slug.startsWith(\"--\")) {\n console.error(\"Error: Missing slug.\");\n console.error(\"Usage: canary docs push <slug> --file <path> [--message <text>]\");\n process.exit(1);\n }\n\n const filePath = getArgValue(argv, \"--file\");\n if (!filePath) {\n console.error(\"Error: Missing --file <path>.\");\n process.exit(1);\n }\n\n const message = getArgValue(argv, \"--message\") ?? undefined;\n const createdBy = getArgValue(argv, \"--created-by\") ?? undefined;\n\n let content: string;\n try {\n content = await readFile(filePath, \"utf8\");\n } catch {\n console.error(`Error: Could not read file: ${filePath}`);\n process.exit(1);\n }\n\n const result = await apiRequest<DocsApiResponse>(\n apiUrl,\n token,\n \"PUT\",\n `/superadmin/docs/pages?slug=${encodeURIComponent(slug)}`,\n { content, message, createdBy }\n );\n\n if (!result.ok) {\n console.error(`Error: ${result.error}`);\n process.exit(1);\n }\n\n console.log(`Published new version of ${slug}`);\n}\n\nasync function handleHistory(argv: string[], apiUrl: string, token: string): Promise<void> {\n const slug = argv[0];\n if (!slug || slug.startsWith(\"--\")) {\n console.error(\"Error: Missing slug.\");\n console.error(\"Usage: canary docs history <slug>\");\n process.exit(1);\n }\n\n const jsonOutput = hasFlag(argv, \"--json\");\n\n const res = await fetch(\n `${apiUrl}/public/docs/pages/versions?slug=${encodeURIComponent(slug)}`,\n { headers: { Authorization: `Bearer ${token}` } }\n );\n\n if (!res.ok) {\n const body = await res.json().catch(() => ({ error: res.statusText }));\n console.error(`Error: ${(body as { error?: string }).error ?? res.statusText}`);\n process.exit(1);\n }\n\n const body = (await res.json()) as DocsApiResponse;\n const versions = body.data?.versions ?? [];\n\n if (jsonOutput) {\n console.log(JSON.stringify(versions, null, 2));\n return;\n }\n\n if (versions.length === 0) {\n console.log(`No versions found for ${slug}.`);\n return;\n }\n\n for (const v of versions) {\n const date = new Date(v.createdAt).toISOString().slice(0, 19).replace(\"T\", \" \");\n const msg = v.message ? ` — ${v.message}` : \"\";\n console.log(` v${v.version} ${date} ${v.createdBy}${msg}`);\n }\n}\n\nasync function handleCreate(argv: string[], apiUrl: string, token: string): Promise<void> {\n const slug = argv[0];\n if (!slug || slug.startsWith(\"--\")) {\n console.error(\"Error: Missing slug.\");\n console.error(\"Usage: canary docs create <slug> --file <path> --title <text>\");\n process.exit(1);\n }\n\n const filePath = getArgValue(argv, \"--file\");\n const title = getArgValue(argv, \"--title\");\n\n if (!filePath) {\n console.error(\"Error: Missing --file <path>.\");\n process.exit(1);\n }\n if (!title) {\n console.error(\"Error: Missing --title <text>.\");\n process.exit(1);\n }\n\n const description = getArgValue(argv, \"--description\") ?? undefined;\n const message = getArgValue(argv, \"--message\") ?? undefined;\n\n let content: string;\n try {\n content = await readFile(filePath, \"utf8\");\n } catch {\n console.error(`Error: Could not read file: ${filePath}`);\n process.exit(1);\n }\n\n const result = await apiRequest<DocsApiResponse>(apiUrl, token, \"POST\", \"/superadmin/docs/pages\", {\n slug,\n title,\n description,\n content,\n message,\n });\n\n if (!result.ok) {\n console.error(`Error: ${result.error}`);\n process.exit(1);\n }\n\n console.log(`Created page: ${slug}`);\n}\n\nasync function handleDelete(argv: string[], apiUrl: string, token: string): Promise<void> {\n const slug = argv[0];\n if (!slug || slug.startsWith(\"--\")) {\n console.error(\"Error: Missing slug.\");\n console.error(\"Usage: canary docs delete <slug>\");\n process.exit(1);\n }\n\n const result = await apiRequest<DocsApiResponse>(\n apiUrl,\n token,\n \"DELETE\",\n `/superadmin/docs/pages?slug=${encodeURIComponent(slug)}`\n );\n\n if (!result.ok) {\n console.error(`Error: ${result.error}`);\n process.exit(1);\n }\n\n console.log(`Deleted page: ${slug}`);\n}\n\nfunction printDocsHelp(): void {\n console.log(\n [\n \"Usage: canary docs <sub-command> [options]\",\n \"\",\n \"Sub-commands:\",\n \" list List all doc pages\",\n \" get <slug> Print content to stdout\",\n \" pull <slug> [--output <path>] Download to local file\",\n \" push <slug> --file <path> [--message] Publish new version\",\n \" history <slug> Show version history\",\n \" create <slug> --file <path> --title ... Create new page\",\n \" delete <slug> Soft-delete a page\",\n \"\",\n \"Options:\",\n \" --file <path> Path to markdown file\",\n \" --title <text> Page title (create only)\",\n \" --description <text> Page description (create only)\",\n \" --message <text> Version commit message\",\n \" --output <path> Output path for pull (default: /tmp/canary/docs/<slug>.md)\",\n \" --json Output as JSON (list, history)\",\n \" --env <env> Target environment (prod, dev)\",\n \" --api-url <url> API URL override\",\n \" --token <key> API token override\",\n ].join(\"\\n\")\n );\n}\n\nexport async function runDocs(argv: string[]): Promise<void> {\n const [subCommand, ...rest] = argv;\n\n if (!subCommand || subCommand === \"help\" || hasFlag(argv, \"--help\", \"-h\")) {\n printDocsHelp();\n return;\n }\n\n const { apiUrl, token } = await resolveConfig(argv);\n\n switch (subCommand) {\n case \"list\":\n await handleList(rest, apiUrl, token);\n break;\n case \"get\":\n await handleGet(rest, apiUrl, token);\n break;\n case \"pull\":\n await handlePull(rest, apiUrl, token);\n break;\n case \"push\":\n await handlePush(rest, apiUrl, token);\n break;\n case \"history\":\n await handleHistory(rest, apiUrl, token);\n break;\n case \"create\":\n await handleCreate(rest, apiUrl, token);\n break;\n case \"delete\":\n await handleDelete(rest, apiUrl, token);\n break;\n default:\n console.error(`Unknown sub-command: ${subCommand}`);\n printDocsHelp();\n process.exit(1);\n }\n}\n"],"mappings":"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","names":["body"]}
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
hasFlag,
|
|
11
11
|
resolveConfig
|
|
12
12
|
} from "./chunk-PWWQGYFG.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-VKVL7WBN.js";
|
|
14
14
|
|
|
15
15
|
// src/feature-flag.ts
|
|
16
16
|
import process from "process";
|
|
@@ -276,4 +276,4 @@ async function runFeatureFlag(argv) {
|
|
|
276
276
|
export {
|
|
277
277
|
runFeatureFlag
|
|
278
278
|
};
|
|
279
|
-
//# sourceMappingURL=feature-flag-
|
|
279
|
+
//# sourceMappingURL=feature-flag-2FDSKOVX.js.map
|
package/dist/index.js
CHANGED
|
@@ -17,9 +17,12 @@ import {
|
|
|
17
17
|
resolveConfig,
|
|
18
18
|
saveAuth
|
|
19
19
|
} from "./chunk-PWWQGYFG.js";
|
|
20
|
+
import {
|
|
21
|
+
makeTempDirSync
|
|
22
|
+
} from "./chunk-AHYNXUHF.js";
|
|
20
23
|
import {
|
|
21
24
|
__require
|
|
22
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-VKVL7WBN.js";
|
|
23
26
|
|
|
24
27
|
// src/index.ts
|
|
25
28
|
import { spawnSync as spawnSync2 } from "child_process";
|
|
@@ -120,7 +123,6 @@ import { spawn } from "child_process";
|
|
|
120
123
|
import fs2 from "fs";
|
|
121
124
|
import path2 from "path";
|
|
122
125
|
import { fileURLToPath } from "url";
|
|
123
|
-
import { makeTempDirSync } from "@chatsdet/tmp";
|
|
124
126
|
async function run(request = {}) {
|
|
125
127
|
const cwd = request.projectRoot ?? process.cwd();
|
|
126
128
|
const stdio = request.stdio ?? "inherit";
|
|
@@ -910,10 +912,10 @@ function isSuperadminToken(token) {
|
|
|
910
912
|
// src/index.ts
|
|
911
913
|
var require2 = createRequire2(import.meta.url);
|
|
912
914
|
var pkg = require2("../package.json");
|
|
913
|
-
var loadMcp = () => import("./mcp-
|
|
914
|
-
var loadLocalBrowser = () => import("./local-browser-
|
|
915
|
-
var loadDebugWorkflow = () => import("./debug-workflow-
|
|
916
|
-
var loadRecord = () => import("./record-
|
|
915
|
+
var loadMcp = () => import("./mcp-Q666YHHT.js").then((m) => m.runMcp);
|
|
916
|
+
var loadLocalBrowser = () => import("./local-browser-5ZVPHF5H.js").then((m) => m.runLocalBrowser);
|
|
917
|
+
var loadDebugWorkflow = () => import("./debug-workflow-G5ZAZCYG.js").then((m) => m.runDebugWorkflow);
|
|
918
|
+
var loadRecord = () => import("./record-W5QERB5Z.js").then((m) => m.runRecord);
|
|
917
919
|
var canary = { run };
|
|
918
920
|
var baseDir = typeof __dirname !== "undefined" ? __dirname : path4.dirname(fileURLToPath2(import.meta.url));
|
|
919
921
|
var preloadPath = path4.join(baseDir, "runner", "preload.js");
|
|
@@ -1190,37 +1192,37 @@ async function main(argv) {
|
|
|
1190
1192
|
return;
|
|
1191
1193
|
}
|
|
1192
1194
|
if (command === "psql") {
|
|
1193
|
-
const { runPsql } = await import("./psql-
|
|
1195
|
+
const { runPsql } = await import("./psql-2YPIRMDY.js");
|
|
1194
1196
|
await runPsql(rest);
|
|
1195
1197
|
return;
|
|
1196
1198
|
}
|
|
1197
1199
|
if (command === "redis") {
|
|
1198
|
-
const { runRedis } = await import("./redis-
|
|
1200
|
+
const { runRedis } = await import("./redis-A7GWM23E.js");
|
|
1199
1201
|
await runRedis(rest);
|
|
1200
1202
|
return;
|
|
1201
1203
|
}
|
|
1202
1204
|
if (command === "release") {
|
|
1203
|
-
const { runRelease } = await import("./release-
|
|
1205
|
+
const { runRelease } = await import("./release-L4IXOHDF.js");
|
|
1204
1206
|
await runRelease(rest);
|
|
1205
1207
|
return;
|
|
1206
1208
|
}
|
|
1207
1209
|
if (command === "docs") {
|
|
1208
|
-
const { runDocs } = await import("./docs-
|
|
1210
|
+
const { runDocs } = await import("./docs-QLCF2LS6.js");
|
|
1209
1211
|
await runDocs(rest);
|
|
1210
1212
|
return;
|
|
1211
1213
|
}
|
|
1212
1214
|
if (command === "feature-flag") {
|
|
1213
|
-
const { runFeatureFlag } = await import("./feature-flag-
|
|
1215
|
+
const { runFeatureFlag } = await import("./feature-flag-2FDSKOVX.js");
|
|
1214
1216
|
await runFeatureFlag(rest);
|
|
1215
1217
|
return;
|
|
1216
1218
|
}
|
|
1217
1219
|
if (command === "knobs") {
|
|
1218
|
-
const { runKnobs } = await import("./knobs-
|
|
1220
|
+
const { runKnobs } = await import("./knobs-MZRTYS3P.js");
|
|
1219
1221
|
await runKnobs(rest);
|
|
1220
1222
|
return;
|
|
1221
1223
|
}
|
|
1222
1224
|
if (command === "issues") {
|
|
1223
|
-
const { runIssues } = await import("./issues-
|
|
1225
|
+
const { runIssues } = await import("./issues-6ZDNDSD6.js");
|
|
1224
1226
|
await runIssues(rest);
|
|
1225
1227
|
return;
|
|
1226
1228
|
}
|