Commit Graph

5 Commits

Author SHA1 Message Date
jakevin ad9cce34d7 refactor: remove version field from GenerateOutcome and EarlyHint (#884)
All consumers are in the same repo and evolve together — version field
adds ceremony without practical value at this stage.

Keeps schema_version in VerifiedArtifactMetadata (sidecar file format).
2026-04-08 21:16:46 +08:00
jakevin 1662e9a73c refactor: rename operate to browser (#883)
* refactor: rename operate to browser

* fix: preserve browser rename compatibility

* fix: bump generate outcome schema version

* fix: keep generate outcome schema at v1
2026-04-08 21:03:57 +08:00
jakevin bc82450311 feat: verified generate pipeline with structured contract (#878)
* feat: add verified generate pipeline

* Refine verified generate v1 flow

* Tighten verified generate v1 contract

* upgrade GenerateOutcome contract: structured taxonomy + sidecar metadata

Contract changes per team consensus (5 design principles):

1. Rename BlockReason taxonomy by skill decision needs:
   - no-api-discovered → no-viable-api-surface
   - auth-required → auth-too-complex
   - browser-unavailable → execution-environment-unavailable

2. Add stage + confidence to all blocked outcomes so skill knows
   where it stopped and how sure the system is.

3. Replace flat candidate/issue in needs-human-check with structured
   EscalationContext: stage, reason, confidence, suggested_action,
   candidate with explicit reusable + reusability_reason.

4. Add sidecar metadata (.meta.json) for verified artifacts —
   separates product/provenance contract from executable YAML.

5. Export shared decision language types (Stage, Confidence,
   StopReason, EscalationReason, SuggestedAction, ReusabilityKind)
   for future early-hint contract consistency.

* fix: make reusability contract explicit and self-consistent

Addresses @First-principles-0 review:

1. Add reusable + reusability_reason to VerifiedAdapter so success
   outcome is self-contained — skill doesn't need to read sidecar
   metadata or assume success implies reusable.

2. Rename 'candidate-yaml' → 'unverified-candidate' to resolve
   semantic clash with reusable: false. Now the pairing is always
   consistent:
   - reusable: true  + verified-artifact (success)
   - reusable: true  + unverified-candidate (candidate usable with manual args)
   - reusable: false + unverified-candidate (verify failed, candidate exists)
   - reusable: false + not-reusable (nothing worth keeping)

* refactor: merge reusable + reusability_reason into single reusability enum

Removes dual-truth contract (boolean + string) in favor of a single
Reusability enum ('verified-artifact' | 'unverified-candidate' | 'not-reusable').

- VerifiedAdapter.reusability replaces .reusable + .reusability_reason
- EscalationContext.candidate.reusability replaces .reusable + .reusability_reason
- Top-level GenerateOutcome.reusability present on all success and needs-human-check outcomes
- Sidecar metadata (.meta.json) retains reusable + reusability_reason for external compat
- Updated all 7 tests to assert single reusability field
2026-04-08 18:57:31 +08:00
Inori333 97ae87ccee fix(cli): make operate verify work in source checkouts (#777)
* fix(cli): make operate verify work in source checkouts

* fix(cli): resolve operate verify entry from package metadata

---------

Co-authored-by: jackwener <jakevingoo@gmail.com>
2026-04-05 02:56:10 +08:00
AstroHan ef78aaf3a2 fix: add -v/--verbose to built-in browser commands (#719)
* fix: add -v/--verbose to explore, record, generate, cascade

Built-in browser commands were registered directly in cli.ts and
missed the -v/--verbose flag that commanderAdapter.ts wires up for
adapter commands. Also switch explore's lone log.debug() call to
log.verbose() so the flag has visible effect.

Closes #716

* refactor(cli): make builtin command wiring testable

* refactor(cli): simplify verbose wiring, use normal Commander pattern

Replace registerVerboseAction wrapper with simple applyVerbose() helper.
The wrapper broke Commander's builder chain and created awkward
indentation. Now each command uses standard .option().action() with
applyVerbose(opts) as the first line — easier to read and maintain.

* fix(cli): add -v/--verbose to doctor and synthesize commands

These commands were also missing verbose support, same root cause as
explore/record/generate/cascade — registered directly in cli.ts,
bypassing commanderAdapter's automatic -v wiring.

---------

Co-authored-by: jackwener <jakevingoo@gmail.com>
2026-04-04 15:44:23 +08:00