@jevitate/cli 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/dist/anchor-baselines.d.ts +26 -0
  2. package/dist/anchor-baselines.js +25 -0
  3. package/dist/anchor-baselines.js.map +1 -0
  4. package/dist/approval-provenance.d.ts +48 -2
  5. package/dist/approval-provenance.js +110 -6
  6. package/dist/approval-provenance.js.map +1 -1
  7. package/dist/bin.js +25111 -17835
  8. package/dist/browser-cli.d.ts +10 -0
  9. package/dist/browser-cli.js +50 -0
  10. package/dist/browser-cli.js.map +1 -0
  11. package/dist/build-info.generated.js +2 -2
  12. package/dist/catalog-analysis.js +14 -0
  13. package/dist/catalog-analysis.js.map +1 -1
  14. package/dist/catalog-api.js +12 -4
  15. package/dist/catalog-api.js.map +1 -1
  16. package/dist/catalog-bundle-api.d.ts +73 -0
  17. package/dist/catalog-bundle-api.js +206 -0
  18. package/dist/catalog-bundle-api.js.map +1 -0
  19. package/dist/catalog-bundle-findings.d.ts +54 -0
  20. package/dist/catalog-bundle-findings.js +252 -0
  21. package/dist/catalog-bundle-findings.js.map +1 -0
  22. package/dist/catalog-bundle.d.ts +192 -0
  23. package/dist/catalog-bundle.js +578 -0
  24. package/dist/catalog-bundle.js.map +1 -0
  25. package/dist/catalog-cli.d.ts +6 -0
  26. package/dist/catalog-cli.js +180 -5
  27. package/dist/catalog-cli.js.map +1 -1
  28. package/dist/catalog-refs.d.ts +42 -0
  29. package/dist/catalog-refs.js +188 -0
  30. package/dist/catalog-refs.js.map +1 -0
  31. package/dist/catalog-review.d.ts +3 -1
  32. package/dist/catalog-review.js +61 -0
  33. package/dist/catalog-review.js.map +1 -1
  34. package/dist/catalog.d.ts +27 -3
  35. package/dist/catalog.js +46 -2
  36. package/dist/catalog.js.map +1 -1
  37. package/dist/change-context.d.ts +44 -0
  38. package/dist/change-context.js +203 -0
  39. package/dist/change-context.js.map +1 -0
  40. package/dist/check-api.d.ts +1 -1
  41. package/dist/check-api.js +206 -16
  42. package/dist/check-api.js.map +1 -1
  43. package/dist/check-cli.d.ts +2 -1
  44. package/dist/check-cli.js +117 -8
  45. package/dist/check-cli.js.map +1 -1
  46. package/dist/check-execute.d.ts +28 -1
  47. package/dist/check-execute.js +110 -27
  48. package/dist/check-execute.js.map +1 -1
  49. package/dist/check-plan.d.ts +14 -0
  50. package/dist/check-plan.js +24 -1
  51. package/dist/check-plan.js.map +1 -1
  52. package/dist/check-types.d.ts +137 -5
  53. package/dist/check-types.js +8 -0
  54. package/dist/check-types.js.map +1 -1
  55. package/dist/cli-output.d.ts +6 -0
  56. package/dist/cli-output.js +26 -1
  57. package/dist/cli-output.js.map +1 -1
  58. package/dist/cli-shared.d.ts +10 -0
  59. package/dist/cli-shared.js +0 -4
  60. package/dist/cli-shared.js.map +1 -1
  61. package/dist/exit-codes.d.ts +6 -3
  62. package/dist/exit-codes.js +24 -3
  63. package/dist/exit-codes.js.map +1 -1
  64. package/dist/explore-adversarial.js +2 -2
  65. package/dist/explore-adversarial.js.map +1 -1
  66. package/dist/explore-cli.js +3 -2
  67. package/dist/explore-cli.js.map +1 -1
  68. package/dist/explore-coverage.js +3 -3
  69. package/dist/explore-coverage.js.map +1 -1
  70. package/dist/explore-feature.js +3 -3
  71. package/dist/explore-feature.js.map +1 -1
  72. package/dist/explore-goal.js +11 -5
  73. package/dist/explore-goal.js.map +1 -1
  74. package/dist/findings-filing.d.ts +6 -0
  75. package/dist/findings-filing.js +15 -1
  76. package/dist/findings-filing.js.map +1 -1
  77. package/dist/forge-verify.d.ts +224 -0
  78. package/dist/forge-verify.js +649 -0
  79. package/dist/forge-verify.js.map +1 -0
  80. package/dist/heal-probe-guard.d.ts +9 -0
  81. package/dist/heal-probe-guard.js +113 -0
  82. package/dist/heal-probe-guard.js.map +1 -0
  83. package/dist/host-health-run.d.ts +32 -1
  84. package/dist/host-health-run.js +38 -1
  85. package/dist/host-health-run.js.map +1 -1
  86. package/dist/init-codeowners.d.ts +19 -0
  87. package/dist/init-codeowners.js +66 -0
  88. package/dist/init-codeowners.js.map +1 -1
  89. package/dist/job-draft-api.d.ts +52 -0
  90. package/dist/job-draft-api.js +110 -0
  91. package/dist/job-draft-api.js.map +1 -0
  92. package/dist/journeeze-api.d.ts +71 -0
  93. package/dist/journeeze-api.js +285 -0
  94. package/dist/journeeze-api.js.map +1 -0
  95. package/dist/journeeze-connect.d.ts +156 -0
  96. package/dist/journeeze-connect.js +357 -0
  97. package/dist/journeeze-connect.js.map +1 -0
  98. package/dist/journey-anchor-gate.d.ts +52 -0
  99. package/dist/journey-anchor-gate.js +101 -0
  100. package/dist/journey-anchor-gate.js.map +1 -0
  101. package/dist/journey-api.d.ts +43 -3
  102. package/dist/journey-api.js +226 -21
  103. package/dist/journey-api.js.map +1 -1
  104. package/dist/journey-cli.js +162 -20
  105. package/dist/journey-cli.js.map +1 -1
  106. package/dist/journey-heal.d.ts +74 -0
  107. package/dist/journey-heal.js +180 -0
  108. package/dist/journey-heal.js.map +1 -0
  109. package/dist/journey-lint-sarif.d.ts +3 -2
  110. package/dist/journey-lint-sarif.js +9 -2
  111. package/dist/journey-lint-sarif.js.map +1 -1
  112. package/dist/journey-migrate-api.d.ts +54 -0
  113. package/dist/journey-migrate-api.js +64 -0
  114. package/dist/journey-migrate-api.js.map +1 -0
  115. package/dist/journey-network-checks.d.ts +5 -1
  116. package/dist/journey-network-checks.js +15 -4
  117. package/dist/journey-network-checks.js.map +1 -1
  118. package/dist/journey-prefix.js +2 -2
  119. package/dist/journey-prefix.js.map +1 -1
  120. package/dist/journey-proposal-store.d.ts +109 -0
  121. package/dist/journey-proposal-store.js +365 -0
  122. package/dist/journey-proposal-store.js.map +1 -0
  123. package/dist/journey-result-record.d.ts +42 -0
  124. package/dist/journey-result-record.js +33 -0
  125. package/dist/journey-result-record.js.map +1 -0
  126. package/dist/journey-review-api.js +16 -1
  127. package/dist/journey-review-api.js.map +1 -1
  128. package/dist/journey-review.d.ts +18 -1
  129. package/dist/journey-review.js +116 -5
  130. package/dist/journey-review.js.map +1 -1
  131. package/dist/journey-stale-api.d.ts +40 -0
  132. package/dist/journey-stale-api.js +57 -0
  133. package/dist/journey-stale-api.js.map +1 -0
  134. package/dist/launch-armed.js +5 -1
  135. package/dist/launch-armed.js.map +1 -1
  136. package/dist/locator-health-api.d.ts +101 -0
  137. package/dist/locator-health-api.js +203 -0
  138. package/dist/locator-health-api.js.map +1 -0
  139. package/dist/locator-health.d.ts +195 -0
  140. package/dist/locator-health.js +419 -0
  141. package/dist/locator-health.js.map +1 -0
  142. package/dist/login-cli.d.ts +2 -0
  143. package/dist/login-cli.js +56 -11
  144. package/dist/login-cli.js.map +1 -1
  145. package/dist/mcp-api.d.ts +5 -1
  146. package/dist/mcp-api.js +53 -8
  147. package/dist/mcp-api.js.map +1 -1
  148. package/dist/mcp-cli-tools.d.ts +3 -1
  149. package/dist/mcp-cli-tools.js +80 -10
  150. package/dist/mcp-cli-tools.js.map +1 -1
  151. package/dist/multi-run.d.ts +7 -6
  152. package/dist/multi-run.js +5 -4
  153. package/dist/multi-run.js.map +1 -1
  154. package/dist/persona-login.d.ts +60 -3
  155. package/dist/persona-login.js +341 -31
  156. package/dist/persona-login.js.map +1 -1
  157. package/dist/program.js +2 -0
  158. package/dist/program.js.map +1 -1
  159. package/dist/project-config.d.ts +29 -0
  160. package/dist/project-config.js +76 -0
  161. package/dist/project-config.js.map +1 -0
  162. package/dist/report-api.d.ts +1 -0
  163. package/dist/report-api.js +1 -0
  164. package/dist/report-api.js.map +1 -1
  165. package/dist/resource-preflight.js +5 -3
  166. package/dist/resource-preflight.js.map +1 -1
  167. package/dist/run-metadata.d.ts +5 -2
  168. package/dist/run-metadata.js +10 -3
  169. package/dist/run-metadata.js.map +1 -1
  170. package/dist/run-tags-cli.d.ts +2 -0
  171. package/dist/run-tags-cli.js +8 -2
  172. package/dist/run-tags-cli.js.map +1 -1
  173. package/dist/self-heal-adapter.d.ts +43 -27
  174. package/dist/self-heal-adapter.js +196 -62
  175. package/dist/self-heal-adapter.js.map +1 -1
  176. package/dist/source-cli.js +5 -3
  177. package/dist/source-cli.js.map +1 -1
  178. package/dist/suite-explore-options.js +1 -0
  179. package/dist/suite-explore-options.js.map +1 -1
  180. package/dist/sweep-api.d.ts +23 -0
  181. package/dist/sweep-api.js +39 -8
  182. package/dist/sweep-api.js.map +1 -1
  183. package/dist/sweep-cli.js +3 -1
  184. package/dist/sweep-cli.js.map +1 -1
  185. package/dist/ux-usability.js +3 -2
  186. package/dist/ux-usability.js.map +1 -1
  187. package/package.json +17 -15
  188. package/skills/jevitate-ci-check/SKILL.md +25 -1
  189. package/skills/jevitate-getting-started/SKILL.md +9 -3
  190. package/skills/jevitate-mission-scope/SKILL.md +2 -2
  191. package/skills/jevitate-run-journey/SKILL.md +36 -5
  192. package/skills/jevitate-test-campaign/SKILL.md +13 -0
@@ -28,11 +28,13 @@ artifact; your job is to find the right one and run it with the right params.
28
28
  - MCP: `run_journey({ id, params, storageState? })` — same param-schema
29
29
  validation, same refusal on an unknown id or params. It NEVER accepts inline
30
30
  steps or a raw recording — a published id only.
31
- - Read the JSON envelope's `outcome` field. `"ok"` and `"healed"` (a run that
32
- recovered via self-heal) are both successes (exit 0); `"quarantined"` (exit 1)
33
- and any other value, including a secret-handback pause, mean it did not
34
- complete — report that honestly, with the step it stopped at. Exit 64 is a
35
- refusal before anything ran (unknown id, bad params, a step off the allowlist).
31
+ - Read the JSON envelope's `outcome` field (MCP: also `exitCode`). Only `"ok"`
32
+ (exit 0) is a pass. `"healed-pending-review"` (exit 5) is NOT a pass: a
33
+ self-heal retargeted steps and proposed a Journey revision a person must
34
+ accept. `"heal-exhausted"` and `"quarantined"` (exit 1) and any other value,
35
+ including a secret-handback pause, mean it did not complete — report that
36
+ honestly, with the step it stopped at. Exit 64 is a refusal before anything
37
+ ran (unknown id, bad params, a step off the allowlist).
36
38
 
37
39
  ## Where it runs (`--env`) and what it records
38
40
 
@@ -70,6 +72,24 @@ artifact; your job is to find the right one and run it with the right params.
70
72
  preserves the plain, unhealed behavior. `hybrid`/`full` need an AI gateway
71
73
  (`--real` after `jevitate ai setup`, or `--fake-ai` for a pipeline smoke);
72
74
  requesting a heal mode without one fails closed rather than running unhealed.
75
+ - A heal mode also needs a change context, or it is refused (exit 64):
76
+ `--changes <git range>` (e.g. `HEAD~1..HEAD`, read-only) and/or one or more
77
+ `--change-note "renamed \"Create New\" to \"Create\""`. MCP: `changes`,
78
+ `changeNote`. Only a break that change explains is retargeted, one step for
79
+ one step; assertions, waits and request checks are never changed. A break the
80
+ change does not explain stays `quarantined` (a likely regression).
81
+ - Budgets bound the heal: `--heal-max-attempts` (2) / `--heal-max-model-calls`
82
+ (6) / `--heal-max-ms` per broken step; `--heal-max-run-attempts` (4) /
83
+ `--heal-max-run-ms` per run. Exhausting them ends `heal-exhausted` (exit 1)
84
+ with every attempt in the result.
85
+ - A healed run ends `healed-pending-review` (exit 5) and writes a proposal
86
+ (`result.proposal`: id, path, steps, `reviewCommand`, `acceptCommand`); the
87
+ stored Journey is untouched. Next: `jevitate journey review <id>` (MCP
88
+ `review_journey`), then a person accepts with
89
+ `jevitate journey promote <id> --proposal <pid>` or rejects with
90
+ `--reject-proposal <pid> --reason "<text>"`. Do not accept a proposal on the
91
+ user's behalf unless they asked you to. Show the user the changed steps and
92
+ the evidence it cites.
73
93
  - A write/irreversible step NEVER auto-heals in any mode — that floor is
74
94
  enforced by the runtime, not something you can override from a flag.
75
95
 
@@ -92,6 +112,17 @@ artifact; your job is to find the right one and run it with the right params.
92
112
  proof, change since the last approval, and the content hash. Pass that hash
93
113
  as `--reviewed-hash` (MCP `reviewedHash`) so the approval is refused
94
114
  (`E_JOURNEY_REVIEW_STALE`) if the Journey changed after they read it.
115
+ - A new Journey, or one whose content changed beyond step ids, must follow the
116
+ anchor rules to promote (lowercase anchor names, anchors carrying their
117
+ step's `stepId`, a job-linked Journey naming at least one anchor, valid
118
+ `serves`/`jobStep` references); otherwise promote is refused with
119
+ `E_JOURNEY_ANCHOR_RULES` and the fix for each problem. The sheet and
120
+ `journey lint` show the same problems as warnings first.
121
+ - `jevitate journey review --stale --json` (MCP `review_journey` with
122
+ `stale: true`) lists every promoted Journey whose approval is stale;
123
+ `stepIdOnly: true` marks one whose only change is minted step ids (after
124
+ `jevitate journey migrate --step-ids`, which the operator runs and
125
+ commits). Re-approving those is still the person's act.
95
126
  - `jevitate journey promote <id>` promotes a local Journey — a person's
96
127
  approval, never automatic. It needs an interactive terminal: after the
97
128
  sheet, the person types the Journey id (or the first 8 characters of its
@@ -44,6 +44,14 @@ never the click path; independent `--success` checks (page or network state); pr
44
44
  whether it mutates state; and a run order (jobs that create data run before jobs that use it).
45
45
  A job you can't write a checkable `--success` for is too vague. Split it or narrow it.
46
46
 
47
+ Optionally give a job its steps and desired outcomes (`steps`, `desiredOutcomes` with a `metric`
48
+ measured between anchors or the reserved `"job_start"` / `"job_end"`, a `target`, `guardrail: true`
49
+ for what must never get worse; docs/catalog.md). `jevitate job draft-outcomes <id> --real --json`
50
+ (MCP `draft_job_outcomes`) drafts 1-3 outcomes marked `provenance: ai_draft` for the human to
51
+ review; it never approves, and an approved job becomes stale. On each job-linked Journey, mark
52
+ where the job's steps start and end with anchors (`jobStep`, `boundary`), so its metrics are
53
+ measurable; `catalog status` lists the reference problems (`refIssues`).
54
+
47
55
  ## 3. Discovery: one goal run per job
48
56
 
49
57
  For each job, as the right persona, with no scripted path:
@@ -167,6 +175,11 @@ probability ≥ its `threshold` (Jev only advises). Then `jevitate catalog statu
167
175
  `fixed` by verify-fix (with a ledger entry or regression); the final round ran on the release
168
176
  build; and no `inconclusive` run was counted as a pass. Anything short of that, report it as open.
169
177
 
178
+ To share the vetted catalog, `jevitate catalog export --format journeeze-bundle --out <dir>
179
+ [--check <check.json>] --json` (MCP `export_catalog_bundle`) writes a Journeeze catalog bundle, and
180
+ `jevitate publish journeeze --json` (MCP `publish_to_journeeze`) uploads it once a person has run
181
+ `jevitate connect journeeze` (or CI sets `JOURNEEZE_UPLOAD_KEY`). Neither approves anything.
182
+
170
183
  ## Templates
171
184
 
172
185
  Job spec (one per job, `.jevitate/jobs.json`; the old `.jevitate/campaign/jobs.json` is still