@prductr/carlos 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 prductr
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,165 @@
1
+ # @prductr/carlos
2
+
3
+ AI-powered product roadmap generation and market fit assessment.
4
+
5
+ ## Overview
6
+
7
+ Carlos analyzes your project's docs and codebase to generate actionable scopecraft documentation: phased roadmaps, PMF assessments, prioritized backlogs, and technical debt reports.
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ npm install -g @prductr/carlos # global CLI
13
+ npm install @prductr/carlos # programmatic API
14
+ ```
15
+
16
+ ## CLI
17
+
18
+ ```bash
19
+ carlos roadmap # Generate phased product roadmap
20
+ carlos market-fit # Assess product-market fit (0–100 score)
21
+ carlos backlog # Prioritize features from docs/FEATURES.md
22
+ carlos audit # Technical debt audit
23
+ carlos full # Run all four analyses concurrently
24
+ carlos feedback # How to report issues or request features
25
+ carlos --version # Print version
26
+ carlos help # Show all commands and flags
27
+ ```
28
+
29
+ ### Flags
30
+
31
+ | Flag | Description |
32
+ |------|-------------|
33
+ | `--json` | Output result as JSON (all commands) |
34
+ | `--features <json>` | Feature list for `backlog` (JSON array, overrides FEATURES.md) |
35
+ | `--version`, `-v` | Print version and exit |
36
+
37
+ ```bash
38
+ # JSON output for scripting
39
+ carlos market-fit --json | jq '.productMarketFitScore'
40
+
41
+ # Inline feature list
42
+ carlos backlog --features '["Auth", "Dashboard", "Export"]'
43
+
44
+ # Analyze a specific directory
45
+ carlos roadmap ./path/to/project
46
+ ```
47
+
48
+ ### Feature file
49
+
50
+ Carlos reads `docs/FEATURES.md` (or `FEATURES.md` at root) for the `backlog` command:
51
+
52
+ ```markdown
53
+ # Features
54
+
55
+ - User authentication
56
+ - Dashboard with real-time metrics
57
+ - Export to CSV
58
+ - Dark mode support
59
+ ```
60
+
61
+ ### Config file
62
+
63
+ Create `carlos.config.json` in your project root to override defaults:
64
+
65
+ ```json
66
+ {
67
+ "outputDir": "scopecraft",
68
+ "docsDir": "docs",
69
+ "includeMarketFit": true,
70
+ "includeTechnicalAudit": true
71
+ }
72
+ ```
73
+
74
+ ## Output
75
+
76
+ Carlos writes Markdown reports to `scopecraft/` (configurable via `outputDir`):
77
+
78
+ ```
79
+ scopecraft/
80
+ ├── ROADMAP.md # Phased roadmap with epics and milestones
81
+ ├── METRICS_AND_PMF.md # PMF score, differentiators, recommendations
82
+ ├── PRODUCT_BACKLOG.md # Now / Next / Later prioritized backlog
83
+ └── TECHNICAL_AUDIT.md # Debt items by category with severity
84
+ ```
85
+
86
+ ## PMF scoring
87
+
88
+ A project scores higher when its PRD or README includes:
89
+
90
+ | Section | Points |
91
+ |---------|--------|
92
+ | `## Target Audience` | 20 |
93
+ | `## Problem Statement` | 20 |
94
+ | `## Solution` | 20 |
95
+ | `## Value Proposition` | 20 |
96
+ | Differentiators present | 15 |
97
+ | Low / no competition | up to 5 |
98
+
99
+ A blank project scores ≤ 20. A well-documented one scores ≥ 75.
100
+
101
+ ## Programmatic API
102
+
103
+ ```typescript
104
+ import {
105
+ generateRoadmap,
106
+ assessMarketFit,
107
+ prioritizeFeatures,
108
+ auditTechnical,
109
+ readFeatures,
110
+ loadConfig,
111
+ } from '@prductr/carlos';
112
+
113
+ // Load config from carlos.config.json (falls back to defaults)
114
+ const config = loadConfig('/path/to/project');
115
+
116
+ const roadmap = await generateRoadmap(config);
117
+ const assessment = await assessMarketFit(config);
118
+ const features = await readFeatures(config); // reads FEATURES.md
119
+ const backlog = await prioritizeFeatures(config, features);
120
+ const audit = await auditTechnical(config);
121
+
122
+ // Or run all concurrently
123
+ const [roadmap, assessment, audit] = await Promise.all([
124
+ generateRoadmap(config),
125
+ assessMarketFit(config),
126
+ auditTechnical(config),
127
+ ]);
128
+ ```
129
+
130
+ ### Exported utilities
131
+
132
+ | Export | Description |
133
+ |--------|-------------|
134
+ | `generateRoadmap(config)` | Generate phased roadmap |
135
+ | `assessMarketFit(config)` | PMF assessment |
136
+ | `prioritizeFeatures(config, features)` | RICE-scored backlog |
137
+ | `auditTechnical(config)` | Technical debt audit |
138
+ | `readFeatures(config)` | Read features from FEATURES.md |
139
+ | `parseFeaturesFlag(args)` | Parse `--features` JSON from argv |
140
+ | `loadConfig(projectRoot)` | Load + merge carlos.config.json |
141
+ | `getVersion()` | Package version string |
142
+ | `hasJsonFlag(args)` | Detect `--json` in argv |
143
+
144
+ ## Product stages
145
+
146
+ Carlos infers the current stage from `package.json` version:
147
+
148
+ | Version | Stage |
149
+ |---------|-------|
150
+ | `0.0.x` | prototype |
151
+ | `0.x.x` | mvp |
152
+ | `1.0.x` | beta |
153
+ | `2.x.x`+ | growth |
154
+ | No package.json + README | mvp |
155
+ | No package.json, no README | idea |
156
+
157
+ ## Troubleshooting
158
+
159
+ See [docs/RUNBOOK.md](docs/RUNBOOK.md) for common issues and fixes.
160
+
161
+ To report a bug or request a feature: `carlos feedback`
162
+
163
+ ## License
164
+
165
+ MIT
package/dist/cli.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Carlos CLI - Command-line interface for product roadmap generation
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;GAEG"}
package/dist/cli.js ADDED
@@ -0,0 +1,157 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Carlos CLI - Command-line interface for product roadmap generation
4
+ */
5
+ import { resolve } from "path";
6
+ import { generateRoadmap } from "./roadmap/index.js";
7
+ import { assessMarketFit } from "./market-fit/index.js";
8
+ import { prioritizeFeatures, readFeatures, parseFeaturesFlag } from "./product/index.js";
9
+ import { auditTechnical } from "./technical/index.js";
10
+ import { loadConfig, getVersion, hasJsonFlag } from "./config.js";
11
+ const commands = {
12
+ roadmap: "Generate comprehensive product roadmap",
13
+ "market-fit": "Assess product-market fit",
14
+ backlog: "Prioritize product backlog (reads docs/FEATURES.md)",
15
+ audit: "Perform technical debt audit",
16
+ full: "Run complete analysis (roadmap + market-fit + audit)",
17
+ feedback: "Show how to provide feedback or report issues",
18
+ help: "Show this help message",
19
+ };
20
+ async function main() {
21
+ const args = process.argv.slice(2);
22
+ // Version flag: carlos --version or carlos -v
23
+ if (args[0] === "--version" || args[0] === "-v") {
24
+ console.log(getVersion());
25
+ return;
26
+ }
27
+ const command = args[0] || "help";
28
+ // Project root is the second positional arg (not starting with "-")
29
+ const positional = args.slice(1).find((a) => !a.startsWith("-"));
30
+ const projectRoot = positional || process.cwd();
31
+ const config = loadConfig(resolve(projectRoot));
32
+ const jsonMode = hasJsonFlag(args);
33
+ if (!jsonMode)
34
+ console.log("📊 Carlos - Product Roadmap Agent\n");
35
+ try {
36
+ switch (command) {
37
+ case "roadmap": {
38
+ const roadmap = await generateRoadmap(config);
39
+ if (jsonMode) {
40
+ process.stdout.write(JSON.stringify(roadmap, null, 2) + "\n");
41
+ }
42
+ else {
43
+ console.log("\n✅ Roadmap generated successfully");
44
+ console.log(` Phases: ${roadmap.phases.length}`);
45
+ console.log(` Epics: ${roadmap.epics.length}`);
46
+ console.log(` Timeline: ${roadmap.timeline}`);
47
+ }
48
+ break;
49
+ }
50
+ case "market-fit": {
51
+ const assessment = await assessMarketFit(config);
52
+ if (jsonMode) {
53
+ process.stdout.write(JSON.stringify(assessment, null, 2) + "\n");
54
+ }
55
+ else {
56
+ console.log("\n✅ Market fit assessment complete");
57
+ console.log(` PMF Score: ${assessment.productMarketFitScore}/100`);
58
+ console.log(` Competition: ${assessment.competition.length} competitors`);
59
+ console.log(` Recommendations: ${assessment.recommendations.length}`);
60
+ }
61
+ break;
62
+ }
63
+ case "backlog": {
64
+ const features = parseFeaturesFlag(args) ?? await readFeatures(config);
65
+ const backlog = await prioritizeFeatures(config, features);
66
+ if (jsonMode) {
67
+ process.stdout.write(JSON.stringify(backlog, null, 2) + "\n");
68
+ }
69
+ else {
70
+ console.log("\n✅ Product backlog prioritized");
71
+ console.log(` Now: ${backlog.nowItems.length} items`);
72
+ console.log(` Next: ${backlog.nextItems.length} items`);
73
+ console.log(` Later: ${backlog.laterItems.length} items`);
74
+ }
75
+ break;
76
+ }
77
+ case "audit": {
78
+ const audit = await auditTechnical(config);
79
+ if (jsonMode) {
80
+ process.stdout.write(JSON.stringify(audit, null, 2) + "\n");
81
+ }
82
+ else {
83
+ console.log("\n✅ Technical audit complete");
84
+ console.log(` Overall Health: ${audit.overallHealth}/100`);
85
+ console.log(` Debt Items: ${audit.debtItems.length}`);
86
+ console.log(` Critical Items: ${audit.debtItems.filter((d) => d.severity === "critical").length}`);
87
+ }
88
+ break;
89
+ }
90
+ case "full": {
91
+ if (!jsonMode)
92
+ console.log("Running complete analysis...\n");
93
+ const [roadmap, assessment, audit] = await Promise.all([
94
+ generateRoadmap(config),
95
+ assessMarketFit(config),
96
+ auditTechnical(config),
97
+ ]);
98
+ if (jsonMode) {
99
+ process.stdout.write(JSON.stringify({ roadmap, assessment, audit }, null, 2) + "\n");
100
+ }
101
+ else {
102
+ console.log(`✅ Roadmap: ${roadmap.phases.length} phases`);
103
+ console.log(`✅ Market Fit: ${assessment.productMarketFitScore}/100`);
104
+ console.log(`✅ Technical Health: ${audit.overallHealth}/100`);
105
+ console.log(`\n📁 All reports written to ${config.outputDir}/`);
106
+ }
107
+ break;
108
+ }
109
+ case "feedback": {
110
+ console.log("📬 How to provide feedback:\n");
111
+ console.log(" GitHub Issues: https://github.com/prductr-com/carlos/issues");
112
+ console.log(" Feature requests, bug reports, and general feedback welcome.\n");
113
+ console.log(" When reporting bugs, please include:");
114
+ console.log(" - carlos version: carlos --version");
115
+ console.log(" - Node.js version: node --version");
116
+ console.log(" - Command that failed and error message");
117
+ break;
118
+ }
119
+ case "help":
120
+ default:
121
+ showHelp();
122
+ break;
123
+ }
124
+ }
125
+ catch (error) {
126
+ console.error("\n❌ Error:", error);
127
+ process.exit(1);
128
+ }
129
+ }
130
+ function showHelp() {
131
+ console.log(`Carlos v${getVersion()} — AI-powered product roadmap agent\n`);
132
+ console.log("Usage: carlos <command> [project-path] [flags]\n");
133
+ console.log("Commands:\n");
134
+ Object.entries(commands).forEach(([cmd, desc]) => {
135
+ console.log(` ${cmd.padEnd(12)} ${desc}`);
136
+ });
137
+ console.log("\nFlags:");
138
+ console.log(" --version, -v Print version and exit");
139
+ console.log(" --features <json> Feature list for backlog command (JSON array)");
140
+ console.log(" --json Output result as JSON (machine-readable)");
141
+ console.log("\nExamples:");
142
+ console.log(" carlos roadmap # Generate roadmap for current directory");
143
+ console.log(" carlos market-fit # Assess product-market fit");
144
+ console.log(" carlos audit # Run technical debt audit");
145
+ console.log(" carlos full # Complete analysis (runs concurrently)");
146
+ console.log(" carlos roadmap ./my-product # Analyze specific project");
147
+ console.log(' carlos backlog --features \'["Auth","Dashboard"]\' # Prioritize feature list');
148
+ console.log("\nConfig (carlos.config.json):");
149
+ console.log(' { "outputDir": "scopecraft", "docsDir": "docs",');
150
+ console.log(' "includeMarketFit": true, "includeTechnicalAudit": true }');
151
+ console.log("\nFeature file (docs/FEATURES.md or FEATURES.md):");
152
+ console.log(" # Features");
153
+ console.log(" - User authentication");
154
+ console.log(" - Dashboard with metrics");
155
+ }
156
+ main();
157
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Config loader - reads carlos.config.json from projectRoot
3
+ */
4
+ import { CarlosConfig } from "./types.js";
5
+ /**
6
+ * Return the package version from package.json.
7
+ */
8
+ export declare function getVersion(): string;
9
+ /**
10
+ * Return true when --json flag is present in args.
11
+ */
12
+ export declare function hasJsonFlag(args: string[]): boolean;
13
+ /**
14
+ * Load Carlos config by merging carlos.config.json with defaults.
15
+ * Falls back to defaults silently if the file contains malformed JSON.
16
+ *
17
+ * @param projectRoot - Directory to look for carlos.config.json
18
+ * @returns Fully resolved CarlosConfig
19
+ */
20
+ export declare function loadConfig(projectRoot: string): CarlosConfig;
21
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI1C;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAInC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAEnD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAa5D"}
package/dist/config.js ADDED
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Config loader - reads carlos.config.json from projectRoot
3
+ */
4
+ import { readFileSync, existsSync } from "fs";
5
+ import { join, dirname } from "path";
6
+ import { fileURLToPath } from "url";
7
+ import { CarlosConfig } from "./types.js";
8
+ const __dirname = dirname(fileURLToPath(import.meta.url));
9
+ /**
10
+ * Return the package version from package.json.
11
+ */
12
+ export function getVersion() {
13
+ const pkgPath = join(__dirname, "..", "package.json");
14
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
15
+ return pkg.version;
16
+ }
17
+ /**
18
+ * Return true when --json flag is present in args.
19
+ */
20
+ export function hasJsonFlag(args) {
21
+ return args.includes("--json");
22
+ }
23
+ /**
24
+ * Load Carlos config by merging carlos.config.json with defaults.
25
+ * Falls back to defaults silently if the file contains malformed JSON.
26
+ *
27
+ * @param projectRoot - Directory to look for carlos.config.json
28
+ * @returns Fully resolved CarlosConfig
29
+ */
30
+ export function loadConfig(projectRoot) {
31
+ const configPath = join(projectRoot, "carlos.config.json");
32
+ let fileData = {};
33
+ if (existsSync(configPath)) {
34
+ try {
35
+ fileData = JSON.parse(readFileSync(configPath, "utf8"));
36
+ }
37
+ catch {
38
+ console.warn("⚠️ carlos.config.json contains invalid JSON — using defaults");
39
+ }
40
+ }
41
+ return CarlosConfig.parse({ projectRoot, ...fileData });
42
+ }
43
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAwB,CAAC;IAC7E,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,WAAmB;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;IAC3D,IAAI,QAAQ,GAA4B,EAAE,CAAC;IAE3C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAA4B,CAAC;QACrF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Carlos - Product roadmap and market fit assessment agent
3
+ *
4
+ * A tool for generating comprehensive product roadmaps, assessing market fit,
5
+ * and auditing technical debt.
6
+ */
7
+ export { generateRoadmap } from "./roadmap/index.js";
8
+ export { assessMarketFit } from "./market-fit/index.js";
9
+ export { prioritizeFeatures, readFeatures, parseFeaturesFlag } from "./product/index.js";
10
+ export { auditTechnical } from "./technical/index.js";
11
+ export { loadConfig, getVersion, hasJsonFlag } from "./config.js";
12
+ export type { CarlosConfig, ProductStage, Roadmap, Phase, Epic, UserStory, MarketFitAssessment, TechnicalAudit, TechnicalDebtItem, ProductBacklog, FeaturePriority, Risk, } from "./types.js";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAElE,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,KAAK,EACL,IAAI,EACJ,SAAS,EACT,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,IAAI,GACL,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Carlos - Product roadmap and market fit assessment agent
3
+ *
4
+ * A tool for generating comprehensive product roadmaps, assessing market fit,
5
+ * and auditing technical debt.
6
+ */
7
+ export { generateRoadmap } from "./roadmap/index.js";
8
+ export { assessMarketFit } from "./market-fit/index.js";
9
+ export { prioritizeFeatures, readFeatures, parseFeaturesFlag } from "./product/index.js";
10
+ export { auditTechnical } from "./technical/index.js";
11
+ export { loadConfig, getVersion, hasJsonFlag } from "./config.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Market Fit - Assess product-market fit and competitive position
3
+ * Analyzes target audience, competition, and market opportunity
4
+ */
5
+ import type { CarlosConfig, MarketFitAssessment } from "../types.js";
6
+ /**
7
+ * Assess product-market fit
8
+ *
9
+ * @param config - Carlos configuration
10
+ * @returns Market fit assessment with score and recommendations
11
+ */
12
+ export declare function assessMarketFit(config: CarlosConfig): Promise<MarketFitAssessment>;
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/market-fit/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAErE;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,mBAAmB,CAAC,CAqD9B"}