import"./cli-0.5.4-5t3jj85n.mjs";import{Aea as M,Bea as O,Cea as ft,Zda as E,_da as dt}from"./cli-0.5.4-x1fzfxmm.mjs";import"./cli-0.5.4-jmc3bzbn.mjs";import"./cli-0.5.4-959vxhhb.mjs";import{Zma as l}from"./cli-0.5.4-aacw1src.mjs";import{join as m}from"path";function c(t){let e=m(t,K,X);return{root:e,pagesDir:m(e,"pages"),sourcesDir:m(e,"sources"),schemaFile:m(e,"schema.md"),indexFile:m(e,"index.md"),logFile:m(e,"log.md")}}var K=".claudio",X="wiki";var p=()=>{};import{mkdir as J,writeFile as G}from"fs/promises";import{basename as H,relative as W}from"path";function Q(t){return`# Claudio Wiki Schema

This wiki stores durable, human-readable project knowledge for ${t}.

## Goals

- Keep useful project knowledge in markdown, not only in chat history
- Prefer synthesized facts over raw copy-paste
- Keep source attribution explicit
- Make pages easy for both humans and agents to update

## Structure

- \`index.md\`: top-level navigation and major topics
- \`log.md\`: append-only update log
- \`pages/\`: durable topic and architecture pages
- \`sources/\`: source ingestion notes and summaries

## Page Rules

- Keep pages focused on one topic
- Use stable headings such as:
  - \`## Summary\`
  - \`## Key Facts\`
  - \`## Relationships\`
  - \`## Open Questions\`
  - \`## Sources\`
- Add or update facts only when they are grounded in project files or explicit source notes
- Prefer editing an existing page over creating duplicates
`}function B(t){return`# ${t} Wiki

This wiki is maintained by Claudio as a durable project knowledge layer.

## Core Pages

- [Architecture](./pages/architecture.md)

## Sources

- Source notes live in [sources/](./sources/)

## Recent Updates

- See [log.md](./log.md)
`}function q(t){return`# Wiki Update Log

- ${t}: Wiki initialized by Claudio
`}function V(t){return`# Architecture

## Summary

High-level architecture notes for ${t}.

## Key Facts

- This page is the starting point for durable architecture knowledge.

## Relationships

- Link this page to major subsystems as the wiki grows.

## Open Questions

- What are the most important runtime subsystems?
- Which files best represent the system architecture?

## Sources

- Wiki bootstrap
`}async function f(t,e,i){try{await G(t,e,{encoding:"utf8",flag:"wx"}),i.push(t)}catch(r){if(typeof r==="object"&&r!==null&&"code"in r&&r.code==="EEXIST")return;throw r}}async function h(t){let e=c(t),i=[],r=[];for(let s of[e.root,e.pagesDir,e.sourcesDir])await J(s,{recursive:!0}),i.push(s);let n=H(t),o=new Date().toISOString();return await f(e.schemaFile,Q(n),r),await f(e.indexFile,B(n),r),await f(e.logFile,q(o),r),await f(`${e.pagesDir}/architecture.md`,V(n),r),{root:e.root,createdFiles:r.map((s)=>W(t,s)),createdDirectories:i.map((s)=>W(t,s)),alreadyExisted:r.length===0}}var y=l(()=>{p()});import{readdir as Y,readFile as Z,writeFile as tt}from"fs/promises";import{basename as w,relative as F}from"path";async function k(t){let e=await Y(t,{withFileTypes:!0}),i=[];for(let r of e){let n=`${t}/${r.name}`;if(r.isDirectory())i.push(...await k(n));else if(r.isFile()&&r.name.endsWith(".md"))i.push(n)}return i.sort()}async function et(t){let i=(await Z(t,"utf8")).split(`
`).map((r)=>r.trim()).find((r)=>r.startsWith("# "));return i?i.replace(/^#\s+/,""):w(t,".md")}async function P(t){let e=c(t),i=await k(e.pagesDir),r=await k(e.sourcesDir),n=await Promise.all(i.map(async(a)=>{let u=F(e.root,a);return`- [${await et(a)}](./${u.replace(/\\/g,"/")})`})),o=r.map((a)=>{let u=F(e.root,a).replace(/\\/g,"/");return`- [${w(a,".md")}](./${u})`}),s=`# ${w(t)} Wiki

This wiki is maintained by Claudio as a durable project knowledge layer.

## Core Pages

${n.length>0?n.join(`
`):"- No pages yet"}

## Sources

${o.length>0?o.join(`
`):"- No sources yet"}

## Recent Updates

- See [log.md](./log.md)
`;await tt(e.indexFile,s,"utf8")}var b=l(()=>{p()});function C(t){return t.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")}function I(t,e=280){let i=t.replace(/\s+/g," ").trim();if(!i)return"No summary available.";if(i.length<=e)return i;return`${i.slice(0,e-1).trimEnd()}…`}function j(t,e){let i=e.split(`
`).map((r)=>r.trim()).find(Boolean);if(!i)return t;return i.replace(/^#+\s*/,"")||t}var R=()=>{};import{appendFile as it,readFile as rt,stat as nt,writeFile as st}from"fs/promises";import{basename as ot,extname as at,isAbsolute as ct,relative as L,resolve as ut}from"path";function lt(t){let{title:e,sourcePath:i,ingestedAt:r,summary:n,excerpt:o}=t;return`# ${e}

## Source

- Path: \`${i}\`
- Ingested at: ${r}

## Summary

${n}

## Excerpt

\`\`\`
${o}
\`\`\`

## Linked Pages

- [Architecture](../pages/architecture.md)
`}function mt(t,e,i){return`- ${i}: Ingested \`${t}\` into source note "${e}"`}async function A(t,e){await h(t);let i=ct(e)?e:ut(t,e);if(!(await nt(i)).isFile())throw Error(`Not a file: ${i}`);let n=await rt(i,"utf8"),o=L(t,i).replace(/\\/g,"/"),s=new Date().toISOString(),a=ot(i,at(i)),u=j(a,n),d=I(n),U=n.split(`
`).slice(0,20).join(`
`).trim(),_=C(`${a}-${Date.now()}`)||`source-${Date.now()}`,S=c(t),x=`${S.sourcesDir}/${_}.md`;return await st(x,lt({title:u,sourcePath:o,ingestedAt:s,summary:d,excerpt:U}),"utf8"),await it(S.logFile,`${mt(o,u,s)}
`,"utf8"),await P(t),{sourceFile:o,sourceNote:L(t,x).replace(/\\/g,"/"),summary:d,title:u}}var T=l(()=>{y();b();p();R()});import{readdir as pt,stat as D}from"fs/promises";async function g(t){try{return await D(t),!0}catch{return!1}}async function $(t){if(!await g(t))return[];let e=await pt(t,{withFileTypes:!0}),i=[];for(let r of e){let n=`${t}/${r.name}`;if(r.isDirectory())i.push(...await $(n));else if(r.isFile()&&r.name.endsWith(".md"))i.push(n)}return i}async function gt(t){let e=[];for(let i of t)try{let r=await D(i);e.push(r.mtimeMs)}catch{continue}if(e.length===0)return null;return new Date(Math.max(...e)).toISOString()}async function z(t){let e=c(t),[i,r,n,o,s,a]=await Promise.all([g(e.root),g(e.schemaFile),g(e.indexFile),g(e.logFile),$(e.pagesDir),$(e.sourcesDir)]);return{initialized:i&&r&&n&&o,root:e.root,pageCount:s.length,sourceCount:a.length,hasSchema:r,hasIndex:n,hasLog:o,lastUpdatedAt:await gt([e.schemaFile,e.indexFile,e.logFile,...s,...a])}}var N=l(()=>{p()});function v(){return`Usage: /wiki [init|status|ingest <path>]

Manage the Claudio project wiki stored in .claudio/wiki.

Commands:
  /wiki init    Initialize the wiki structure in the current project
  /wiki status  Show wiki status and page/source counts
  /wiki ingest  Ingest a local file into wiki sources

Examples:
  /wiki init
  /wiki status
  /wiki ingest README.md`}function ht(t){let e=[`Initialized Claudio wiki at ${t.root}`];if(t.alreadyExisted)return e.push("","Wiki already existed. No new files were created."),e.join(`
`);if(t.createdFiles.length>0){e.push("","Created files:");for(let i of t.createdFiles)e.push(`- ${i}`)}return e.join(`
`)}function yt(t){if(!t.initialized)return`Claudio wiki is not initialized in this project.

Run /wiki init to create ${t.root}.`;return["Claudio wiki status","",`Root: ${t.root}`,`Pages: ${t.pageCount}`,`Sources: ${t.sourceCount}`,`Schema: ${t.hasSchema?"present":"missing"}`,`Index: ${t.hasIndex?"present":"missing"}`,`Log: ${t.hasLog?"present":"missing"}`,`Last updated: ${t.lastUpdatedAt??"unknown"}`].join(`
`)}function wt(t){return[`Ingested ${t.sourceFile} into the Claudio wiki.`,"",`Title: ${t.title}`,`Source note: ${t.sourceNote}`,`Summary: ${t.summary}`].join(`
`)}async function kt(t,e){let i=E(),r=e.trim().toLowerCase();if(M.includes(r)||O.includes(r)){t(v(),{display:"system"});return}if(!r||r==="status"){t(yt(await z(i)),{display:"system"});return}if(r==="init"){t(ht(await h(i)),{display:"system"});return}if(r.startsWith("ingest")){let n=e.trim().slice(6).trim();if(!n){t("Usage: /wiki ingest <local-file-path>",{display:"system"});return}t(wt(await A(i,n)),{display:"system"});return}t(`Unknown wiki subcommand: ${e.trim()}

${v()}`,{display:"system"})}var Ht=async(t,e,i)=>{return await kt(t,i??""),null};var $t=l(()=>{ft();T();y();N();dt()});$t();export{Ht as call};
