@qontinui/shared-types 0.8.1 → 0.11.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/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +412 -1
- package/dist/index.d.ts +412 -1
- package/package.json +1 -1
- package/src/generated/App.d.ts +34 -0
- package/src/generated/AppError.d.ts +5 -0
- package/src/generated/ElementState.d.ts +27 -1
- package/src/generated/GitCommitLite.d.ts +24 -0
- package/src/generated/GitLite.d.ts +27 -0
- package/src/generated/HealthLevel.d.ts +11 -0
- package/src/generated/HealthLite.d.ts +28 -0
- package/src/generated/HelperAnswer.d.ts +47 -0
- package/src/generated/HelperAnswerSchema.d.ts +40 -0
- package/src/generated/HelperTask.d.ts +59 -0
- package/src/generated/HelperTaskKind.d.ts +16 -0
- package/src/generated/HelperTaskPayload.d.ts +37 -0
- package/src/generated/HelperTaskSource.d.ts +31 -0
- package/src/generated/HelperTaskStatus.d.ts +14 -0
- package/src/generated/HelperVerdict.d.ts +21 -0
- package/src/generated/PendingQuestion.d.ts +32 -0
- package/src/generated/ProcessStatusLite.d.ts +38 -0
- package/src/generated/ProjectSnapshot.d.ts +63 -0
- package/src/generated/RegisterAppRequest.d.ts +24 -0
- package/src/generated/SavedProject.d.ts +102 -0
- package/src/generated/SessionLite.d.ts +44 -0
- package/src/generated/SessionSource.d.ts +11 -0
- package/src/generated/SpecCheckResult.d.ts +7 -0
- package/src/generated/StateMatchResult.d.ts +5 -0
- package/src/generated/UpdateAppRequest.d.ts +24 -0
- package/src/generated/index.ts +18 -0
- package/src/index.ts +14 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { HelperVerdict } from "./HelperVerdict";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The answers a helper is allowed to give, plus the preset reason codes the UI
|
|
12
|
+
* offers them.
|
|
13
|
+
*
|
|
14
|
+
* Defines the choice set for a task: which [`HelperVerdict`]s are offered, the
|
|
15
|
+
* preset reason codes shown when the helper rejects, and whether free text and
|
|
16
|
+
* the 🤔 "not sure" escape hatch are available.
|
|
17
|
+
*/
|
|
18
|
+
export interface HelperAnswerSchema {
|
|
19
|
+
/**
|
|
20
|
+
* Whether the helper may add a free-text note alongside the verdict.
|
|
21
|
+
*/
|
|
22
|
+
allowFreeText: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Whether the 🤔 [`HelperVerdict::NotSure`] option is offered. First-class
|
|
25
|
+
* by design; defaults to `true`.
|
|
26
|
+
*/
|
|
27
|
+
allowNotSure: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Preset reason codes the UI surfaces as tap-to-select chips on a reject —
|
|
30
|
+
* e.g. `"text_cut_off"`, `"overlapping"`, `"wrong_color"`,
|
|
31
|
+
* `"button_missing"`. Selected codes land in [`HelperAnswer::reasons`].
|
|
32
|
+
*/
|
|
33
|
+
presetReasons: string[];
|
|
34
|
+
/**
|
|
35
|
+
* The verdicts offered for this task (e.g. approve/reject/not_sure for a
|
|
36
|
+
* SpotCheck).
|
|
37
|
+
*/
|
|
38
|
+
verdicts: HelperVerdict[];
|
|
39
|
+
[k: string]: unknown;
|
|
40
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { HelperAnswerSchema } from "./HelperAnswerSchema";
|
|
9
|
+
import type { HelperTaskKind } from "./HelperTaskKind";
|
|
10
|
+
import type { HelperTaskPayload } from "./HelperTaskPayload";
|
|
11
|
+
import type { HelperTaskSource } from "./HelperTaskSource";
|
|
12
|
+
import type { HelperTaskStatus } from "./HelperTaskStatus";
|
|
13
|
+
import type { HelperVerdict } from "./HelperVerdict";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* A human-judgment micro-task emitted by a runner for a helper to answer.
|
|
17
|
+
*
|
|
18
|
+
* The broker holds the task `Open` until [`required_votes`](HelperTask::required_votes)
|
|
19
|
+
* [`HelperAnswer`]s are collected (or it `expires_at`), then resolves the
|
|
20
|
+
* verdict and routes it back through [`source`](HelperTask::source).
|
|
21
|
+
*/
|
|
22
|
+
export interface HelperTask {
|
|
23
|
+
answerSchema: HelperAnswerSchema;
|
|
24
|
+
/**
|
|
25
|
+
* Application the task pertains to.
|
|
26
|
+
*/
|
|
27
|
+
appId: string;
|
|
28
|
+
/**
|
|
29
|
+
* ISO 8601 timestamp (UTC) when the task was created.
|
|
30
|
+
*/
|
|
31
|
+
createdAt: string;
|
|
32
|
+
/**
|
|
33
|
+
* ISO 8601 timestamp (UTC) after which the task can no longer be answered.
|
|
34
|
+
* Absent means the task does not expire.
|
|
35
|
+
*/
|
|
36
|
+
expiresAt?: string | null;
|
|
37
|
+
/**
|
|
38
|
+
* Task ID (UUID v4 string).
|
|
39
|
+
*/
|
|
40
|
+
id: string;
|
|
41
|
+
kind: HelperTaskKind;
|
|
42
|
+
payload: HelperTaskPayload;
|
|
43
|
+
/**
|
|
44
|
+
* Human-readable question shown to the helper (e.g. "Does this login
|
|
45
|
+
* screen look right?").
|
|
46
|
+
*/
|
|
47
|
+
prompt: string;
|
|
48
|
+
/**
|
|
49
|
+
* Number of helper answers required before the task is `Answered`.
|
|
50
|
+
*/
|
|
51
|
+
requiredVotes: number;
|
|
52
|
+
source: HelperTaskSource;
|
|
53
|
+
status: HelperTaskStatus;
|
|
54
|
+
/**
|
|
55
|
+
* Tenant that owns the task (coord tenant id).
|
|
56
|
+
*/
|
|
57
|
+
tenantId: string;
|
|
58
|
+
[k: string]: unknown;
|
|
59
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Kind of human-judgment task a helper is asked to perform.
|
|
10
|
+
*
|
|
11
|
+
* Phase 1 ships [`HelperTaskKind::SpotCheck`] only; the rest are Phase 2/3.
|
|
12
|
+
* Each kind dictates which [`HelperTaskPayload`] fields are populated and which
|
|
13
|
+
* [`HelperVerdict`]s are offered in the task's [`HelperAnswerSchema`].
|
|
14
|
+
*/
|
|
15
|
+
export type HelperTaskKind =
|
|
16
|
+
"spot_check" | "compare" | "walk_through" | "describe" | "sort";
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Kind-specific content shown to the helper.
|
|
10
|
+
*
|
|
11
|
+
* Every field is optional; a given [`HelperTaskKind`] populates only the
|
|
12
|
+
* fields it needs. A [`HelperTaskKind::SpotCheck`] task populates only
|
|
13
|
+
* [`screenshot_url`](HelperTaskPayload::screenshot_url).
|
|
14
|
+
*/
|
|
15
|
+
export interface HelperTaskPayload {
|
|
16
|
+
/**
|
|
17
|
+
* Sort: the feature cards the helper groups in the card-sort exercise.
|
|
18
|
+
*/
|
|
19
|
+
cards?: string[] | null;
|
|
20
|
+
/**
|
|
21
|
+
* Compare: the two presigned screenshot URLs to put side by side (A, B).
|
|
22
|
+
*/
|
|
23
|
+
compareUrls?: string[] | null;
|
|
24
|
+
/**
|
|
25
|
+
* Describe: a reference to the live screen / target the helper describes.
|
|
26
|
+
*/
|
|
27
|
+
liveTarget?: string | null;
|
|
28
|
+
/**
|
|
29
|
+
* SpotCheck: a coord-served / presigned URL of the screenshot to review.
|
|
30
|
+
*/
|
|
31
|
+
screenshotUrl?: string | null;
|
|
32
|
+
/**
|
|
33
|
+
* WalkThrough: the ordered guided steps the helper follows live.
|
|
34
|
+
*/
|
|
35
|
+
steps?: string[] | null;
|
|
36
|
+
[k: string]: unknown;
|
|
37
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Round-trip provenance linking a task back to what produced it.
|
|
10
|
+
*
|
|
11
|
+
* Carries the originating [`crate::findings`] / page / spec-check context so a
|
|
12
|
+
* collected verdict can be folded back into the source flow. Spec-check exposes
|
|
13
|
+
* `match_rate` / classification (not a "confidence" scalar), so the rate field
|
|
14
|
+
* is named [`match_rate`](HelperTaskSource::match_rate) accordingly.
|
|
15
|
+
*/
|
|
16
|
+
export interface HelperTaskSource {
|
|
17
|
+
/**
|
|
18
|
+
* The finding this task was raised from, if any.
|
|
19
|
+
*/
|
|
20
|
+
findingId?: string | null;
|
|
21
|
+
/**
|
|
22
|
+
* The spec-check match rate that triggered the task, if any — the
|
|
23
|
+
* `[0.0, 1.0]` structural match score, **not** a confidence scalar.
|
|
24
|
+
*/
|
|
25
|
+
matchRate?: number | null;
|
|
26
|
+
/**
|
|
27
|
+
* The page / spec the screenshot was captured from, if any.
|
|
28
|
+
*/
|
|
29
|
+
pageId?: string | null;
|
|
30
|
+
[k: string]: unknown;
|
|
31
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Lifecycle status of a helper task.
|
|
10
|
+
*
|
|
11
|
+
* Lifecycle: `OPEN` → (`ANSWERED` | `EXPIRED` | `CANCELLED`). A task becomes
|
|
12
|
+
* `ANSWERED` once [`HelperTask::required_votes`] answers are collected.
|
|
13
|
+
*/
|
|
14
|
+
export type HelperTaskStatus = "open" | "answered" | "expired" | "cancelled";
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A verdict a helper may submit for a task.
|
|
10
|
+
*
|
|
11
|
+
* Verdict-to-kind mapping:
|
|
12
|
+
* - [`HelperTaskKind::SpotCheck`] → [`HelperVerdict::Approve`],
|
|
13
|
+
* [`HelperVerdict::Reject`], [`HelperVerdict::NotSure`].
|
|
14
|
+
* - [`HelperTaskKind::Compare`] → [`HelperVerdict::ChoiceA`],
|
|
15
|
+
* [`HelperVerdict::ChoiceB`], [`HelperVerdict::ChoiceSame`].
|
|
16
|
+
*
|
|
17
|
+
* `NotSure` (🤔) is a first-class outcome — never an error — so a helper is
|
|
18
|
+
* never forced into a false approve/reject.
|
|
19
|
+
*/
|
|
20
|
+
export type HelperVerdict =
|
|
21
|
+
"approve" | "reject" | "not_sure" | "choice_a" | "choice_b" | "choice_same";
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A question an agent is blocked on, awaiting the user's answer.
|
|
10
|
+
*/
|
|
11
|
+
export interface PendingQuestion {
|
|
12
|
+
/**
|
|
13
|
+
* Unix epoch milliseconds the question was raised.
|
|
14
|
+
*/
|
|
15
|
+
createdAtMs?: number | null;
|
|
16
|
+
/**
|
|
17
|
+
* `deferred_questions.id`.
|
|
18
|
+
*/
|
|
19
|
+
id: string;
|
|
20
|
+
/**
|
|
21
|
+
* The question text, as shown to the user.
|
|
22
|
+
*/
|
|
23
|
+
question: string;
|
|
24
|
+
/**
|
|
25
|
+
* Risk level the asking agent assigned ("low" | "medium" | "high").
|
|
26
|
+
*/
|
|
27
|
+
riskLevel?: string | null;
|
|
28
|
+
/**
|
|
29
|
+
* The session that asked.
|
|
30
|
+
*/
|
|
31
|
+
taskRunId: string;
|
|
32
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { ProcessState } from "./ProcessState";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* A managed process attributed to a project, reduced to what the dashboard
|
|
12
|
+
* renders. Full detail stays in `ProcessStatus` / `ProcessConfig`.
|
|
13
|
+
*/
|
|
14
|
+
export interface ProcessStatusLite {
|
|
15
|
+
/**
|
|
16
|
+
* Working directory — the field that attributed this process to the
|
|
17
|
+
* project in the first place.
|
|
18
|
+
*/
|
|
19
|
+
cwd: string;
|
|
20
|
+
/**
|
|
21
|
+
* Health port, when the process declares one.
|
|
22
|
+
*/
|
|
23
|
+
healthPort?: number | null;
|
|
24
|
+
/**
|
|
25
|
+
* `ProcessConfig.id`.
|
|
26
|
+
*/
|
|
27
|
+
id: string;
|
|
28
|
+
/**
|
|
29
|
+
* Human-readable process name ("Website").
|
|
30
|
+
*/
|
|
31
|
+
name: string;
|
|
32
|
+
/**
|
|
33
|
+
* Whether the health port is currently responding. `None` when the
|
|
34
|
+
* process declares no health port.
|
|
35
|
+
*/
|
|
36
|
+
portHealthy?: boolean | null;
|
|
37
|
+
state: ProcessState;
|
|
38
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { GitCommitLite } from "./GitCommitLite";
|
|
9
|
+
import type { GitLite } from "./GitLite";
|
|
10
|
+
import type { HealthLevel } from "./HealthLevel";
|
|
11
|
+
import type { HealthLite } from "./HealthLite";
|
|
12
|
+
import type { PendingQuestion } from "./PendingQuestion";
|
|
13
|
+
import type { ProcessState } from "./ProcessState";
|
|
14
|
+
import type { ProcessStatusLite } from "./ProcessStatusLite";
|
|
15
|
+
import type { SavedProject } from "./SavedProject";
|
|
16
|
+
import type { SessionLite } from "./SessionLite";
|
|
17
|
+
import type { SessionSource } from "./SessionSource";
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The joined dashboard view of one project.
|
|
21
|
+
*
|
|
22
|
+
* Every field on both the grid card and the detail page is a projection of
|
|
23
|
+
* this single struct — computed server-side in one call so the page never
|
|
24
|
+
* fans out.
|
|
25
|
+
*/
|
|
26
|
+
export interface ProjectSnapshot {
|
|
27
|
+
/**
|
|
28
|
+
* Git state of the root, when it is a git working tree.
|
|
29
|
+
*/
|
|
30
|
+
git?: GitLite | null;
|
|
31
|
+
/**
|
|
32
|
+
* The project's traffic light.
|
|
33
|
+
*/
|
|
34
|
+
health?: HealthLite & {};
|
|
35
|
+
/**
|
|
36
|
+
* Unix epoch milliseconds of the newest activity of any kind.
|
|
37
|
+
*/
|
|
38
|
+
lastActivityMs?: number | null;
|
|
39
|
+
/**
|
|
40
|
+
* Live terminal sessions whose `working_dir` is under the project root.
|
|
41
|
+
*/
|
|
42
|
+
liveSessions: SessionLite[];
|
|
43
|
+
/**
|
|
44
|
+
* Managed processes whose `cwd` is under the project root.
|
|
45
|
+
*/
|
|
46
|
+
processes: ProcessStatusLite[];
|
|
47
|
+
project: SavedProject;
|
|
48
|
+
/**
|
|
49
|
+
* Questions waiting on the user, from `deferred_questions`.
|
|
50
|
+
*/
|
|
51
|
+
questions: PendingQuestion[];
|
|
52
|
+
/**
|
|
53
|
+
* Recent AI sessions, newest first, attributed via
|
|
54
|
+
* `coord.session_touched_files`.
|
|
55
|
+
*/
|
|
56
|
+
recentSessions: SessionLite[];
|
|
57
|
+
/**
|
|
58
|
+
* Rolling 7-day spend attributed to this project, in USD. `None` when
|
|
59
|
+
* cost data is unavailable — distinct from `Some(0.0)`, which means
|
|
60
|
+
* "measured, and it was free".
|
|
61
|
+
*/
|
|
62
|
+
spend7dUsd?: number | null;
|
|
63
|
+
}
|
|
@@ -7,8 +7,32 @@
|
|
|
7
7
|
|
|
8
8
|
export interface RegisterAppRequest {
|
|
9
9
|
appId: string;
|
|
10
|
+
/**
|
|
11
|
+
* Whether this app requires authentication before spec checks.
|
|
12
|
+
*/
|
|
13
|
+
authRequired: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Build command for "pull_build" strategy. Optional.
|
|
16
|
+
*/
|
|
17
|
+
buildCommand?: string | null;
|
|
10
18
|
displayName: string;
|
|
19
|
+
/**
|
|
20
|
+
* Red threshold for spec match rates. Defaults to 0.5.
|
|
21
|
+
*/
|
|
22
|
+
redThreshold: number;
|
|
11
23
|
repoRoot: string;
|
|
24
|
+
/**
|
|
25
|
+
* Start command to restart after build. Optional.
|
|
26
|
+
*/
|
|
27
|
+
startCommand?: string | null;
|
|
12
28
|
uiBridgeUrl: string;
|
|
29
|
+
/**
|
|
30
|
+
* Auto-fresh update strategy (P3 fleet-fresh engine). Defaults to "pull_only".
|
|
31
|
+
*/
|
|
32
|
+
updateStrategy: string;
|
|
33
|
+
/**
|
|
34
|
+
* Yellow threshold for spec match rates. Defaults to 0.8.
|
|
35
|
+
*/
|
|
36
|
+
yellowThreshold: number;
|
|
13
37
|
[k: string]: unknown;
|
|
14
38
|
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A project the user has told the runner about (typically via the setup
|
|
10
|
+
* wizard's project picker, the new-project flow, or the Projects
|
|
11
|
+
* dashboard's "find on disk" discovery).
|
|
12
|
+
*
|
|
13
|
+
* Persisted to `settings.json` under the `saved_projects` key.
|
|
14
|
+
*
|
|
15
|
+
* `id` is the stable key: a project's `path` can move on disk (renamed
|
|
16
|
+
* folder, relocated workspace) but its identity must not. Entries persisted
|
|
17
|
+
* before `id` existed are backfilled with a freshly-minted UUID on first
|
|
18
|
+
* load — `#[serde(default)]` exists only so that load succeeds, never as a
|
|
19
|
+
* legitimate steady-state value.
|
|
20
|
+
*
|
|
21
|
+
* `project_type` is deliberately a free-form `String` so a new framework
|
|
22
|
+
* never requires a schema change.
|
|
23
|
+
* `Default` exists so a producer that only knows a few fields can write
|
|
24
|
+
* `SavedProject { path, name, ..Default::default() }` — the new-project flow
|
|
25
|
+
* and the setup wizard both do. A defaulted `id` is the empty string, which
|
|
26
|
+
* the registry treats as "mint me one" (see the field docs), never as a key.
|
|
27
|
+
*/
|
|
28
|
+
export interface SavedProject {
|
|
29
|
+
/**
|
|
30
|
+
* Accent colour for the card, as a CSS colour string.
|
|
31
|
+
*/
|
|
32
|
+
color?: string | null;
|
|
33
|
+
/**
|
|
34
|
+
* One-line plain-English description ("Website for the pizzeria, with
|
|
35
|
+
* menu + ordering"). Shown on the project card under the name.
|
|
36
|
+
*/
|
|
37
|
+
description?: string | null;
|
|
38
|
+
/**
|
|
39
|
+
* Emoji used as the card's visual identity (e.g. "🍕").
|
|
40
|
+
*/
|
|
41
|
+
emoji?: string | null;
|
|
42
|
+
/**
|
|
43
|
+
* The project's front page ("http://localhost:3000"). Seeded from the
|
|
44
|
+
* setup wizard's dev-server port detection; user-correctable.
|
|
45
|
+
*/
|
|
46
|
+
frontPageUrl?: string | null;
|
|
47
|
+
/**
|
|
48
|
+
* Stable identifier (UUID). Survives a path move; the registry key.
|
|
49
|
+
*/
|
|
50
|
+
id: string;
|
|
51
|
+
/**
|
|
52
|
+
* Unix epoch milliseconds of the last time the project was activated.
|
|
53
|
+
*/
|
|
54
|
+
lastOpenedMs?: number | null;
|
|
55
|
+
/**
|
|
56
|
+
* Manifest file that identified the project (e.g. "package.json").
|
|
57
|
+
*/
|
|
58
|
+
manifest: string;
|
|
59
|
+
/**
|
|
60
|
+
* Human-friendly display name (usually the directory basename).
|
|
61
|
+
*/
|
|
62
|
+
name: string;
|
|
63
|
+
/**
|
|
64
|
+
* The user's own free-form notes about the project.
|
|
65
|
+
*/
|
|
66
|
+
notes?: string | null;
|
|
67
|
+
/**
|
|
68
|
+
* Absolute path to the project root.
|
|
69
|
+
*/
|
|
70
|
+
path: string;
|
|
71
|
+
/**
|
|
72
|
+
* Pinned projects sort first and render as sidebar entries.
|
|
73
|
+
*/
|
|
74
|
+
pinned: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Ids of the `ProcessConfig` entries this project owns.
|
|
77
|
+
*/
|
|
78
|
+
processIds: string[];
|
|
79
|
+
/**
|
|
80
|
+
* Framework/language tag, e.g. "react", "python", "rust", "node".
|
|
81
|
+
*/
|
|
82
|
+
projectType: string;
|
|
83
|
+
/**
|
|
84
|
+
* `owner/name` GitHub slug, from `repo_detection::detect_repo_slug`.
|
|
85
|
+
*/
|
|
86
|
+
repoSlug?: string | null;
|
|
87
|
+
/**
|
|
88
|
+
* Bound Terminal page id.
|
|
89
|
+
*
|
|
90
|
+
* **A hint, not a handle.** Terminal pages persist to the frontend's
|
|
91
|
+
* `instanceStorage` (localStorage, port-namespaced), which Rust cannot
|
|
92
|
+
* read, so this id can name a page that does not exist in the current
|
|
93
|
+
* window. Activation must treat an unknown id as "not created yet" —
|
|
94
|
+
* create a page named after the project and rewrite the id — and must
|
|
95
|
+
* never fail on a dangling value.
|
|
96
|
+
*/
|
|
97
|
+
terminalPageId?: string | null;
|
|
98
|
+
/**
|
|
99
|
+
* Terminal zone profile to restore when the project is activated.
|
|
100
|
+
*/
|
|
101
|
+
zoneProfile?: string | null;
|
|
102
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { SessionSource } from "./SessionSource";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* One session attributed to a project — either a live terminal or an AI
|
|
12
|
+
* session reconstructed from its touched files.
|
|
13
|
+
*/
|
|
14
|
+
export interface SessionLite {
|
|
15
|
+
/**
|
|
16
|
+
* Number of distinct files this session touched **under this project
|
|
17
|
+
* root**. Zero for terminal-sourced rows.
|
|
18
|
+
*/
|
|
19
|
+
filesTouched: number;
|
|
20
|
+
/**
|
|
21
|
+
* `task_runs.id` for AI sessions, the terminal id for live terminals.
|
|
22
|
+
*/
|
|
23
|
+
id: string;
|
|
24
|
+
/**
|
|
25
|
+
* Unix epoch milliseconds of the most recent observed activity —
|
|
26
|
+
* `max(recorded_at)` over the session's touched files, or the
|
|
27
|
+
* terminal's creation time.
|
|
28
|
+
*/
|
|
29
|
+
lastActivityMs?: number | null;
|
|
30
|
+
/**
|
|
31
|
+
* Session name — `task_runs.task_name` or the terminal's title.
|
|
32
|
+
*/
|
|
33
|
+
name?: string | null;
|
|
34
|
+
source: SessionSource;
|
|
35
|
+
/**
|
|
36
|
+
* `task_runs.status` ("running", "completed", …) for AI sessions;
|
|
37
|
+
* `None` for terminals (liveness is `is_alive` in the terminal list).
|
|
38
|
+
*/
|
|
39
|
+
status?: string | null;
|
|
40
|
+
/**
|
|
41
|
+
* Working directory, when known (terminal sessions always carry one).
|
|
42
|
+
*/
|
|
43
|
+
workingDir?: string | null;
|
|
44
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* This file was automatically generated.
|
|
4
|
+
* DO NOT MODIFY IT BY HAND. Regenerate with `just generate-types` or
|
|
5
|
+
* `qontinui-runner/src-tauri/scripts/generate_types.sh`.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Where a [`SessionLite`] was observed.
|
|
10
|
+
*/
|
|
11
|
+
export type SessionSource = "terminal" | "touched_files";
|
|
@@ -30,6 +30,12 @@ import type { StateMatchResult } from "./StateMatchResult";
|
|
|
30
30
|
*/
|
|
31
31
|
export interface SpecCheckResult {
|
|
32
32
|
bridgeFingerprint: BridgeFingerprint;
|
|
33
|
+
/**
|
|
34
|
+
* Red/Yellow/Green classification of the overall match rate.
|
|
35
|
+
* Derived from `summary.overall_match_rate` and the app's configured
|
|
36
|
+
* thresholds at evaluation time (see `thresholds_used`).
|
|
37
|
+
*/
|
|
38
|
+
classification: "red" | "yellow" | "green";
|
|
33
39
|
/**
|
|
34
40
|
* ISO-8601 UTC. When the spec was hashed and the snapshot indexed.
|
|
35
41
|
*/
|
|
@@ -72,6 +78,7 @@ export interface SpecCheckResult {
|
|
|
72
78
|
*/
|
|
73
79
|
stateResults: StateMatchResult[];
|
|
74
80
|
summary: SpecCheckSummary;
|
|
81
|
+
thresholdsUsed: ThresholdConfig;
|
|
75
82
|
/**
|
|
76
83
|
* Soft signals — currently used for `Stale` from `SnapshotFetchError`.
|
|
77
84
|
*/
|
|
@@ -21,6 +21,11 @@ export interface StateMatchResult {
|
|
|
21
21
|
* One entry per IR assertion in the state.
|
|
22
22
|
*/
|
|
23
23
|
assertions: AssertionResult[];
|
|
24
|
+
/**
|
|
25
|
+
* Red/Yellow/Green classification of this state's match rate.
|
|
26
|
+
* Derived from `match_rate` and the app's configured thresholds.
|
|
27
|
+
*/
|
|
28
|
+
classification: "red" | "yellow" | "green";
|
|
24
29
|
/**
|
|
25
30
|
* Fraction of assertions that passed (0.0..=1.0).
|
|
26
31
|
*/
|
|
@@ -6,7 +6,31 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
export interface UpdateAppRequest {
|
|
9
|
+
/**
|
|
10
|
+
* Whether this app requires authentication before spec checks.
|
|
11
|
+
*/
|
|
12
|
+
authRequired?: boolean | null;
|
|
13
|
+
/**
|
|
14
|
+
* Build command for "pull_build" strategy.
|
|
15
|
+
*/
|
|
16
|
+
buildCommand?: string | null;
|
|
9
17
|
displayName?: string | null;
|
|
18
|
+
/**
|
|
19
|
+
* Red threshold for spec match rates (0.0–1.0). Must be < yellow_threshold.
|
|
20
|
+
*/
|
|
21
|
+
redThreshold?: number | null;
|
|
22
|
+
/**
|
|
23
|
+
* Start command to restart after build.
|
|
24
|
+
*/
|
|
25
|
+
startCommand?: string | null;
|
|
10
26
|
uiBridgeUrl?: string | null;
|
|
27
|
+
/**
|
|
28
|
+
* Auto-fresh update strategy: "pull_only" or "pull_build".
|
|
29
|
+
*/
|
|
30
|
+
updateStrategy?: string | null;
|
|
31
|
+
/**
|
|
32
|
+
* Yellow threshold for spec match rates (0.0–1.0). Must be > red_threshold.
|
|
33
|
+
*/
|
|
34
|
+
yellowThreshold?: number | null;
|
|
11
35
|
[k: string]: unknown;
|
|
12
36
|
}
|
package/src/generated/index.ts
CHANGED
|
@@ -184,9 +184,21 @@ export type { FunctionalSpec } from './FunctionalSpec';
|
|
|
184
184
|
export type { GUIElementChunk } from './GUIElementChunk';
|
|
185
185
|
export type { GapReason } from './GapReason';
|
|
186
186
|
export type { GateEvaluationResult } from './GateEvaluationResult';
|
|
187
|
+
export type { GitCommitLite } from './GitCommitLite';
|
|
188
|
+
export type { GitLite } from './GitLite';
|
|
187
189
|
export type { GitOpListResponse } from './GitOpListResponse';
|
|
188
190
|
export type { GitOpRecord } from './GitOpRecord';
|
|
189
191
|
export type { HealthCheckUrl } from './HealthCheckUrl';
|
|
192
|
+
export type { HealthLevel } from './HealthLevel';
|
|
193
|
+
export type { HealthLite } from './HealthLite';
|
|
194
|
+
export type { HelperAnswer } from './HelperAnswer';
|
|
195
|
+
export type { HelperAnswerSchema } from './HelperAnswerSchema';
|
|
196
|
+
export type { HelperTask } from './HelperTask';
|
|
197
|
+
export type { HelperTaskKind } from './HelperTaskKind';
|
|
198
|
+
export type { HelperTaskPayload } from './HelperTaskPayload';
|
|
199
|
+
export type { HelperTaskSource } from './HelperTaskSource';
|
|
200
|
+
export type { HelperTaskStatus } from './HelperTaskStatus';
|
|
201
|
+
export type { HelperVerdict } from './HelperVerdict';
|
|
190
202
|
export type { HistoricalActionQuery } from './HistoricalActionQuery';
|
|
191
203
|
export type { HistoricalActionResult } from './HistoricalActionResult';
|
|
192
204
|
export type { HttpConfig } from './HttpConfig';
|
|
@@ -288,6 +300,7 @@ export type { PathfindingRequest } from './PathfindingRequest';
|
|
|
288
300
|
export type { PathfindingResult } from './PathfindingResult';
|
|
289
301
|
export type { PathfindingStep } from './PathfindingStep';
|
|
290
302
|
export type { PatternOptions } from './PatternOptions';
|
|
303
|
+
export type { PendingQuestion } from './PendingQuestion';
|
|
291
304
|
export type { PipelineConfig } from './PipelineConfig';
|
|
292
305
|
export type { PlaybackFrameRequest } from './PlaybackFrameRequest';
|
|
293
306
|
export type { PlaywrightExecutionMode } from './PlaywrightExecutionMode';
|
|
@@ -299,7 +312,9 @@ export type { PollingConfig } from './PollingConfig';
|
|
|
299
312
|
export type { ProcessConfig } from './ProcessConfig';
|
|
300
313
|
export type { ProcessState } from './ProcessState';
|
|
301
314
|
export type { ProcessStatus } from './ProcessStatus';
|
|
315
|
+
export type { ProcessStatusLite } from './ProcessStatusLite';
|
|
302
316
|
export type { Profile } from './Profile';
|
|
317
|
+
export type { ProjectSnapshot } from './ProjectSnapshot';
|
|
303
318
|
export type { PromptStep } from './PromptStep';
|
|
304
319
|
export type { PromptStepPhase } from './PromptStepPhase';
|
|
305
320
|
export type { ProposalStatus } from './ProposalStatus';
|
|
@@ -345,6 +360,7 @@ export type { RunnerStatusEvent } from './RunnerStatusEvent';
|
|
|
345
360
|
export type { RunnerUiError } from './RunnerUiError';
|
|
346
361
|
export type { RuntimeData } from './RuntimeData';
|
|
347
362
|
export type { SaveWorkflowArtifactStep } from './SaveWorkflowArtifactStep';
|
|
363
|
+
export type { SavedProject } from './SavedProject';
|
|
348
364
|
export type { ScheduleConditions } from './ScheduleConditions';
|
|
349
365
|
export type { ScheduleExpression } from './ScheduleExpression';
|
|
350
366
|
export type { ScheduledTask } from './ScheduledTask';
|
|
@@ -362,6 +378,8 @@ export type { SearchStrategy } from './SearchStrategy';
|
|
|
362
378
|
export type { SectionVerdict } from './SectionVerdict';
|
|
363
379
|
export type { SemanticSearchRequest } from './SemanticSearchRequest';
|
|
364
380
|
export type { SemanticSearchResponse } from './SemanticSearchResponse';
|
|
381
|
+
export type { SessionLite } from './SessionLite';
|
|
382
|
+
export type { SessionSource } from './SessionSource';
|
|
365
383
|
export type { SpecApiEvent } from './SpecApiEvent';
|
|
366
384
|
export type { SpecCheckConfidence } from './SpecCheckConfidence';
|
|
367
385
|
export type { SpecCheckPolicy } from './SpecCheckPolicy';
|