ai-spector 0.9.21 → 0.9.25

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 (99) hide show
  1. package/contracts/bootstrap/config/prototype-screen-map.json +25 -0
  2. package/contracts/bootstrap/config/prototype.config.json +17 -0
  3. package/contracts/bootstrap/config/review-queue-pending.json +4 -0
  4. package/contracts/bootstrap/config/review-queue-registry.json +4 -0
  5. package/contracts/bootstrap/config/review.config.json +5 -0
  6. package/contracts/bootstrap/docs/ENTITY_REGISTRY_MIGRATION.md +192 -0
  7. package/contracts/bootstrap/docs/MIGRATION.md +463 -0
  8. package/contracts/bootstrap/docs/README.md +48 -0
  9. package/contracts/bootstrap/docs/adapters/README.md +32 -0
  10. package/contracts/bootstrap/docs/guides/COMMENTS_ENTITY_MIGRATION.md +195 -0
  11. package/contracts/bootstrap/docs/guides/DOCOPS_MANUAL_FALLBACK.md +177 -0
  12. package/contracts/bootstrap/docs/guides/PROJECT_LAYOUT.md +84 -0
  13. package/contracts/bootstrap/docs/modules/comments.md +77 -0
  14. package/contracts/bootstrap/docs/modules/generate.md +25 -0
  15. package/contracts/bootstrap/docs/modules/graph.md +31 -0
  16. package/contracts/bootstrap/docs/modules/prototype.md +26 -0
  17. package/contracts/bootstrap/docs/modules/review.md +25 -0
  18. package/contracts/bootstrap/docs/modules/translate.md +26 -0
  19. package/contracts/bootstrap/scripts/migrate-entity-registry.sh +55 -0
  20. package/contracts/bootstrap/templates/basic-design/db-design-template.md +177 -0
  21. package/contracts/bootstrap/templates/basic-design/detail-api-template.md +278 -0
  22. package/contracts/bootstrap/templates/basic-design/detail-screen-template.md +281 -0
  23. package/contracts/bootstrap/templates/basic-design/list-api-template.md +130 -0
  24. package/contracts/bootstrap/templates/basic-design/list-screen-template.md +242 -0
  25. package/contracts/bootstrap/templates/detail-design/common/architecture-overview-template.md +302 -0
  26. package/contracts/bootstrap/templates/detail-design/common/deployment-infrastructure-template.md +461 -0
  27. package/contracts/bootstrap/templates/detail-design/common/error-handling-patterns-template.md +460 -0
  28. package/contracts/bootstrap/templates/detail-design/common/integration-patterns-template.md +410 -0
  29. package/contracts/bootstrap/templates/detail-design/common/performance-standards-template.md +406 -0
  30. package/contracts/bootstrap/templates/detail-design/common/security-patterns-template.md +395 -0
  31. package/contracts/bootstrap/templates/detail-design/feature-detail-design-template.md +773 -0
  32. package/contracts/bootstrap/templates/detail-design/feature-list-template.md +39 -0
  33. package/contracts/bootstrap/templates/srs/1-introduction.md +58 -0
  34. package/contracts/bootstrap/templates/srs/2-overall-description.md +91 -0
  35. package/contracts/bootstrap/templates/srs/3-use-case-detail-template.md +142 -0
  36. package/contracts/bootstrap/templates/srs/3-use-cases.md +53 -0
  37. package/contracts/bootstrap/templates/srs/4-system-feature-detail-template.md +131 -0
  38. package/contracts/bootstrap/templates/srs/4-system-features-list-template.md +39 -0
  39. package/contracts/bootstrap/templates/srs/5-data-requirements.md +59 -0
  40. package/contracts/bootstrap/templates/srs/6-external-interfaces.md +56 -0
  41. package/contracts/bootstrap/templates/srs/7-quality-attributes.md +74 -0
  42. package/contracts/bootstrap/templates/srs/8-internationalization.md +36 -0
  43. package/contracts/bootstrap/templates/srs/9-other-requirements.md +46 -0
  44. package/contracts/examples/full-docops.config.json +54 -0
  45. package/contracts/examples/migrate-lifecycle.json +18 -0
  46. package/contracts/examples/minimal-comment-thread/comment-root.json +10 -0
  47. package/contracts/examples/minimal-comment-thread/meta_data.json +22 -0
  48. package/contracts/examples/minimal-docops.config.json +33 -0
  49. package/contracts/examples/minimal-lifecycle.json +17 -0
  50. package/contracts/examples/minimal-prototype.config.json +18 -0
  51. package/contracts/examples/minimal-screen-map.json +25 -0
  52. package/contracts/examples/registry/minimal-document.entity.json +15 -0
  53. package/contracts/examples/registry/minimal-manifest.json +7 -0
  54. package/contracts/examples/registry/minimal-screen.entity.json +11 -0
  55. package/contracts/examples/review/minimal-pending.json +14 -0
  56. package/contracts/examples/review/minimal-registry.json +31 -0
  57. package/contracts/examples/review/minimal-review.config.json +7 -0
  58. package/contracts/schemas/comments/comment_body.schema.json +19 -0
  59. package/contracts/schemas/comments/meta_data.schema.json +59 -0
  60. package/contracts/schemas/docops.config.schema.json +97 -0
  61. package/contracts/schemas/lifecycle.schema.json +43 -0
  62. package/contracts/schemas/prototype/config.schema.json +56 -0
  63. package/contracts/schemas/prototype/screen-map.schema.json +51 -0
  64. package/contracts/schemas/registry/document.entity.schema.json +38 -0
  65. package/contracts/schemas/registry/manifest.schema.json +18 -0
  66. package/contracts/schemas/registry/screen.entity.schema.json +28 -0
  67. package/contracts/schemas/review/registry.schema.json +72 -0
  68. package/contracts/schemas/review/review.config.schema.json +42 -0
  69. package/dist/cli.js +26 -1
  70. package/dist/cli.js.map +1 -1
  71. package/dist/core/docops/bootstrap.d.ts +4 -1
  72. package/dist/core/docops/bootstrap.d.ts.map +1 -1
  73. package/dist/core/docops/bootstrap.js +16 -9
  74. package/dist/core/docops/bootstrap.js.map +1 -1
  75. package/dist/core/docops/guide.d.ts +78 -0
  76. package/dist/core/docops/guide.d.ts.map +1 -0
  77. package/dist/core/docops/guide.js +554 -0
  78. package/dist/core/docops/guide.js.map +1 -0
  79. package/dist/core/docops/migrate.d.ts.map +1 -1
  80. package/dist/core/docops/migrate.js +40 -6
  81. package/dist/core/docops/migrate.js.map +1 -1
  82. package/dist/core/operations/docops.d.ts +8 -0
  83. package/dist/core/operations/docops.d.ts.map +1 -1
  84. package/dist/core/operations/docops.js +40 -0
  85. package/dist/core/operations/docops.js.map +1 -1
  86. package/dist/core/upgrade/checklist.json +2 -2
  87. package/package.json +2 -1
  88. package/scaffold/claude/.claude/skills/_skill-router.md +11 -8
  89. package/scaffold/claude/.claude/skills/ai-spector/references/cli-failures.md +3 -3
  90. package/scaffold/claude/.claude/skills/ai-spector/references/docops-migrate.md +112 -0
  91. package/scaffold/claude/.claude/skills/ai-spector/references/help.md +1 -1
  92. package/scaffold/claude/.claude/skills/ai-spector/references/runbook.md +49 -26
  93. package/scaffold/claude/.claude/skills/ai-spector/skill.md +3 -2
  94. package/scaffold/cursor/skills/_skill-router.md +11 -8
  95. package/scaffold/cursor/skills/ai-spector/SKILL.md +3 -2
  96. package/scaffold/cursor/skills/ai-spector/references/cli-failures.md +3 -3
  97. package/scaffold/cursor/skills/ai-spector/references/docops-migrate.md +112 -0
  98. package/scaffold/cursor/skills/ai-spector/references/help.md +1 -1
  99. package/scaffold/cursor/skills/ai-spector/references/runbook.md +49 -26
@@ -0,0 +1,43 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://kari-writer/contracts/schemas/lifecycle.schema.json",
4
+ "title": "DocopsLifecycle",
5
+ "type": "object",
6
+ "required": ["version", "intent", "adapter", "updatedAt", "updatedBy", "steps"],
7
+ "additionalProperties": false,
8
+ "properties": {
9
+ "version": { "const": 1 },
10
+ "intent": { "enum": ["greenfield", "migrate"] },
11
+ "adapter": { "enum": ["ai-spector", "custom", "none"] },
12
+ "updatedAt": { "type": "string", "format": "date-time" },
13
+ "updatedBy": { "type": "string", "minLength": 1 },
14
+ "steps": {
15
+ "type": "array",
16
+ "items": {
17
+ "type": "object",
18
+ "required": ["id", "status"],
19
+ "additionalProperties": false,
20
+ "properties": {
21
+ "id": {
22
+ "enum": [
23
+ "project-created",
24
+ "git-connected",
25
+ "docops-init",
26
+ "local-adapter-ready",
27
+ "legacy-aligned",
28
+ "registry-synced",
29
+ "data-source-added",
30
+ "first-docs-generated",
31
+ "review-queue-synced",
32
+ "first-push-synced"
33
+ ]
34
+ },
35
+ "status": { "enum": ["pending", "in_progress", "done", "skipped", "blocked"] },
36
+ "completedAt": { "type": "string", "format": "date-time" },
37
+ "helpRef": { "type": "string" },
38
+ "blockedReason": { "type": "string" }
39
+ }
40
+ }
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://kari-writer.local/contracts/schemas/prototype/config.schema.json",
4
+ "title": "PrototypeConfig",
5
+ "type": "object",
6
+ "additionalProperties": true,
7
+ "required": ["schemaVersion", "buildMode"],
8
+ "properties": {
9
+ "schemaVersion": {
10
+ "type": "integer",
11
+ "const": 1
12
+ },
13
+ "version": {
14
+ "type": "integer",
15
+ "description": "Legacy alias used by ai-spector CLI"
16
+ },
17
+ "buildMode": {
18
+ "type": "string",
19
+ "enum": ["static", "spa"]
20
+ },
21
+ "techStack": {
22
+ "type": "string",
23
+ "enum": ["html", "vue", "react", "nuxt", "next", "svelte", "angular"]
24
+ },
25
+ "prototypeDir": {
26
+ "type": "string",
27
+ "description": "Repo-relative prototype source folder (default: prototype)"
28
+ },
29
+ "srcDir": {
30
+ "type": "string",
31
+ "description": "Repo-relative source folder (default: prototype/src)"
32
+ },
33
+ "htpasswdFile": {
34
+ "type": "string",
35
+ "description": "Repo-relative nginx htpasswd path (default: prototype/.htpasswd)"
36
+ },
37
+ "basicAuth": {
38
+ "type": "object",
39
+ "properties": {
40
+ "username": { "type": "string", "minLength": 1 },
41
+ "password": { "type": "string" },
42
+ "setAt": { "type": "string" }
43
+ }
44
+ },
45
+ "listScreenDoc": { "type": "string" },
46
+ "screenIndexSection": { "type": "string" },
47
+ "screenDetailDir": { "type": "string" },
48
+ "defaultTheme": { "type": "string" },
49
+ "defaultScreenId": { "type": "string" },
50
+ "prototypeBypassAuth": { "type": "boolean" },
51
+ "reviewHost": { "type": "string" },
52
+ "projectId": { "type": "string" },
53
+ "deployVersion": { "type": "string" },
54
+ "directReviewUrl": { "type": "boolean" }
55
+ }
56
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://kari-writer.local/contracts/schemas/prototype/screen-map.schema.json",
4
+ "title": "PrototypeScreenMap",
5
+ "type": "object",
6
+ "additionalProperties": true,
7
+ "required": ["schemaVersion", "buildMode", "screens"],
8
+ "properties": {
9
+ "schemaVersion": {
10
+ "type": "integer",
11
+ "const": 1
12
+ },
13
+ "buildMode": {
14
+ "type": "string",
15
+ "enum": ["static", "spa"]
16
+ },
17
+ "defaultScreenId": { "type": "string" },
18
+ "defaultScreen": { "$ref": "#/$defs/screenEntry" },
19
+ "reviewHost": { "type": "string" },
20
+ "projectId": { "type": "string" },
21
+ "deployVersion": { "type": "string" },
22
+ "directReviewUrl": { "type": "boolean" },
23
+ "screens": {
24
+ "type": "array",
25
+ "items": { "$ref": "#/$defs/screenEntry" }
26
+ }
27
+ },
28
+ "$defs": {
29
+ "screenEntry": {
30
+ "type": "object",
31
+ "additionalProperties": true,
32
+ "required": ["screenId", "displayName", "screenDocPath", "prototypePath", "route_exists"],
33
+ "properties": {
34
+ "screenId": { "type": "string", "minLength": 1 },
35
+ "displayName": { "type": "string" },
36
+ "screenDocPath": {
37
+ "type": "string",
38
+ "description": "Language-neutral screen design doc path (no docs/ prefix)"
39
+ },
40
+ "screenDocs": {
41
+ "type": "object",
42
+ "additionalProperties": { "type": "string" },
43
+ "description": "Per-language repo-relative doc paths"
44
+ },
45
+ "prototypePath": { "type": "string" },
46
+ "route_exists": { "type": "boolean" },
47
+ "reviewUrl": { "type": ["string", "null"] }
48
+ }
49
+ }
50
+ }
51
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://kari-writer.local/contracts/schemas/registry/document.entity.schema.json",
4
+ "title": "DocopsDocumentEntity",
5
+ "type": "object",
6
+ "additionalProperties": true,
7
+ "required": [
8
+ "schemaVersion",
9
+ "entityId",
10
+ "kind",
11
+ "docType",
12
+ "logicalPath",
13
+ "repoDocs"
14
+ ],
15
+ "properties": {
16
+ "schemaVersion": { "type": "integer", "const": 1 },
17
+ "entityId": {
18
+ "type": "string",
19
+ "minLength": 1,
20
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
21
+ },
22
+ "kind": { "type": "string", "enum": ["document", "data_source"] },
23
+ "docType": { "type": "string", "minLength": 1 },
24
+ "logicalPath": { "type": "string", "minLength": 1 },
25
+ "repoDocs": {
26
+ "type": "object",
27
+ "minProperties": 1,
28
+ "additionalProperties": { "type": "string", "minLength": 1 }
29
+ },
30
+ "displayName": { "type": "string" },
31
+ "aliases": {
32
+ "type": "array",
33
+ "items": { "type": "string", "minLength": 1 }
34
+ },
35
+ "createdAt": { "type": "string" },
36
+ "updatedAt": { "type": "string" }
37
+ }
38
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://kari-writer.local/contracts/schemas/registry/manifest.schema.json",
4
+ "title": "DocopsRegistryManifest",
5
+ "type": "object",
6
+ "additionalProperties": true,
7
+ "required": ["schemaVersion", "buildMode"],
8
+ "properties": {
9
+ "schemaVersion": { "type": "integer", "const": 1 },
10
+ "buildMode": { "type": "string", "enum": ["static", "spa"] },
11
+ "defaultScreenId": { "type": "string" },
12
+ "reviewHost": { "type": "string" },
13
+ "projectId": { "type": "string" },
14
+ "deployVersion": { "type": "string" },
15
+ "directReviewUrl": { "type": "boolean" },
16
+ "themeName": { "type": "string" }
17
+ }
18
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://kari-writer.local/contracts/schemas/registry/screen.entity.schema.json",
4
+ "title": "DocopsScreenEntity",
5
+ "type": "object",
6
+ "additionalProperties": true,
7
+ "required": [
8
+ "schemaVersion",
9
+ "screenId",
10
+ "kind",
11
+ "prototypePath",
12
+ "route_exists"
13
+ ],
14
+ "properties": {
15
+ "schemaVersion": { "type": "integer", "const": 1 },
16
+ "screenId": { "type": "string", "minLength": 1 },
17
+ "kind": { "type": "string", "const": "prototype_screen" },
18
+ "displayName": { "type": "string" },
19
+ "documentEntityId": {
20
+ "type": ["string", "null"],
21
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
22
+ },
23
+ "prototypePath": { "type": "string", "minLength": 1 },
24
+ "route_exists": { "type": "boolean" },
25
+ "reviewUrl": { "type": ["string", "null"] },
26
+ "updatedAt": { "type": "string" }
27
+ }
28
+ }
@@ -0,0 +1,72 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://kari-writer.local/contracts/schemas/review/registry.schema.json",
4
+ "title": "ReviewRegistry",
5
+ "type": "object",
6
+ "additionalProperties": true,
7
+ "required": ["version", "documents"],
8
+ "properties": {
9
+ "version": {
10
+ "type": "integer",
11
+ "const": 3
12
+ },
13
+ "documents": {
14
+ "type": "object",
15
+ "additionalProperties": { "$ref": "#/$defs/documentEntry" }
16
+ }
17
+ },
18
+ "$defs": {
19
+ "vote": {
20
+ "type": "object",
21
+ "additionalProperties": true,
22
+ "required": ["by", "username", "role", "decision", "at"],
23
+ "properties": {
24
+ "by": { "type": "string" },
25
+ "username": { "type": "string" },
26
+ "role": { "type": "string", "enum": ["user", "client"] },
27
+ "decision": { "type": "string", "enum": ["approve", "decline"] },
28
+ "at": { "type": "string" },
29
+ "note": { "type": "string" }
30
+ }
31
+ },
32
+ "track": {
33
+ "type": "object",
34
+ "additionalProperties": true,
35
+ "required": ["status", "votes"],
36
+ "properties": {
37
+ "status": {
38
+ "type": "string",
39
+ "enum": ["pending", "approved", "rejected", "needs_review"]
40
+ },
41
+ "votes": {
42
+ "type": "array",
43
+ "items": { "$ref": "#/$defs/vote" }
44
+ },
45
+ "quorumMetAt": { "type": ["string", "null"] },
46
+ "closedAt": { "type": ["string", "null"] },
47
+ "closedBy": { "type": ["string", "null"] },
48
+ "closeReason": { "type": ["string", "null"] },
49
+ "reopenedAt": { "type": ["string", "null"] },
50
+ "invalidatedAt": { "type": ["string", "null"] }
51
+ }
52
+ },
53
+ "documentEntry": {
54
+ "type": "object",
55
+ "additionalProperties": true,
56
+ "required": ["logicalPath", "overallStatus", "internal", "client"],
57
+ "properties": {
58
+ "logicalPath": { "type": "string", "minLength": 1 },
59
+ "docPath": { "type": "string" },
60
+ "contentHash": { "type": "string" },
61
+ "snapshotRef": { "type": "string" },
62
+ "overallStatus": {
63
+ "type": "string",
64
+ "enum": ["pending_internal", "pending_client", "approved", "rejected"]
65
+ },
66
+ "internal": { "$ref": "#/$defs/track" },
67
+ "client": { "$ref": "#/$defs/track" },
68
+ "lastEventAt": { "type": "string" }
69
+ }
70
+ }
71
+ }
72
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://kari-writer.local/contracts/schemas/review/review.config.schema.json",
4
+ "title": "ReviewConfig",
5
+ "type": "object",
6
+ "additionalProperties": true,
7
+ "required": ["schemaVersion", "extends"],
8
+ "properties": {
9
+ "schemaVersion": {
10
+ "type": "string",
11
+ "const": "1.0"
12
+ },
13
+ "extends": {
14
+ "type": "string",
15
+ "minLength": 1,
16
+ "description": "Preset id (e.g. kaopiz-default)"
17
+ },
18
+ "gate": { "type": "object", "additionalProperties": true },
19
+ "baseline": { "type": "object", "additionalProperties": true },
20
+ "rules": { "type": "object", "additionalProperties": true },
21
+ "overrides": { "type": "object", "additionalProperties": true },
22
+ "suppressions": {
23
+ "type": "array",
24
+ "items": { "type": "object", "additionalProperties": true }
25
+ },
26
+ "required_section_paths": {
27
+ "type": "array",
28
+ "items": { "type": "string" }
29
+ },
30
+ "meta": {
31
+ "type": "object",
32
+ "additionalProperties": true,
33
+ "required": ["source"],
34
+ "properties": {
35
+ "source": {
36
+ "type": "string",
37
+ "description": "Who last wrote this file (e.g. db, agent, cli)"
38
+ }
39
+ }
40
+ }
41
+ }
42
+ }
package/dist/cli.js CHANGED
@@ -10,7 +10,7 @@ import { applyPrimaryLanguageOutputs } from "./core/graph/translation.js";
10
10
  import { loadDocflowConfig } from "./core/config/load.js";
11
11
  import { validateGraph, formatIssues } from "./core/operations/validate.js";
12
12
  import { runInit } from "./core/operations/init.js";
13
- import { runDocopsInit, runDocopsMigrate, runDocopsCommentsMigrate, runDocopsRegistrySync, runDocopsReviewRegistryMigrate, runDocopsStatus, runDocopsCheck, runDocopsLayout } from "./core/operations/docops.js";
13
+ import { runDocopsInit, runDocopsMigrate, runDocopsCommentsMigrate, runDocopsRegistrySync, runDocopsReviewRegistryMigrate, runDocopsStatus, runDocopsCheck, runDocopsLayout, runDocopsGuide } from "./core/operations/docops.js";
14
14
  import { runLifecycleSync } from "./core/operations/lifecycle.js";
15
15
  import { runLangAdd, runLangSetClient, runLangSetInternal } from "./core/operations/lang.js";
16
16
  import { runLangQueueFailed, runLangQueueFail, runLangQueuePending, runLangQueueResolved, runLangQueueRetry, runLangQueueScan, } from "./core/operations/lang-queue.js";
@@ -1400,6 +1400,19 @@ docops
1400
1400
  });
1401
1401
  process.exitCode = code;
1402
1402
  });
1403
+ docops
1404
+ .command("guide")
1405
+ .description("Agent migration guide: current vs expected structure, files, config — start here when user says migrate")
1406
+ .option("--json", "JSON output for agents")
1407
+ .option("--prompt", "Print only the agent prompt")
1408
+ .action(async (opts, cmd) => {
1409
+ const code = await runDocopsGuide({
1410
+ root: projectRootOpt(cmd),
1411
+ json: opts.json,
1412
+ prompt: opts.prompt,
1413
+ });
1414
+ process.exitCode = code;
1415
+ });
1403
1416
  docops
1404
1417
  .command("init")
1405
1418
  .description("Scaffold Writer-ready .docops/ contract")
@@ -1423,7 +1436,19 @@ docops
1423
1436
  .option("--repair", "Fill gaps in existing .docops/ without overwriting")
1424
1437
  .option("--templates-only", "Copy templates only")
1425
1438
  .option("--from-docflow", "Split legacy docflow.config.json into docops.config.json + engine.json")
1439
+ .option("--guide", "Show agent migration guide (current vs expected); alias for docops guide")
1440
+ .option("--json", "JSON output (with --guide)")
1441
+ .option("--prompt", "Agent prompt only (with --guide)")
1426
1442
  .action(async (opts, cmd) => {
1443
+ if (opts.guide) {
1444
+ await runDocopsMigrate({
1445
+ root: projectRootOpt(cmd),
1446
+ guide: true,
1447
+ json: opts.json,
1448
+ prompt: opts.prompt,
1449
+ });
1450
+ return;
1451
+ }
1427
1452
  await runDocopsMigrate({
1428
1453
  root: projectRootOpt(cmd),
1429
1454
  dryRun: opts.dryRun,