dojo.md 0.1.0 → 0.2.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/courses/GENERATION_LOG.md +27 -0
- package/courses/api-error-handling/course.yaml +16 -0
- package/courses/api-error-handling/scenarios/level-1/error-response-format.yaml +131 -0
- package/courses/api-error-handling/scenarios/level-1/http-status-codes-basics.yaml +90 -0
- package/courses/api-error-handling/scenarios/level-1/rate-limiting-basics.yaml +135 -0
- package/courses/api-error-handling/scenarios/level-1/request-validation-errors.yaml +208 -0
- package/courses/api-error-handling/scenarios/level-2/circuit-breaker-pattern.yaml +189 -0
- package/courses/api-error-handling/scenarios/level-2/idempotency-retry-logic.yaml +159 -0
- package/courses/api-error-handling/scenarios/level-2/rfc-7807-problem-details.yaml +178 -0
- package/courses/api-error-handling/scenarios/level-2/webhook-error-handling.yaml +211 -0
- package/courses/api-error-handling/scenarios/level-3/distributed-tracing-errors.yaml +275 -0
- package/courses/github-actions-cicd/course.yaml +10 -0
- package/courses/github-actions-cicd/scenarios/level-1/actions-and-runners.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-1/basic-workflow-syntax.yaml +52 -0
- package/courses/github-actions-cicd/scenarios/level-1/branch-protection-checks.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-1/environment-variables-secrets.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-1/first-cicd-shift.yaml +62 -0
- package/courses/github-actions-cicd/scenarios/level-1/job-dependencies-outputs.yaml +62 -0
- package/courses/github-actions-cicd/scenarios/level-1/simple-ci-pipeline.yaml +57 -0
- package/courses/github-actions-cicd/scenarios/level-1/workflow-debugging.yaml +90 -0
- package/courses/github-actions-cicd/scenarios/level-1/workflow-status-notifications.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-1/workflow-triggers.yaml +56 -0
- package/courses/github-actions-cicd/scenarios/level-2/concurrency-control.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-2/conditional-execution.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-2/custom-actions-development.yaml +55 -0
- package/courses/github-actions-cicd/scenarios/level-2/dependency-caching.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-2/deployment-workflows.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-2/github-packages-publishing.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-2/intermediate-cicd-shift.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-2/matrix-builds.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-2/reusable-workflows.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-2/workflow-cost-optimization.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-3/advanced-cicd-shift.yaml +64 -0
- package/courses/github-actions-cicd/scenarios/level-3/compliance-automation.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-3/docker-action-development.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-3/github-environments.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-3/monorepo-ci.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-3/oidc-cloud-deployments.yaml +55 -0
- package/courses/github-actions-cicd/scenarios/level-3/release-automation.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-3/security-hardening.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-3/self-hosted-runners.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-3/workflow-optimization.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-data-architecture.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-economics-roi.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-executive-communication.yaml +58 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-incident-response.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-org-design.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-platform-architecture.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-training-program.yaml +65 -0
- package/courses/github-actions-cicd/scenarios/level-4/cicd-vendor-evaluation.yaml +59 -0
- package/courses/github-actions-cicd/scenarios/level-4/enterprise-cicd-governance.yaml +55 -0
- package/courses/github-actions-cicd/scenarios/level-4/expert-cicd-shift.yaml +60 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-ai-future.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-behavioral-science.yaml +70 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-board-strategy.yaml +56 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-consulting-engagement.yaml +61 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-industry-benchmarks.yaml +63 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-ma-integration.yaml +73 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-product-development.yaml +68 -0
- package/courses/github-actions-cicd/scenarios/level-5/cicd-regulatory-landscape.yaml +72 -0
- package/courses/github-actions-cicd/scenarios/level-5/comprehensive-cicd-system.yaml +66 -0
- package/courses/github-actions-cicd/scenarios/level-5/master-cicd-shift.yaml +76 -0
- package/courses/github-pr-review/scenarios/level-2/api-change-review.yaml +82 -0
- package/courses/github-pr-review/scenarios/level-2/automated-review-tooling.yaml +53 -0
- package/courses/github-pr-review/scenarios/level-2/cross-team-review.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-2/intermediate-review-shift.yaml +66 -0
- package/courses/github-pr-review/scenarios/level-2/performance-review-patterns.yaml +99 -0
- package/courses/github-pr-review/scenarios/level-2/review-disagreement-resolution.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-2/review-metrics-analysis.yaml +63 -0
- package/courses/github-pr-review/scenarios/level-2/review-turnaround-sla.yaml +54 -0
- package/courses/github-pr-review/scenarios/level-2/stacked-pr-review.yaml +65 -0
- package/courses/github-pr-review/scenarios/level-3/advanced-review-shift.yaml +65 -0
- package/courses/github-pr-review/scenarios/level-3/ai-powered-review.yaml +58 -0
- package/courses/github-pr-review/scenarios/level-3/compliance-review-process.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-3/cross-functional-review.yaml +60 -0
- package/courses/github-pr-review/scenarios/level-3/incident-driven-review.yaml +63 -0
- package/courses/github-pr-review/scenarios/level-3/large-scale-review-operations.yaml +55 -0
- package/courses/github-pr-review/scenarios/level-3/monorepo-review-process.yaml +68 -0
- package/courses/github-pr-review/scenarios/level-3/review-automation-platform.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-3/review-culture-design.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-3/review-data-pipeline.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-4/enterprise-review-operations.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-4/expert-review-shift.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-4/review-data-architecture.yaml +69 -0
- package/courses/github-pr-review/scenarios/level-4/review-economics-roi.yaml +63 -0
- package/courses/github-pr-review/scenarios/level-4/review-executive-communication.yaml +61 -0
- package/courses/github-pr-review/scenarios/level-4/review-incident-postmortem.yaml +69 -0
- package/courses/github-pr-review/scenarios/level-4/review-org-design.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-4/review-platform-architecture.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-4/review-training-program.yaml +66 -0
- package/courses/github-pr-review/scenarios/level-4/review-vendor-evaluation.yaml +76 -0
- package/courses/github-pr-review/scenarios/level-5/comprehensive-review-system.yaml +68 -0
- package/courses/github-pr-review/scenarios/level-5/master-review-shift.yaml +73 -0
- package/courses/github-pr-review/scenarios/level-5/review-ai-future.yaml +69 -0
- package/courses/github-pr-review/scenarios/level-5/review-behavioral-science.yaml +66 -0
- package/courses/github-pr-review/scenarios/level-5/review-board-strategy.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-5/review-consulting-engagement.yaml +62 -0
- package/courses/github-pr-review/scenarios/level-5/review-devtools-product.yaml +71 -0
- package/courses/github-pr-review/scenarios/level-5/review-industry-benchmarks.yaml +64 -0
- package/courses/github-pr-review/scenarios/level-5/review-ma-integration.yaml +76 -0
- package/courses/github-pr-review/scenarios/level-5/review-regulatory-landscape.yaml +78 -0
- package/courses/postgresql-query-optimization/course.yaml +11 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/explain-analyze-basics.yaml +80 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/first-optimization-shift.yaml +77 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/index-fundamentals.yaml +76 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/join-basics.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/n-plus-one-queries.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/query-rewriting-basics.yaml +69 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/select-star-problems.yaml +69 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/slow-query-diagnosis.yaml +63 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/vacuum-and-statistics.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-1/where-clause-optimization.yaml +74 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/autovacuum-tuning.yaml +76 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/composite-index-design.yaml +81 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/covering-indexes.yaml +74 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/cte-optimization.yaml +83 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/intermediate-optimization-shift.yaml +66 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/join-optimization.yaml +72 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/partial-and-expression-indexes.yaml +75 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/query-planner-settings.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/subquery-optimization.yaml +67 -0
- package/courses/postgresql-query-optimization/scenarios/level-2/window-function-optimization.yaml +63 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/advanced-optimization-shift.yaml +71 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/connection-pooling.yaml +60 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/full-text-search-optimization.yaml +66 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/jsonb-optimization.yaml +88 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/lock-contention-analysis.yaml +80 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/materialized-view-optimization.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/parallel-query-execution.yaml +74 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/partitioning-strategies.yaml +71 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/specialized-index-types.yaml +67 -0
- package/courses/postgresql-query-optimization/scenarios/level-3/write-optimization.yaml +65 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/data-architecture-analytics.yaml +64 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/database-executive-communication.yaml +64 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/database-migration-planning.yaml +57 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/enterprise-database-governance.yaml +52 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/expert-optimization-shift.yaml +73 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/high-availability-architecture.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/optimizer-internals.yaml +69 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/performance-sla-design.yaml +58 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/read-replica-optimization.yaml +62 -0
- package/courses/postgresql-query-optimization/scenarios/level-4/vendor-evaluation.yaml +73 -0
- package/courses/rest-api-error-handling/course.yaml +11 -0
- package/courses/rest-api-error-handling/scenarios/level-1/authentication-errors.yaml +71 -0
- package/courses/rest-api-error-handling/scenarios/level-1/content-negotiation-errors.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-1/error-logging-basics.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-1/error-response-format.yaml +58 -0
- package/courses/rest-api-error-handling/scenarios/level-1/first-error-handling-shift.yaml +67 -0
- package/courses/rest-api-error-handling/scenarios/level-1/http-status-codes.yaml +46 -0
- package/courses/rest-api-error-handling/scenarios/level-1/not-found-errors.yaml +52 -0
- package/courses/rest-api-error-handling/scenarios/level-1/rate-limiting-errors.yaml +56 -0
- package/courses/rest-api-error-handling/scenarios/level-1/request-validation-errors.yaml +59 -0
- package/courses/rest-api-error-handling/scenarios/level-1/server-error-handling.yaml +55 -0
- package/courses/rest-api-error-handling/scenarios/level-2/api-versioning-errors.yaml +66 -0
- package/courses/rest-api-error-handling/scenarios/level-2/batch-request-errors.yaml +61 -0
- package/courses/rest-api-error-handling/scenarios/level-2/circuit-breaker-pattern.yaml +52 -0
- package/courses/rest-api-error-handling/scenarios/level-2/error-code-taxonomy.yaml +62 -0
- package/courses/rest-api-error-handling/scenarios/level-2/error-monitoring-alerting.yaml +53 -0
- package/courses/rest-api-error-handling/scenarios/level-2/intermediate-error-shift.yaml +69 -0
- package/courses/rest-api-error-handling/scenarios/level-2/pagination-errors.yaml +66 -0
- package/courses/rest-api-error-handling/scenarios/level-2/retry-and-idempotency.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-2/rfc7807-problem-details.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-2/webhook-error-handling.yaml +55 -0
- package/courses/rest-api-error-handling/scenarios/level-3/advanced-error-shift.yaml +72 -0
- package/courses/rest-api-error-handling/scenarios/level-3/api-gateway-errors.yaml +71 -0
- package/courses/rest-api-error-handling/scenarios/level-3/async-api-errors.yaml +67 -0
- package/courses/rest-api-error-handling/scenarios/level-3/caching-error-scenarios.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-3/chaos-engineering-apis.yaml +62 -0
- package/courses/rest-api-error-handling/scenarios/level-3/database-error-handling.yaml +79 -0
- package/courses/rest-api-error-handling/scenarios/level-3/distributed-error-propagation.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-3/error-budgets-sre.yaml +61 -0
- package/courses/rest-api-error-handling/scenarios/level-3/error-correlation.yaml +58 -0
- package/courses/rest-api-error-handling/scenarios/level-3/graphql-vs-rest-errors.yaml +73 -0
- package/courses/rest-api-error-handling/scenarios/level-4/compliance-error-handling.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-4/enterprise-error-governance.yaml +62 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-analytics-platform.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-cost-optimization.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-executive-communication.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-handling-architecture.yaml +67 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-org-design.yaml +68 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-sla-design.yaml +65 -0
- package/courses/rest-api-error-handling/scenarios/level-4/error-training-program.yaml +61 -0
- package/courses/rest-api-error-handling/scenarios/level-4/expert-error-shift.yaml +63 -0
- package/courses/rest-api-error-handling/scenarios/level-5/comprehensive-error-system.yaml +68 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-ai-future.yaml +75 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-behavioral-science.yaml +73 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-board-strategy.yaml +60 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-consulting-engagement.yaml +58 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-industry-benchmarks.yaml +72 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-ma-integration.yaml +68 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-product-development.yaml +66 -0
- package/courses/rest-api-error-handling/scenarios/level-5/error-regulatory-landscape.yaml +80 -0
- package/courses/rest-api-error-handling/scenarios/level-5/master-error-shift.yaml +73 -0
- package/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/commands/add.js +6 -5
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +4 -0
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +6 -18
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/train.d.ts.map +1 -1
- package/dist/cli/commands/train.js +18 -18
- package/dist/cli/commands/train.js.map +1 -1
- package/dist/cli/index.js +93 -55
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/run-demo.js +2 -1
- package/dist/cli/run-demo.js.map +1 -1
- package/dist/cli/setup.d.ts +18 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +154 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/engine/agent-bridge.d.ts +5 -2
- package/dist/engine/agent-bridge.d.ts.map +1 -1
- package/dist/engine/agent-bridge.js +36 -9
- package/dist/engine/agent-bridge.js.map +1 -1
- package/dist/engine/loader.d.ts +21 -0
- package/dist/engine/loader.d.ts.map +1 -1
- package/dist/engine/loader.js +54 -1
- package/dist/engine/loader.js.map +1 -1
- package/dist/engine/training-loop.d.ts.map +1 -1
- package/dist/engine/training-loop.js +1 -0
- package/dist/engine/training-loop.js.map +1 -1
- package/dist/engine/training.d.ts.map +1 -1
- package/dist/engine/training.js +1 -0
- package/dist/engine/training.js.map +1 -1
- package/dist/generator/skill-generator.d.ts +1 -1
- package/dist/generator/skill-generator.d.ts.map +1 -1
- package/dist/generator/skill-generator.js +21 -2
- package/dist/generator/skill-generator.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +11 -26
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session-manager.d.ts +3 -1
- package/dist/mcp/session-manager.d.ts.map +1 -1
- package/dist/mcp/session-manager.js +44 -22
- package/dist/mcp/session-manager.js.map +1 -1
- package/dist/types/schemas.d.ts +38 -13
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/schemas.js +9 -5
- package/dist/types/schemas.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: error-product-development
|
|
3
|
+
level: 5
|
|
4
|
+
course: rest-api-error-handling
|
|
5
|
+
type: output
|
|
6
|
+
description: "Build an API error handling product — design and launch a SaaS tool for API error management"
|
|
7
|
+
tags: [REST, API, product, SaaS, startup, error-management, master]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're founding a startup that builds API error handling tooling.
|
|
13
|
+
Your insight: companies spend $50K-$500K/year on API error handling
|
|
14
|
+
but use fragmented tools (Sentry for tracking, PagerDuty for
|
|
15
|
+
alerting, Datadog for monitoring, custom dashboards for analytics).
|
|
16
|
+
None of these are purpose-built for API error handling.
|
|
17
|
+
|
|
18
|
+
Your product vision: "One platform for API error handling — from
|
|
19
|
+
error format standardization to real-time monitoring to AI-powered
|
|
20
|
+
resolution."
|
|
21
|
+
|
|
22
|
+
Market research:
|
|
23
|
+
- TAM: $8B (API management market, 15% is error handling)
|
|
24
|
+
- SAM: $1.2B (companies with 50+ APIs)
|
|
25
|
+
- SOM: $120M (companies adopting API-first strategies)
|
|
26
|
+
- Competitors: Sentry (error tracking, not API-specific), Moesif
|
|
27
|
+
(API analytics, not error-focused), Treblle (API observability,
|
|
28
|
+
partial overlap)
|
|
29
|
+
- Gap: No tool combines error format linting, error response
|
|
30
|
+
testing, real-time error analytics, and AI error resolution
|
|
31
|
+
|
|
32
|
+
Product features to evaluate:
|
|
33
|
+
1. Error format linter (CI/CD integration, RFC 7807 compliance)
|
|
34
|
+
2. Error response testing (contract testing for errors)
|
|
35
|
+
3. Real-time error dashboard (per-endpoint, per-consumer)
|
|
36
|
+
4. Error SLO tracking and budget management
|
|
37
|
+
5. AI root cause analysis
|
|
38
|
+
6. Error documentation generator (auto-generate error reference)
|
|
39
|
+
7. Error SDK generator (generate client error handlers)
|
|
40
|
+
8. Compliance scanner (PII in errors, audit trail gaps)
|
|
41
|
+
|
|
42
|
+
Pricing models to consider:
|
|
43
|
+
- Per API call (like Stripe)
|
|
44
|
+
- Per endpoint monitored (like Datadog)
|
|
45
|
+
- Per team seat (like Sentry)
|
|
46
|
+
- Flat tier (like most SaaS)
|
|
47
|
+
|
|
48
|
+
Task: Design the product strategy. Write: the MVP feature set
|
|
49
|
+
(which 3 features to build first and why), the pricing strategy,
|
|
50
|
+
the go-to-market plan (first customers, channels, positioning),
|
|
51
|
+
the product roadmap (12 months), and the pitch deck outline for
|
|
52
|
+
raising a $5M seed round.
|
|
53
|
+
|
|
54
|
+
assertions:
|
|
55
|
+
- type: llm_judge
|
|
56
|
+
criteria: "MVP feature selection is strategic — chooses 3 features that solve an immediate pain point, are differentiated from competitors, and have a clear path to expansion. The rationale considers build time, market demand, and competitive positioning"
|
|
57
|
+
weight: 0.35
|
|
58
|
+
description: "Strategic MVP selection"
|
|
59
|
+
- type: llm_judge
|
|
60
|
+
criteria: "Pricing strategy matches the market — considers the API-specific nature of the product, aligns pricing with customer value (not just cost), and the model encourages adoption without punishing growth. Includes a free tier for PLG and enterprise pricing for large deals"
|
|
61
|
+
weight: 0.35
|
|
62
|
+
description: "Market-matching pricing"
|
|
63
|
+
- type: llm_judge
|
|
64
|
+
criteria: "Go-to-market and pitch deck are compelling — identifies the ideal first customer profile, channels for reaching API teams (developer communities, conferences, content), and the pitch deck tells a story that resonates with seed investors (problem size, differentiation, team, business model)"
|
|
65
|
+
weight: 0.30
|
|
66
|
+
description: "Compelling GTM and pitch"
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: error-regulatory-landscape
|
|
3
|
+
level: 5
|
|
4
|
+
course: rest-api-error-handling
|
|
5
|
+
type: output
|
|
6
|
+
description: "Navigate the API error handling regulatory landscape — map how global regulations shape error response and logging requirements"
|
|
7
|
+
tags: [REST, API, regulatory, compliance, global, landscape, master]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're the Chief Compliance Officer of a global API platform
|
|
13
|
+
company operating in 25 countries. Regulations increasingly
|
|
14
|
+
require specific controls over API error responses and error
|
|
15
|
+
data handling.
|
|
16
|
+
|
|
17
|
+
Current regulatory requirements affecting API error handling:
|
|
18
|
+
|
|
19
|
+
1. EU GDPR (effective since 2018, enforcement intensifying):
|
|
20
|
+
- Error responses must not expose personal data
|
|
21
|
+
- Error logs containing PII must have retention limits
|
|
22
|
+
- Right to erasure applies to error logs
|
|
23
|
+
- Cross-border transfer of error data restricted
|
|
24
|
+
- Penalty: up to 20M EUR or 4% of global turnover
|
|
25
|
+
|
|
26
|
+
2. US State Privacy Laws (CCPA, CPRA, VCDPA, CPA, etc.):
|
|
27
|
+
- Different PII definitions per state
|
|
28
|
+
- Consumer right to know what error data is collected
|
|
29
|
+
- Right to delete error logs containing personal data
|
|
30
|
+
- Your APIs serve consumers in all 50 states
|
|
31
|
+
|
|
32
|
+
3. PCI DSS v4.0 (effective March 2025):
|
|
33
|
+
- Error responses must not expose card data (Req 3.4)
|
|
34
|
+
- Error logs must be encrypted (Req 10.5)
|
|
35
|
+
- Audit trails for all error events on cardholder data (Req 10.2)
|
|
36
|
+
- Error monitoring with real-time alerts (Req 10.6)
|
|
37
|
+
- Penalty: fines, loss of processing ability
|
|
38
|
+
|
|
39
|
+
4. HIPAA (healthcare data):
|
|
40
|
+
- Error responses must not expose PHI
|
|
41
|
+
- Error logs are considered part of the designated record set
|
|
42
|
+
- Minimum necessary standard applies to error detail
|
|
43
|
+
- 6-year retention requirement for error audit trails
|
|
44
|
+
|
|
45
|
+
5. EU Digital Operational Resilience Act (DORA, effective 2025):
|
|
46
|
+
- ICT incident classification and reporting for API errors
|
|
47
|
+
- Operational resilience testing (including error scenarios)
|
|
48
|
+
- Third-party risk management for API dependencies
|
|
49
|
+
- Major incident reporting within 4 hours
|
|
50
|
+
|
|
51
|
+
6. India DPDP Act (effective 2025):
|
|
52
|
+
- Data localization requirements for error logs
|
|
53
|
+
- Error data processing requires consent basis
|
|
54
|
+
- Cross-border transfer restrictions
|
|
55
|
+
|
|
56
|
+
Emerging regulations:
|
|
57
|
+
- EU AI Act: API error handling for AI model serving
|
|
58
|
+
- Software Liability Directive: liability for API error damages
|
|
59
|
+
- SEC Cybersecurity Rules: API incident disclosure requirements
|
|
60
|
+
|
|
61
|
+
Task: Map the regulatory landscape. Write: the regulatory matrix
|
|
62
|
+
(which regulations apply to which API error components), the
|
|
63
|
+
unified compliance framework (one error handling policy satisfying
|
|
64
|
+
all regulations), the conflict resolution approach (when regulations
|
|
65
|
+
conflict), the implementation roadmap, and the board briefing on
|
|
66
|
+
regulatory risk and investment needed.
|
|
67
|
+
|
|
68
|
+
assertions:
|
|
69
|
+
- type: llm_judge
|
|
70
|
+
criteria: "Regulatory matrix is comprehensive — maps each regulation to specific error handling controls (response sanitization, log encryption, retention periods, audit trails, cross-border data transfer, incident reporting timelines) and identifies overlapping and conflicting requirements"
|
|
71
|
+
weight: 0.35
|
|
72
|
+
description: "Comprehensive regulatory matrix"
|
|
73
|
+
- type: llm_judge
|
|
74
|
+
criteria: "Unified framework handles conflicts — addresses cases where HIPAA requires 6-year retention but GDPR requires deletion on request, where PCI DSS requires logging but GDPR requires minimization, and where DORA requires 4-hour reporting but gathering accurate error data takes longer"
|
|
75
|
+
weight: 0.35
|
|
76
|
+
description: "Conflict-resolving unified framework"
|
|
77
|
+
- type: llm_judge
|
|
78
|
+
criteria: "Board briefing quantifies regulatory risk — estimates potential fines per regulation, prioritizes compliance gaps by risk level, and the implementation roadmap phases work by regulatory deadline and penalty severity. Includes future-proofing for emerging regulations"
|
|
79
|
+
weight: 0.30
|
|
80
|
+
description: "Risk-quantifying board briefing"
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
meta:
|
|
2
|
+
id: master-error-shift
|
|
3
|
+
level: 5
|
|
4
|
+
course: rest-api-error-handling
|
|
5
|
+
type: output
|
|
6
|
+
description: "Master error handling shift — navigate existential threats to API reliability while maintaining business continuity and regulatory compliance"
|
|
7
|
+
tags: [REST, API, error-handling, shift-simulation, crisis, existential, master]
|
|
8
|
+
|
|
9
|
+
state: {}
|
|
10
|
+
|
|
11
|
+
trigger: |
|
|
12
|
+
You're the CTO facing a perfect storm of API error handling crises
|
|
13
|
+
that threaten the company's operations, compliance posture, and
|
|
14
|
+
market position simultaneously.
|
|
15
|
+
|
|
16
|
+
Crisis 1 — Zero-day in your error handling library:
|
|
17
|
+
A security researcher disclosed a zero-day in the error handling
|
|
18
|
+
middleware used by all 200 of your microservices. The vulnerability
|
|
19
|
+
allows attackers to trigger specially crafted errors that cause the
|
|
20
|
+
middleware to dump environment variables (including secrets) into
|
|
21
|
+
the error response. The CVE was published 6 hours ago. You've
|
|
22
|
+
confirmed that 3 endpoints have been exploited — error responses
|
|
23
|
+
containing database credentials, API keys, and JWT signing secrets
|
|
24
|
+
were captured by an attacker.
|
|
25
|
+
|
|
26
|
+
Crisis 2 — Regulatory investigation:
|
|
27
|
+
The EU Data Protection Authority opened an investigation after a
|
|
28
|
+
consumer complaint that your API error messages expose their email
|
|
29
|
+
address and account balance. The investigation found: PII in error
|
|
30
|
+
responses (GDPR Art. 5 violation), error logs with EU citizen data
|
|
31
|
+
stored in US servers (GDPR Art. 44 violation), and no data
|
|
32
|
+
processing record for error data (GDPR Art. 30 violation). The
|
|
33
|
+
authority set a 30-day remediation deadline. Potential fine: 4%
|
|
34
|
+
of global revenue ($40M).
|
|
35
|
+
|
|
36
|
+
Crisis 3 — Largest customer's API integration failure:
|
|
37
|
+
Your largest customer ($15M ARR) experienced a critical integration
|
|
38
|
+
failure. Your API returned 200 OK with an error in the body (a
|
|
39
|
+
legacy endpoint that was supposed to be migrated). Their system
|
|
40
|
+
treated it as success, processed $2M in incorrect transactions,
|
|
41
|
+
and they're threatening both contract termination and litigation.
|
|
42
|
+
|
|
43
|
+
Crisis 4 — Engineering talent exodus:
|
|
44
|
+
Your VP of Platform Engineering and 4 senior SREs resigned this
|
|
45
|
+
week, citing "unsustainable on-call burden" and "leadership doesn't
|
|
46
|
+
prioritize reliability." They're joining a competitor. The remaining
|
|
47
|
+
team of 8 cannot maintain the error handling infrastructure alone.
|
|
48
|
+
|
|
49
|
+
Crisis 5 — Board emergency meeting:
|
|
50
|
+
The board called an emergency session in 48 hours. They want a
|
|
51
|
+
unified briefing. One board member demands "shut down all APIs
|
|
52
|
+
until the security breach is contained." Another demands "no
|
|
53
|
+
downtime — our stock price can't take another incident."
|
|
54
|
+
|
|
55
|
+
Task: Navigate all 5 crises simultaneously. Write: the 48-hour
|
|
56
|
+
action plan, the security incident response (credential rotation,
|
|
57
|
+
forensics, disclosure), the GDPR remediation strategy, the customer
|
|
58
|
+
recovery plan, the talent retention emergency measures, and the
|
|
59
|
+
board presentation that unifies everything into a coherent response.
|
|
60
|
+
|
|
61
|
+
assertions:
|
|
62
|
+
- type: llm_judge
|
|
63
|
+
criteria: "Board presentation unifies all crises — shows interconnections (security breach worsens GDPR case, talent loss reduces remediation capacity, customer litigation increases board pressure), presents a single coherent strategy rather than 5 separate plans, and addresses both extremes (shut down vs no downtime)"
|
|
64
|
+
weight: 0.35
|
|
65
|
+
description: "Unified crisis board presentation"
|
|
66
|
+
- type: llm_judge
|
|
67
|
+
criteria: "Security and regulatory responses are technically and legally sound — rotates all compromised credentials within hours, traces the 3 exploited endpoints to identify all exposed data, GDPR remediation addresses all 3 violations within the 30-day deadline, and both responses coordinate (security evidence supports GDPR good-faith defense)"
|
|
68
|
+
weight: 0.35
|
|
69
|
+
description: "Sound security and regulatory response"
|
|
70
|
+
- type: llm_judge
|
|
71
|
+
criteria: "Customer and talent crises are addressed empathetically — customer recovery includes financial remediation for the $2M incorrect transactions, migration plan for the legacy 200-with-error endpoint, and relationship preservation. Talent retention addresses root causes (on-call burden, reliability investment) not just counter-offers"
|
|
72
|
+
weight: 0.30
|
|
73
|
+
description: "Empathetic customer and talent response"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBhE"}
|
package/dist/cli/commands/add.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { resolve
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
3
|
import { existsSync, mkdirSync, cpSync } from 'node:fs';
|
|
4
4
|
import { homedir } from 'node:os';
|
|
5
|
+
import { findCoursePath } from '../../engine/loader.js';
|
|
5
6
|
/**
|
|
6
7
|
* `dojo add <course>` — Copy a course to the local .dojo/courses/ directory
|
|
7
8
|
*/
|
|
8
9
|
export async function addCommand(courseId) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
console.error(chalk.
|
|
10
|
+
const sourcePath = findCoursePath(courseId);
|
|
11
|
+
if (!sourcePath) {
|
|
12
|
+
console.error(chalk.red(`Course "${courseId}" not found.`));
|
|
13
|
+
console.error(chalk.dim('Run: dojo list to see available courses'));
|
|
13
14
|
return;
|
|
14
15
|
}
|
|
15
16
|
const destDir = resolve(homedir(), '.dojo', 'courses', courseId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,QAAQ,cAAc,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACjE,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,QAAQ,qCAAqC,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,QAAQ,kCAAkC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC5F,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAQA,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4C/F"}
|
|
@@ -3,10 +3,14 @@ import ora from 'ora';
|
|
|
3
3
|
import { readFileSync, existsSync } from 'node:fs';
|
|
4
4
|
import { resolve, join } from 'node:path';
|
|
5
5
|
import { CourseGenerator, slugify } from '../../generator/course-generator.js';
|
|
6
|
+
import { ensureApiKey } from '../setup.js';
|
|
6
7
|
/**
|
|
7
8
|
* `dojo generate <skill>` — Generate a course from a skill description
|
|
8
9
|
*/
|
|
9
10
|
export async function generateCommand(skill, options) {
|
|
11
|
+
const hasKey = await ensureApiKey('claude-sonnet-4-6');
|
|
12
|
+
if (!hasKey)
|
|
13
|
+
process.exit(1);
|
|
10
14
|
// Batch mode: read skills from file
|
|
11
15
|
if (options.batch) {
|
|
12
16
|
await runBatch(options.batch, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAiB,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBjD"}
|
|
@@ -1,29 +1,17 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import {
|
|
3
|
-
import { homedir } from 'node:os';
|
|
4
|
-
import { discoverCourses } from '../../engine/loader.js';
|
|
2
|
+
import { discoverAllCourses } from '../../engine/loader.js';
|
|
5
3
|
/**
|
|
6
4
|
* `dojo list` — List installed courses
|
|
7
5
|
*/
|
|
8
6
|
export async function listCommand() {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
// Deduplicate by ID
|
|
13
|
-
const seen = new Set();
|
|
14
|
-
const unique = allCourses.filter((c) => {
|
|
15
|
-
if (seen.has(c.id))
|
|
16
|
-
return false;
|
|
17
|
-
seen.add(c.id);
|
|
18
|
-
return true;
|
|
19
|
-
});
|
|
20
|
-
if (unique.length === 0) {
|
|
21
|
-
console.log(chalk.dim('No courses installed.'));
|
|
7
|
+
const courses = discoverAllCourses();
|
|
8
|
+
if (courses.length === 0) {
|
|
9
|
+
console.log(chalk.dim('No courses found.'));
|
|
22
10
|
console.log(chalk.dim('Run: dojo add <course>'));
|
|
23
11
|
return;
|
|
24
12
|
}
|
|
25
|
-
console.log(chalk.bold(
|
|
26
|
-
for (const course of
|
|
13
|
+
console.log(chalk.bold(`\nInstalled Courses (${courses.length}):\n`));
|
|
14
|
+
for (const course of courses) {
|
|
27
15
|
console.log(` ${chalk.bold(course.id)} ${chalk.dim(`v${course.version}`)}`);
|
|
28
16
|
console.log(` ${course.description.trim()}`);
|
|
29
17
|
console.log(` ${chalk.dim(`${course.levels} levels, ~${course.scenario_count} scenarios`)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IAErC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC;IACtE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,cAAc,YAAY,CAAC,EAAE,CAAC,CAAC;QAChG,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"train.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/train.ts"],"names":[],"mappings":"AAgBA,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"train.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/train.ts"],"names":[],"mappings":"AAgBA,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDzF"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import ora from 'ora';
|
|
3
|
-
import { resolve
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { resolve } from 'node:path';
|
|
4
|
+
import { loadCourse, loadCourseScenarios, findCoursePath } from '../../engine/loader.js';
|
|
5
|
+
import { ensureApiKey } from '../setup.js';
|
|
6
6
|
import { TrainingSession } from '../../engine/training.js';
|
|
7
7
|
import { TrainingLoop } from '../../engine/training-loop.js';
|
|
8
8
|
import { AgentBridge } from '../../engine/agent-bridge.js';
|
|
@@ -22,9 +22,23 @@ export async function trainCommand(courseId, options) {
|
|
|
22
22
|
const coursePath = findCoursePath(courseId);
|
|
23
23
|
if (!coursePath) {
|
|
24
24
|
console.error(chalk.red(`Course "${courseId}" not found.`));
|
|
25
|
-
console.error(chalk.dim('
|
|
25
|
+
console.error(chalk.dim('Run: dojo list to see available courses'));
|
|
26
26
|
process.exit(1);
|
|
27
27
|
}
|
|
28
|
+
// Check API keys before doing anything expensive
|
|
29
|
+
const agentModel = options.model || 'claude-sonnet-4-6';
|
|
30
|
+
const judgeModel = options.judge || 'claude-sonnet-4-6';
|
|
31
|
+
const hasAgentKey = await ensureApiKey(agentModel);
|
|
32
|
+
if (!hasAgentKey)
|
|
33
|
+
process.exit(1);
|
|
34
|
+
// If judge uses a different provider, check that key too
|
|
35
|
+
const agentIsOpenRouter = agentModel.includes('/') || agentModel.startsWith('openrouter:');
|
|
36
|
+
const judgeIsOpenRouter = judgeModel.includes('/') || judgeModel.startsWith('openrouter:');
|
|
37
|
+
if (agentIsOpenRouter !== judgeIsOpenRouter) {
|
|
38
|
+
const hasJudgeKey = await ensureApiKey(judgeModel);
|
|
39
|
+
if (!hasJudgeKey)
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
28
42
|
const spinner = ora('Loading course...').start();
|
|
29
43
|
try {
|
|
30
44
|
const course = loadCourse(coursePath);
|
|
@@ -34,9 +48,6 @@ export async function trainCommand(courseId, options) {
|
|
|
34
48
|
process.exit(1);
|
|
35
49
|
}
|
|
36
50
|
spinner.succeed(`Loaded ${chalk.bold(course.name)} — ${scenarios.length} scenarios`);
|
|
37
|
-
// Show model info
|
|
38
|
-
const agentModel = options.model || 'claude-sonnet-4-6';
|
|
39
|
-
const judgeModel = options.judge || 'claude-sonnet-4-6';
|
|
40
51
|
console.log(` Agent: ${chalk.cyan(agentModel)}`);
|
|
41
52
|
console.log(` Judge: ${chalk.cyan(judgeModel)}`);
|
|
42
53
|
console.log();
|
|
@@ -220,17 +231,6 @@ async function runTrainingLoop(courseId, course, scenarios, db, options, agentMo
|
|
|
220
231
|
}
|
|
221
232
|
console.log(chalk.bold('─────────────────────────────────────────────'));
|
|
222
233
|
}
|
|
223
|
-
function findCoursePath(courseId) {
|
|
224
|
-
// Check local courses directory
|
|
225
|
-
const localPath = resolve('courses', courseId);
|
|
226
|
-
if (existsSync(join(localPath, 'course.yaml')))
|
|
227
|
-
return localPath;
|
|
228
|
-
// Check ~/.dojo/courses/
|
|
229
|
-
const homePath = resolve(process.env.HOME || '~', '.dojo', 'courses', courseId);
|
|
230
|
-
if (existsSync(join(homePath, 'course.yaml')))
|
|
231
|
-
return homePath;
|
|
232
|
-
return null;
|
|
233
|
-
}
|
|
234
234
|
function printSummary(score, levelResults, patternCount) {
|
|
235
235
|
const scoreColor = score >= 80 ? chalk.green : score >= 50 ? chalk.yellow : chalk.red;
|
|
236
236
|
console.log(chalk.bold('─── Training Summary ───────────────────────'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"train.js","sourceRoot":"","sources":["../../../src/cli/commands/train.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"train.js","sourceRoot":"","sources":["../../../src/cli/commands/train.ts"],"names":[],"mappings":"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"}
|