saasgadget 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.
Files changed (515) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +48 -0
  3. package/dist/agents/business-analyst.d.ts +14 -0
  4. package/dist/agents/business-analyst.d.ts.map +1 -0
  5. package/dist/agents/business-analyst.js +70 -0
  6. package/dist/agents/business-analyst.js.map +1 -0
  7. package/dist/agents/code-inspector.d.ts +19 -0
  8. package/dist/agents/code-inspector.d.ts.map +1 -0
  9. package/dist/agents/code-inspector.js +149 -0
  10. package/dist/agents/code-inspector.js.map +1 -0
  11. package/dist/agents/competitor-tracker.d.ts +19 -0
  12. package/dist/agents/competitor-tracker.d.ts.map +1 -0
  13. package/dist/agents/competitor-tracker.js +190 -0
  14. package/dist/agents/competitor-tracker.js.map +1 -0
  15. package/dist/agents/finance-auditor.d.ts +14 -0
  16. package/dist/agents/finance-auditor.d.ts.map +1 -0
  17. package/dist/agents/finance-auditor.js +73 -0
  18. package/dist/agents/finance-auditor.js.map +1 -0
  19. package/dist/agents/gtm-strategist.d.ts +14 -0
  20. package/dist/agents/gtm-strategist.d.ts.map +1 -0
  21. package/dist/agents/gtm-strategist.js +73 -0
  22. package/dist/agents/gtm-strategist.js.map +1 -0
  23. package/dist/agents/orchestrator.d.ts +52 -0
  24. package/dist/agents/orchestrator.d.ts.map +1 -0
  25. package/dist/agents/orchestrator.js +174 -0
  26. package/dist/agents/orchestrator.js.map +1 -0
  27. package/dist/agents/sdk-client.d.ts +48 -0
  28. package/dist/agents/sdk-client.d.ts.map +1 -0
  29. package/dist/agents/sdk-client.js +119 -0
  30. package/dist/agents/sdk-client.js.map +1 -0
  31. package/dist/agents/security-compliance.d.ts +14 -0
  32. package/dist/agents/security-compliance.d.ts.map +1 -0
  33. package/dist/agents/security-compliance.js +87 -0
  34. package/dist/agents/security-compliance.js.map +1 -0
  35. package/dist/agents/skeptic-reviewer.d.ts +14 -0
  36. package/dist/agents/skeptic-reviewer.d.ts.map +1 -0
  37. package/dist/agents/skeptic-reviewer.js +65 -0
  38. package/dist/agents/skeptic-reviewer.js.map +1 -0
  39. package/dist/agents/skills-directory.d.ts +36 -0
  40. package/dist/agents/skills-directory.d.ts.map +1 -0
  41. package/dist/agents/skills-directory.js +108 -0
  42. package/dist/agents/skills-directory.js.map +1 -0
  43. package/dist/cli/commands/auth.d.ts +8 -0
  44. package/dist/cli/commands/auth.d.ts.map +1 -0
  45. package/dist/cli/commands/auth.js +90 -0
  46. package/dist/cli/commands/auth.js.map +1 -0
  47. package/dist/cli/commands/doctor.d.ts +10 -0
  48. package/dist/cli/commands/doctor.d.ts.map +1 -0
  49. package/dist/cli/commands/doctor.js +240 -0
  50. package/dist/cli/commands/doctor.js.map +1 -0
  51. package/dist/cli/commands/fix.d.ts +4 -0
  52. package/dist/cli/commands/fix.d.ts.map +1 -0
  53. package/dist/cli/commands/fix.js +344 -0
  54. package/dist/cli/commands/fix.js.map +1 -0
  55. package/dist/cli/commands/init.d.ts +8 -0
  56. package/dist/cli/commands/init.d.ts.map +1 -0
  57. package/dist/cli/commands/init.js +109 -0
  58. package/dist/cli/commands/init.js.map +1 -0
  59. package/dist/cli/commands/mcp.d.ts +4 -0
  60. package/dist/cli/commands/mcp.d.ts.map +1 -0
  61. package/dist/cli/commands/mcp.js +441 -0
  62. package/dist/cli/commands/mcp.js.map +1 -0
  63. package/dist/cli/commands/new.d.ts +4 -0
  64. package/dist/cli/commands/new.d.ts.map +1 -0
  65. package/dist/cli/commands/new.js +193 -0
  66. package/dist/cli/commands/new.js.map +1 -0
  67. package/dist/cli/commands/pack.d.ts +4 -0
  68. package/dist/cli/commands/pack.d.ts.map +1 -0
  69. package/dist/cli/commands/pack.js +312 -0
  70. package/dist/cli/commands/pack.js.map +1 -0
  71. package/dist/cli/commands/plan.d.ts +4 -0
  72. package/dist/cli/commands/plan.d.ts.map +1 -0
  73. package/dist/cli/commands/plan.js +250 -0
  74. package/dist/cli/commands/plan.js.map +1 -0
  75. package/dist/cli/commands/research.d.ts +7 -0
  76. package/dist/cli/commands/research.d.ts.map +1 -0
  77. package/dist/cli/commands/research.js +331 -0
  78. package/dist/cli/commands/research.js.map +1 -0
  79. package/dist/cli/commands/scan.d.ts +4 -0
  80. package/dist/cli/commands/scan.d.ts.map +1 -0
  81. package/dist/cli/commands/scan.js +434 -0
  82. package/dist/cli/commands/scan.js.map +1 -0
  83. package/dist/cli/commands/session.d.ts +4 -0
  84. package/dist/cli/commands/session.d.ts.map +1 -0
  85. package/dist/cli/commands/session.js +343 -0
  86. package/dist/cli/commands/session.js.map +1 -0
  87. package/dist/cli/commands/settings.d.ts +8 -0
  88. package/dist/cli/commands/settings.d.ts.map +1 -0
  89. package/dist/cli/commands/settings.js +302 -0
  90. package/dist/cli/commands/settings.js.map +1 -0
  91. package/dist/cli/commands/start.d.ts +10 -0
  92. package/dist/cli/commands/start.d.ts.map +1 -0
  93. package/dist/cli/commands/start.js +185 -0
  94. package/dist/cli/commands/start.js.map +1 -0
  95. package/dist/cli/commands/types.d.ts +15 -0
  96. package/dist/cli/commands/types.d.ts.map +1 -0
  97. package/dist/cli/commands/types.js +2 -0
  98. package/dist/cli/commands/types.js.map +1 -0
  99. package/dist/cli/flag-resolver.d.ts +17 -0
  100. package/dist/cli/flag-resolver.d.ts.map +1 -0
  101. package/dist/cli/flag-resolver.js +57 -0
  102. package/dist/cli/flag-resolver.js.map +1 -0
  103. package/dist/cli/output/formatter.d.ts +22 -0
  104. package/dist/cli/output/formatter.d.ts.map +1 -0
  105. package/dist/cli/output/formatter.js +40 -0
  106. package/dist/cli/output/formatter.js.map +1 -0
  107. package/dist/cli/output/hints.d.ts +7 -0
  108. package/dist/cli/output/hints.d.ts.map +1 -0
  109. package/dist/cli/output/hints.js +27 -0
  110. package/dist/cli/output/hints.js.map +1 -0
  111. package/dist/cli/output/json-writer.d.ts +7 -0
  112. package/dist/cli/output/json-writer.d.ts.map +1 -0
  113. package/dist/cli/output/json-writer.js +19 -0
  114. package/dist/cli/output/json-writer.js.map +1 -0
  115. package/dist/cli/output/markdown-writer.d.ts +7 -0
  116. package/dist/cli/output/markdown-writer.d.ts.map +1 -0
  117. package/dist/cli/output/markdown-writer.js +75 -0
  118. package/dist/cli/output/markdown-writer.js.map +1 -0
  119. package/dist/cli/tui/banner.d.ts +2 -0
  120. package/dist/cli/tui/banner.d.ts.map +1 -0
  121. package/dist/cli/tui/banner.js +46 -0
  122. package/dist/cli/tui/banner.js.map +1 -0
  123. package/dist/cli/tui/colors.d.ts +22 -0
  124. package/dist/cli/tui/colors.d.ts.map +1 -0
  125. package/dist/cli/tui/colors.js +79 -0
  126. package/dist/cli/tui/colors.js.map +1 -0
  127. package/dist/cli/tui/dashboard.d.ts +20 -0
  128. package/dist/cli/tui/dashboard.d.ts.map +1 -0
  129. package/dist/cli/tui/dashboard.js +140 -0
  130. package/dist/cli/tui/dashboard.js.map +1 -0
  131. package/dist/cli/tui/prompt.d.ts +55 -0
  132. package/dist/cli/tui/prompt.d.ts.map +1 -0
  133. package/dist/cli/tui/prompt.js +193 -0
  134. package/dist/cli/tui/prompt.js.map +1 -0
  135. package/dist/cli/tui/slash-commands.d.ts +43 -0
  136. package/dist/cli/tui/slash-commands.d.ts.map +1 -0
  137. package/dist/cli/tui/slash-commands.js +439 -0
  138. package/dist/cli/tui/slash-commands.js.map +1 -0
  139. package/dist/config/config-store.d.ts +27 -0
  140. package/dist/config/config-store.d.ts.map +1 -0
  141. package/dist/config/config-store.js +125 -0
  142. package/dist/config/config-store.js.map +1 -0
  143. package/dist/config/presets.d.ts +15 -0
  144. package/dist/config/presets.d.ts.map +1 -0
  145. package/dist/config/presets.js +91 -0
  146. package/dist/config/presets.js.map +1 -0
  147. package/dist/config/tool-profiles.d.ts +29 -0
  148. package/dist/config/tool-profiles.d.ts.map +1 -0
  149. package/dist/config/tool-profiles.js +56 -0
  150. package/dist/config/tool-profiles.js.map +1 -0
  151. package/dist/contracts/agent-invoker.d.ts +9 -0
  152. package/dist/contracts/agent-invoker.d.ts.map +1 -0
  153. package/dist/contracts/agent-invoker.js +2 -0
  154. package/dist/contracts/agent-invoker.js.map +1 -0
  155. package/dist/contracts/agent.d.ts +36 -0
  156. package/dist/contracts/agent.d.ts.map +1 -0
  157. package/dist/contracts/agent.js +2 -0
  158. package/dist/contracts/agent.js.map +1 -0
  159. package/dist/contracts/config-store.d.ts +13 -0
  160. package/dist/contracts/config-store.d.ts.map +1 -0
  161. package/dist/contracts/config-store.js +2 -0
  162. package/dist/contracts/config-store.js.map +1 -0
  163. package/dist/contracts/crawler.d.ts +17 -0
  164. package/dist/contracts/crawler.d.ts.map +1 -0
  165. package/dist/contracts/crawler.js +2 -0
  166. package/dist/contracts/crawler.js.map +1 -0
  167. package/dist/contracts/exporter.d.ts +18 -0
  168. package/dist/contracts/exporter.d.ts.map +1 -0
  169. package/dist/contracts/exporter.js +11 -0
  170. package/dist/contracts/exporter.js.map +1 -0
  171. package/dist/contracts/index.d.ts +14 -0
  172. package/dist/contracts/index.d.ts.map +1 -0
  173. package/dist/contracts/index.js +2 -0
  174. package/dist/contracts/index.js.map +1 -0
  175. package/dist/contracts/mcp-tool-provider.d.ts +18 -0
  176. package/dist/contracts/mcp-tool-provider.d.ts.map +1 -0
  177. package/dist/contracts/mcp-tool-provider.js +2 -0
  178. package/dist/contracts/mcp-tool-provider.js.map +1 -0
  179. package/dist/contracts/report-pack-generator.d.ts +20 -0
  180. package/dist/contracts/report-pack-generator.d.ts.map +1 -0
  181. package/dist/contracts/report-pack-generator.js +2 -0
  182. package/dist/contracts/report-pack-generator.js.map +1 -0
  183. package/dist/contracts/search-provider.d.ts +15 -0
  184. package/dist/contracts/search-provider.d.ts.map +1 -0
  185. package/dist/contracts/search-provider.js +2 -0
  186. package/dist/contracts/search-provider.js.map +1 -0
  187. package/dist/contracts/session-manager.d.ts +36 -0
  188. package/dist/contracts/session-manager.d.ts.map +1 -0
  189. package/dist/contracts/session-manager.js +2 -0
  190. package/dist/contracts/session-manager.js.map +1 -0
  191. package/dist/index.d.ts +3 -0
  192. package/dist/index.d.ts.map +1 -0
  193. package/dist/index.js +299 -0
  194. package/dist/index.js.map +1 -0
  195. package/dist/lib/ai/provider-factory.d.ts +64 -0
  196. package/dist/lib/ai/provider-factory.d.ts.map +1 -0
  197. package/dist/lib/ai/provider-factory.js +249 -0
  198. package/dist/lib/ai/provider-factory.js.map +1 -0
  199. package/dist/lib/audit-logger.d.ts +10 -0
  200. package/dist/lib/audit-logger.d.ts.map +1 -0
  201. package/dist/lib/audit-logger.js +101 -0
  202. package/dist/lib/audit-logger.js.map +1 -0
  203. package/dist/lib/auth.d.ts +39 -0
  204. package/dist/lib/auth.d.ts.map +1 -0
  205. package/dist/lib/auth.js +219 -0
  206. package/dist/lib/auth.js.map +1 -0
  207. package/dist/lib/competitor-scheduler.d.ts +73 -0
  208. package/dist/lib/competitor-scheduler.d.ts.map +1 -0
  209. package/dist/lib/competitor-scheduler.js +235 -0
  210. package/dist/lib/competitor-scheduler.js.map +1 -0
  211. package/dist/lib/crawler.d.ts +17 -0
  212. package/dist/lib/crawler.d.ts.map +1 -0
  213. package/dist/lib/crawler.js +168 -0
  214. package/dist/lib/crawler.js.map +1 -0
  215. package/dist/lib/errors.d.ts +34 -0
  216. package/dist/lib/errors.d.ts.map +1 -0
  217. package/dist/lib/errors.js +63 -0
  218. package/dist/lib/errors.js.map +1 -0
  219. package/dist/lib/exporter.d.ts +9 -0
  220. package/dist/lib/exporter.d.ts.map +1 -0
  221. package/dist/lib/exporter.js +100 -0
  222. package/dist/lib/exporter.js.map +1 -0
  223. package/dist/lib/html-cleaner.d.ts +19 -0
  224. package/dist/lib/html-cleaner.d.ts.map +1 -0
  225. package/dist/lib/html-cleaner.js +144 -0
  226. package/dist/lib/html-cleaner.js.map +1 -0
  227. package/dist/lib/http.d.ts +18 -0
  228. package/dist/lib/http.d.ts.map +1 -0
  229. package/dist/lib/http.js +83 -0
  230. package/dist/lib/http.js.map +1 -0
  231. package/dist/lib/lockfile.d.ts +10 -0
  232. package/dist/lib/lockfile.d.ts.map +1 -0
  233. package/dist/lib/lockfile.js +56 -0
  234. package/dist/lib/lockfile.js.map +1 -0
  235. package/dist/lib/mcp-registry.d.ts +47 -0
  236. package/dist/lib/mcp-registry.d.ts.map +1 -0
  237. package/dist/lib/mcp-registry.js +212 -0
  238. package/dist/lib/mcp-registry.js.map +1 -0
  239. package/dist/lib/profile-resolver.d.ts +28 -0
  240. package/dist/lib/profile-resolver.d.ts.map +1 -0
  241. package/dist/lib/profile-resolver.js +72 -0
  242. package/dist/lib/profile-resolver.js.map +1 -0
  243. package/dist/lib/profile-store.d.ts +14 -0
  244. package/dist/lib/profile-store.d.ts.map +1 -0
  245. package/dist/lib/profile-store.js +80 -0
  246. package/dist/lib/profile-store.js.map +1 -0
  247. package/dist/lib/rate-limiter.d.ts +32 -0
  248. package/dist/lib/rate-limiter.d.ts.map +1 -0
  249. package/dist/lib/rate-limiter.js +124 -0
  250. package/dist/lib/rate-limiter.js.map +1 -0
  251. package/dist/lib/sandbox.d.ts +25 -0
  252. package/dist/lib/sandbox.d.ts.map +1 -0
  253. package/dist/lib/sandbox.js +134 -0
  254. package/dist/lib/sandbox.js.map +1 -0
  255. package/dist/lib/search.d.ts +22 -0
  256. package/dist/lib/search.d.ts.map +1 -0
  257. package/dist/lib/search.js +147 -0
  258. package/dist/lib/search.js.map +1 -0
  259. package/dist/lib/secret-scanner.d.ts +26 -0
  260. package/dist/lib/secret-scanner.d.ts.map +1 -0
  261. package/dist/lib/secret-scanner.js +74 -0
  262. package/dist/lib/secret-scanner.js.map +1 -0
  263. package/dist/lib/url.d.ts +17 -0
  264. package/dist/lib/url.d.ts.map +1 -0
  265. package/dist/lib/url.js +51 -0
  266. package/dist/lib/url.js.map +1 -0
  267. package/dist/mcp/progressive-discovery.d.ts +21 -0
  268. package/dist/mcp/progressive-discovery.d.ts.map +1 -0
  269. package/dist/mcp/progressive-discovery.js +86 -0
  270. package/dist/mcp/progressive-discovery.js.map +1 -0
  271. package/dist/mcp/ptc-executor.d.ts +92 -0
  272. package/dist/mcp/ptc-executor.d.ts.map +1 -0
  273. package/dist/mcp/ptc-executor.js +199 -0
  274. package/dist/mcp/ptc-executor.js.map +1 -0
  275. package/dist/mcp/server.d.ts +29 -0
  276. package/dist/mcp/server.d.ts.map +1 -0
  277. package/dist/mcp/server.js +299 -0
  278. package/dist/mcp/server.js.map +1 -0
  279. package/dist/mcp/tool-codegen.d.ts +33 -0
  280. package/dist/mcp/tool-codegen.d.ts.map +1 -0
  281. package/dist/mcp/tool-codegen.js +129 -0
  282. package/dist/mcp/tool-codegen.js.map +1 -0
  283. package/dist/mcp/tool-examples.d.ts +22 -0
  284. package/dist/mcp/tool-examples.d.ts.map +1 -0
  285. package/dist/mcp/tool-examples.js +117 -0
  286. package/dist/mcp/tool-examples.js.map +1 -0
  287. package/dist/mcp/tools/classify-signals.d.ts +67 -0
  288. package/dist/mcp/tools/classify-signals.d.ts.map +1 -0
  289. package/dist/mcp/tools/classify-signals.js +124 -0
  290. package/dist/mcp/tools/classify-signals.js.map +1 -0
  291. package/dist/mcp/tools/compute-risk-score.d.ts +97 -0
  292. package/dist/mcp/tools/compute-risk-score.d.ts.map +1 -0
  293. package/dist/mcp/tools/compute-risk-score.js +171 -0
  294. package/dist/mcp/tools/compute-risk-score.js.map +1 -0
  295. package/dist/mcp/tools/generate-plan.d.ts +99 -0
  296. package/dist/mcp/tools/generate-plan.d.ts.map +1 -0
  297. package/dist/mcp/tools/generate-plan.js +200 -0
  298. package/dist/mcp/tools/generate-plan.js.map +1 -0
  299. package/dist/mcp/tools/generate-report-pack.d.ts +119 -0
  300. package/dist/mcp/tools/generate-report-pack.d.ts.map +1 -0
  301. package/dist/mcp/tools/generate-report-pack.js +304 -0
  302. package/dist/mcp/tools/generate-report-pack.js.map +1 -0
  303. package/dist/mcp/tools/run-skeptic-review.d.ts +33 -0
  304. package/dist/mcp/tools/run-skeptic-review.d.ts.map +1 -0
  305. package/dist/mcp/tools/run-skeptic-review.js +157 -0
  306. package/dist/mcp/tools/run-skeptic-review.js.map +1 -0
  307. package/dist/mcp/tools/scan-saas-repo.d.ts +103 -0
  308. package/dist/mcp/tools/scan-saas-repo.d.ts.map +1 -0
  309. package/dist/mcp/tools/scan-saas-repo.js +421 -0
  310. package/dist/mcp/tools/scan-saas-repo.js.map +1 -0
  311. package/dist/mcp/tools/scrape-competitor.d.ts +38 -0
  312. package/dist/mcp/tools/scrape-competitor.d.ts.map +1 -0
  313. package/dist/mcp/tools/scrape-competitor.js +124 -0
  314. package/dist/mcp/tools/scrape-competitor.js.map +1 -0
  315. package/dist/mcp/tools/search-tools.d.ts +37 -0
  316. package/dist/mcp/tools/search-tools.d.ts.map +1 -0
  317. package/dist/mcp/tools/search-tools.js +109 -0
  318. package/dist/mcp/tools/search-tools.js.map +1 -0
  319. package/dist/packs/business-viability.d.ts +30 -0
  320. package/dist/packs/business-viability.d.ts.map +1 -0
  321. package/dist/packs/business-viability.js +37 -0
  322. package/dist/packs/business-viability.js.map +1 -0
  323. package/dist/packs/competitor-intel.d.ts +34 -0
  324. package/dist/packs/competitor-intel.d.ts.map +1 -0
  325. package/dist/packs/competitor-intel.js +72 -0
  326. package/dist/packs/competitor-intel.js.map +1 -0
  327. package/dist/packs/financial-audit.d.ts +40 -0
  328. package/dist/packs/financial-audit.d.ts.map +1 -0
  329. package/dist/packs/financial-audit.js +74 -0
  330. package/dist/packs/financial-audit.js.map +1 -0
  331. package/dist/packs/pitch-deck.d.ts +38 -0
  332. package/dist/packs/pitch-deck.d.ts.map +1 -0
  333. package/dist/packs/pitch-deck.js +80 -0
  334. package/dist/packs/pitch-deck.js.map +1 -0
  335. package/dist/packs/smm-gtm.d.ts +38 -0
  336. package/dist/packs/smm-gtm.d.ts.map +1 -0
  337. package/dist/packs/smm-gtm.js +83 -0
  338. package/dist/packs/smm-gtm.js.map +1 -0
  339. package/dist/packs/tech-audit.d.ts +34 -0
  340. package/dist/packs/tech-audit.d.ts.map +1 -0
  341. package/dist/packs/tech-audit.js +43 -0
  342. package/dist/packs/tech-audit.js.map +1 -0
  343. package/dist/project-templates/build-proof.d.ts +24 -0
  344. package/dist/project-templates/build-proof.d.ts.map +1 -0
  345. package/dist/project-templates/build-proof.js +108 -0
  346. package/dist/project-templates/build-proof.js.map +1 -0
  347. package/dist/project-templates/quickstart-renderer.d.ts +16 -0
  348. package/dist/project-templates/quickstart-renderer.d.ts.map +1 -0
  349. package/dist/project-templates/quickstart-renderer.js +57 -0
  350. package/dist/project-templates/quickstart-renderer.js.map +1 -0
  351. package/dist/project-templates/registry.d.ts +68 -0
  352. package/dist/project-templates/registry.d.ts.map +1 -0
  353. package/dist/project-templates/registry.js +328 -0
  354. package/dist/project-templates/registry.js.map +1 -0
  355. package/dist/project-templates/templates.d.ts +3 -0
  356. package/dist/project-templates/templates.d.ts.map +1 -0
  357. package/dist/project-templates/templates.js +188 -0
  358. package/dist/project-templates/templates.js.map +1 -0
  359. package/dist/prompts/biz-viability.d.ts +10 -0
  360. package/dist/prompts/biz-viability.d.ts.map +1 -0
  361. package/dist/prompts/biz-viability.js +35 -0
  362. package/dist/prompts/biz-viability.js.map +1 -0
  363. package/dist/prompts/catalog.d.ts +16 -0
  364. package/dist/prompts/catalog.d.ts.map +1 -0
  365. package/dist/prompts/catalog.js +17 -0
  366. package/dist/prompts/catalog.js.map +1 -0
  367. package/dist/prompts/competitor-intel.d.ts +10 -0
  368. package/dist/prompts/competitor-intel.d.ts.map +1 -0
  369. package/dist/prompts/competitor-intel.js +37 -0
  370. package/dist/prompts/competitor-intel.js.map +1 -0
  371. package/dist/prompts/finance-audit.d.ts +10 -0
  372. package/dist/prompts/finance-audit.d.ts.map +1 -0
  373. package/dist/prompts/finance-audit.js +35 -0
  374. package/dist/prompts/finance-audit.js.map +1 -0
  375. package/dist/prompts/fix-sprint-plan.d.ts +10 -0
  376. package/dist/prompts/fix-sprint-plan.d.ts.map +1 -0
  377. package/dist/prompts/fix-sprint-plan.js +45 -0
  378. package/dist/prompts/fix-sprint-plan.js.map +1 -0
  379. package/dist/prompts/gtm-smm.d.ts +10 -0
  380. package/dist/prompts/gtm-smm.d.ts.map +1 -0
  381. package/dist/prompts/gtm-smm.js +35 -0
  382. package/dist/prompts/gtm-smm.js.map +1 -0
  383. package/dist/prompts/orchestrator-dispatch.d.ts +40 -0
  384. package/dist/prompts/orchestrator-dispatch.d.ts.map +1 -0
  385. package/dist/prompts/orchestrator-dispatch.js +92 -0
  386. package/dist/prompts/orchestrator-dispatch.js.map +1 -0
  387. package/dist/prompts/pitch-deck.d.ts +10 -0
  388. package/dist/prompts/pitch-deck.d.ts.map +1 -0
  389. package/dist/prompts/pitch-deck.js +36 -0
  390. package/dist/prompts/pitch-deck.js.map +1 -0
  391. package/dist/prompts/prompt-template.d.ts +16 -0
  392. package/dist/prompts/prompt-template.d.ts.map +1 -0
  393. package/dist/prompts/prompt-template.js +22 -0
  394. package/dist/prompts/prompt-template.js.map +1 -0
  395. package/dist/prompts/repo-audit-deep.d.ts +10 -0
  396. package/dist/prompts/repo-audit-deep.d.ts.map +1 -0
  397. package/dist/prompts/repo-audit-deep.js +39 -0
  398. package/dist/prompts/repo-audit-deep.js.map +1 -0
  399. package/dist/prompts/repo-scan-quick.d.ts +35 -0
  400. package/dist/prompts/repo-scan-quick.d.ts.map +1 -0
  401. package/dist/prompts/repo-scan-quick.js +69 -0
  402. package/dist/prompts/repo-scan-quick.js.map +1 -0
  403. package/dist/prompts/skeptic-review.d.ts +10 -0
  404. package/dist/prompts/skeptic-review.d.ts.map +1 -0
  405. package/dist/prompts/skeptic-review.js +40 -0
  406. package/dist/prompts/skeptic-review.js.map +1 -0
  407. package/dist/schemas/agent-step-sequence.d.ts +41 -0
  408. package/dist/schemas/agent-step-sequence.d.ts.map +1 -0
  409. package/dist/schemas/agent-step-sequence.js +25 -0
  410. package/dist/schemas/agent-step-sequence.js.map +1 -0
  411. package/dist/schemas/artifact-envelope.v1.d.ts +69 -0
  412. package/dist/schemas/artifact-envelope.v1.d.ts.map +1 -0
  413. package/dist/schemas/artifact-envelope.v1.js +24 -0
  414. package/dist/schemas/artifact-envelope.v1.js.map +1 -0
  415. package/dist/schemas/business-viability.v1.d.ts +223 -0
  416. package/dist/schemas/business-viability.v1.d.ts.map +1 -0
  417. package/dist/schemas/business-viability.v1.js +47 -0
  418. package/dist/schemas/business-viability.v1.js.map +1 -0
  419. package/dist/schemas/common.d.ts +9 -0
  420. package/dist/schemas/common.d.ts.map +1 -0
  421. package/dist/schemas/common.js +8 -0
  422. package/dist/schemas/common.js.map +1 -0
  423. package/dist/schemas/competitor-intel.v1.d.ts +239 -0
  424. package/dist/schemas/competitor-intel.v1.d.ts.map +1 -0
  425. package/dist/schemas/competitor-intel.v1.js +59 -0
  426. package/dist/schemas/competitor-intel.v1.js.map +1 -0
  427. package/dist/schemas/config.d.ts +133 -0
  428. package/dist/schemas/config.d.ts.map +1 -0
  429. package/dist/schemas/config.js +142 -0
  430. package/dist/schemas/config.js.map +1 -0
  431. package/dist/schemas/financial-audit.v1.d.ts +139 -0
  432. package/dist/schemas/financial-audit.v1.d.ts.map +1 -0
  433. package/dist/schemas/financial-audit.v1.js +50 -0
  434. package/dist/schemas/financial-audit.v1.js.map +1 -0
  435. package/dist/schemas/fix-result.v1.d.ts +104 -0
  436. package/dist/schemas/fix-result.v1.d.ts.map +1 -0
  437. package/dist/schemas/fix-result.v1.js +41 -0
  438. package/dist/schemas/fix-result.v1.js.map +1 -0
  439. package/dist/schemas/founder-profile.d.ts +76 -0
  440. package/dist/schemas/founder-profile.d.ts.map +1 -0
  441. package/dist/schemas/founder-profile.js +54 -0
  442. package/dist/schemas/founder-profile.js.map +1 -0
  443. package/dist/schemas/investor-readiness.v1.d.ts +20 -0
  444. package/dist/schemas/investor-readiness.v1.d.ts.map +1 -0
  445. package/dist/schemas/investor-readiness.v1.js +15 -0
  446. package/dist/schemas/investor-readiness.v1.js.map +1 -0
  447. package/dist/schemas/mcp-server-entry.d.ts +37 -0
  448. package/dist/schemas/mcp-server-entry.d.ts.map +1 -0
  449. package/dist/schemas/mcp-server-entry.js +23 -0
  450. package/dist/schemas/mcp-server-entry.js.map +1 -0
  451. package/dist/schemas/pitch-deck.v1.d.ts +141 -0
  452. package/dist/schemas/pitch-deck.v1.d.ts.map +1 -0
  453. package/dist/schemas/pitch-deck.v1.js +57 -0
  454. package/dist/schemas/pitch-deck.v1.js.map +1 -0
  455. package/dist/schemas/plan.v1.d.ts +97 -0
  456. package/dist/schemas/plan.v1.d.ts.map +1 -0
  457. package/dist/schemas/plan.v1.js +41 -0
  458. package/dist/schemas/plan.v1.js.map +1 -0
  459. package/dist/schemas/project-template.d.ts +101 -0
  460. package/dist/schemas/project-template.d.ts.map +1 -0
  461. package/dist/schemas/project-template.js +59 -0
  462. package/dist/schemas/project-template.js.map +1 -0
  463. package/dist/schemas/research-result.v1.d.ts +45 -0
  464. package/dist/schemas/research-result.v1.d.ts.map +1 -0
  465. package/dist/schemas/research-result.v1.js +20 -0
  466. package/dist/schemas/research-result.v1.js.map +1 -0
  467. package/dist/schemas/roadmap.v1.d.ts +49 -0
  468. package/dist/schemas/roadmap.v1.d.ts.map +1 -0
  469. package/dist/schemas/roadmap.v1.js +22 -0
  470. package/dist/schemas/roadmap.v1.js.map +1 -0
  471. package/dist/schemas/scan-result.v1.d.ts +87 -0
  472. package/dist/schemas/scan-result.v1.d.ts.map +1 -0
  473. package/dist/schemas/scan-result.v1.js +22 -0
  474. package/dist/schemas/scan-result.v1.js.map +1 -0
  475. package/dist/schemas/session.d.ts +165 -0
  476. package/dist/schemas/session.d.ts.map +1 -0
  477. package/dist/schemas/session.js +70 -0
  478. package/dist/schemas/session.js.map +1 -0
  479. package/dist/schemas/smm-gtm.v1.d.ts +175 -0
  480. package/dist/schemas/smm-gtm.v1.d.ts.map +1 -0
  481. package/dist/schemas/smm-gtm.v1.js +60 -0
  482. package/dist/schemas/smm-gtm.v1.js.map +1 -0
  483. package/dist/schemas/tech-audit.v1.d.ts +254 -0
  484. package/dist/schemas/tech-audit.v1.d.ts.map +1 -0
  485. package/dist/schemas/tech-audit.v1.js +61 -0
  486. package/dist/schemas/tech-audit.v1.js.map +1 -0
  487. package/dist/session/agent-session.d.ts +20 -0
  488. package/dist/session/agent-session.d.ts.map +1 -0
  489. package/dist/session/agent-session.js +53 -0
  490. package/dist/session/agent-session.js.map +1 -0
  491. package/dist/session/compaction/memory-pointers.d.ts +17 -0
  492. package/dist/session/compaction/memory-pointers.d.ts.map +1 -0
  493. package/dist/session/compaction/memory-pointers.js +46 -0
  494. package/dist/session/compaction/memory-pointers.js.map +1 -0
  495. package/dist/session/compaction/selective-retention.d.ts +19 -0
  496. package/dist/session/compaction/selective-retention.d.ts.map +1 -0
  497. package/dist/session/compaction/selective-retention.js +36 -0
  498. package/dist/session/compaction/selective-retention.js.map +1 -0
  499. package/dist/session/compaction/trajectory-summarizer.d.ts +22 -0
  500. package/dist/session/compaction/trajectory-summarizer.d.ts.map +1 -0
  501. package/dist/session/compaction/trajectory-summarizer.js +34 -0
  502. package/dist/session/compaction/trajectory-summarizer.js.map +1 -0
  503. package/dist/session/sdk-hooks.d.ts +31 -0
  504. package/dist/session/sdk-hooks.d.ts.map +1 -0
  505. package/dist/session/sdk-hooks.js +56 -0
  506. package/dist/session/sdk-hooks.js.map +1 -0
  507. package/dist/session/session-manager.d.ts +42 -0
  508. package/dist/session/session-manager.d.ts.map +1 -0
  509. package/dist/session/session-manager.js +236 -0
  510. package/dist/session/session-manager.js.map +1 -0
  511. package/dist/session/token-tracker.d.ts +31 -0
  512. package/dist/session/token-tracker.d.ts.map +1 -0
  513. package/dist/session/token-tracker.js +66 -0
  514. package/dist/session/token-tracker.js.map +1 -0
  515. package/package.json +80 -0
@@ -0,0 +1,302 @@
1
+ import { ConfigStore } from '../../config/config-store.js';
2
+ import { getPreset, listPresets } from '../../config/presets.js';
3
+ import { loadProfile, updateProfileField, upsertScenario, removeScenario, listScenarios, } from '../../lib/profile-store.js';
4
+ import { colorize, bold } from '../tui/colors.js';
5
+ import { ConfigError } from '../../lib/errors.js';
6
+ function printHelp() {
7
+ console.log(`Usage: saasgadget settings [<key> <value>]
8
+ saasgadget settings profile <preset-name>
9
+ saasgadget settings yolo on|off
10
+ saasgadget settings yolo persist
11
+ saasgadget settings mcp.transport stdio|streamable-http
12
+ saasgadget settings context-profile [<key> <value>]
13
+ saasgadget settings context-profile scenario <name> [--set <key>=<value>...]
14
+ saasgadget settings context-profile scenario list
15
+ saasgadget settings context-profile scenario remove <name>
16
+
17
+ When called with no arguments, displays all current settings.
18
+ When called with <key>, displays that setting's value.
19
+ When called with <key> <value>, sets the value.
20
+
21
+ Subcommands:
22
+ profile <preset-name> Apply a preset (founder-safe | power-user | audit-max)
23
+ yolo on|off Toggle YOLO mode (skip approvals for current session)
24
+ yolo persist Persist YOLO mode to config file
25
+ context-profile View current Founder Context Profile
26
+ context-profile <key> <value> Set a profile field
27
+ context-profile scenario Manage scenarios (create/switch, list, remove)
28
+
29
+ Options:
30
+ -h, --help Show this help message
31
+ `);
32
+ }
33
+ export const USAGE = `
34
+ Usage: saasgadget settings [<key> <value>]
35
+ saasgadget settings profile <preset-name>
36
+ saasgadget settings yolo on|off
37
+ saasgadget settings yolo persist
38
+ saasgadget settings mcp.transport stdio|streamable-http
39
+ saasgadget settings context-profile [<key> <value>]
40
+
41
+ Subcommands:
42
+ profile <preset> Apply a preset (founder-safe | power-user | audit-max)
43
+ yolo on|off Toggle YOLO mode for current session
44
+ yolo persist Persist YOLO mode to workspace config
45
+ context-profile View/set Founder Context Profile fields
46
+
47
+ Options:
48
+ -h, --help Show this help message
49
+ `;
50
+ export async function execute(args, flags) {
51
+ if (args.includes('--help') || args.includes('-h') || flags.help) {
52
+ printHelp();
53
+ return;
54
+ }
55
+ const configStore = new ConfigStore();
56
+ const subcommand = args[0];
57
+ // No arguments — show all settings
58
+ if (!subcommand) {
59
+ await showAllSettings(configStore);
60
+ return;
61
+ }
62
+ // Subcommand routing
63
+ switch (subcommand) {
64
+ case 'profile':
65
+ await handleProfile(args.slice(1), configStore);
66
+ break;
67
+ case 'yolo':
68
+ await handleYolo(args.slice(1), configStore);
69
+ break;
70
+ case 'context-profile':
71
+ await handleContextProfile(args.slice(1));
72
+ break;
73
+ default:
74
+ // settings <key> or settings <key> <value>
75
+ if (args.length === 1) {
76
+ await showSetting(args[0] ?? '', configStore);
77
+ }
78
+ else if (args.length === 2) {
79
+ await setSetting(args[0] ?? '', args[1] ?? '', configStore);
80
+ }
81
+ else {
82
+ printHelp();
83
+ }
84
+ break;
85
+ }
86
+ }
87
+ async function showAllSettings(configStore) {
88
+ const config = await configStore.load();
89
+ console.log(bold(colorize('\n Current Settings\n', 'primary')));
90
+ console.log(JSON.stringify(config, null, 2));
91
+ console.log('');
92
+ }
93
+ async function showSetting(key, configStore) {
94
+ const value = await configStore.getByPath(key);
95
+ if (value === undefined) {
96
+ console.error(`Setting '${key}' not found.`);
97
+ process.exit(1);
98
+ }
99
+ if (typeof value === 'object' && value !== null) {
100
+ console.log(JSON.stringify(value, null, 2));
101
+ }
102
+ else {
103
+ console.log(String(value));
104
+ }
105
+ }
106
+ async function setSetting(key, rawValue, configStore) {
107
+ // Parse value type
108
+ let value;
109
+ if (rawValue === 'true')
110
+ value = true;
111
+ else if (rawValue === 'false')
112
+ value = false;
113
+ else if (/^\d+$/.test(rawValue))
114
+ value = parseInt(rawValue, 10);
115
+ else if (/^\d+\.\d+$/.test(rawValue))
116
+ value = parseFloat(rawValue);
117
+ else
118
+ value = rawValue;
119
+ try {
120
+ await configStore.setByPath(key, value);
121
+ console.log(colorize('✓', 'success') + ` ${key} = ${JSON.stringify(value)}`);
122
+ }
123
+ catch (err) {
124
+ if (err instanceof ConfigError) {
125
+ console.error(err.message);
126
+ if (err.remediation)
127
+ console.error(err.remediation);
128
+ }
129
+ else {
130
+ throw err;
131
+ }
132
+ }
133
+ }
134
+ async function handleProfile(args, configStore) {
135
+ const presetName = args[0];
136
+ if (!presetName) {
137
+ const presets = listPresets();
138
+ console.log(bold(colorize('\n Available Presets\n', 'primary')));
139
+ for (const p of presets) {
140
+ console.log(` ${bold(p.displayName)} (${colorize(p.name, 'accent')})`);
141
+ console.log(` ${colorize(p.description, 'muted')}`);
142
+ }
143
+ console.log(`\n Usage: ${colorize('saasgadget settings profile <name>', 'accent')}\n`);
144
+ return;
145
+ }
146
+ const preset = getPreset(presetName);
147
+ if (!preset) {
148
+ const available = listPresets()
149
+ .map((p) => p.name)
150
+ .join(', ');
151
+ console.error(`Unknown preset: ${presetName}\nAvailable: ${available}`);
152
+ process.exit(1);
153
+ }
154
+ await configStore.save(preset.config);
155
+ console.log(colorize('✓', 'success') + ` Applied ${bold(preset.displayName)} preset.`);
156
+ }
157
+ async function handleYolo(args, configStore) {
158
+ const action = args[0];
159
+ if (!action) {
160
+ const current = await configStore.getByPath('safety.approvalMode');
161
+ console.log(`YOLO mode: ${current === 'yolo' ? colorize('ON', 'warning') : colorize('OFF', 'success')}`);
162
+ return;
163
+ }
164
+ switch (action) {
165
+ case 'on':
166
+ await configStore.setByPath('safety.approvalMode', 'yolo');
167
+ console.log(colorize('⚠', 'warning') + ' YOLO mode ' + bold('ON') + ' — approvals skipped.');
168
+ break;
169
+ case 'off':
170
+ await configStore.setByPath('safety.approvalMode', 'guided');
171
+ console.log(colorize('✓', 'success') + ' YOLO mode ' + bold('OFF') + ' — guided approvals restored.');
172
+ break;
173
+ case 'persist':
174
+ await configStore.setByPath('safety.approvalMode', 'yolo');
175
+ console.log(colorize('⚠', 'warning') +
176
+ ' YOLO mode persisted to config. All future sessions will skip approvals.');
177
+ break;
178
+ default:
179
+ console.error(`Usage: saasgadget settings yolo on|off|persist`);
180
+ break;
181
+ }
182
+ }
183
+ async function handleContextProfile(args) {
184
+ const cwd = process.cwd();
185
+ const subcommand = args[0];
186
+ // No args — show current profile
187
+ if (!subcommand) {
188
+ const profile = await loadProfile(cwd);
189
+ if (!profile) {
190
+ console.log(colorize('No Founder Context Profile found.', 'muted'));
191
+ console.log(` Run ${colorize('saasgadget settings context-profile <key> <value>', 'accent')} to create one.`);
192
+ return;
193
+ }
194
+ console.log(bold(colorize('\n Founder Context Profile\n', 'primary')));
195
+ console.log(JSON.stringify(profile, null, 2));
196
+ console.log('');
197
+ return;
198
+ }
199
+ // context-profile scenario ...
200
+ if (subcommand === 'scenario') {
201
+ await handleScenario(args.slice(1));
202
+ return;
203
+ }
204
+ // context-profile <key> <value> — set a field
205
+ if (args.length >= 2) {
206
+ const key = args[0] ?? '';
207
+ const rawValue = args[1] ?? '';
208
+ let value;
209
+ if (rawValue === 'true')
210
+ value = true;
211
+ else if (rawValue === 'false')
212
+ value = false;
213
+ else if (/^\d+$/.test(rawValue))
214
+ value = parseInt(rawValue, 10);
215
+ else if (/^\d+\.\d+$/.test(rawValue))
216
+ value = parseFloat(rawValue);
217
+ else
218
+ value = rawValue;
219
+ await updateProfileField(cwd, key, value);
220
+ console.log(colorize('✓', 'success') + ` Profile ${key} = ${JSON.stringify(value)}`);
221
+ return;
222
+ }
223
+ // Single key — show that field
224
+ const profile = await loadProfile(cwd);
225
+ if (!profile) {
226
+ console.error(`No profile found. Create one first with 'saasgadget settings context-profile <key> <value>'.`);
227
+ process.exit(1);
228
+ }
229
+ const keys = subcommand.split('.');
230
+ let current = profile;
231
+ for (const k of keys) {
232
+ if (current == null || typeof current !== 'object') {
233
+ console.error(`Profile field '${subcommand}' not found.`);
234
+ process.exit(1);
235
+ }
236
+ current = current[k];
237
+ }
238
+ if (typeof current === 'object' && current !== null) {
239
+ console.log(JSON.stringify(current, null, 2));
240
+ }
241
+ else {
242
+ console.log(current === undefined ? '(not set)' : String(current));
243
+ }
244
+ }
245
+ async function handleScenario(args) {
246
+ const cwd = process.cwd();
247
+ const action = args[0];
248
+ if (!action) {
249
+ console.error('Usage: saasgadget settings context-profile scenario <name|list|remove>');
250
+ return;
251
+ }
252
+ // context-profile scenario list
253
+ if (action === 'list') {
254
+ const scenarios = await listScenarios(cwd);
255
+ if (scenarios.length === 0) {
256
+ console.log(colorize('No scenarios defined.', 'muted'));
257
+ return;
258
+ }
259
+ console.log(bold(colorize('\n Scenarios\n', 'primary')));
260
+ for (const entry of scenarios) {
261
+ const marker = entry.active ? colorize(' (active)', 'success') : '';
262
+ console.log(` • ${bold(entry.name)}${marker}`);
263
+ }
264
+ console.log('');
265
+ return;
266
+ }
267
+ // context-profile scenario remove <name>
268
+ if (action === 'remove') {
269
+ const name = args[1];
270
+ if (!name) {
271
+ console.error('Usage: saasgadget settings context-profile scenario remove <name>');
272
+ return;
273
+ }
274
+ await removeScenario(cwd, name);
275
+ console.log(colorize('✓', 'success') + ` Scenario '${name}' removed.`);
276
+ return;
277
+ }
278
+ // context-profile scenario <name> [--set key=value ...]
279
+ const name = action;
280
+ const overrides = {};
281
+ for (let i = 1; i < args.length; i++) {
282
+ if (args[i] === '--set' && i + 1 < args.length) {
283
+ const pair = args[++i] ?? '';
284
+ const eqIdx = pair.indexOf('=');
285
+ if (eqIdx > 0) {
286
+ const key = pair.slice(0, eqIdx);
287
+ let rawValue = pair.slice(eqIdx + 1);
288
+ if (rawValue === 'true')
289
+ rawValue = true;
290
+ else if (rawValue === 'false')
291
+ rawValue = false;
292
+ else if (/^\d+$/.test(rawValue))
293
+ rawValue = parseInt(rawValue, 10);
294
+ overrides[key] = rawValue;
295
+ }
296
+ }
297
+ }
298
+ await upsertScenario(cwd, name, Object.keys(overrides).length > 0 ? overrides : undefined);
299
+ console.log(colorize('✓', 'success') +
300
+ ` Scenario '${bold(name)}' ${Object.keys(overrides).length > 0 ? 'created/updated' : 'activated'}.`);
301
+ }
302
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/cli/commands/settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * start command — launch interactive TUI mode with chat-first interface.
3
+ * Creates session with taskType "interactive", displays branded banner,
4
+ * initializes prompt loop, and wires slash command router.
5
+ * @module cli/commands/start
6
+ */
7
+ import type { CommandFlags } from './types.js';
8
+ export declare const USAGE = "\nUsage: saasgadget start\n\nLaunch interactive TUI mode with chat-first interface and slash command controls.\n\nThe TUI provides:\n - Dashboard with real-time token budget display\n - Slash command router: /scan, /pack, /plan, /fix, /research, /session\n - Context-aware hints after each command\n - Persistent session across commands\n\nGlobal flags still apply:\n --yolo Skip approval prompts for the session\n --quiet Suppress the banner\n --verbose Enable verbose logging\n";
9
+ export declare function execute(_args: string[], flags: CommandFlags): Promise<void>;
10
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAW/C,eAAO,MAAM,KAAK,sfAejB,CAAC;AAEF,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAyKjF"}
@@ -0,0 +1,185 @@
1
+ import { PromptLoop, parseInput } from '../tui/prompt.js';
2
+ import { SlashCommandRouter } from '../tui/slash-commands.js';
3
+ import { renderDashboard } from '../tui/dashboard.js';
4
+ import { SessionManager } from '../../session/session-manager.js';
5
+ import { TokenTracker } from '../../session/token-tracker.js';
6
+ import { ConfigStore } from '../../config/config-store.js';
7
+ import { SDKClient } from '../../agents/sdk-client.js';
8
+ import { TOOL_PROFILES } from '../../config/tool-profiles.js';
9
+ import { colorize, dim } from '../tui/colors.js';
10
+ export const USAGE = `
11
+ Usage: saasgadget start
12
+
13
+ Launch interactive TUI mode with chat-first interface and slash command controls.
14
+
15
+ The TUI provides:
16
+ - Dashboard with real-time token budget display
17
+ - Slash command router: /scan, /pack, /plan, /fix, /research, /session
18
+ - Context-aware hints after each command
19
+ - Persistent session across commands
20
+
21
+ Global flags still apply:
22
+ --yolo Skip approval prompts for the session
23
+ --quiet Suppress the banner
24
+ --verbose Enable verbose logging
25
+ `;
26
+ export async function execute(_args, flags) {
27
+ const configStore = new ConfigStore();
28
+ const config = await configStore.load();
29
+ // Create interactive session
30
+ const sessionManager = new SessionManager();
31
+ const session = await sessionManager.create({
32
+ userId: 'local',
33
+ taskType: 'interactive',
34
+ repo: process.cwd(),
35
+ ref: 'HEAD',
36
+ sourceMode: 'local',
37
+ approvalMode: flags.yolo ? 'yolo' : config.safety.approvalMode,
38
+ tokenBudget: config.toggles.budgetTokens,
39
+ toolProfile: 'dynamic',
40
+ });
41
+ const tokenTracker = new TokenTracker({
42
+ budget: config.toggles.budgetTokens,
43
+ warningThreshold: config.toggles.compactionWarningThreshold,
44
+ blockThreshold: config.toggles.compactionBlockThreshold,
45
+ });
46
+ // Session-scoped context overrides (not persisted to config.json)
47
+ const contextOverrides = { ...config.context };
48
+ let approvalMode = flags.yolo ? 'yolo' : config.safety.approvalMode;
49
+ const recentCommands = [];
50
+ const startTime = Date.now();
51
+ const signalCounts = null;
52
+ // Build slash command context
53
+ const getContext = () => ({
54
+ session,
55
+ tokenTracker,
56
+ contextOverrides,
57
+ approvalMode,
58
+ recentCommands,
59
+ });
60
+ // Wire slash command router
61
+ const router = new SlashCommandRouter();
62
+ // Register /dashboard (T063b)
63
+ router.register('dashboard', 'Toggle dashboard view', async () => {
64
+ loop.toggleView();
65
+ return '';
66
+ });
67
+ // Dashboard state
68
+ const dashboardState = {
69
+ getContext,
70
+ get signalCounts() { return signalCounts; },
71
+ configProfileName: config.theme ?? 'wxzrd-prime',
72
+ startTime,
73
+ };
74
+ // SDK client for natural language chat
75
+ let sdkClient = null;
76
+ // Build the prompt loop
77
+ const loop = new PromptLoop({
78
+ onInput: async (input) => {
79
+ const parsed = parseInput(input);
80
+ const ts = Date.now();
81
+ if (parsed.type === 'slash') {
82
+ try {
83
+ const ctx = getContext();
84
+ const result = await router.handle(parsed.command ?? '', parsed.args, ctx);
85
+ // Sync approval mode changes back
86
+ approvalMode = ctx.approvalMode;
87
+ recentCommands.push({ input, status: 'ok', timestamp: ts });
88
+ return result;
89
+ }
90
+ catch (error) {
91
+ recentCommands.push({ input, status: 'error', timestamp: ts });
92
+ throw error;
93
+ }
94
+ }
95
+ // CLI verb dispatch — execute recognized commands inline
96
+ if (parsed.type === 'command' && parsed.command) {
97
+ try {
98
+ const cmdName = parsed.command;
99
+ // Prevent recursive start
100
+ if (cmdName === 'start') {
101
+ return dim('Already in interactive mode. Use /help for commands.');
102
+ }
103
+ const mod = await import(`./${cmdName}.js`);
104
+ // Capture stdout via temporary buffer
105
+ const lines = [];
106
+ const origWrite = process.stdout.write.bind(process.stdout);
107
+ process.stdout.write = ((chunk) => {
108
+ lines.push(typeof chunk === 'string' ? chunk : new TextDecoder().decode(chunk));
109
+ return true;
110
+ });
111
+ try {
112
+ await mod.execute(parsed.args, {
113
+ ...flags,
114
+ format: flags.format ?? 'markdown',
115
+ });
116
+ }
117
+ finally {
118
+ process.stdout.write = origWrite;
119
+ }
120
+ const output = lines.join('');
121
+ recentCommands.push({ input, status: 'ok', timestamp: ts });
122
+ return output || dim(`${cmdName} completed.`);
123
+ }
124
+ catch (error) {
125
+ recentCommands.push({ input, status: 'error', timestamp: ts });
126
+ const msg = error instanceof Error ? error.message : String(error);
127
+ return colorize(`Command error: ${msg}`, 'error');
128
+ }
129
+ }
130
+ // Natural language input — route through SDK agent
131
+ try {
132
+ if (!sdkClient) {
133
+ const profileName = approvalMode === 'yolo' ? 'run' : 'plan';
134
+ sdkClient = new SDKClient({
135
+ sessionId: session.sessionId,
136
+ taskType: 'interactive',
137
+ approvalMode,
138
+ tokenBudget: config.toggles.budgetTokens,
139
+ toolProfile: TOOL_PROFILES[profileName] ?? TOOL_PROFILES['plan'],
140
+ });
141
+ await sdkClient.start();
142
+ }
143
+ const response = await sdkClient.chat(input);
144
+ tokenTracker.add('conversationHistory', input.length + response.length);
145
+ recentCommands.push({ input, status: 'ok', timestamp: ts });
146
+ return response;
147
+ }
148
+ catch (error) {
149
+ recentCommands.push({ input, status: 'error', timestamp: ts });
150
+ // Graceful fallback when AI backend is unavailable
151
+ return [
152
+ dim(`Agent error: ${error instanceof Error ? error.message : String(error)}`),
153
+ dim('Use slash commands for offline features:'),
154
+ ` ${colorize('/help', 'accent')} — see all commands`,
155
+ ].join('\n');
156
+ }
157
+ },
158
+ onExit: async () => {
159
+ // Stop SDK client if running
160
+ if (sdkClient)
161
+ await sdkClient.stop('suspended', tokenTracker.getUsage().total);
162
+ // Update session state on exit
163
+ await sessionManager.update({ ...session, state: 'suspended' });
164
+ },
165
+ quiet: flags.quiet,
166
+ });
167
+ // Wire dashboard renderer for Ctrl+D
168
+ loop.setDashboardRenderer(() => renderDashboard(dashboardState));
169
+ // Show contextual slash-command hints after banner
170
+ if (!flags.quiet) {
171
+ const hints = [
172
+ dim(' Quick start:'),
173
+ ` ${colorize('/help', 'accent')} Show all commands`,
174
+ ` ${colorize('/session', 'accent')} Check session & token budget`,
175
+ ` ${colorize('/context', 'accent')} Toggle context sources`,
176
+ ` ${colorize('/permissions', 'accent')} Switch approval mode`,
177
+ ` ${colorize('/dashboard', 'accent')} Toggle dashboard view (or Ctrl+D)`,
178
+ '',
179
+ ];
180
+ process.stdout.write(hints.join('\n'));
181
+ }
182
+ // Run the prompt loop (blocks until exit)
183
+ await loop.start();
184
+ }
185
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /** Command module interface — all command modules export this shape. */
2
+ export interface CommandFlags {
3
+ version: boolean;
4
+ help: boolean;
5
+ yolo: boolean;
6
+ format?: 'json' | 'markdown' | 'dual';
7
+ verbose: boolean;
8
+ quiet: boolean;
9
+ outputDir?: string;
10
+ compact: boolean;
11
+ detail?: 'concise' | 'balanced' | 'exhaustive';
12
+ accessible: boolean;
13
+ }
14
+ export type CommandExecutor = (args: string[], flags: CommandFlags) => Promise<void>;
15
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/types.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;IAC/C,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/commands/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Flag resolution — CLI flag > workspace .saasgadget.json > global config.json
3
+ * per T084 flag precedence requirements.
4
+ * @module cli/flag-resolver
5
+ */
6
+ import type { CommandFlags } from './commands/types.js';
7
+ /**
8
+ * Resolve effective flags by merging CLI flags with config defaults.
9
+ * Precedence: CLI flag > workspace .saasgadget.json > global config.json
10
+ */
11
+ export declare function resolveFlags(command: string | null, flags: CommandFlags): Promise<CommandFlags>;
12
+ /**
13
+ * Resolve the output directory with session-bound default.
14
+ * Precedence: CLI --output-dir flag > session-bound dir > cwd fallback.
15
+ */
16
+ export declare function resolveOutputDir(flags: CommandFlags, sessionId?: string): string;
17
+ //# sourceMappingURL=flag-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flag-resolver.d.ts","sourceRoot":"","sources":["../../src/cli/flag-resolver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAUxD;;;GAGG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,YAAY,CAAC,CAoCvB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAMhF"}
@@ -0,0 +1,57 @@
1
+ import { ConfigStore } from '../config/config-store.js';
2
+ import { join } from 'node:path';
3
+ import { homedir } from 'node:os';
4
+ /** Commands that do NOT support --detail */
5
+ const DETAIL_UNSUPPORTED = new Set([
6
+ 'session', 'mcp', 'new', 'init', 'auth', 'doctor',
7
+ ]);
8
+ /**
9
+ * Resolve effective flags by merging CLI flags with config defaults.
10
+ * Precedence: CLI flag > workspace .saasgadget.json > global config.json
11
+ */
12
+ export async function resolveFlags(command, flags) {
13
+ const configStore = new ConfigStore();
14
+ let config;
15
+ try {
16
+ config = await configStore.load();
17
+ }
18
+ catch {
19
+ // Config may not exist yet (pre-init). Use CLI flags as-is,
20
+ // but still strip unsupported flags for exempt commands.
21
+ const result = { ...flags };
22
+ if (command && DETAIL_UNSUPPORTED.has(command)) {
23
+ result.detail = undefined;
24
+ }
25
+ return result;
26
+ }
27
+ const resolved = { ...flags };
28
+ // Format: CLI flag > config output.displayFormat
29
+ if (flags.format === undefined) {
30
+ resolved.format = config.output.displayFormat;
31
+ }
32
+ // Detail: CLI flag > config output.detail
33
+ if (flags.detail === undefined) {
34
+ resolved.detail = config.output.detail;
35
+ }
36
+ // Log info when --detail used on unsupported command
37
+ if (command && DETAIL_UNSUPPORTED.has(command) && resolved.detail) {
38
+ if (!resolved.quiet) {
39
+ console.log('detail level not applicable to this command');
40
+ }
41
+ resolved.detail = undefined;
42
+ }
43
+ return resolved;
44
+ }
45
+ /**
46
+ * Resolve the output directory with session-bound default.
47
+ * Precedence: CLI --output-dir flag > session-bound dir > cwd fallback.
48
+ */
49
+ export function resolveOutputDir(flags, sessionId) {
50
+ if (flags.outputDir)
51
+ return flags.outputDir;
52
+ if (sessionId) {
53
+ return join(homedir(), '.saasgadget', 'sessions', sessionId, 'output');
54
+ }
55
+ return join(process.cwd(), '.saasgadget-output');
56
+ }
57
+ //# sourceMappingURL=flag-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flag-resolver.js","sourceRoot":"","sources":["../../src/cli/flag-resolver.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,4CAA4C;AAC5C,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ;CAClD,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAsB,EACtB,KAAmB;IAEnB,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;QAC5D,yDAAyD;QACzD,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;QAC5B,IAAI,OAAO,IAAI,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;QAC5B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAE9B,iDAAiD;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;IAChD,CAAC;IAED,0CAA0C;IAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACzC,CAAC;IAED,qDAAqD;IACrD,IAAI,OAAO,IAAI,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QAClE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC7D,CAAC;QACD,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAmB,EAAE,SAAkB;IACtE,IAAI,KAAK,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC,SAAS,CAAC;IAC5C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;AACnD,CAAC"}