aglit 0.1.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/app.d.ts +2 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/commands/check.d.ts +3 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/list.d.ts +3 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/new.d.ts +3 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/project-new.d.ts +3 -0
- package/dist/commands/project-new.d.ts.map +1 -0
- package/dist/commands/projects.d.ts +3 -0
- package/dist/commands/projects.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1206 -0
- package/dist/index.js.map +20 -0
- package/dist/routes.d.ts +2 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/workspace.d.ts +3 -0
- package/dist/workspace.d.ts.map +1 -0
- package/package.json +35 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/index.ts", "../src/app.ts", "../src/routes.ts", "../src/commands/init.ts", "../../sdk/dist/index.js", "../src/workspace.ts", "../src/commands/check.ts", "../src/commands/list.ts", "../src/commands/new.ts", "../src/commands/project-new.ts", "../src/commands/projects.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { run } from \"@stricli/core\";\n\nimport { app } from \"./app\";\n\nasync function main() {\n await run(app, process.argv.slice(2), {\n process,\n async forCommand() {\n return { process, cwd: process.cwd() };\n },\n });\n}\n\nvoid main();\n",
|
|
6
|
+
"import { buildApplication } from \"@stricli/core\";\n\nimport { routes } from \"./routes\";\n\nexport const app = buildApplication(routes, {\n name: \"aglit\",\n scanner: { caseStyle: \"allow-kebab-for-camel\" },\n});\n",
|
|
7
|
+
"import { buildRouteMap } from \"@stricli/core\";\n\nimport { initCommand } from \"./commands/init\";\nimport { checkCommand } from \"./commands/check\";\nimport { listCommand } from \"./commands/list\";\nimport { newCommand } from \"./commands/new\";\nimport { projectNewCommand } from \"./commands/project-new\";\nimport { projectsCommand } from \"./commands/projects\";\n\nconst projectRoutes = buildRouteMap({\n routes: {\n new: projectNewCommand,\n },\n docs: {\n brief: \"Project commands\",\n },\n});\n\nexport const routes = buildRouteMap({\n routes: {\n init: initCommand,\n new: newCommand,\n list: listCommand,\n projects: projectsCommand,\n project: projectRoutes,\n check: checkCommand,\n },\n docs: {\n brief: \"AGLIT CLI\",\n },\n});\n",
|
|
8
|
+
"import type { FlagParametersForType } from \"@stricli/core\";\nimport { buildCommand } from \"@stricli/core\";\n\nimport { ensureAglit, getConfig, setConfig } from \"@jmmarotta/aglit-sdk\";\n\nimport type { AglitCliContext } from \"../types\";\nimport { findWorkspaceRoot } from \"../workspace\";\n\ninterface InitFlags {\n prefix?: string;\n}\n\nconst initFlags: FlagParametersForType<InitFlags, AglitCliContext> = {\n prefix: {\n kind: \"parsed\",\n parse: String,\n brief: \"Issue key prefix\",\n optional: true,\n },\n};\n\nexport const initCommand = buildCommand({\n func: async function (this: AglitCliContext, flags: InitFlags) {\n const root = (await findWorkspaceRoot(this.cwd)) ?? this.cwd;\n await ensureAglit(root);\n if (flags.prefix) {\n await setConfig(root, { issuePrefix: flags.prefix, schema: \"aglit.config.v1\" });\n } else {\n const config = await getConfig(root);\n if (!config) {\n throw new Error(\"Issue prefix required. Run `aglit init --prefix ABC`.\");\n }\n }\n this.process.stdout.write(`Initialized AGLIT at ${root}\\n`);\n },\n parameters: {\n flags: initFlags,\n },\n docs: {\n brief: \"Initialize AGLIT in this workspace\",\n },\n});\n",
|
|
9
|
+
"// @bun\n// src/io.ts\nimport * as fs from \"fs/promises\";\nimport * as path2 from \"path\";\n\n// src/paths.ts\nimport * as path from \"path\";\n\n// src/constants.ts\nvar AGLIT_DIRNAME = \".aglit\";\nvar ISSUES_DIRNAME = \"issues\";\nvar PROJECTS_DIRNAME = \"projects\";\nvar CONFIG_FILENAME = \"config.json\";\nvar LOCK_FILENAME = \".lock\";\nvar CONFIG_SCHEMA = \"aglit.config.v1\";\nvar ISSUE_SCHEMA = \"aglit.issue.md.v1\";\nvar PROJECT_SCHEMA = \"aglit.project.md.v1\";\nvar ISSUE_STATUSES = [\n \"inbox\",\n \"planned\",\n \"active\",\n \"blocked\",\n \"done\",\n \"canceled\"\n];\nvar PRIORITY_LEVELS = [\"none\", \"low\", \"medium\", \"high\"];\n\n// src/paths.ts\nfunction resolveRoot(rootDir) {\n return rootDir ?? process.cwd();\n}\nfunction aglitDir(rootDir) {\n return path.join(resolveRoot(rootDir), AGLIT_DIRNAME);\n}\nfunction issuesDir(rootDir) {\n return path.join(aglitDir(rootDir), ISSUES_DIRNAME);\n}\nfunction projectsDir(rootDir) {\n return path.join(aglitDir(rootDir), PROJECTS_DIRNAME);\n}\nfunction configPath(rootDir) {\n return path.join(aglitDir(rootDir), CONFIG_FILENAME);\n}\nfunction lockPath(rootDir) {\n return path.join(aglitDir(rootDir), LOCK_FILENAME);\n}\nfunction issuePath(rootDir, key) {\n return path.join(issuesDir(rootDir), `${key}.md`);\n}\nfunction projectPath(rootDir, slug) {\n return path.join(projectsDir(rootDir), `${slug}.md`);\n}\n\n// src/io.ts\nasync function ensureDir(dirPath) {\n await fs.mkdir(dirPath, { recursive: true });\n}\nasync function ensureLayout(rootDir) {\n await ensureDir(aglitDir(rootDir));\n await ensureDir(issuesDir(rootDir));\n await ensureDir(projectsDir(rootDir));\n}\nasync function fileExists(filePath) {\n try {\n await fs.access(filePath);\n return true;\n } catch (error) {\n if (error.code === \"ENOENT\") {\n return false;\n }\n throw error;\n }\n}\nasync function readJsonFile(filePath) {\n const raw = await fs.readFile(filePath, \"utf8\");\n return JSON.parse(raw);\n}\nasync function atomicWriteJson(filePath, data) {\n const dir = path2.dirname(filePath);\n const base = path2.basename(filePath);\n const tmpPath = path2.join(dir, `.${base}.tmp`);\n const json = `${JSON.stringify(data, null, 2)}\n`;\n await fs.writeFile(tmpPath, json, \"utf8\");\n await fs.rename(tmpPath, filePath);\n}\nasync function atomicWriteText(filePath, text) {\n const dir = path2.dirname(filePath);\n const base = path2.basename(filePath);\n const tmpPath = path2.join(dir, `.${base}.tmp`);\n await fs.writeFile(tmpPath, text, \"utf8\");\n await fs.rename(tmpPath, filePath);\n}\nasync function readTextFile(filePath) {\n return fs.readFile(filePath, \"utf8\");\n}\nasync function listIssueFiles(rootDir) {\n const dir = issuesDir(rootDir);\n try {\n const entries = await fs.readdir(dir, { withFileTypes: true });\n return entries.filter((entry) => entry.isFile() && entry.name.endsWith(\".md\")).map((entry) => path2.join(dir, entry.name));\n } catch (error) {\n if (error.code === \"ENOENT\") {\n return [];\n }\n throw error;\n }\n}\nasync function listProjectFiles(rootDir) {\n const dir = projectsDir(rootDir);\n try {\n const entries = await fs.readdir(dir, { withFileTypes: true });\n return entries.filter((entry) => entry.isFile() && entry.name.endsWith(\".md\")).map((entry) => path2.join(dir, entry.name));\n } catch (error) {\n if (error.code === \"ENOENT\") {\n return [];\n }\n throw error;\n }\n}\n\n// src/workspace.ts\nasync function ensureAglit(rootDir) {\n await ensureLayout(rootDir);\n}\n// src/config.ts\nfunction normalizePrefix(value) {\n const normalized = value.trim().toUpperCase();\n if (!/^[A-Z][A-Z0-9]*$/.test(normalized)) {\n throw new Error(\"issuePrefix must start with a letter and contain only A-Z and 0-9\");\n }\n return normalized;\n}\nasync function getConfig(rootDir) {\n const path3 = configPath(rootDir);\n if (!await fileExists(path3)) {\n return null;\n }\n const json = await readJsonFile(path3);\n if (!json || typeof json !== \"object\" || Array.isArray(json)) {\n throw new Error(`Invalid AGLIT config at ${path3}`);\n }\n const issuePrefix = json.issuePrefix;\n if (typeof issuePrefix !== \"string\") {\n throw new Error(`Invalid AGLIT config at ${path3}`);\n }\n return {\n issuePrefix: normalizePrefix(issuePrefix),\n schema: typeof json.schema === \"string\" ? json.schema : undefined\n };\n}\nasync function setConfig(rootDir, config) {\n if (!config || typeof config !== \"object\") {\n throw new Error(\"Invalid AGLIT config payload\");\n }\n const issuePrefix = normalizePrefix(config.issuePrefix);\n await ensureLayout(rootDir);\n await atomicWriteJson(configPath(rootDir), {\n schema: CONFIG_SCHEMA,\n issuePrefix\n });\n}\nasync function resolveIssuePrefix(rootDir, inputPrefix) {\n const existing = await getConfig(rootDir);\n if (existing?.issuePrefix) {\n return existing.issuePrefix;\n }\n if (!inputPrefix) {\n throw new Error(\"Issue prefix not set. Run `aglit init --prefix ABC` or `aglit new --prefix ABC`.\");\n }\n const prefix = normalizePrefix(inputPrefix);\n const config = {\n issuePrefix: prefix\n };\n await setConfig(rootDir, config);\n return prefix;\n}\n// src/create.ts\nimport * as path3 from \"path\";\n\n// src/uid.ts\nimport { randomBytes } from \"crypto\";\nfunction formatUuid(bytes) {\n const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, \"0\"));\n return [\n hex.slice(0, 4).join(\"\"),\n hex.slice(4, 6).join(\"\"),\n hex.slice(6, 8).join(\"\"),\n hex.slice(8, 10).join(\"\"),\n hex.slice(10, 16).join(\"\")\n ].join(\"-\");\n}\nfunction generateId() {\n const bun = globalThis.Bun;\n if (bun?.randomUUIDv7) {\n return bun.randomUUIDv7();\n }\n const bytes = randomBytes(16);\n const now = BigInt(Date.now());\n bytes[0] = Number(now >> 40n & 0xffn);\n bytes[1] = Number(now >> 32n & 0xffn);\n bytes[2] = Number(now >> 24n & 0xffn);\n bytes[3] = Number(now >> 16n & 0xffn);\n bytes[4] = Number(now >> 8n & 0xffn);\n bytes[5] = Number(now & 0xffn);\n bytes[6] = (bytes[6] ?? 0) & 15 | 112;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n return formatUuid(bytes);\n}\n\n// src/bun.ts\nfunction getBun() {\n return globalThis.Bun ?? {};\n}\nfunction parseYaml(input) {\n const bun = getBun();\n if (!bun.YAML?.parse) {\n throw new Error(\"Bun.YAML.parse unavailable\");\n }\n return bun.YAML.parse(input);\n}\nfunction tryRenderMarkdown(input, callbacks) {\n const bun = getBun();\n if (!bun.markdown?.render) {\n return false;\n }\n bun.markdown.render(input, callbacks);\n return true;\n}\n\n// src/frontmatter.ts\nfunction parseFrontmatter(text) {\n const input = text.startsWith(\"\\uFEFF\") ? text.slice(1) : text;\n if (!input.startsWith(\"---\")) {\n return { data: {}, body: text, hasFrontmatter: false };\n }\n const lines = input.split(/\\r?\\n/);\n if (lines[0]?.trim() !== \"---\") {\n return { data: {}, body: text, hasFrontmatter: false };\n }\n let endIndex = -1;\n for (let i = 1;i < lines.length; i += 1) {\n if (lines[i]?.trim() === \"---\") {\n endIndex = i;\n break;\n }\n }\n if (endIndex === -1) {\n return { data: {}, body: text, hasFrontmatter: false };\n }\n const raw = lines.slice(1, endIndex).join(`\n`);\n let data = {};\n let error;\n if (raw.trim()) {\n try {\n const parsed = parseYaml(raw);\n if (parsed && typeof parsed === \"object\" && !Array.isArray(parsed)) {\n data = parsed;\n }\n } catch (caught) {\n error = caught instanceof Error ? caught : new Error(String(caught));\n }\n }\n const body = lines.slice(endIndex + 1).join(`\n`);\n return { data, body, hasFrontmatter: true, error };\n}\nfunction getString(data, key) {\n const value = data[key];\n return typeof value === \"string\" ? value : undefined;\n}\nfunction renderFrontmatter(data, order = []) {\n const lines = [\"---\"];\n const seen = new Set;\n for (const key of order) {\n const value = data[key];\n if (value !== undefined) {\n lines.push(`${key}: ${value}`);\n seen.add(key);\n }\n }\n for (const key of Object.keys(data)) {\n if (seen.has(key)) {\n continue;\n }\n const value = data[key];\n if (value !== undefined) {\n lines.push(`${key}: ${value}`);\n }\n }\n lines.push(\"---\");\n return lines.join(`\n`);\n}\n\n// src/lock.ts\nimport * as fs2 from \"fs/promises\";\nvar DEFAULT_LOCK_TTL_MS = 30000;\nasync function acquireLock(rootDir, options) {\n const ttlMs = options?.ttlMs ?? DEFAULT_LOCK_TTL_MS;\n const path3 = lockPath(rootDir);\n await ensureLayout(rootDir);\n try {\n const handle = await fs2.open(path3, \"wx\");\n try {\n const payload = {\n pid: process.pid,\n createdAt: new Date().toISOString(),\n expiresAt: new Date(Date.now() + ttlMs).toISOString()\n };\n await handle.writeFile(`${JSON.stringify(payload)}\n`, \"utf8\");\n } finally {\n await handle.close();\n }\n return;\n } catch (error) {\n if (error.code !== \"EEXIST\") {\n throw error;\n }\n }\n const stat2 = await fs2.stat(path3);\n const isStale = Date.now() - stat2.mtimeMs > ttlMs;\n if (isStale) {\n await fs2.unlink(path3);\n return acquireLock(rootDir, options);\n }\n throw new Error(`AGLIT lock already held at ${path3}`);\n}\nasync function releaseLock(rootDir) {\n try {\n await fs2.unlink(lockPath(rootDir));\n } catch (error) {\n if (error.code === \"ENOENT\") {\n return;\n }\n throw error;\n }\n}\nasync function withLock(rootDir, fn, options) {\n await acquireLock(rootDir, options);\n try {\n return await fn();\n } finally {\n await releaseLock(rootDir);\n }\n}\n\n// src/create.ts\nfunction escapeRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nasync function allocateIssueKey(rootDir, prefix) {\n const files = await listIssueFiles(rootDir);\n const pattern = new RegExp(`^${escapeRegExp(prefix)}-(\\\\d+)$`);\n let max = 0;\n for (const filePath of files) {\n const key = path3.basename(filePath, \".md\");\n const match = key.match(pattern);\n if (!match)\n continue;\n const value = Number(match[1]);\n if (Number.isFinite(value) && value > max) {\n max = value;\n }\n }\n return `${prefix}-${max + 1}`;\n}\nfunction normalizeSlug(value) {\n const trimmed = value.trim().toLowerCase();\n const slug = trimmed.replace(/[^a-z0-9]+/g, \"-\").replace(/^-+/, \"\").replace(/-+$/, \"\");\n return slug || \"project\";\n}\nasync function allocateProjectSlug(rootDir, title, inputSlug) {\n const base = normalizeSlug(inputSlug ?? title);\n const files = await listProjectFiles(rootDir);\n const existing = new Set(files.map((file) => path3.basename(file, \".md\").toLowerCase()));\n if (!existing.has(base)) {\n return base;\n }\n let counter = 2;\n while (existing.has(`${base}-${counter}`)) {\n counter += 1;\n }\n return `${base}-${counter}`;\n}\nfunction issueTemplate(input) {\n const frontmatter = renderFrontmatter({\n schema: ISSUE_SCHEMA,\n id: input.id,\n status: input.status,\n priority: input.priority,\n ...input.projectId ? { projectId: input.projectId } : {}\n }, [\"schema\", \"id\", \"status\", \"priority\", \"projectId\"]);\n return [\n frontmatter,\n \"\",\n `# ${input.title.trim()}`,\n \"\",\n \"## Description\",\n \"\",\n \"## Acceptance\",\n \"\",\n \"## Constraints\",\n \"\",\n \"## Plan\",\n \"\",\n \"## Verification\",\n \"\"\n ].join(`\n`);\n}\nfunction projectTemplate(input) {\n const frontmatter = renderFrontmatter({\n schema: PROJECT_SCHEMA,\n id: input.id,\n status: input.status,\n priority: input.priority\n }, [\"schema\", \"id\", \"status\", \"priority\"]);\n return [\n frontmatter,\n \"\",\n `# ${input.title.trim()}`,\n \"\",\n \"## Description\",\n \"\",\n \"## Scope\",\n \"\",\n \"## Milestones\",\n \"\",\n \"## Notes\",\n \"\"\n ].join(`\n`);\n}\nasync function createIssueFile(rootDir, input) {\n if (!input.title?.trim()) {\n throw new Error(\"Issue title is required\");\n }\n return withLock(rootDir, async () => {\n await ensureLayout(rootDir);\n const prefix = await resolveIssuePrefix(rootDir, input.prefix);\n const key = await allocateIssueKey(rootDir, prefix);\n const id = generateId();\n const status = input.status ?? \"inbox\";\n const priority = input.priority ?? \"none\";\n const projectId = input.projectId?.trim() || undefined;\n const content = issueTemplate({\n title: input.title,\n id,\n status,\n priority,\n projectId\n });\n const filePath = issuePath(rootDir, key);\n await atomicWriteText(filePath, content);\n return { key, path: filePath, id };\n });\n}\nasync function createProjectFile(rootDir, input) {\n if (!input.title?.trim()) {\n throw new Error(\"Project title is required\");\n }\n return withLock(rootDir, async () => {\n await ensureLayout(rootDir);\n const slug = await allocateProjectSlug(rootDir, input.title, input.slug);\n const id = generateId();\n const status = input.status ?? \"inbox\";\n const priority = input.priority ?? \"none\";\n const content = projectTemplate({\n title: input.title,\n id,\n status,\n priority\n });\n const filePath = projectPath(rootDir, slug);\n await atomicWriteText(filePath, content);\n return { slug, path: filePath, id };\n });\n}\n// src/headers.ts\nimport * as path4 from \"path\";\nfunction normalizeStatus(value) {\n if (value && ISSUE_STATUSES.includes(value)) {\n return value;\n }\n return \"inbox\";\n}\nfunction normalizePriority(value) {\n if (value && PRIORITY_LEVELS.includes(value)) {\n return value;\n }\n return \"none\";\n}\nfunction extractTitle(body) {\n let title = null;\n const usedMarkdown = tryRenderMarkdown(body, {\n heading: (children, info) => {\n if (!title && info.level === 1) {\n const text = String(children).trim();\n if (text) {\n title = text;\n }\n }\n return \"\";\n }\n });\n if (!usedMarkdown) {\n const match = body.match(/^#\\s+(.+)$/m);\n if (match?.[1]) {\n return match[1].trim();\n }\n }\n return title;\n}\nfunction parseIssueHeader(filePath, text) {\n const key = path4.basename(filePath, \".md\");\n const { data, body } = parseFrontmatter(text);\n const schema = getString(data, \"schema\");\n const status = normalizeStatus(getString(data, \"status\"));\n const priority = normalizePriority(getString(data, \"priority\"));\n const title = extractTitle(body) ?? key;\n return {\n key,\n id: getString(data, \"id\"),\n status,\n priority,\n projectId: getString(data, \"projectId\"),\n title,\n path: filePath,\n schema\n };\n}\nfunction parseProjectHeader(filePath, text) {\n const slug = path4.basename(filePath, \".md\");\n const { data, body } = parseFrontmatter(text);\n const schema = getString(data, \"schema\");\n const status = normalizeStatus(getString(data, \"status\"));\n const priority = normalizePriority(getString(data, \"priority\"));\n const title = extractTitle(body) ?? slug;\n return {\n slug,\n id: getString(data, \"id\"),\n status,\n priority,\n title,\n path: filePath,\n schema\n };\n}\n\n// src/list.ts\nvar PRIORITY_ORDER = {\n high: 0,\n medium: 1,\n low: 2,\n none: 3\n};\nfunction keyNumber(key) {\n const match = key.match(/-(\\d+)$/);\n if (!match)\n return null;\n const value = Number(match[1]);\n return Number.isFinite(value) ? value : null;\n}\nfunction compareIssue(a, b) {\n if (a.priority !== b.priority) {\n return PRIORITY_ORDER[a.priority] - PRIORITY_ORDER[b.priority];\n }\n const aNum = keyNumber(a.key);\n const bNum = keyNumber(b.key);\n if (aNum !== null && bNum !== null && aNum !== bNum) {\n return aNum - bNum;\n }\n return a.key.localeCompare(b.key);\n}\nfunction compareProject(a, b) {\n if (a.priority !== b.priority) {\n return PRIORITY_ORDER[a.priority] - PRIORITY_ORDER[b.priority];\n }\n return a.slug.localeCompare(b.slug);\n}\nasync function listIssueHeaders(rootDir, filter = {}) {\n const files = await listIssueFiles(rootDir);\n const headers = [];\n const projectId = filter.projectId?.trim();\n for (const filePath of files) {\n const text = await readTextFile(filePath);\n const header = parseIssueHeader(filePath, text);\n if (filter.status && header.status !== filter.status) {\n continue;\n }\n if (projectId && header.projectId !== projectId) {\n continue;\n }\n headers.push(header);\n }\n headers.sort(compareIssue);\n if (filter.limit && headers.length > filter.limit) {\n return headers.slice(0, filter.limit);\n }\n return headers;\n}\nasync function listProjectHeaders(rootDir, filter = {}) {\n const files = await listProjectFiles(rootDir);\n const headers = [];\n for (const filePath of files) {\n const text = await readTextFile(filePath);\n const header = parseProjectHeader(filePath, text);\n if (filter.status && header.status !== filter.status) {\n continue;\n }\n headers.push(header);\n }\n headers.sort(compareProject);\n if (filter.limit && headers.length > filter.limit) {\n return headers.slice(0, filter.limit);\n }\n return headers;\n}\nasync function getProjectBySlug(rootDir, slug) {\n const normalized = slug.trim().toLowerCase();\n const projects = await listProjectHeaders(rootDir);\n return projects.find((project) => project.slug.toLowerCase() === normalized) ?? null;\n}\n// src/views.ts\nfunction toIssueSummary(header) {\n return {\n key: header.key,\n title: header.title,\n status: header.status,\n priority: header.priority,\n projectId: header.projectId\n };\n}\nasync function getBoardView(rootDir, filter = {}) {\n const limited = await listIssueHeaders(rootDir, filter);\n const groups = ISSUE_STATUSES.map((status) => ({\n status,\n issues: []\n }));\n const groupMap = new Map;\n for (const group of groups) {\n groupMap.set(group.status, group.issues);\n }\n for (const header of limited) {\n const list = groupMap.get(header.status);\n if (!list)\n continue;\n list.push(toIssueSummary(header));\n }\n return { groups };\n}\nasync function getProjectsView(rootDir, filter = {}) {\n const projects = await listProjectHeaders(rootDir, filter);\n const issues = await listIssueHeaders(rootDir);\n const counts = new Map;\n for (const issue of issues) {\n if (!issue.projectId)\n continue;\n counts.set(issue.projectId, (counts.get(issue.projectId) ?? 0) + 1);\n }\n const summaries = projects.map((project) => ({\n slug: project.slug,\n title: project.title,\n status: project.status,\n priority: project.priority,\n issueCount: project.id ? counts.get(project.id) ?? 0 : 0,\n id: project.id\n }));\n return { projects: summaries };\n}\n// src/render.ts\nfunction renderBoard(view) {\n const lines = [];\n for (const group of view.groups) {\n lines.push(`${group.status} (${group.issues.length})`);\n for (const issue of group.issues) {\n lines.push(`- ${issue.key}: ${issue.title} [${issue.priority}]`);\n }\n lines.push(\"\");\n }\n return lines.join(`\n`).trimEnd();\n}\nfunction renderList(issues) {\n if (!issues.length) {\n return \"No issues.\";\n }\n return issues.map((issue) => `- ${issue.key}: ${issue.title} [${issue.status}] [${issue.priority}]`).join(`\n`);\n}\nfunction renderProjects(view) {\n if (!view.projects.length) {\n return \"No projects.\";\n }\n return view.projects.map((project) => `- ${project.slug}: ${project.title} [${project.status}] [${project.priority}] (issues: ${project.issueCount})`).join(`\n`);\n}\n// src/check.ts\nvar UUID_V7_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\nfunction isUuidV7(value) {\n return UUID_V7_REGEX.test(value);\n}\nfunction isValidStatus(value) {\n return !!value && ISSUE_STATUSES.includes(value);\n}\nfunction isValidPriority(value) {\n return !!value && PRIORITY_LEVELS.includes(value);\n}\nasync function checkWorkspace(rootDir) {\n const problems = [];\n const issueFiles = await listIssueFiles(rootDir);\n const projectFiles = await listProjectFiles(rootDir);\n const projectIds = new Map;\n const issueIds = new Map;\n for (const filePath of projectFiles) {\n const text = await readTextFile(filePath);\n const { data, hasFrontmatter, error } = parseFrontmatter(text);\n if (!hasFrontmatter) {\n problems.push({ filePath, message: \"Missing frontmatter\", level: \"error\" });\n continue;\n }\n if (error) {\n problems.push({\n filePath,\n message: `Frontmatter parse error: ${error.message}`,\n level: \"error\"\n });\n continue;\n }\n const schema = getString(data, \"schema\");\n if (schema !== PROJECT_SCHEMA) {\n problems.push({\n filePath,\n message: `Invalid schema (expected ${PROJECT_SCHEMA})`,\n level: \"error\"\n });\n }\n const id = getString(data, \"id\");\n if (!id) {\n problems.push({ filePath, message: \"Missing id\", level: \"error\" });\n } else if (!isUuidV7(id)) {\n problems.push({ filePath, message: \"Invalid UUIDv7 id\", level: \"error\" });\n } else if (projectIds.has(id)) {\n problems.push({\n filePath,\n message: `Duplicate project id (also in ${projectIds.get(id)})`,\n level: \"error\"\n });\n } else {\n projectIds.set(id, filePath);\n }\n const status = getString(data, \"status\");\n if (!isValidStatus(status)) {\n problems.push({ filePath, message: \"Invalid or missing status\", level: \"error\" });\n }\n const priority = getString(data, \"priority\");\n if (!isValidPriority(priority)) {\n problems.push({ filePath, message: \"Invalid or missing priority\", level: \"error\" });\n }\n }\n for (const filePath of issueFiles) {\n const text = await readTextFile(filePath);\n const { data, hasFrontmatter, error } = parseFrontmatter(text);\n if (!hasFrontmatter) {\n problems.push({ filePath, message: \"Missing frontmatter\", level: \"error\" });\n continue;\n }\n if (error) {\n problems.push({\n filePath,\n message: `Frontmatter parse error: ${error.message}`,\n level: \"error\"\n });\n continue;\n }\n const schema = getString(data, \"schema\");\n if (schema !== ISSUE_SCHEMA) {\n problems.push({\n filePath,\n message: `Invalid schema (expected ${ISSUE_SCHEMA})`,\n level: \"error\"\n });\n }\n const id = getString(data, \"id\");\n if (!id) {\n problems.push({ filePath, message: \"Missing id\", level: \"error\" });\n } else if (!isUuidV7(id)) {\n problems.push({ filePath, message: \"Invalid UUIDv7 id\", level: \"error\" });\n } else if (issueIds.has(id)) {\n problems.push({\n filePath,\n message: `Duplicate issue id (also in ${issueIds.get(id)})`,\n level: \"error\"\n });\n } else {\n issueIds.set(id, filePath);\n }\n const status = getString(data, \"status\");\n if (!isValidStatus(status)) {\n problems.push({ filePath, message: \"Invalid or missing status\", level: \"error\" });\n }\n const priority = getString(data, \"priority\");\n if (!isValidPriority(priority)) {\n problems.push({ filePath, message: \"Invalid or missing priority\", level: \"error\" });\n }\n const projectId = getString(data, \"projectId\");\n if (projectId && !isUuidV7(projectId)) {\n problems.push({\n filePath,\n message: \"projectId is not a UUIDv7\",\n level: \"error\"\n });\n } else if (projectId && !projectIds.has(projectId)) {\n problems.push({\n filePath,\n message: \"projectId does not match any project\",\n level: \"warning\"\n });\n }\n }\n return { problems, issues: issueFiles.length, projects: projectFiles.length };\n}\nexport {\n setConfig,\n resolveIssuePrefix,\n renderProjects,\n renderList,\n renderBoard,\n listProjectHeaders,\n listIssueHeaders,\n getProjectsView,\n getProjectBySlug,\n getConfig,\n getBoardView,\n generateId,\n ensureAglit,\n createProjectFile,\n createIssueFile,\n checkWorkspace,\n PROJECT_SCHEMA,\n PRIORITY_LEVELS,\n ISSUE_STATUSES,\n ISSUE_SCHEMA,\n CONFIG_SCHEMA\n};\n\n//# debugId=2B7791C99A7AF37764756E2164756E21\n//# sourceMappingURL=index.js.map\n",
|
|
10
|
+
"import * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\n\nconst AGLIT_DIR = \".aglit\";\n\nasync function exists(dirPath: string): Promise<boolean> {\n try {\n await fs.access(dirPath);\n return true;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return false;\n }\n throw error;\n }\n}\n\nexport async function findWorkspaceRoot(startDir: string): Promise<string | null> {\n let current = path.resolve(startDir);\n\n while (true) {\n if (await exists(path.join(current, AGLIT_DIR))) {\n return current;\n }\n\n const parent = path.dirname(current);\n if (parent === current) {\n return null;\n }\n current = parent;\n }\n}\n\nexport async function requireWorkspaceRoot(startDir: string): Promise<string> {\n const root = await findWorkspaceRoot(startDir);\n if (!root) {\n throw new Error(\"AGLIT not initialized. Run `aglit init`.\");\n }\n return root;\n}\n",
|
|
11
|
+
"import * as path from \"node:path\";\n\nimport { buildCommand } from \"@stricli/core\";\n\nimport { checkWorkspace } from \"@jmmarotta/aglit-sdk\";\n\nimport type { AglitCliContext } from \"../types\";\nimport { requireWorkspaceRoot } from \"../workspace\";\n\nexport const checkCommand = buildCommand({\n func: async function (this: AglitCliContext) {\n const root = await requireWorkspaceRoot(this.cwd);\n const report = await checkWorkspace(root);\n\n const lines: string[] = [];\n lines.push(`issues: ${report.issues}`);\n lines.push(`projects: ${report.projects}`);\n lines.push(`problems: ${report.problems.length}`);\n\n if (report.problems.length) {\n lines.push(\"\");\n for (const problem of report.problems) {\n const relative = path.relative(root, problem.filePath) || problem.filePath;\n lines.push(`- [${problem.level}] ${relative}: ${problem.message}`);\n }\n }\n\n this.process.stdout.write(`${lines.join(\"\\n\")}\\n`);\n },\n parameters: {},\n docs: {\n brief: \"Validate AGLIT state\",\n },\n});\n",
|
|
12
|
+
"import type { FlagParametersForType, InputParser } from \"@stricli/core\";\nimport { buildCommand } from \"@stricli/core\";\n\nimport {\n ISSUE_STATUSES,\n getBoardView,\n getProjectBySlug,\n listIssueHeaders,\n renderBoard,\n renderList,\n type IssueStatus,\n} from \"@jmmarotta/aglit-sdk\";\n\nimport type { AglitCliContext } from \"../types\";\nimport { requireWorkspaceRoot } from \"../workspace\";\n\ntype GroupMode = \"status\" | \"none\";\n\ninterface ListFlags {\n status?: IssueStatus;\n project?: string;\n group?: GroupMode;\n}\n\nconst statusParser: InputParser<IssueStatus> = (input: string) => {\n const value = input.toLowerCase();\n if ((ISSUE_STATUSES as readonly string[]).includes(value)) {\n return value as IssueStatus;\n }\n throw new Error(`Invalid status: ${input}`);\n};\n\nconst groupParser: InputParser<GroupMode> = (input: string) => {\n const value = input.toLowerCase();\n if (value === \"status\" || value === \"none\") {\n return value as GroupMode;\n }\n throw new Error(`Invalid group: ${input}`);\n};\n\nconst listFlags: FlagParametersForType<ListFlags, AglitCliContext> = {\n status: {\n kind: \"parsed\",\n parse: statusParser,\n brief: \"Filter by status\",\n optional: true,\n },\n project: {\n kind: \"parsed\",\n parse: String,\n brief: \"Filter by project slug\",\n optional: true,\n },\n group: {\n kind: \"parsed\",\n parse: groupParser,\n brief: \"Group by status or none\",\n optional: true,\n },\n};\n\nexport const listCommand = buildCommand({\n func: async function (this: AglitCliContext, flags: ListFlags) {\n const root = await requireWorkspaceRoot(this.cwd);\n let projectId: string | undefined;\n if (flags.project) {\n const project = await getProjectBySlug(root, flags.project);\n if (!project?.id) {\n throw new Error(`Project not found or missing id: ${flags.project}`);\n }\n projectId = project.id;\n }\n\n const group = flags.group ?? \"status\";\n if (group === \"none\") {\n const headers = await listIssueHeaders(root, {\n status: flags.status,\n projectId,\n });\n const summaries = headers.map((issue) => ({\n key: issue.key,\n title: issue.title,\n status: issue.status,\n priority: issue.priority,\n projectId: issue.projectId,\n }));\n this.process.stdout.write(`${renderList(summaries)}\\n`);\n return;\n }\n\n const view = await getBoardView(root, {\n status: flags.status,\n projectId,\n });\n this.process.stdout.write(`${renderBoard(view)}\\n`);\n },\n parameters: {\n flags: listFlags,\n },\n docs: {\n brief: \"List issues\",\n },\n});\n",
|
|
13
|
+
"import type { FlagParametersForType, InputParser } from \"@stricli/core\";\nimport { buildCommand } from \"@stricli/core\";\n\nimport {\n ISSUE_STATUSES,\n PRIORITY_LEVELS,\n createIssueFile,\n getProjectBySlug,\n type IssueStatus,\n type Priority,\n} from \"@jmmarotta/aglit-sdk\";\n\nimport type { AglitCliContext } from \"../types\";\nimport { requireWorkspaceRoot } from \"../workspace\";\n\ninterface NewFlags {\n status?: IssueStatus;\n priority?: Priority;\n project?: string;\n prefix?: string;\n}\n\nconst statusParser: InputParser<IssueStatus> = (input: string) => {\n const value = input.toLowerCase();\n if ((ISSUE_STATUSES as readonly string[]).includes(value)) {\n return value as IssueStatus;\n }\n throw new Error(`Invalid status: ${input}`);\n};\n\nconst priorityParser: InputParser<Priority> = (input: string) => {\n const value = input.toLowerCase();\n if ((PRIORITY_LEVELS as readonly string[]).includes(value)) {\n return value as Priority;\n }\n throw new Error(`Invalid priority: ${input}`);\n};\n\nconst newFlags: FlagParametersForType<NewFlags, AglitCliContext> = {\n status: {\n kind: \"parsed\",\n parse: statusParser,\n brief: \"Issue status\",\n optional: true,\n },\n priority: {\n kind: \"parsed\",\n parse: priorityParser,\n brief: \"Priority (none|low|medium|high)\",\n optional: true,\n },\n project: {\n kind: \"parsed\",\n parse: String,\n brief: \"Project slug\",\n optional: true,\n },\n prefix: {\n kind: \"parsed\",\n parse: String,\n brief: \"Issue key prefix\",\n optional: true,\n },\n};\n\nexport const newCommand = buildCommand({\n func: async function (this: AglitCliContext, flags: NewFlags, title: string) {\n const root = await requireWorkspaceRoot(this.cwd);\n let projectId: string | undefined;\n if (flags.project) {\n const project = await getProjectBySlug(root, flags.project);\n if (!project?.id) {\n throw new Error(`Project not found or missing id: ${flags.project}`);\n }\n projectId = project.id;\n }\n\n const issue = await createIssueFile(root, {\n title,\n status: flags.status,\n priority: flags.priority,\n projectId,\n prefix: flags.prefix,\n });\n\n this.process.stdout.write(`${issue.key} ${issue.path}\\n`);\n },\n parameters: {\n flags: newFlags,\n positional: {\n kind: \"tuple\",\n parameters: [\n {\n brief: \"Issue title\",\n parse: String,\n },\n ],\n },\n },\n docs: {\n brief: \"Create a new issue\",\n },\n});\n",
|
|
14
|
+
"import type { FlagParametersForType, InputParser } from \"@stricli/core\";\nimport { buildCommand } from \"@stricli/core\";\n\nimport {\n ISSUE_STATUSES,\n PRIORITY_LEVELS,\n createProjectFile,\n type IssueStatus,\n type Priority,\n} from \"@jmmarotta/aglit-sdk\";\n\nimport type { AglitCliContext } from \"../types\";\nimport { requireWorkspaceRoot } from \"../workspace\";\n\ninterface ProjectNewFlags {\n status?: IssueStatus;\n priority?: Priority;\n slug?: string;\n}\n\nconst statusParser: InputParser<IssueStatus> = (input: string) => {\n const value = input.toLowerCase();\n if ((ISSUE_STATUSES as readonly string[]).includes(value)) {\n return value as IssueStatus;\n }\n throw new Error(`Invalid status: ${input}`);\n};\n\nconst priorityParser: InputParser<Priority> = (input: string) => {\n const value = input.toLowerCase();\n if ((PRIORITY_LEVELS as readonly string[]).includes(value)) {\n return value as Priority;\n }\n throw new Error(`Invalid priority: ${input}`);\n};\n\nconst projectNewFlags: FlagParametersForType<ProjectNewFlags, AglitCliContext> = {\n status: {\n kind: \"parsed\",\n parse: statusParser,\n brief: \"Project status\",\n optional: true,\n },\n priority: {\n kind: \"parsed\",\n parse: priorityParser,\n brief: \"Priority (none|low|medium|high)\",\n optional: true,\n },\n slug: {\n kind: \"parsed\",\n parse: String,\n brief: \"Project slug (optional override)\",\n optional: true,\n },\n};\n\nexport const projectNewCommand = buildCommand({\n func: async function (this: AglitCliContext, flags: ProjectNewFlags, title: string) {\n const root = await requireWorkspaceRoot(this.cwd);\n const project = await createProjectFile(root, {\n title,\n status: flags.status,\n priority: flags.priority,\n slug: flags.slug,\n });\n this.process.stdout.write(`${project.slug} ${project.path}\\n`);\n },\n parameters: {\n flags: projectNewFlags,\n positional: {\n kind: \"tuple\",\n parameters: [\n {\n brief: \"Project title\",\n parse: String,\n },\n ],\n },\n },\n docs: {\n brief: \"Create a new project\",\n },\n});\n",
|
|
15
|
+
"import type { FlagParametersForType, InputParser } from \"@stricli/core\";\nimport { buildCommand } from \"@stricli/core\";\n\nimport {\n ISSUE_STATUSES,\n getProjectsView,\n renderProjects,\n type IssueStatus,\n} from \"@jmmarotta/aglit-sdk\";\n\nimport type { AglitCliContext } from \"../types\";\nimport { requireWorkspaceRoot } from \"../workspace\";\n\ninterface ProjectsFlags {\n status?: IssueStatus;\n}\n\nconst statusParser: InputParser<IssueStatus> = (input: string) => {\n const value = input.toLowerCase();\n if ((ISSUE_STATUSES as readonly string[]).includes(value)) {\n return value as IssueStatus;\n }\n throw new Error(`Invalid status: ${input}`);\n};\n\nconst projectsFlags: FlagParametersForType<ProjectsFlags, AglitCliContext> = {\n status: {\n kind: \"parsed\",\n parse: statusParser,\n brief: \"Filter by status\",\n optional: true,\n },\n};\n\nexport const projectsCommand = buildCommand({\n func: async function (this: AglitCliContext, flags: ProjectsFlags) {\n const root = await requireWorkspaceRoot(this.cwd);\n const view = await getProjectsView(root, { status: flags.status });\n this.process.stdout.write(`${renderProjects(view)}\\n`);\n },\n parameters: {\n flags: projectsFlags,\n },\n docs: {\n brief: \"List projects\",\n },\n});\n"
|
|
16
|
+
],
|
|
17
|
+
"mappings": "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",
|
|
18
|
+
"debugId": "FD892239846FB21564756E2164756E21",
|
|
19
|
+
"names": []
|
|
20
|
+
}
|
package/dist/routes.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,MAAM,qEAYjB,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,GAAG,EAAE,MAAM,CAAC;CACb"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAiBA,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAchF;AAED,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM5E"}
|
package/package.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "aglit",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"bin": {
|
|
15
|
+
"aglit": "./dist/index.js"
|
|
16
|
+
},
|
|
17
|
+
"files": ["dist"],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "bun build src/index.ts --outdir dist --target bun --format esm --sourcemap --external @stricli/core --banner '#!/usr/bin/env bun\n' && tsgo -p tsconfig.json --emitDeclarationOnly",
|
|
20
|
+
"prepack": "bun run build",
|
|
21
|
+
"publish:dry": "bun publish --dry-run",
|
|
22
|
+
"publish:run": "bun publish",
|
|
23
|
+
"typecheck": "turbo run build --filter @jmmarotta/aglit-sdk && tsgo -p tsconfig.test.json --noEmit",
|
|
24
|
+
"lint": "oxlint src",
|
|
25
|
+
"fmt": "oxfmt --write src",
|
|
26
|
+
"fmt:check": "oxfmt --check src",
|
|
27
|
+
"test": "turbo run build --filter @jmmarotta/aglit-sdk && bun test"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@stricli/core": "^1"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@jmmarotta/aglit-sdk": "0.0.0"
|
|
34
|
+
}
|
|
35
|
+
}
|