@specmarket/cli 0.0.4 → 0.0.5

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/README.md CHANGED
@@ -91,7 +91,7 @@ specmarket run @user/docusign-replacement
91
91
  1. Validates the spec (`specmarket validate` internally)
92
92
  2. Creates a sandboxed working directory under `~/.specmarket/runs/<run-id>/`
93
93
  3. Copies spec files into the sandbox
94
- 4. Loops: feeds `PROMPT.md` to `claude-code --print`, captures tokens/duration/diffs per iteration
94
+ 4. Loops: feeds `PROMPT.md` to `claude --print`, captures tokens/duration/diffs per iteration
95
95
  5. Terminates on: **success** (all criteria met), **stall** (3 loops with no meaningful diff), **failure** (10 loops stuck on same test), or **budget exceeded**
96
96
  6. Generates `run-report.json` with full metadata
97
97
 
@@ -108,7 +108,7 @@ var specYamlSchema = z.object({
108
108
  output_type: outputTypeSchema,
109
109
  primary_stack: primaryStackSchema,
110
110
  version: z.string().regex(/^\d+\.\d+\.\d+$/, "version must be semver (e.g. 1.0.0)"),
111
- runner: z.literal("claude-code"),
111
+ runner: z.literal("claude"),
112
112
  min_model: z.string().min(1),
113
113
  estimated_tokens: z.number().int().positive(),
114
114
  estimated_cost_usd: z.number().positive(),
@@ -150,6 +150,20 @@ var bountySubmissionStatusSchema = z.enum([
150
150
  "accepted",
151
151
  "rejected"
152
152
  ]);
153
+ var specmarketSidecarSchema = z.object({
154
+ spec_format: z.string().min(1),
155
+ display_name: z.string().min(1),
156
+ description: z.string().min(10),
157
+ output_type: outputTypeSchema,
158
+ primary_stack: primaryStackSchema,
159
+ replaces_saas: z.string().optional(),
160
+ replaces_pricing: z.string().optional(),
161
+ tags: z.array(z.string()).default([]),
162
+ infrastructure: infrastructureSchemaYaml.optional(),
163
+ estimated_tokens: z.number().int().positive().optional(),
164
+ estimated_cost_usd: z.number().positive().optional(),
165
+ estimated_time_minutes: z.number().positive().optional()
166
+ });
153
167
  var successCriterionResultSchema = z.object({
154
168
  criterion: z.string().min(1),
155
169
  passed: z.boolean(),
@@ -226,6 +240,7 @@ var REQUIRED_SPEC_FILES = [
226
240
  "SUCCESS_CRITERIA.md"
227
241
  ];
228
242
  var REQUIRED_STDLIB_FILES = ["STACK.md"];
243
+ var SIDECAR_FILENAME = "specmarket.yaml";
229
244
 
230
245
  // src/lib/config.ts
231
246
  import createDebug from "debug";
@@ -265,6 +280,7 @@ async function setConfigValue(key, value) {
265
280
 
266
281
  export {
267
282
  specYamlSchema,
283
+ specmarketSidecarSchema,
268
284
  transformInfrastructure,
269
285
  EXIT_CODES,
270
286
  CONFIG_PATHS,
@@ -273,9 +289,10 @@ export {
273
289
  DEFAULT_CONVEX_URL,
274
290
  REQUIRED_SPEC_FILES,
275
291
  REQUIRED_STDLIB_FILES,
292
+ SIDECAR_FILENAME,
276
293
  loadConfig,
277
294
  saveConfig,
278
295
  getConfigValue,
279
296
  setConfigValue
280
297
  };
281
- //# sourceMappingURL=chunk-MS2DYACY.js.map
298
+ //# sourceMappingURL=chunk-DLEMNRTH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/config.ts","../../shared/src/validators.ts","../../shared/src/constants.ts"],"sourcesContent":["import { readFile, writeFile, mkdir } from 'fs/promises';\nimport { join } from 'path';\nimport { homedir } from 'os';\nimport type { CliConfig } from '@specmarket/shared';\nimport { CONFIG_PATHS } from '@specmarket/shared';\nimport createDebug from 'debug';\n\nconst debug = createDebug('specmarket:cli');\n\nfunction getConfigDir(): string {\n return join(homedir(), CONFIG_PATHS.DIR);\n}\n\nfunction getConfigPath(): string {\n return join(homedir(), CONFIG_PATHS.CONFIG);\n}\n\n/**\n * Ensures the ~/.specmarket directory exists.\n */\nasync function ensureConfigDir(): Promise<void> {\n await mkdir(getConfigDir(), { recursive: true });\n}\n\n/**\n * Loads CLI configuration from ~/.specmarket/config.json.\n * Returns default config if the file doesn't exist.\n */\nexport async function loadConfig(): Promise<CliConfig> {\n try {\n const raw = await readFile(getConfigPath(), 'utf-8');\n return JSON.parse(raw) as CliConfig;\n } catch {\n debug('No config file found, using defaults');\n return {};\n }\n}\n\n/**\n * Saves CLI configuration to ~/.specmarket/config.json.\n */\nexport async function saveConfig(config: CliConfig): Promise<void> {\n await ensureConfigDir();\n await writeFile(getConfigPath(), JSON.stringify(config, null, 2), 'utf-8');\n debug('Config saved to %s', getConfigPath());\n}\n\n/**\n * Gets a specific config value by key.\n */\nexport async function getConfigValue<K extends keyof CliConfig>(\n key: K\n): Promise<CliConfig[K]> {\n const config = await loadConfig();\n return config[key];\n}\n\n/**\n * Sets a specific config value and persists.\n */\nexport async function setConfigValue<K extends keyof CliConfig>(\n key: K,\n value: CliConfig[K]\n): Promise<void> {\n const config = await loadConfig();\n config[key] = value;\n await saveConfig(config);\n}\n","import { z } from 'zod';\n\nexport const outputTypeSchema = z.enum([\n 'web-app',\n 'cli-tool',\n 'api-service',\n 'library',\n 'mobile-app',\n]);\n\nexport const primaryStackSchema = z.enum([\n 'nextjs-typescript',\n 'astro-typescript',\n 'python-fastapi',\n 'go',\n 'rust',\n 'other',\n]);\n\nexport const serviceCategorySchema = z.enum([\n 'database',\n 'auth',\n 'storage',\n 'cdn',\n 'dns',\n 'email',\n 'sms',\n 'payments',\n 'search',\n 'analytics',\n 'monitoring',\n 'queue',\n 'cache',\n 'compute',\n 'pdf',\n 'ai',\n 'other',\n]);\n\n/** Provider schema (camelCase) — for Convex DB */\nexport const providerSchema = z.object({\n name: z.string().min(1),\n freeTier: z.boolean(),\n paidStartsUsd: z.number().min(0).optional(),\n notes: z.string().optional(),\n});\n\n/** Provider schema (snake_case) — for spec.yaml parsing */\nexport const providerSchemaYaml = z.object({\n name: z.string().min(1),\n free_tier: z.boolean(),\n paid_starts_usd: z.number().min(0).optional(),\n notes: z.string().optional(),\n});\n\n// snake_case for spec.yaml parsing\nexport const serviceSchemaYaml = z.object({\n category: serviceCategorySchema,\n name: z.string().min(1),\n purpose: z.string().min(1),\n required: z.boolean(),\n user_provided: z.boolean().optional(),\n providers: z.array(providerSchemaYaml).min(1),\n default_provider: z.string().optional(),\n setup_notes: z.string().optional(),\n});\n\n// camelCase for Convex DB\nexport const serviceSchema = z.object({\n category: serviceCategorySchema,\n name: z.string().min(1),\n purpose: z.string().min(1),\n required: z.boolean(),\n userProvided: z.boolean().optional(),\n providers: z.array(providerSchema).min(1),\n defaultProvider: z.string().optional(),\n setupNotes: z.string().optional(),\n});\n\n// snake_case for spec.yaml parsing\nexport const infrastructureSchemaYaml = z.object({\n monthly_cost: z.object({\n free_tier_usd: z.number().min(0),\n production_usd: z.number().min(0),\n }),\n services: z.array(serviceSchemaYaml).default([]),\n user_provided: z.array(z.string()).default([]),\n setup_time_minutes: z.number().min(0).optional(),\n deployment_targets: z\n .array(\n z.object({\n name: z.string().min(1),\n notes: z.string().optional(),\n })\n )\n .optional(),\n});\n\n// camelCase for Convex DB\nexport const infrastructureSchema = z.object({\n monthlyCost: z.object({\n freeTierUsd: z.number().min(0),\n productionUsd: z.number().min(0),\n }),\n services: z.array(serviceSchema).default([]),\n userProvided: z.array(z.string()).default([]),\n setupTimeMinutes: z.number().min(0).optional(),\n deploymentTargets: z\n .array(\n z.object({\n name: z.string().min(1),\n notes: z.string().optional(),\n })\n )\n .optional(),\n});\n\n// Full spec.yaml schema (snake_case as written by users)\nexport const specYamlSchema = z.object({\n name: z\n .string()\n .min(1)\n .regex(/^[a-z0-9-]+$/, 'name must be lowercase alphanumeric with hyphens'),\n display_name: z.string().min(1),\n description: z.string().min(10),\n replaces_saas: z.string().optional(),\n replaces_pricing: z.string().optional(),\n output_type: outputTypeSchema,\n primary_stack: primaryStackSchema,\n version: z\n .string()\n .regex(\n /^\\d+\\.\\d+\\.\\d+$/,\n 'version must be semver (e.g. 1.0.0)'\n ),\n runner: z.literal('claude'),\n min_model: z.string().min(1),\n estimated_tokens: z.number().int().positive(),\n estimated_cost_usd: z.number().positive(),\n estimated_time_minutes: z.number().positive(),\n tags: z.array(z.string()).default([]),\n infrastructure: infrastructureSchemaYaml.optional(),\n // Fork metadata (added by CLI when forking)\n forked_from_id: z.string().optional(),\n forked_from_version: z.string().optional(),\n});\n\nexport const runStatusSchema = z.enum([\n 'success',\n 'failure',\n 'stall',\n 'budget_exceeded',\n 'user_cancelled',\n]);\n\nexport const specStatusSchema = z.enum([\n 'published',\n 'draft',\n 'flagged',\n 'removed',\n]);\n\nexport const userRoleSchema = z.enum(['user', 'creator', 'admin']);\n\nexport const bountyFundingTypeSchema = z.enum([\n 'company',\n 'crowdfund',\n 'mixed',\n]);\n\nexport const bountyStatusSchema = z.enum([\n 'open',\n 'claimed',\n 'awarded',\n 'expired',\n 'cancelled',\n]);\n\nexport const bountySubmissionStatusSchema = z.enum([\n 'submitted',\n 'accepted',\n 'rejected',\n]);\n\n/** Sidecar schema for non-legacy specs (specmarket.yaml). Snake_case to match spec.yaml convention. */\nexport const specmarketSidecarSchema = z.object({\n spec_format: z.string().min(1),\n display_name: z.string().min(1),\n description: z.string().min(10),\n output_type: outputTypeSchema,\n primary_stack: primaryStackSchema,\n replaces_saas: z.string().optional(),\n replaces_pricing: z.string().optional(),\n tags: z.array(z.string()).default([]),\n infrastructure: infrastructureSchemaYaml.optional(),\n estimated_tokens: z.number().int().positive().optional(),\n estimated_cost_usd: z.number().positive().optional(),\n estimated_time_minutes: z.number().positive().optional(),\n});\n\nexport const successCriterionResultSchema = z.object({\n criterion: z.string().min(1),\n passed: z.boolean(),\n details: z.string().optional(),\n});\n\n/** Transform spec.yaml (snake_case infra) to Convex-friendly camelCase */\nexport function transformInfrastructure(\n yaml: z.infer<typeof infrastructureSchemaYaml>\n): z.infer<typeof infrastructureSchema> {\n return {\n monthlyCost: {\n freeTierUsd: yaml.monthly_cost.free_tier_usd,\n productionUsd: yaml.monthly_cost.production_usd,\n },\n services: yaml.services.map((s) => ({\n category: s.category,\n name: s.name,\n purpose: s.purpose,\n required: s.required,\n userProvided: s.user_provided,\n providers: s.providers.map((p) => ({\n name: p.name,\n freeTier: p.free_tier,\n paidStartsUsd: p.paid_starts_usd,\n notes: p.notes,\n })),\n defaultProvider: s.default_provider,\n setupNotes: s.setup_notes,\n })),\n userProvided: yaml.user_provided,\n setupTimeMinutes: yaml.setup_time_minutes,\n deploymentTargets: yaml.deployment_targets,\n };\n}\n","/** CLI exit codes */\nexport const EXIT_CODES = {\n /** Success */\n SUCCESS: 0,\n /** Validation error (bad spec, invalid args) */\n VALIDATION_ERROR: 1,\n /** Runtime error (loop failed, crash) */\n RUNTIME_ERROR: 2,\n /** Budget exceeded */\n BUDGET_EXCEEDED: 3,\n /** Network error (Convex unreachable, upload failed) */\n NETWORK_ERROR: 4,\n /** Auth error (not logged in, token expired) */\n AUTH_ERROR: 5,\n} as const;\n\nexport type ExitCode = (typeof EXIT_CODES)[keyof typeof EXIT_CODES];\n\n/** Default file paths (relative to $HOME) */\nexport const CONFIG_PATHS = {\n /** Directory for all SpecMarket CLI state */\n DIR: '.specmarket',\n /** Auth credentials file */\n CREDENTIALS: '.specmarket/credentials.json',\n /** CLI config file */\n CONFIG: '.specmarket/config.json',\n /** Run artifacts directory */\n RUNS_DIR: '.specmarket/runs',\n} as const;\n\n/** Default run behavior */\nexport const RUN_DEFAULTS = {\n /** Maximum loop iterations before forced stop */\n MAX_LOOPS: 50,\n /** Budget multiplier: stop if cost > estimated * this */\n BUDGET_MULTIPLIER: 2,\n /** Loops with no git diff before declaring stall */\n STALL_THRESHOLD: 3,\n /** Loops with the same failing test before declaring failure */\n FAILURE_THRESHOLD: 10,\n} as const;\n\n/** Rate limits (client-side awareness, enforced server-side too) */\nexport const RATE_LIMITS = {\n /** Max telemetry submissions per hour */\n RUNS_PER_HOUR: 10,\n /** Max spec publishes per day */\n PUBLISHES_PER_DAY: 5,\n /** Max ratings per day */\n RATINGS_PER_DAY: 20,\n} as const;\n\n/** Credential expiry */\nexport const TOKEN_EXPIRY_MS = 30 * 24 * 60 * 60 * 1000; // 30 days\n\n/** Runner identifier */\nexport const RUNNER_ID = 'claude' as const;\n\n/**\n * Convex deployment URL. Prefer CONVEX_URL env; otherwise use SpecMarket production.\n * CLI and coordinator use this when no env/config override is set.\n */\nexport const DEFAULT_CONVEX_URL: string =\n process.env['CONVEX_URL'] ?? 'https://clever-bird-665.convex.cloud';\n\n/** Required files in a valid spec directory */\nexport const REQUIRED_SPEC_FILES = [\n 'spec.yaml',\n 'PROMPT.md',\n 'SPEC.md',\n 'SUCCESS_CRITERIA.md',\n] as const;\n\n/** Required files in stdlib/ directory */\nexport const REQUIRED_STDLIB_FILES = ['STACK.md'] as const;\n\n/** Sidecar filename for non-legacy spec formats */\nexport const SIDECAR_FILENAME = 'specmarket.yaml' as const;\n\n/** Known spec formats for format detection and validation */\nexport const KNOWN_SPEC_FORMATS = [\n 'specmarket-legacy',\n 'speckit',\n 'bmad',\n 'ralph',\n 'custom',\n] as const;\n\n/** Debug log namespaces */\nexport const DEBUG_NAMESPACES = {\n CLI: 'specmarket:cli',\n CONVEX: 'specmarket:convex',\n RUNNER: 'specmarket:runner',\n AUTH: 'specmarket:auth',\n TELEMETRY: 'specmarket:telemetry',\n} as const;\n"],"mappings":"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","names":[]}
@@ -4,11 +4,11 @@ import {
4
4
  loadConfig,
5
5
  saveConfig,
6
6
  setConfigValue
7
- } from "./chunk-MS2DYACY.js";
7
+ } from "./chunk-DLEMNRTH.js";
8
8
  export {
9
9
  getConfigValue,
10
10
  loadConfig,
11
11
  saveConfig,
12
12
  setConfigValue
13
13
  };
14
- //# sourceMappingURL=config-R5KWZSJP.js.map
14
+ //# sourceMappingURL=config-OAU6SJLC.js.map