panopticon-cli 0.4.32 → 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.
Files changed (142) hide show
  1. package/README.md +96 -210
  2. package/dist/{agents-BDFHF4T3.js → agents-E43Y3HNU.js} +10 -7
  3. package/dist/chunk-7SN4L4PH.js +150 -0
  4. package/dist/chunk-7SN4L4PH.js.map +1 -0
  5. package/dist/{chunk-2NIAOCIC.js → chunk-AAFQANKW.js} +358 -97
  6. package/dist/chunk-AAFQANKW.js.map +1 -0
  7. package/dist/chunk-AQXETQHW.js +113 -0
  8. package/dist/chunk-AQXETQHW.js.map +1 -0
  9. package/dist/chunk-B3PF6JPQ.js +212 -0
  10. package/dist/chunk-B3PF6JPQ.js.map +1 -0
  11. package/dist/chunk-CFCUOV3Q.js +669 -0
  12. package/dist/chunk-CFCUOV3Q.js.map +1 -0
  13. package/dist/chunk-CWELWPWQ.js +32 -0
  14. package/dist/chunk-CWELWPWQ.js.map +1 -0
  15. package/dist/chunk-DI7ABPNQ.js +352 -0
  16. package/dist/chunk-DI7ABPNQ.js.map +1 -0
  17. package/dist/{chunk-VU4FLXV5.js → chunk-FQ66DECN.js} +31 -4
  18. package/dist/chunk-FQ66DECN.js.map +1 -0
  19. package/dist/{chunk-VIWUCJ4V.js → chunk-FTCPTHIJ.js} +57 -432
  20. package/dist/chunk-FTCPTHIJ.js.map +1 -0
  21. package/dist/{review-status-GWQYY77L.js → chunk-GFP3PIPB.js} +14 -7
  22. package/dist/chunk-GFP3PIPB.js.map +1 -0
  23. package/dist/chunk-GR6ZZMCX.js +816 -0
  24. package/dist/chunk-GR6ZZMCX.js.map +1 -0
  25. package/dist/chunk-HJSM6E6U.js +1038 -0
  26. package/dist/chunk-HJSM6E6U.js.map +1 -0
  27. package/dist/{chunk-XP2DXWYP.js → chunk-HZT2AOPN.js} +164 -39
  28. package/dist/chunk-HZT2AOPN.js.map +1 -0
  29. package/dist/chunk-JQBV3Q2W.js +29 -0
  30. package/dist/chunk-JQBV3Q2W.js.map +1 -0
  31. package/dist/{chunk-BWGFN44T.js → chunk-JT4O4YVM.js} +28 -16
  32. package/dist/chunk-JT4O4YVM.js.map +1 -0
  33. package/dist/chunk-NTO3EDB3.js +600 -0
  34. package/dist/chunk-NTO3EDB3.js.map +1 -0
  35. package/dist/{chunk-JY7R7V4G.js → chunk-OMNXYPXC.js} +2 -2
  36. package/dist/chunk-OMNXYPXC.js.map +1 -0
  37. package/dist/chunk-PELXV435.js +215 -0
  38. package/dist/chunk-PELXV435.js.map +1 -0
  39. package/dist/chunk-PPRFKTVC.js +154 -0
  40. package/dist/chunk-PPRFKTVC.js.map +1 -0
  41. package/dist/chunk-WQG2TYCB.js +677 -0
  42. package/dist/chunk-WQG2TYCB.js.map +1 -0
  43. package/dist/{chunk-HCTJFIJJ.js → chunk-YLPSQAM2.js} +2 -2
  44. package/dist/{chunk-HCTJFIJJ.js.map → chunk-YLPSQAM2.js.map} +1 -1
  45. package/dist/{chunk-6HXKTOD7.js → chunk-ZTFNYOC7.js} +53 -38
  46. package/dist/chunk-ZTFNYOC7.js.map +1 -0
  47. package/dist/cli/index.js +5103 -3165
  48. package/dist/cli/index.js.map +1 -1
  49. package/dist/{config-BOAMSKTF.js → config-4CJNUE3O.js} +7 -3
  50. package/dist/dashboard/prompts/merge-agent.md +217 -0
  51. package/dist/dashboard/prompts/review-agent.md +409 -0
  52. package/dist/dashboard/prompts/sync-main.md +84 -0
  53. package/dist/dashboard/prompts/test-agent.md +283 -0
  54. package/dist/dashboard/prompts/work-agent.md +249 -0
  55. package/dist/dashboard/public/assets/index-BxpjweAL.css +32 -0
  56. package/dist/dashboard/public/assets/index-DQHkwvvJ.js +743 -0
  57. package/dist/dashboard/public/index.html +2 -2
  58. package/dist/dashboard/server.js +17619 -4044
  59. package/dist/{dns-L3L2BB27.js → dns-7BDJSD3E.js} +4 -2
  60. package/dist/{feedback-writer-AAKF5BTK.js → feedback-writer-LVZ5TFYZ.js} +8 -4
  61. package/dist/feedback-writer-LVZ5TFYZ.js.map +1 -0
  62. package/dist/hume-WMAUBBV2.js +13 -0
  63. package/dist/index.d.ts +162 -40
  64. package/dist/index.js +67 -23
  65. package/dist/index.js.map +1 -1
  66. package/dist/{projects-VXRUCMLM.js → projects-JEIVIYC6.js} +3 -3
  67. package/dist/rally-RKFSWC7E.js +10 -0
  68. package/dist/{remote-agents-Z3R2A5BN.js → remote-agents-TFSMW7GN.js} +2 -2
  69. package/dist/{remote-workspace-2G6V2KNP.js → remote-workspace-AHVHQEES.js} +8 -8
  70. package/dist/review-status-EPFG4XM7.js +19 -0
  71. package/dist/shadow-state-5MDP6YXH.js +30 -0
  72. package/dist/shadow-state-5MDP6YXH.js.map +1 -0
  73. package/dist/{specialist-context-N32QBNNQ.js → specialist-context-ZC6A4M3I.js} +8 -7
  74. package/dist/{specialist-context-N32QBNNQ.js.map → specialist-context-ZC6A4M3I.js.map} +1 -1
  75. package/dist/{specialist-logs-GF3YV4KL.js → specialist-logs-KLGJCEUL.js} +7 -6
  76. package/dist/specialist-logs-KLGJCEUL.js.map +1 -0
  77. package/dist/{specialists-JBIW6MP4.js → specialists-O4HWDJL5.js} +7 -6
  78. package/dist/specialists-O4HWDJL5.js.map +1 -0
  79. package/dist/tldr-daemon-T3THOUGT.js +21 -0
  80. package/dist/tldr-daemon-T3THOUGT.js.map +1 -0
  81. package/dist/traefik-QN7R5I6V.js +19 -0
  82. package/dist/traefik-QN7R5I6V.js.map +1 -0
  83. package/dist/tunnel-W2GZBLEV.js +13 -0
  84. package/dist/tunnel-W2GZBLEV.js.map +1 -0
  85. package/dist/workspace-manager-IE4JL2JP.js +22 -0
  86. package/dist/workspace-manager-IE4JL2JP.js.map +1 -0
  87. package/package.json +2 -2
  88. package/scripts/heartbeat-hook +37 -10
  89. package/scripts/patches/llm-tldr-tsx-support.py +109 -0
  90. package/scripts/pre-tool-hook +26 -15
  91. package/scripts/record-cost-event.js +177 -43
  92. package/scripts/record-cost-event.ts +87 -3
  93. package/scripts/statusline.sh +169 -0
  94. package/scripts/stop-hook +21 -11
  95. package/scripts/tldr-post-edit +72 -0
  96. package/scripts/tldr-read-enforcer +275 -0
  97. package/scripts/work-agent-stop-hook +137 -0
  98. package/skills/check-merged/SKILL.md +143 -0
  99. package/skills/crash-investigation/SKILL.md +301 -0
  100. package/skills/github-cli/SKILL.md +185 -0
  101. package/skills/myn-standards/SKILL.md +351 -0
  102. package/skills/pan-reopen/SKILL.md +65 -0
  103. package/skills/pan-sync-main/SKILL.md +87 -0
  104. package/skills/pan-tldr/SKILL.md +149 -0
  105. package/skills/react-best-practices/SKILL.md +125 -0
  106. package/skills/spec-readiness/REPORT-TEMPLATE.md +158 -0
  107. package/skills/spec-readiness/SCORING-REFERENCE.md +369 -0
  108. package/skills/spec-readiness/SKILL.md +400 -0
  109. package/skills/spec-readiness-setup/SKILL.md +361 -0
  110. package/skills/workspace-status/SKILL.md +56 -0
  111. package/skills/write-spec/SKILL.md +138 -0
  112. package/templates/traefik/dynamic/panopticon.yml.template +0 -5
  113. package/templates/traefik/traefik.yml +0 -8
  114. package/dist/chunk-2NIAOCIC.js.map +0 -1
  115. package/dist/chunk-3XAB4IXF.js +0 -51
  116. package/dist/chunk-3XAB4IXF.js.map +0 -1
  117. package/dist/chunk-6HXKTOD7.js.map +0 -1
  118. package/dist/chunk-BBCUK6N2.js +0 -241
  119. package/dist/chunk-BBCUK6N2.js.map +0 -1
  120. package/dist/chunk-BWGFN44T.js.map +0 -1
  121. package/dist/chunk-ELK6Q7QI.js +0 -545
  122. package/dist/chunk-ELK6Q7QI.js.map +0 -1
  123. package/dist/chunk-JY7R7V4G.js.map +0 -1
  124. package/dist/chunk-LYSBSZYV.js +0 -1523
  125. package/dist/chunk-LYSBSZYV.js.map +0 -1
  126. package/dist/chunk-VIWUCJ4V.js.map +0 -1
  127. package/dist/chunk-VU4FLXV5.js.map +0 -1
  128. package/dist/chunk-XP2DXWYP.js.map +0 -1
  129. package/dist/dashboard/public/assets/index-C7X6LP5Z.css +0 -32
  130. package/dist/dashboard/public/assets/index-ClYqpcAJ.js +0 -645
  131. package/dist/feedback-writer-AAKF5BTK.js.map +0 -1
  132. package/dist/review-status-GWQYY77L.js.map +0 -1
  133. package/dist/traefik-CUJM6K5Z.js +0 -12
  134. /package/dist/{agents-BDFHF4T3.js.map → agents-E43Y3HNU.js.map} +0 -0
  135. /package/dist/{config-BOAMSKTF.js.map → config-4CJNUE3O.js.map} +0 -0
  136. /package/dist/{dns-L3L2BB27.js.map → dns-7BDJSD3E.js.map} +0 -0
  137. /package/dist/{projects-VXRUCMLM.js.map → hume-WMAUBBV2.js.map} +0 -0
  138. /package/dist/{remote-agents-Z3R2A5BN.js.map → projects-JEIVIYC6.js.map} +0 -0
  139. /package/dist/{specialist-logs-GF3YV4KL.js.map → rally-RKFSWC7E.js.map} +0 -0
  140. /package/dist/{specialists-JBIW6MP4.js.map → remote-agents-TFSMW7GN.js.map} +0 -0
  141. /package/dist/{remote-workspace-2G6V2KNP.js.map → remote-workspace-AHVHQEES.js.map} +0 -0
  142. /package/dist/{traefik-CUJM6K5Z.js.map → review-status-EPFG4XM7.js.map} +0 -0
@@ -5,14 +5,16 @@ import {
5
5
  addWsl2HostEntry,
6
6
  detectDnsSyncMethod,
7
7
  ensureBaseDomain,
8
+ init_dns,
8
9
  removeDnsEntry,
9
10
  removeDnsmasqEntry,
10
11
  removeHostsFileEntry,
11
12
  removeWsl2HostEntry,
12
13
  restartDnsmasq,
13
14
  syncDnsToWindows
14
- } from "./chunk-BWGFN44T.js";
15
+ } from "./chunk-JT4O4YVM.js";
15
16
  import "./chunk-ZHC57RCV.js";
17
+ init_dns();
16
18
  export {
17
19
  addDnsEntry,
18
20
  addDnsmasqEntry,
@@ -27,4 +29,4 @@ export {
27
29
  restartDnsmasq,
28
30
  syncDnsToWindows
29
31
  };
30
- //# sourceMappingURL=dns-L3L2BB27.js.map
32
+ //# sourceMappingURL=dns-7BDJSD3E.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  init_projects,
3
3
  resolveProjectFromIssue
4
- } from "./chunk-JY7R7V4G.js";
5
- import "./chunk-6HXKTOD7.js";
4
+ } from "./chunk-OMNXYPXC.js";
5
+ import "./chunk-ZTFNYOC7.js";
6
6
  import {
7
7
  __esm,
8
8
  init_esm_shims
@@ -57,7 +57,11 @@ async function appendToStateMd(planningDir, entry) {
57
57
  await writeFile(statePath, content, "utf-8");
58
58
  }
59
59
  async function writeFeedbackFile(opts) {
60
- const workspacePath = opts.workspacePath || resolveWorkspacePath(opts.issueId);
60
+ let providedPath = opts.workspacePath;
61
+ if (providedPath && !existsSync(join(providedPath, ".planning")) && !providedPath.includes("/workspaces/")) {
62
+ providedPath = void 0;
63
+ }
64
+ const workspacePath = providedPath || resolveWorkspacePath(opts.issueId);
61
65
  if (!workspacePath) {
62
66
  return { success: false, error: `Workspace not found for ${opts.issueId}` };
63
67
  }
@@ -108,4 +112,4 @@ init_feedback_writer();
108
112
  export {
109
113
  writeFeedbackFile
110
114
  };
111
- //# sourceMappingURL=feedback-writer-AAKF5BTK.js.map
115
+ //# sourceMappingURL=feedback-writer-LVZ5TFYZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/cloister/feedback-writer.ts"],"sourcesContent":["/**\n * Feedback Writer — writes specialist feedback to workspace files.\n *\n * All specialist feedback (review, test, merge) is written to\n * .planning/feedback/ in the workspace, with a breadcrumb in STATE.md.\n * The work agent reads these on startup or after crash recovery.\n *\n * All I/O is async (fs/promises) — never execSync.\n */\n\nimport { writeFile, readFile, mkdir, readdir } from 'fs/promises';\nimport { existsSync } from 'fs';\nimport { join } from 'path';\nimport { resolveProjectFromIssue } from '../projects.js';\n\nexport interface WriteFeedbackOptions {\n issueId: string;\n workspacePath?: string;\n specialist: 'review-agent' | 'test-agent' | 'merge-agent';\n outcome: string;\n summary: string;\n markdownBody: string;\n}\n\nexport interface WriteFeedbackResult {\n success: boolean;\n /** Relative path from workspace root */\n relativePath?: string;\n /** Absolute path */\n filePath?: string;\n error?: string;\n}\n\n/**\n * Resolve workspace path from an issue ID.\n */\nfunction resolveWorkspacePath(issueId: string): string | null {\n const resolved = resolveProjectFromIssue(issueId);\n if (!resolved) return null;\n\n const wsPath = join(resolved.projectPath, 'workspaces', `feature-${issueId.toLowerCase()}`);\n return existsSync(wsPath) ? wsPath : null;\n}\n\n/**\n * Get the next sequence number from existing files in the feedback directory.\n */\nasync function getNextSequenceNumber(feedbackDir: string): Promise<number> {\n try {\n const files = await readdir(feedbackDir);\n let max = 0;\n for (const file of files) {\n const match = file.match(/^(\\d{3})-/);\n if (match) {\n const n = parseInt(match[1], 10);\n if (n > max) max = n;\n }\n }\n return max + 1;\n } catch {\n return 1;\n }\n}\n\n/**\n * Append a feedback entry to STATE.md's \"Specialist Feedback\" section.\n * Creates the section if it doesn't exist. Creates STATE.md if it doesn't exist.\n */\nasync function appendToStateMd(\n planningDir: string,\n entry: { timestamp: string; specialist: string; outcome: string; relativePath: string; issueId: string }\n): Promise<void> {\n const statePath = join(planningDir, 'STATE.md');\n const line = `- **[${entry.timestamp}] ${entry.specialist} → ${entry.outcome.toUpperCase()}** — \\`${entry.relativePath}\\``;\n\n let content: string;\n try {\n content = await readFile(statePath, 'utf-8');\n } catch {\n // STATE.md doesn't exist — create a minimal one\n content = `# Agent State: ${entry.issueId}\\n`;\n }\n\n const sectionHeader = '## Specialist Feedback';\n const sectionIndex = content.indexOf(sectionHeader);\n\n if (sectionIndex >= 0) {\n // Find the end of the section (next ## or EOF)\n const afterHeader = sectionIndex + sectionHeader.length;\n const nextSection = content.indexOf('\\n## ', afterHeader);\n const insertPos = nextSection >= 0 ? nextSection : content.length;\n content = content.slice(0, insertPos).trimEnd() + '\\n' + line + '\\n' + content.slice(insertPos);\n } else {\n // Append the section at the end\n content = content.trimEnd() + '\\n\\n' + sectionHeader + '\\n\\n' + line + '\\n';\n }\n\n await writeFile(statePath, content, 'utf-8');\n}\n\n/**\n * Write specialist feedback to a file in the workspace and update STATE.md.\n */\nexport async function writeFeedbackFile(opts: WriteFeedbackOptions): Promise<WriteFeedbackResult> {\n // Validate workspacePath — reject project roots (must contain /workspaces/ or have .planning dir)\n let providedPath = opts.workspacePath;\n if (providedPath && !existsSync(join(providedPath, '.planning')) && !providedPath.includes('/workspaces/')) {\n // Looks like a project root, not a workspace — fall back to resolution\n providedPath = undefined;\n }\n const workspacePath = providedPath || resolveWorkspacePath(opts.issueId);\n if (!workspacePath) {\n return { success: false, error: `Workspace not found for ${opts.issueId}` };\n }\n\n const planningDir = join(workspacePath, '.planning');\n const feedbackDir = join(planningDir, 'feedback');\n\n try {\n await mkdir(feedbackDir, { recursive: true });\n\n const seq = await getNextSequenceNumber(feedbackDir);\n const seqStr = String(seq).padStart(3, '0');\n const filename = `${seqStr}-${opts.specialist}-${opts.outcome}.md`;\n const filePath = join(feedbackDir, filename);\n const relativePath = `.planning/feedback/${filename}`;\n\n const timestamp = new Date().toISOString().replace(/\\.\\d+Z$/, 'Z');\n const shortTimestamp = timestamp.replace(/:\\d{2}Z$/, 'Z');\n\n const content = [\n '---',\n `specialist: ${opts.specialist}`,\n `issueId: ${opts.issueId}`,\n `outcome: ${opts.outcome}`,\n `timestamp: ${timestamp}`,\n '---',\n '',\n opts.markdownBody,\n '',\n ].join('\\n');\n\n await writeFile(filePath, content, 'utf-8');\n\n // Update STATE.md with breadcrumb\n await appendToStateMd(planningDir, {\n timestamp: shortTimestamp,\n specialist: opts.specialist,\n outcome: opts.outcome,\n relativePath,\n issueId: opts.issueId,\n });\n\n console.log(`[feedback-writer] Wrote ${relativePath} for ${opts.issueId}`);\n return { success: true, relativePath, filePath };\n } catch (error: any) {\n console.error(`[feedback-writer] Failed to write feedback for ${opts.issueId}:`, error);\n return { success: false, error: error.message };\n }\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAS,WAAW,UAAU,OAAO,eAAe;AACpD,SAAS,kBAAkB;AAC3B,SAAS,YAAY;AAwBrB,SAAS,qBAAqB,SAAgC;AAC5D,QAAM,WAAW,wBAAwB,OAAO;AAChD,MAAI,CAAC,SAAU,QAAO;AAEtB,QAAM,SAAS,KAAK,SAAS,aAAa,cAAc,WAAW,QAAQ,YAAY,CAAC,EAAE;AAC1F,SAAO,WAAW,MAAM,IAAI,SAAS;AACvC;AAKA,eAAe,sBAAsB,aAAsC;AACzE,MAAI;AACF,UAAM,QAAQ,MAAM,QAAQ,WAAW;AACvC,QAAI,MAAM;AACV,eAAW,QAAQ,OAAO;AACxB,YAAM,QAAQ,KAAK,MAAM,WAAW;AACpC,UAAI,OAAO;AACT,cAAM,IAAI,SAAS,MAAM,CAAC,GAAG,EAAE;AAC/B,YAAI,IAAI,IAAK,OAAM;AAAA,MACrB;AAAA,IACF;AACA,WAAO,MAAM;AAAA,EACf,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAMA,eAAe,gBACb,aACA,OACe;AACf,QAAM,YAAY,KAAK,aAAa,UAAU;AAC9C,QAAM,OAAO,QAAQ,MAAM,SAAS,KAAK,MAAM,UAAU,WAAM,MAAM,QAAQ,YAAY,CAAC,eAAU,MAAM,YAAY;AAEtH,MAAI;AACJ,MAAI;AACF,cAAU,MAAM,SAAS,WAAW,OAAO;AAAA,EAC7C,QAAQ;AAEN,cAAU,kBAAkB,MAAM,OAAO;AAAA;AAAA,EAC3C;AAEA,QAAM,gBAAgB;AACtB,QAAM,eAAe,QAAQ,QAAQ,aAAa;AAElD,MAAI,gBAAgB,GAAG;AAErB,UAAM,cAAc,eAAe,cAAc;AACjD,UAAM,cAAc,QAAQ,QAAQ,SAAS,WAAW;AACxD,UAAM,YAAY,eAAe,IAAI,cAAc,QAAQ;AAC3D,cAAU,QAAQ,MAAM,GAAG,SAAS,EAAE,QAAQ,IAAI,OAAO,OAAO,OAAO,QAAQ,MAAM,SAAS;AAAA,EAChG,OAAO;AAEL,cAAU,QAAQ,QAAQ,IAAI,SAAS,gBAAgB,SAAS,OAAO;AAAA,EACzE;AAEA,QAAM,UAAU,WAAW,SAAS,OAAO;AAC7C;AAKA,eAAsB,kBAAkB,MAA0D;AAEhG,MAAI,eAAe,KAAK;AACxB,MAAI,gBAAgB,CAAC,WAAW,KAAK,cAAc,WAAW,CAAC,KAAK,CAAC,aAAa,SAAS,cAAc,GAAG;AAE1G,mBAAe;AAAA,EACjB;AACA,QAAM,gBAAgB,gBAAgB,qBAAqB,KAAK,OAAO;AACvE,MAAI,CAAC,eAAe;AAClB,WAAO,EAAE,SAAS,OAAO,OAAO,2BAA2B,KAAK,OAAO,GAAG;AAAA,EAC5E;AAEA,QAAM,cAAc,KAAK,eAAe,WAAW;AACnD,QAAM,cAAc,KAAK,aAAa,UAAU;AAEhD,MAAI;AACF,UAAM,MAAM,aAAa,EAAE,WAAW,KAAK,CAAC;AAE5C,UAAM,MAAM,MAAM,sBAAsB,WAAW;AACnD,UAAM,SAAS,OAAO,GAAG,EAAE,SAAS,GAAG,GAAG;AAC1C,UAAM,WAAW,GAAG,MAAM,IAAI,KAAK,UAAU,IAAI,KAAK,OAAO;AAC7D,UAAM,WAAW,KAAK,aAAa,QAAQ;AAC3C,UAAM,eAAe,sBAAsB,QAAQ;AAEnD,UAAM,aAAY,oBAAI,KAAK,GAAE,YAAY,EAAE,QAAQ,WAAW,GAAG;AACjE,UAAM,iBAAiB,UAAU,QAAQ,YAAY,GAAG;AAExD,UAAM,UAAU;AAAA,MACd;AAAA,MACA,eAAe,KAAK,UAAU;AAAA,MAC9B,YAAY,KAAK,OAAO;AAAA,MACxB,YAAY,KAAK,OAAO;AAAA,MACxB,cAAc,SAAS;AAAA,MACvB;AAAA,MACA;AAAA,MACA,KAAK;AAAA,MACL;AAAA,IACF,EAAE,KAAK,IAAI;AAEX,UAAM,UAAU,UAAU,SAAS,OAAO;AAG1C,UAAM,gBAAgB,aAAa;AAAA,MACjC,WAAW;AAAA,MACX,YAAY,KAAK;AAAA,MACjB,SAAS,KAAK;AAAA,MACd;AAAA,MACA,SAAS,KAAK;AAAA,IAChB,CAAC;AAED,YAAQ,IAAI,2BAA2B,YAAY,QAAQ,KAAK,OAAO,EAAE;AACzE,WAAO,EAAE,SAAS,MAAM,cAAc,SAAS;AAAA,EACjD,SAAS,OAAY;AACnB,YAAQ,MAAM,kDAAkD,KAAK,OAAO,KAAK,KAAK;AACtF,WAAO,EAAE,SAAS,OAAO,OAAO,MAAM,QAAQ;AAAA,EAChD;AACF;AA/JA;AAAA;AAAA;AAaA;AAAA;AAAA;","names":[]}
@@ -0,0 +1,13 @@
1
+ import {
2
+ createHumeConfig,
3
+ deleteHumeConfig,
4
+ init_hume
5
+ } from "./chunk-7SN4L4PH.js";
6
+ import "./chunk-CWELWPWQ.js";
7
+ import "./chunk-ZHC57RCV.js";
8
+ init_hume();
9
+ export {
10
+ createHumeConfig,
11
+ deleteHumeConfig
12
+ };
13
+ //# sourceMappingURL=hume-WMAUBBV2.js.map
package/dist/index.d.ts CHANGED
@@ -9,6 +9,7 @@ declare const BIN_DIR: string;
9
9
  declare const BACKUPS_DIR: string;
10
10
  declare const COSTS_DIR: string;
11
11
  declare const HEARTBEATS_DIR: string;
12
+ declare const ARCHIVES_DIR: string;
12
13
  declare const TRAEFIK_DIR: string;
13
14
  declare const TRAEFIK_DYNAMIC_DIR: string;
14
15
  declare const TRAEFIK_CERTS_DIR: string;
@@ -16,38 +17,17 @@ declare const CERTS_DIR: string;
16
17
  declare const CONFIG_FILE: string;
17
18
  declare const SETTINGS_FILE: string;
18
19
  declare const CLAUDE_DIR: string;
19
- declare const CODEX_DIR: string;
20
- declare const CURSOR_DIR: string;
21
- declare const GEMINI_DIR: string;
22
- declare const OPENCODE_DIR: string;
23
- declare const SYNC_TARGETS: {
24
- readonly claude: {
25
- readonly skills: string;
26
- readonly commands: string;
27
- readonly agents: string;
28
- };
29
- readonly codex: {
30
- readonly skills: string;
31
- readonly commands: string;
32
- readonly agents: string;
33
- };
34
- readonly cursor: {
35
- readonly skills: string;
36
- readonly commands: string;
37
- readonly agents: string;
38
- };
39
- readonly gemini: {
40
- readonly skills: string;
41
- readonly commands: string;
42
- readonly agents: string;
43
- };
44
- readonly opencode: {
45
- readonly skills: string;
46
- readonly commands: string;
47
- readonly agents: string;
48
- };
20
+ declare const LEGACY_RUNTIME_DIRS: {
21
+ readonly codex: string;
22
+ readonly cursor: string;
23
+ readonly gemini: string;
24
+ readonly opencode: string;
25
+ };
26
+ declare const SYNC_TARGET: {
27
+ readonly skills: string;
28
+ readonly commands: string;
29
+ readonly agents: string;
49
30
  };
50
- type Runtime = keyof typeof SYNC_TARGETS;
51
31
  declare const TEMPLATES_DIR: string;
52
32
  declare const CLAUDE_MD_TEMPLATES: string;
53
33
  declare const SOURCE_TEMPLATES_DIR: string;
@@ -55,6 +35,21 @@ declare const SOURCE_TRAEFIK_TEMPLATES: string;
55
35
  declare const SOURCE_SCRIPTS_DIR: string;
56
36
  declare const SOURCE_SKILLS_DIR: string;
57
37
  declare const SOURCE_DEV_SKILLS_DIR: string;
38
+ declare const SOURCE_AGENTS_DIR: string;
39
+ declare const SOURCE_RULES_DIR: string;
40
+ declare const CACHE_SKILLS_DIR: string;
41
+ declare const CACHE_AGENTS_DIR: string;
42
+ declare const CACHE_RULES_DIR: string;
43
+ declare const CACHE_MANIFEST: string;
44
+ declare const DOCS_DIR: string;
45
+ declare const PRDS_DIR: string;
46
+ declare const PRD_DRAFTS_DIR: string;
47
+ declare const PRD_PUBLISHED_DIR: string;
48
+ declare const PROJECT_DOCS_SUBDIR = "docs";
49
+ declare const PROJECT_PRDS_SUBDIR = "prds";
50
+ declare const PROJECT_PRDS_ACTIVE_SUBDIR = "active";
51
+ declare const PROJECT_PRDS_PLANNED_SUBDIR = "planned";
52
+ declare const PROJECT_PRDS_COMPLETED_SUBDIR = "completed";
58
53
  /**
59
54
  * Detect if running in development mode (from npm link or panopticon repo)
60
55
  *
@@ -281,10 +276,13 @@ interface PanopticonConfig {
281
276
  version: string;
282
277
  };
283
278
  sync: {
284
- targets: string[];
285
279
  backup_before_sync: boolean;
286
280
  auto_sync?: boolean;
287
281
  strategy?: 'symlink' | 'copy';
282
+ /** Parent directory where all projects live (e.g., ~/Projects).
283
+ * Skills are placed at <devroot>/.claude/skills/ (project level).
284
+ * Set to null or empty string to disable devroot skill placement. */
285
+ devroot?: string | null;
288
286
  };
289
287
  trackers: TrackersConfig;
290
288
  dashboard: {
@@ -308,6 +306,18 @@ declare function getDefaultConfig(): PanopticonConfig;
308
306
  * Reads from DASHBOARD_URL env var first, then config file, then defaults.
309
307
  */
310
308
  declare function getDashboardApiUrl(): string;
309
+ /**
310
+ * Get the resolved devroot path from config.
311
+ * Returns null if devroot is disabled (set to null or empty string).
312
+ * Resolves ~ to home directory and validates the directory exists.
313
+ */
314
+ declare function getDevrootPath(): string | null;
315
+ /**
316
+ * Find the devroot for a given project path.
317
+ * Tries config first, then walks up from projectPath looking for .claude/ directory.
318
+ * Returns the project path itself as last resort.
319
+ */
320
+ declare function findDevrootForProject(projectPath: string): string;
311
321
 
312
322
  type Shell = 'bash' | 'zsh' | 'fish' | 'unknown';
313
323
  declare function detectShell(): Shell;
@@ -327,6 +337,22 @@ declare function listBackups(): BackupInfo[];
327
337
  declare function restoreBackup(timestamp: string, targetDirs: Record<string, string>): void;
328
338
  declare function cleanOldBackups(keepCount?: number): number;
329
339
 
340
+ /**
341
+ * Result of comparing a file against the manifest.
342
+ */
343
+ type FileStatus = {
344
+ action: 'new';
345
+ } | {
346
+ action: 'update';
347
+ currentHash: string;
348
+ } | {
349
+ action: 'modified';
350
+ currentHash: string;
351
+ manifestHash: string;
352
+ } | {
353
+ action: 'user-owned';
354
+ };
355
+
330
356
  interface SyncItem {
331
357
  name: string;
332
358
  sourcePath: string;
@@ -334,33 +360,94 @@ interface SyncItem {
334
360
  status: 'new' | 'exists' | 'conflict' | 'symlink';
335
361
  }
336
362
  interface SyncPlan {
337
- runtime: Runtime;
338
363
  skills: SyncItem[];
339
364
  commands: SyncItem[];
340
365
  agents: SyncItem[];
366
+ rules: SyncItem[];
341
367
  devSkills: SyncItem[];
342
368
  }
343
369
  /**
344
370
  * Check if a path is a Panopticon-managed symlink
345
371
  */
346
372
  declare function isPanopticonSymlink(targetPath: string): boolean;
373
+ interface MigrationResult {
374
+ removedSymlinks: string[];
375
+ preservedUserContent: string[];
376
+ errors: string[];
377
+ }
347
378
  /**
348
- * Plan what would be synced (dry run)
379
+ * One-time migration: remove Panopticon-managed symlinks from ~/.claude/.
380
+ *
381
+ * Detects symlinks in ~/.claude/skills/ and ~/.claude/agents/ that point to
382
+ * .panopticon directories. Removes only those symlinks, preserving any
383
+ * user-created content (real files/directories).
384
+ *
385
+ * This is safe to run multiple times — it's a no-op if no symlinks remain.
349
386
  */
350
- declare function planSync(runtime: Runtime): SyncPlan;
387
+ declare function migrateFromPersonalSymlinks(): MigrationResult;
388
+ interface RefreshCacheResult {
389
+ skills: {
390
+ copied: number;
391
+ total: number;
392
+ };
393
+ agents: {
394
+ copied: number;
395
+ total: number;
396
+ };
397
+ rules: {
398
+ copied: number;
399
+ total: number;
400
+ };
401
+ }
402
+ /**
403
+ * Refresh the ~/.panopticon/ cache from the repo source.
404
+ *
405
+ * Always copies (overwrites) skills, agents, and rules from the package's
406
+ * source directories to the cache. Generates ~/.panopticon/.manifest.json
407
+ * tracking all cached files.
408
+ *
409
+ * This replaces the old "skip if exists" behavior in `pan install`.
410
+ */
411
+ declare function refreshCache(): RefreshCacheResult;
412
+ /**
413
+ * Devroot sync item — represents a single file to distribute.
414
+ */
415
+ interface DevrootSyncItem {
416
+ /** Relative path from .claude/ (e.g., "skills/beads/SKILL.md") */
417
+ relativePath: string;
418
+ /** Absolute path to source file in cache */
419
+ sourcePath: string;
420
+ /** Absolute path to target file at devroot */
421
+ targetPath: string;
422
+ /** What action to take */
423
+ status: FileStatus;
424
+ }
425
+ /**
426
+ * Plan what would be synced to devroot (dry run).
427
+ * Reads from cache, targets <devroot>/.claude/, uses manifest comparison.
428
+ */
429
+ declare function planSync(): SyncPlan;
351
430
  interface SyncOptions {
352
431
  force?: boolean;
432
+ diff?: boolean;
353
433
  dryRun?: boolean;
354
434
  }
355
435
  interface SyncResult {
356
436
  created: string[];
437
+ updated: string[];
357
438
  skipped: string[];
358
439
  conflicts: string[];
440
+ diffs: Array<{
441
+ path: string;
442
+ sourceContent: string;
443
+ targetContent: string;
444
+ }>;
359
445
  }
360
446
  /**
361
- * Execute sync for a runtime
447
+ * Execute sync to devroot: copy from cache to <devroot>/.claude/.
448
+ * Uses manifest-based conflict resolution. NEVER touches ~/.claude/.
362
449
  */
363
- declare function executeSync(runtime: Runtime, options?: SyncOptions): SyncResult;
450
+ declare function executeSync(options?: SyncOptions): SyncResult;
364
451
  /**
365
452
  * Hook item for sync planning
366
453
  */
@@ -381,6 +468,15 @@ declare function syncHooks(): {
381
468
  synced: string[];
382
469
  errors: string[];
383
470
  };
471
+ /**
472
+ * Sync statusline script to all supported runtimes
473
+ * Copies the canonical statusline.sh from panopticon scripts to each runtime's config dir
474
+ * and ensures the runtime's settings.json references it.
475
+ */
476
+ declare function syncStatusline(): {
477
+ synced: string[];
478
+ errors: string[];
479
+ };
384
480
 
385
481
  /**
386
482
  * Linear Issue Tracker Adapter
@@ -575,7 +671,7 @@ declare class LinkManager {
575
671
  }
576
672
  declare function getLinkManager(): LinkManager;
577
673
 
578
- type AnthropicModel = 'claude-opus-4-6' | 'claude-sonnet-4-5' | 'claude-haiku-4-5';
674
+ type AnthropicModel = 'claude-opus-4-6' | 'claude-sonnet-4-6' | 'claude-sonnet-4-5' | 'claude-haiku-4-5';
579
675
  type OpenAIModel = 'gpt-5.2-codex' | 'o3-deep-research' | 'gpt-4o' | 'gpt-4o-mini';
580
676
  type GoogleModel = 'gemini-3-pro-preview' | 'gemini-3-flash-preview' | 'gemini-2.5-pro' | 'gemini-2.5-flash';
581
677
  type ZAIModel = 'glm-4.7' | 'glm-4.7-flash';
@@ -592,7 +688,6 @@ type ComplexityModels = {
592
688
  };
593
689
  interface ModelsConfig {
594
690
  specialists: SpecialistModels;
595
- planning_agent: ModelId;
596
691
  status_review: ModelId;
597
692
  complexity: ComplexityModels;
598
693
  }
@@ -674,11 +769,21 @@ type ProviderCompatibility = 'direct' | 'router';
674
769
  /**
675
770
  * Provider configuration
676
771
  */
772
+ /**
773
+ * Auth type for direct providers:
774
+ * - static: Use a long-lived API key passed via ANTHROPIC_AUTH_TOKEN (default)
775
+ * - credential-file: Use apiKeyHelper to read a fresh token from a credential file.
776
+ * Used for providers like Kimi Code Plan whose JWT tokens expire every ~15 minutes.
777
+ */
778
+ type ProviderAuthType = 'static' | 'credential-file';
677
779
  interface ProviderConfig {
678
780
  name: ProviderName;
679
781
  displayName: string;
680
782
  compatibility: ProviderCompatibility;
681
783
  baseUrl?: string;
784
+ authType?: ProviderAuthType;
785
+ credentialFile?: string;
786
+ credentialHelper?: string;
682
787
  models: ModelId[];
683
788
  tested: boolean;
684
789
  description: string;
@@ -716,5 +821,22 @@ declare function needsRouter(apiKeys: {
716
821
  * Get environment variables for spawning agent with specific provider
717
822
  */
718
823
  declare function getProviderEnv(provider: ProviderConfig, apiKey: string): Record<string, string>;
824
+ /**
825
+ * For credential-file providers (e.g. Kimi Code Plan), configure Claude Code's
826
+ * apiKeyHelper in the workspace settings so tokens are refreshed dynamically.
827
+ *
828
+ * This writes to .claude/settings.local.json in the workspace directory.
829
+ * Must be called before spawning the agent.
830
+ */
831
+ declare function setupCredentialFileAuth(provider: ProviderConfig, workspacePath: string): void;
832
+ /**
833
+ * Clear credential-file auth from workspace settings.
834
+ *
835
+ * When switching from a credential-file provider (e.g. Kimi) to a static/plan-based
836
+ * provider (e.g. Anthropic), the apiKeyHelper must be removed from
837
+ * .claude/settings.local.json. Otherwise Claude Code will keep using the stale
838
+ * token helper and fail with "Invalid API key".
839
+ */
840
+ declare function clearCredentialFileAuth(workspacePath: string): void;
719
841
 
720
- export { AGENTS_DIR, type AnthropicModel, type ApiKeysConfig, BACKUPS_DIR, BIN_DIR, type BackupInfo, CERTS_DIR, CLAUDE_DIR, CLAUDE_MD_TEMPLATES, CODEX_DIR, COMMANDS_DIR, CONFIG_DIR, CONFIG_FILE, COSTS_DIR, CURSOR_DIR, type Comment, type ComplexityLevel, type ComplexityModels, GEMINI_DIR, type GitHubConfig, GitHubTracker, type GitLabConfig, GitLabTracker, type GoogleModel, HEARTBEATS_DIR, type HookItem, INIT_DIRS, type Issue, type IssueFilters, IssueNotFoundError, type IssueState, type IssueTracker, type IssueUpdate, type KimiModel, type LinearConfig, LinearTracker, type LinkDirection, LinkManager, type ModelId, type ModelsConfig, type NewIssue, NotImplementedError, OPENCODE_DIR, type OpenAIModel, PANOPTICON_HOME, PROVIDERS, type PanopticonConfig, type ProviderCompatibility, type ProviderConfig, type ProviderName, type RallyConfig, type RemoteConfig, type RemoteExeConfig, type Runtime, SETTINGS_FILE, SKILLS_DIR, SOURCE_DEV_SKILLS_DIR, SOURCE_SCRIPTS_DIR, SOURCE_SKILLS_DIR, SOURCE_TEMPLATES_DIR, SOURCE_TRAEFIK_TEMPLATES, SYNC_TARGETS, type SettingsConfig, type ShadowConfig, type Shell, type SpecialistModels, type SyncItem, type SyncOptions, type SyncPlan, type SyncResult, TEMPLATES_DIR, TRAEFIK_CERTS_DIR, TRAEFIK_DIR, TRAEFIK_DYNAMIC_DIR, TrackerAuthError, type TrackerConfig, type TrackerConfigItem, type TrackerLink, type TrackerType, type TrackersConfig, type ZAIModel, addAlias, cleanOldBackups, createBackup, createBackupTimestamp, createTracker, createTrackerFromConfig, detectShell, executeSync, formatIssueRef, getAgentCommand, getAliasInstructions, getAllTrackers, getAvailableModels, getClaudeModelFlag, getDashboardApiUrl, getDefaultConfig, getDefaultSettings, getDirectProviders, getLinkManager, getPanopticonHome, getPrimaryTracker, getProviderEnv, getProviderForModel, getRouterProviders, getSecondaryTracker, getShellRcFile, hasAlias, isAnthropicModel, isDevMode, isPanopticonSymlink, listBackups, loadConfig, loadSettings, needsRouter, parseIssueRef, planHooksSync, planSync, requiresRouter, restoreBackup, saveConfig, saveSettings, syncHooks, validateSettings };
842
+ export { AGENTS_DIR, ARCHIVES_DIR, type AnthropicModel, type ApiKeysConfig, BACKUPS_DIR, BIN_DIR, type BackupInfo, CACHE_AGENTS_DIR, CACHE_MANIFEST, CACHE_RULES_DIR, CACHE_SKILLS_DIR, CERTS_DIR, CLAUDE_DIR, CLAUDE_MD_TEMPLATES, COMMANDS_DIR, CONFIG_DIR, CONFIG_FILE, COSTS_DIR, type Comment, type ComplexityLevel, type ComplexityModels, DOCS_DIR, type DevrootSyncItem, type GitHubConfig, GitHubTracker, type GitLabConfig, GitLabTracker, type GoogleModel, HEARTBEATS_DIR, type HookItem, INIT_DIRS, type Issue, type IssueFilters, IssueNotFoundError, type IssueState, type IssueTracker, type IssueUpdate, type KimiModel, LEGACY_RUNTIME_DIRS, type LinearConfig, LinearTracker, type LinkDirection, LinkManager, type MigrationResult, type ModelId, type ModelsConfig, type NewIssue, NotImplementedError, type OpenAIModel, PANOPTICON_HOME, PRDS_DIR, PRD_DRAFTS_DIR, PRD_PUBLISHED_DIR, PROJECT_DOCS_SUBDIR, PROJECT_PRDS_ACTIVE_SUBDIR, PROJECT_PRDS_COMPLETED_SUBDIR, PROJECT_PRDS_PLANNED_SUBDIR, PROJECT_PRDS_SUBDIR, PROVIDERS, type PanopticonConfig, type ProviderAuthType, type ProviderCompatibility, type ProviderConfig, type ProviderName, type RallyConfig, type RefreshCacheResult, type RemoteConfig, type RemoteExeConfig, SETTINGS_FILE, SKILLS_DIR, SOURCE_AGENTS_DIR, SOURCE_DEV_SKILLS_DIR, SOURCE_RULES_DIR, SOURCE_SCRIPTS_DIR, SOURCE_SKILLS_DIR, SOURCE_TEMPLATES_DIR, SOURCE_TRAEFIK_TEMPLATES, SYNC_TARGET, type SettingsConfig, type ShadowConfig, type Shell, type SpecialistModels, type SyncItem, type SyncOptions, type SyncPlan, type SyncResult, TEMPLATES_DIR, TRAEFIK_CERTS_DIR, TRAEFIK_DIR, TRAEFIK_DYNAMIC_DIR, TrackerAuthError, type TrackerConfig, type TrackerConfigItem, type TrackerLink, type TrackerType, type TrackersConfig, type ZAIModel, addAlias, cleanOldBackups, clearCredentialFileAuth, createBackup, createBackupTimestamp, createTracker, createTrackerFromConfig, detectShell, executeSync, findDevrootForProject, formatIssueRef, getAgentCommand, getAliasInstructions, getAllTrackers, getAvailableModels, getClaudeModelFlag, getDashboardApiUrl, getDefaultConfig, getDefaultSettings, getDevrootPath, getDirectProviders, getLinkManager, getPanopticonHome, getPrimaryTracker, getProviderEnv, getProviderForModel, getRouterProviders, getSecondaryTracker, getShellRcFile, hasAlias, isAnthropicModel, isDevMode, isPanopticonSymlink, listBackups, loadConfig, loadSettings, migrateFromPersonalSymlinks, needsRouter, parseIssueRef, planHooksSync, planSync, refreshCache, requiresRouter, restoreBackup, saveConfig, saveSettings, setupCredentialFileAuth, syncHooks, syncStatusline, validateSettings };
package/dist/index.js CHANGED
@@ -13,33 +13,37 @@ import {
13
13
  hasAlias,
14
14
  isPanopticonSymlink,
15
15
  listBackups,
16
+ migrateFromPersonalSymlinks,
16
17
  parseIssueRef,
17
18
  planHooksSync,
18
19
  planSync,
20
+ refreshCache,
19
21
  restoreBackup,
20
- syncHooks
21
- } from "./chunk-ELK6Q7QI.js";
22
+ syncHooks,
23
+ syncStatusline
24
+ } from "./chunk-WQG2TYCB.js";
25
+ import "./chunk-AQXETQHW.js";
22
26
  import {
23
27
  GitHubTracker,
24
28
  GitLabTracker,
25
- IssueNotFoundError,
26
29
  LinearTracker,
27
- NotImplementedError,
28
- PROVIDERS,
29
- TrackerAuthError,
30
30
  createTracker,
31
31
  createTrackerFromConfig,
32
- getAgentCommand,
33
32
  getAllTrackers,
33
+ getPrimaryTracker,
34
+ getSecondaryTracker
35
+ } from "./chunk-NTO3EDB3.js";
36
+ import {
37
+ PROVIDERS,
38
+ clearCredentialFileAuth,
39
+ getAgentCommand,
34
40
  getAvailableModels,
35
41
  getClaudeModelFlag,
36
42
  getDefaultSettings,
37
43
  getDirectProviders,
38
- getPrimaryTracker,
39
44
  getProviderEnv,
40
45
  getProviderForModel,
41
46
  getRouterProviders,
42
- getSecondaryTracker,
43
47
  init_providers,
44
48
  init_settings,
45
49
  isAnthropicModel,
@@ -47,42 +51,62 @@ import {
47
51
  needsRouter,
48
52
  requiresRouter,
49
53
  saveSettings,
54
+ setupCredentialFileAuth,
50
55
  validateSettings
51
- } from "./chunk-LYSBSZYV.js";
52
- import "./chunk-BBCUK6N2.js";
56
+ } from "./chunk-HJSM6E6U.js";
53
57
  import {
58
+ findDevrootForProject,
54
59
  getDashboardApiUrl,
55
60
  getDefaultConfig,
61
+ getDevrootPath,
56
62
  init_config,
57
63
  loadConfig,
58
64
  saveConfig
59
- } from "./chunk-VU4FLXV5.js";
65
+ } from "./chunk-FQ66DECN.js";
66
+ import {
67
+ IssueNotFoundError,
68
+ NotImplementedError,
69
+ TrackerAuthError
70
+ } from "./chunk-CFCUOV3Q.js";
60
71
  import {
61
72
  AGENTS_DIR,
73
+ ARCHIVES_DIR,
62
74
  BACKUPS_DIR,
63
75
  BIN_DIR,
76
+ CACHE_AGENTS_DIR,
77
+ CACHE_MANIFEST,
78
+ CACHE_RULES_DIR,
79
+ CACHE_SKILLS_DIR,
64
80
  CERTS_DIR,
65
81
  CLAUDE_DIR,
66
82
  CLAUDE_MD_TEMPLATES,
67
- CODEX_DIR,
68
83
  COMMANDS_DIR,
69
84
  CONFIG_DIR,
70
85
  CONFIG_FILE,
71
86
  COSTS_DIR,
72
- CURSOR_DIR,
73
- GEMINI_DIR,
87
+ DOCS_DIR,
74
88
  HEARTBEATS_DIR,
75
89
  INIT_DIRS,
76
- OPENCODE_DIR,
90
+ LEGACY_RUNTIME_DIRS,
77
91
  PANOPTICON_HOME,
92
+ PRDS_DIR,
93
+ PRD_DRAFTS_DIR,
94
+ PRD_PUBLISHED_DIR,
95
+ PROJECT_DOCS_SUBDIR,
96
+ PROJECT_PRDS_ACTIVE_SUBDIR,
97
+ PROJECT_PRDS_COMPLETED_SUBDIR,
98
+ PROJECT_PRDS_PLANNED_SUBDIR,
99
+ PROJECT_PRDS_SUBDIR,
78
100
  SETTINGS_FILE,
79
101
  SKILLS_DIR,
102
+ SOURCE_AGENTS_DIR,
80
103
  SOURCE_DEV_SKILLS_DIR,
104
+ SOURCE_RULES_DIR,
81
105
  SOURCE_SCRIPTS_DIR,
82
106
  SOURCE_SKILLS_DIR,
83
107
  SOURCE_TEMPLATES_DIR,
84
108
  SOURCE_TRAEFIK_TEMPLATES,
85
- SYNC_TARGETS,
109
+ SYNC_TARGET,
86
110
  TEMPLATES_DIR,
87
111
  TRAEFIK_CERTS_DIR,
88
112
  TRAEFIK_DIR,
@@ -90,7 +114,7 @@ import {
90
114
  getPanopticonHome,
91
115
  init_paths,
92
116
  isDevMode
93
- } from "./chunk-6HXKTOD7.js";
117
+ } from "./chunk-ZTFNYOC7.js";
94
118
  import {
95
119
  init_esm_shims
96
120
  } from "./chunk-ZHC57RCV.js";
@@ -103,37 +127,50 @@ init_providers();
103
127
  init_settings();
104
128
  export {
105
129
  AGENTS_DIR,
130
+ ARCHIVES_DIR,
106
131
  BACKUPS_DIR,
107
132
  BIN_DIR,
133
+ CACHE_AGENTS_DIR,
134
+ CACHE_MANIFEST,
135
+ CACHE_RULES_DIR,
136
+ CACHE_SKILLS_DIR,
108
137
  CERTS_DIR,
109
138
  CLAUDE_DIR,
110
139
  CLAUDE_MD_TEMPLATES,
111
- CODEX_DIR,
112
140
  COMMANDS_DIR,
113
141
  CONFIG_DIR,
114
142
  CONFIG_FILE,
115
143
  COSTS_DIR,
116
- CURSOR_DIR,
117
- GEMINI_DIR,
144
+ DOCS_DIR,
118
145
  GitHubTracker,
119
146
  GitLabTracker,
120
147
  HEARTBEATS_DIR,
121
148
  INIT_DIRS,
122
149
  IssueNotFoundError,
150
+ LEGACY_RUNTIME_DIRS,
123
151
  LinearTracker,
124
152
  LinkManager,
125
153
  NotImplementedError,
126
- OPENCODE_DIR,
127
154
  PANOPTICON_HOME,
155
+ PRDS_DIR,
156
+ PRD_DRAFTS_DIR,
157
+ PRD_PUBLISHED_DIR,
158
+ PROJECT_DOCS_SUBDIR,
159
+ PROJECT_PRDS_ACTIVE_SUBDIR,
160
+ PROJECT_PRDS_COMPLETED_SUBDIR,
161
+ PROJECT_PRDS_PLANNED_SUBDIR,
162
+ PROJECT_PRDS_SUBDIR,
128
163
  PROVIDERS,
129
164
  SETTINGS_FILE,
130
165
  SKILLS_DIR,
166
+ SOURCE_AGENTS_DIR,
131
167
  SOURCE_DEV_SKILLS_DIR,
168
+ SOURCE_RULES_DIR,
132
169
  SOURCE_SCRIPTS_DIR,
133
170
  SOURCE_SKILLS_DIR,
134
171
  SOURCE_TEMPLATES_DIR,
135
172
  SOURCE_TRAEFIK_TEMPLATES,
136
- SYNC_TARGETS,
173
+ SYNC_TARGET,
137
174
  TEMPLATES_DIR,
138
175
  TRAEFIK_CERTS_DIR,
139
176
  TRAEFIK_DIR,
@@ -141,12 +178,14 @@ export {
141
178
  TrackerAuthError,
142
179
  addAlias,
143
180
  cleanOldBackups,
181
+ clearCredentialFileAuth,
144
182
  createBackup,
145
183
  createBackupTimestamp,
146
184
  createTracker,
147
185
  createTrackerFromConfig,
148
186
  detectShell,
149
187
  executeSync,
188
+ findDevrootForProject,
150
189
  formatIssueRef,
151
190
  getAgentCommand,
152
191
  getAliasInstructions,
@@ -156,6 +195,7 @@ export {
156
195
  getDashboardApiUrl,
157
196
  getDefaultConfig,
158
197
  getDefaultSettings,
198
+ getDevrootPath,
159
199
  getDirectProviders,
160
200
  getLinkManager,
161
201
  getPanopticonHome,
@@ -172,15 +212,19 @@ export {
172
212
  listBackups,
173
213
  loadConfig,
174
214
  loadSettings,
215
+ migrateFromPersonalSymlinks,
175
216
  needsRouter,
176
217
  parseIssueRef,
177
218
  planHooksSync,
178
219
  planSync,
220
+ refreshCache,
179
221
  requiresRouter,
180
222
  restoreBackup,
181
223
  saveConfig,
182
224
  saveSettings,
225
+ setupCredentialFileAuth,
183
226
  syncHooks,
227
+ syncStatusline,
184
228
  validateSettings
185
229
  };
186
230
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Panopticon CLI - Main exports for library usage\nexport * from './lib/paths.js';\nexport * from './lib/config.js';\nexport * from './lib/shell.js';\nexport * from './lib/backup.js';\nexport * from './lib/sync.js';\nexport * from './lib/tracker/index.js';\nexport * from './lib/providers.js';\nexport * from './lib/settings.js';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AAKA;AACA;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Panopticon CLI - Main exports for library usage\nexport * from './lib/paths.js';\nexport * from './lib/config.js';\nexport * from './lib/shell.js';\nexport * from './lib/backup.js';\nexport * from './lib/sync.js';\nexport * from './lib/tracker/index.js';\nexport * from './lib/providers.js';\nexport * from './lib/settings.js';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AAKA;AACA;","names":[]}
@@ -18,8 +18,8 @@ import {
18
18
  resolveProjectPath,
19
19
  saveProjectsConfig,
20
20
  unregisterProject
21
- } from "./chunk-JY7R7V4G.js";
22
- import "./chunk-6HXKTOD7.js";
21
+ } from "./chunk-OMNXYPXC.js";
22
+ import "./chunk-ZTFNYOC7.js";
23
23
  import "./chunk-ZHC57RCV.js";
24
24
  init_projects();
25
25
  export {
@@ -42,4 +42,4 @@ export {
42
42
  saveProjectsConfig,
43
43
  unregisterProject
44
44
  };
45
- //# sourceMappingURL=projects-VXRUCMLM.js.map
45
+ //# sourceMappingURL=projects-JEIVIYC6.js.map
@@ -0,0 +1,10 @@
1
+ import {
2
+ RallyTracker,
3
+ init_rally
4
+ } from "./chunk-CFCUOV3Q.js";
5
+ import "./chunk-ZHC57RCV.js";
6
+ init_rally();
7
+ export {
8
+ RallyTracker
9
+ };
10
+ //# sourceMappingURL=rally-RKFSWC7E.js.map
@@ -8,7 +8,7 @@ import {
8
8
  pollRemoteAgentStatus,
9
9
  sendToRemoteAgent,
10
10
  spawnRemoteAgent
11
- } from "./chunk-HCTJFIJJ.js";
11
+ } from "./chunk-YLPSQAM2.js";
12
12
  import "./chunk-JM6V62LT.js";
13
13
  import "./chunk-ZHC57RCV.js";
14
14
  init_remote_agents();
@@ -22,4 +22,4 @@ export {
22
22
  sendToRemoteAgent,
23
23
  spawnRemoteAgent
24
24
  };
25
- //# sourceMappingURL=remote-agents-Z3R2A5BN.js.map
25
+ //# sourceMappingURL=remote-agents-TFSMW7GN.js.map