@cat-factory/contracts 0.28.0 → 0.30.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/events.d.ts +11 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/kaizen.d.ts +145 -0
- package/dist/kaizen.d.ts.map +1 -0
- package/dist/kaizen.js +84 -0
- package/dist/kaizen.js.map +1 -0
- package/dist/snapshot.d.ts +1 -4
- package/dist/snapshot.d.ts.map +1 -1
- package/dist/workspace-settings.d.ts +7 -25
- package/dist/workspace-settings.d.ts.map +1 -1
- package/dist/workspace-settings.js +12 -19
- package/dist/workspace-settings.js.map +1 -1
- package/package.json +1 -1
package/dist/events.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import type { LlmCallActivity } from './observability.js';
|
|
|
5
5
|
import type { RequirementReview } from './requirements.js';
|
|
6
6
|
import type { ConsensusSession } from './consensus.js';
|
|
7
7
|
import type { ClarityReview } from './clarity.js';
|
|
8
|
+
import type { KaizenGrading } from './kaizen.js';
|
|
8
9
|
export type WorkspaceEvent =
|
|
9
10
|
/**
|
|
10
11
|
* A run advanced. Carries the updated instance and its server-rolled block, so
|
|
@@ -94,5 +95,15 @@ export type WorkspaceEvent =
|
|
|
94
95
|
type: 'clarity';
|
|
95
96
|
review: ClarityReview;
|
|
96
97
|
at: number;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* A Kaizen grading was scheduled, started, completed or failed. Carries the updated
|
|
101
|
+
* grading so an open run window reflects the scheduled→running→complete status live and
|
|
102
|
+
* the Kaizen screen folds in new history. Never surfaced on the board — run-details only.
|
|
103
|
+
*/
|
|
104
|
+
| {
|
|
105
|
+
type: 'kaizen';
|
|
106
|
+
grading: KaizenGrading;
|
|
107
|
+
at: number;
|
|
97
108
|
};
|
|
98
109
|
//# sourceMappingURL=events.d.ts.map
|
package/dist/events.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAOhD,MAAM,MAAM,cAAc;AACxB;;;;GAIG;AACD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE;AACrF;;;GAGG;GACD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE;AAC/C;;;;;GAKG;GACD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE;AAC3E;;;;GAIG;GACD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,YAAY,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE;AAClE;;;;;;;GAOG;GACD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,eAAe,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE;AACxD;;;;;;;GAOG;GACD;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE;AACjE;;;;;GAKG;GACD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE;AAC9D;;;;GAIG;GACD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE;AACxD;;;;GAIG;GACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,eAAe,CAAA;AAC7B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,eAAe,CAAA;AAC7B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,aAAa,CAAA"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,eAAe,CAAA;AAC7B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,eAAe,CAAA;AAC7B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,aAAa,CAAA"}
|
package/dist/kaizen.d.ts
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import * as v from 'valibot';
|
|
2
|
+
/**
|
|
3
|
+
* Lifecycle of a single grading:
|
|
4
|
+
* - `scheduled`: queued at run completion, awaiting the background sweep.
|
|
5
|
+
* - `running`: the sweep picked it up and the grader LLM is analysing.
|
|
6
|
+
* - `complete`: the grade + recommendations are recorded.
|
|
7
|
+
* - `failed`: the grader call errored (telemetry missing, model unwired, parse
|
|
8
|
+
* failure); recorded with an `error` and never retried automatically.
|
|
9
|
+
*/
|
|
10
|
+
export declare const kaizenGradingStatusSchema: v.PicklistSchema<["scheduled", "running", "complete", "failed"], undefined>;
|
|
11
|
+
export type KaizenGradingStatus = v.InferOutput<typeof kaizenGradingStatusSchema>;
|
|
12
|
+
/** A single Kaizen grading of one completed agent step. */
|
|
13
|
+
export declare const kaizenGradingSchema: v.ObjectSchema<{
|
|
14
|
+
readonly id: v.StringSchema<undefined>;
|
|
15
|
+
/** The run (execution) the graded step belongs to. */
|
|
16
|
+
readonly executionId: v.StringSchema<undefined>;
|
|
17
|
+
/** The board block the run targets — for linking back from the Kaizen screen. */
|
|
18
|
+
readonly blockId: v.StringSchema<undefined>;
|
|
19
|
+
/** Index of the graded step within the run's pipeline. */
|
|
20
|
+
readonly stepIndex: v.NumberSchema<undefined>;
|
|
21
|
+
/** The graded step's agent kind (e.g. `coder`, `architect`). */
|
|
22
|
+
readonly agentKind: v.StringSchema<undefined>;
|
|
23
|
+
/** The resolved model id the step ran on (e.g. `claude-opus-4-...`). */
|
|
24
|
+
readonly model: v.StringSchema<undefined>;
|
|
25
|
+
/** The graded step's prompt version (from the agents prompt-version registry). */
|
|
26
|
+
readonly promptVersion: v.NumberSchema<undefined>;
|
|
27
|
+
/** `agentKind|model|promptVersion` — the verified-combo key. */
|
|
28
|
+
readonly comboKey: v.StringSchema<undefined>;
|
|
29
|
+
readonly status: v.PicklistSchema<["scheduled", "running", "complete", "failed"], undefined>;
|
|
30
|
+
/** 1..5 once `complete` (5 = smooth/guided/efficient); null while pending/failed. */
|
|
31
|
+
readonly grade: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
32
|
+
/** The grader's prose summary of how the interaction went. Empty while pending. */
|
|
33
|
+
readonly summary: v.StringSchema<undefined>;
|
|
34
|
+
/** Actionable improvement recommendations. Empty array ⇒ nothing to improve. */
|
|
35
|
+
readonly recommendations: v.ArraySchema<v.StringSchema<undefined>, undefined>;
|
|
36
|
+
/** `provider:model` that produced the grade, for transparency; null in tests. */
|
|
37
|
+
readonly graderModel: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
38
|
+
/** Error message when `failed`, else null. */
|
|
39
|
+
readonly error: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
40
|
+
readonly createdAt: v.NumberSchema<undefined>;
|
|
41
|
+
readonly updatedAt: v.NumberSchema<undefined>;
|
|
42
|
+
}, undefined>;
|
|
43
|
+
export type KaizenGrading = v.InferOutput<typeof kaizenGradingSchema>;
|
|
44
|
+
/**
|
|
45
|
+
* A `(promptVersion, agentKind, model)` combo's verification progress. The combo
|
|
46
|
+
* earns a high grade each time a grading returns grade 4 or 5 with no recommendations;
|
|
47
|
+
* `consecutiveHighGrades` resets to 0 on anything lower. At VERIFICATION_STREAK it
|
|
48
|
+
* flips `verified` true and the engine stops scheduling gradings for it.
|
|
49
|
+
*/
|
|
50
|
+
export declare const kaizenVerifiedComboSchema: v.ObjectSchema<{
|
|
51
|
+
/** `agentKind|model|promptVersion`. */
|
|
52
|
+
readonly comboKey: v.StringSchema<undefined>;
|
|
53
|
+
readonly agentKind: v.StringSchema<undefined>;
|
|
54
|
+
readonly model: v.StringSchema<undefined>;
|
|
55
|
+
readonly promptVersion: v.NumberSchema<undefined>;
|
|
56
|
+
/** Count of sequential high grades with no recommendations. */
|
|
57
|
+
readonly consecutiveHighGrades: v.NumberSchema<undefined>;
|
|
58
|
+
readonly verified: v.BooleanSchema<undefined>;
|
|
59
|
+
/** When the combo crossed the streak threshold, else null. */
|
|
60
|
+
readonly verifiedAt: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
61
|
+
readonly updatedAt: v.NumberSchema<undefined>;
|
|
62
|
+
}, undefined>;
|
|
63
|
+
export type KaizenVerifiedCombo = v.InferOutput<typeof kaizenVerifiedComboSchema>;
|
|
64
|
+
/** The Kaizen screen payload: recent grading history + the verified-combo library. */
|
|
65
|
+
export declare const kaizenOverviewSchema: v.ObjectSchema<{
|
|
66
|
+
readonly gradings: v.ArraySchema<v.ObjectSchema<{
|
|
67
|
+
readonly id: v.StringSchema<undefined>;
|
|
68
|
+
/** The run (execution) the graded step belongs to. */
|
|
69
|
+
readonly executionId: v.StringSchema<undefined>;
|
|
70
|
+
/** The board block the run targets — for linking back from the Kaizen screen. */
|
|
71
|
+
readonly blockId: v.StringSchema<undefined>;
|
|
72
|
+
/** Index of the graded step within the run's pipeline. */
|
|
73
|
+
readonly stepIndex: v.NumberSchema<undefined>;
|
|
74
|
+
/** The graded step's agent kind (e.g. `coder`, `architect`). */
|
|
75
|
+
readonly agentKind: v.StringSchema<undefined>;
|
|
76
|
+
/** The resolved model id the step ran on (e.g. `claude-opus-4-...`). */
|
|
77
|
+
readonly model: v.StringSchema<undefined>;
|
|
78
|
+
/** The graded step's prompt version (from the agents prompt-version registry). */
|
|
79
|
+
readonly promptVersion: v.NumberSchema<undefined>;
|
|
80
|
+
/** `agentKind|model|promptVersion` — the verified-combo key. */
|
|
81
|
+
readonly comboKey: v.StringSchema<undefined>;
|
|
82
|
+
readonly status: v.PicklistSchema<["scheduled", "running", "complete", "failed"], undefined>;
|
|
83
|
+
/** 1..5 once `complete` (5 = smooth/guided/efficient); null while pending/failed. */
|
|
84
|
+
readonly grade: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
85
|
+
/** The grader's prose summary of how the interaction went. Empty while pending. */
|
|
86
|
+
readonly summary: v.StringSchema<undefined>;
|
|
87
|
+
/** Actionable improvement recommendations. Empty array ⇒ nothing to improve. */
|
|
88
|
+
readonly recommendations: v.ArraySchema<v.StringSchema<undefined>, undefined>;
|
|
89
|
+
/** `provider:model` that produced the grade, for transparency; null in tests. */
|
|
90
|
+
readonly graderModel: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
91
|
+
/** Error message when `failed`, else null. */
|
|
92
|
+
readonly error: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
93
|
+
readonly createdAt: v.NumberSchema<undefined>;
|
|
94
|
+
readonly updatedAt: v.NumberSchema<undefined>;
|
|
95
|
+
}, undefined>, undefined>;
|
|
96
|
+
readonly verified: v.ArraySchema<v.ObjectSchema<{
|
|
97
|
+
/** `agentKind|model|promptVersion`. */
|
|
98
|
+
readonly comboKey: v.StringSchema<undefined>;
|
|
99
|
+
readonly agentKind: v.StringSchema<undefined>;
|
|
100
|
+
readonly model: v.StringSchema<undefined>;
|
|
101
|
+
readonly promptVersion: v.NumberSchema<undefined>;
|
|
102
|
+
/** Count of sequential high grades with no recommendations. */
|
|
103
|
+
readonly consecutiveHighGrades: v.NumberSchema<undefined>;
|
|
104
|
+
readonly verified: v.BooleanSchema<undefined>;
|
|
105
|
+
/** When the combo crossed the streak threshold, else null. */
|
|
106
|
+
readonly verifiedAt: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
107
|
+
readonly updatedAt: v.NumberSchema<undefined>;
|
|
108
|
+
}, undefined>, undefined>;
|
|
109
|
+
}, undefined>;
|
|
110
|
+
export type KaizenOverview = v.InferOutput<typeof kaizenOverviewSchema>;
|
|
111
|
+
/** The gradings recorded for a single run, for the run-window status surface. */
|
|
112
|
+
export declare const kaizenRunGradingsSchema: v.ObjectSchema<{
|
|
113
|
+
readonly gradings: v.ArraySchema<v.ObjectSchema<{
|
|
114
|
+
readonly id: v.StringSchema<undefined>;
|
|
115
|
+
/** The run (execution) the graded step belongs to. */
|
|
116
|
+
readonly executionId: v.StringSchema<undefined>;
|
|
117
|
+
/** The board block the run targets — for linking back from the Kaizen screen. */
|
|
118
|
+
readonly blockId: v.StringSchema<undefined>;
|
|
119
|
+
/** Index of the graded step within the run's pipeline. */
|
|
120
|
+
readonly stepIndex: v.NumberSchema<undefined>;
|
|
121
|
+
/** The graded step's agent kind (e.g. `coder`, `architect`). */
|
|
122
|
+
readonly agentKind: v.StringSchema<undefined>;
|
|
123
|
+
/** The resolved model id the step ran on (e.g. `claude-opus-4-...`). */
|
|
124
|
+
readonly model: v.StringSchema<undefined>;
|
|
125
|
+
/** The graded step's prompt version (from the agents prompt-version registry). */
|
|
126
|
+
readonly promptVersion: v.NumberSchema<undefined>;
|
|
127
|
+
/** `agentKind|model|promptVersion` — the verified-combo key. */
|
|
128
|
+
readonly comboKey: v.StringSchema<undefined>;
|
|
129
|
+
readonly status: v.PicklistSchema<["scheduled", "running", "complete", "failed"], undefined>;
|
|
130
|
+
/** 1..5 once `complete` (5 = smooth/guided/efficient); null while pending/failed. */
|
|
131
|
+
readonly grade: v.NullableSchema<v.NumberSchema<undefined>, undefined>;
|
|
132
|
+
/** The grader's prose summary of how the interaction went. Empty while pending. */
|
|
133
|
+
readonly summary: v.StringSchema<undefined>;
|
|
134
|
+
/** Actionable improvement recommendations. Empty array ⇒ nothing to improve. */
|
|
135
|
+
readonly recommendations: v.ArraySchema<v.StringSchema<undefined>, undefined>;
|
|
136
|
+
/** `provider:model` that produced the grade, for transparency; null in tests. */
|
|
137
|
+
readonly graderModel: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
138
|
+
/** Error message when `failed`, else null. */
|
|
139
|
+
readonly error: v.NullableSchema<v.StringSchema<undefined>, undefined>;
|
|
140
|
+
readonly createdAt: v.NumberSchema<undefined>;
|
|
141
|
+
readonly updatedAt: v.NumberSchema<undefined>;
|
|
142
|
+
}, undefined>, undefined>;
|
|
143
|
+
}, undefined>;
|
|
144
|
+
export type KaizenRunGradings = v.InferOutput<typeof kaizenRunGradingsSchema>;
|
|
145
|
+
//# sourceMappingURL=kaizen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kaizen.d.ts","sourceRoot":"","sources":["../src/kaizen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAiB5B;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,6EAA6D,CAAA;AACnG,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB;;IAE9B,sDAAsD;;IAEtD,iFAAiF;;IAEjF,0DAA0D;;IAE1D,gEAAgE;;IAEhE,wEAAwE;;IAExE,kFAAkF;;IAElF,gEAAgE;;;IAGhE,qFAAqF;;IAErF,mFAAmF;;IAEnF,gFAAgF;;IAEhF,iFAAiF;;IAEjF,8CAA8C;;;;aAI9C,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAErE;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB;IACpC,uCAAuC;;;;;IAKvC,+DAA+D;;;IAG/D,8DAA8D;;;aAG9D,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF,sFAAsF;AACtF,eAAO,MAAM,oBAAoB;;;QApD/B,sDAAsD;;QAEtD,iFAAiF;;QAEjF,0DAA0D;;QAE1D,gEAAgE;;QAEhE,wEAAwE;;QAExE,kFAAkF;;QAElF,gEAAgE;;;QAGhE,qFAAqF;;QAErF,mFAAmF;;QAEnF,gFAAgF;;QAEhF,iFAAiF;;QAEjF,8CAA8C;;;;;;QAc9C,uCAAuC;;;;;QAKvC,+DAA+D;;;QAG/D,8DAA8D;;;;aAU9D,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE,iFAAiF;AACjF,eAAO,MAAM,uBAAuB;;;QA3DlC,sDAAsD;;QAEtD,iFAAiF;;QAEjF,0DAA0D;;QAE1D,gEAAgE;;QAEhE,wEAAwE;;QAExE,kFAAkF;;QAElF,gEAAgE;;;QAGhE,qFAAqF;;QAErF,mFAAmF;;QAEnF,gFAAgF;;QAEhF,iFAAiF;;QAEjF,8CAA8C;;;;;aAsC9C,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
|
package/dist/kaizen.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import * as v from 'valibot';
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// Kaizen wire contracts. The Kaizen agent is a continuous-improvement reviewer
|
|
4
|
+
// that runs AFTER an agent step finishes (it is never a pipeline-builder step).
|
|
5
|
+
// It reads the context + prompt the step was given and the per-call interaction
|
|
6
|
+
// telemetry, then judges whether the interaction was smooth / guided / efficient
|
|
7
|
+
// or confused / chaotic, returning a 1..5 grade plus improvement recommendations.
|
|
8
|
+
//
|
|
9
|
+
// A grading targets one completed step, identified by its `(promptVersion,
|
|
10
|
+
// agentKind, model)` combo. When a combo earns a high grade (4 or 5) with no
|
|
11
|
+
// recommendations VERIFICATION_STREAK (5) times in a row it is marked VERIFIED
|
|
12
|
+
// and is no longer graded. Both the grading history and the verified combos are
|
|
13
|
+
// persisted (D1 ⇄ Drizzle parity) and surfaced on the Kaizen screen; per-run
|
|
14
|
+
// grading status is surfaced inside the run window (never on the board).
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
/**
|
|
17
|
+
* Lifecycle of a single grading:
|
|
18
|
+
* - `scheduled`: queued at run completion, awaiting the background sweep.
|
|
19
|
+
* - `running`: the sweep picked it up and the grader LLM is analysing.
|
|
20
|
+
* - `complete`: the grade + recommendations are recorded.
|
|
21
|
+
* - `failed`: the grader call errored (telemetry missing, model unwired, parse
|
|
22
|
+
* failure); recorded with an `error` and never retried automatically.
|
|
23
|
+
*/
|
|
24
|
+
export const kaizenGradingStatusSchema = v.picklist(['scheduled', 'running', 'complete', 'failed']);
|
|
25
|
+
/** A single Kaizen grading of one completed agent step. */
|
|
26
|
+
export const kaizenGradingSchema = v.object({
|
|
27
|
+
id: v.string(),
|
|
28
|
+
/** The run (execution) the graded step belongs to. */
|
|
29
|
+
executionId: v.string(),
|
|
30
|
+
/** The board block the run targets — for linking back from the Kaizen screen. */
|
|
31
|
+
blockId: v.string(),
|
|
32
|
+
/** Index of the graded step within the run's pipeline. */
|
|
33
|
+
stepIndex: v.number(),
|
|
34
|
+
/** The graded step's agent kind (e.g. `coder`, `architect`). */
|
|
35
|
+
agentKind: v.string(),
|
|
36
|
+
/** The resolved model id the step ran on (e.g. `claude-opus-4-...`). */
|
|
37
|
+
model: v.string(),
|
|
38
|
+
/** The graded step's prompt version (from the agents prompt-version registry). */
|
|
39
|
+
promptVersion: v.number(),
|
|
40
|
+
/** `agentKind|model|promptVersion` — the verified-combo key. */
|
|
41
|
+
comboKey: v.string(),
|
|
42
|
+
status: kaizenGradingStatusSchema,
|
|
43
|
+
/** 1..5 once `complete` (5 = smooth/guided/efficient); null while pending/failed. */
|
|
44
|
+
grade: v.nullable(v.number()),
|
|
45
|
+
/** The grader's prose summary of how the interaction went. Empty while pending. */
|
|
46
|
+
summary: v.string(),
|
|
47
|
+
/** Actionable improvement recommendations. Empty array ⇒ nothing to improve. */
|
|
48
|
+
recommendations: v.array(v.string()),
|
|
49
|
+
/** `provider:model` that produced the grade, for transparency; null in tests. */
|
|
50
|
+
graderModel: v.nullable(v.string()),
|
|
51
|
+
/** Error message when `failed`, else null. */
|
|
52
|
+
error: v.nullable(v.string()),
|
|
53
|
+
createdAt: v.number(),
|
|
54
|
+
updatedAt: v.number(),
|
|
55
|
+
});
|
|
56
|
+
/**
|
|
57
|
+
* A `(promptVersion, agentKind, model)` combo's verification progress. The combo
|
|
58
|
+
* earns a high grade each time a grading returns grade 4 or 5 with no recommendations;
|
|
59
|
+
* `consecutiveHighGrades` resets to 0 on anything lower. At VERIFICATION_STREAK it
|
|
60
|
+
* flips `verified` true and the engine stops scheduling gradings for it.
|
|
61
|
+
*/
|
|
62
|
+
export const kaizenVerifiedComboSchema = v.object({
|
|
63
|
+
/** `agentKind|model|promptVersion`. */
|
|
64
|
+
comboKey: v.string(),
|
|
65
|
+
agentKind: v.string(),
|
|
66
|
+
model: v.string(),
|
|
67
|
+
promptVersion: v.number(),
|
|
68
|
+
/** Count of sequential high grades with no recommendations. */
|
|
69
|
+
consecutiveHighGrades: v.number(),
|
|
70
|
+
verified: v.boolean(),
|
|
71
|
+
/** When the combo crossed the streak threshold, else null. */
|
|
72
|
+
verifiedAt: v.nullable(v.number()),
|
|
73
|
+
updatedAt: v.number(),
|
|
74
|
+
});
|
|
75
|
+
/** The Kaizen screen payload: recent grading history + the verified-combo library. */
|
|
76
|
+
export const kaizenOverviewSchema = v.object({
|
|
77
|
+
gradings: v.array(kaizenGradingSchema),
|
|
78
|
+
verified: v.array(kaizenVerifiedComboSchema),
|
|
79
|
+
});
|
|
80
|
+
/** The gradings recorded for a single run, for the run-window status surface. */
|
|
81
|
+
export const kaizenRunGradingsSchema = v.object({
|
|
82
|
+
gradings: v.array(kaizenGradingSchema),
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=kaizen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kaizen.js","sourceRoot":"","sources":["../src/kaizen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,8EAA8E;AAC9E,+EAA+E;AAC/E,gFAAgF;AAChF,gFAAgF;AAChF,iFAAiF;AACjF,kFAAkF;AAClF,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAC7E,yEAAyE;AACzE,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAA;AAGnG,2DAA2D;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,sDAAsD;IACtD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,iFAAiF;IACjF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,0DAA0D;IAC1D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,gEAAgE;IAChE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,wEAAwE;IACxE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,kFAAkF;IAClF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,gEAAgE;IAChE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,yBAAyB;IACjC,qFAAqF;IACrF,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,mFAAmF;IACnF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,gFAAgF;IAChF,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,iFAAiF;IACjF,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACnC,8CAA8C;IAC9C,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAA;AAGF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,uCAAuC;IACvC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,+DAA+D;IAC/D,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE;IACjC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,8DAA8D;IAC9D,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAA;AAGF,sFAAsF;AACtF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;IACtC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC;CAC7C,CAAC,CAAA;AAGF,iFAAiF;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;CACvC,CAAC,CAAA"}
|
package/dist/snapshot.d.ts
CHANGED
|
@@ -579,12 +579,9 @@ export declare const workspaceSnapshotSchema: v.ObjectSchema<{
|
|
|
579
579
|
readonly taskLimitShared: v.NullableSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>;
|
|
580
580
|
readonly taskLimitPerType: v.NullableSchema<v.RecordSchema<v.PicklistSchema<["feature", "bug", "document", "spike"], undefined>, v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>, undefined>;
|
|
581
581
|
readonly storeAgentContext: v.BooleanSchema<undefined>;
|
|
582
|
+
readonly kaizenEnabled: v.BooleanSchema<undefined>;
|
|
582
583
|
readonly spendCurrency: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.ToUpperCaseAction, v.LengthAction<string, 3, undefined>, v.RegexAction<string, "currency must be a 3-letter ISO 4217 code">]>, undefined>;
|
|
583
584
|
readonly spendMonthlyLimit: v.NullableSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
|
|
584
|
-
readonly spendModelPrices: v.NullableSchema<v.RecordSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, v.ObjectSchema<{
|
|
585
|
-
readonly inputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
|
|
586
|
-
readonly outputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
|
|
587
|
-
}, undefined>, undefined>, undefined>;
|
|
588
585
|
}, undefined>, undefined>;
|
|
589
586
|
/**
|
|
590
587
|
* Registered CUSTOM agent kinds (kind + presentation + container flag) a deployment
|
package/dist/snapshot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAyB5B,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKlC;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;IAEH;;;;;;;;OAQG;;;;;IAOH;;;OAGG;;;;IAEH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;IAGH;;;;OAIG
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAyB5B,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKlC;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;IAEH;;;;;;;;OAQG;;;;;IAOH;;;OAGG;;;;IAEH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;IAGH;;;;OAIG;;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;;;;aAEH,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
|
|
@@ -10,22 +10,6 @@ export type TaskLimitMode = v.InferOutput<typeof taskLimitModeSchema>;
|
|
|
10
10
|
/** Per-task-type running-task caps (used when {@link taskLimitModeSchema} is `per_type`). */
|
|
11
11
|
export declare const taskLimitPerTypeSchema: v.RecordSchema<v.PicklistSchema<["feature", "bug", "document", "spike"], undefined>, v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>;
|
|
12
12
|
export type TaskLimitPerType = v.InferOutput<typeof taskLimitPerTypeSchema>;
|
|
13
|
-
/** A single model's per-1M-token price override. */
|
|
14
|
-
export declare const spendModelPriceSchema: v.ObjectSchema<{
|
|
15
|
-
readonly inputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
|
|
16
|
-
readonly outputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
|
|
17
|
-
}, undefined>;
|
|
18
|
-
export type SpendModelPrice = v.InferOutput<typeof spendModelPriceSchema>;
|
|
19
|
-
/**
|
|
20
|
-
* Per-model price overrides, keyed by `provider:model` then bare `provider`
|
|
21
|
-
* (most-specific-first, exactly like the built-in table). Overlaid onto
|
|
22
|
-
* `DEFAULT_SPEND_PRICING.prices` when resolving a workspace's effective pricing.
|
|
23
|
-
*/
|
|
24
|
-
export declare const spendModelPricesSchema: v.RecordSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, v.ObjectSchema<{
|
|
25
|
-
readonly inputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
|
|
26
|
-
readonly outputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
|
|
27
|
-
}, undefined>, undefined>;
|
|
28
|
-
export type SpendModelPrices = v.InferOutput<typeof spendModelPricesSchema>;
|
|
29
13
|
/** A workspace's runtime settings. */
|
|
30
14
|
export declare const workspaceSettingsSchema: v.ObjectSchema<{
|
|
31
15
|
/**
|
|
@@ -48,6 +32,12 @@ export declare const workspaceSettingsSchema: v.ObjectSchema<{
|
|
|
48
32
|
* suppressed when the deployment disables prompt recording (`LLM_RECORD_PROMPTS`).
|
|
49
33
|
*/
|
|
50
34
|
readonly storeAgentContext: v.BooleanSchema<undefined>;
|
|
35
|
+
/**
|
|
36
|
+
* Whether the Kaizen agent grades agent steps after each run completes and
|
|
37
|
+
* recommends prompt/model improvements. On by default. When off, no gradings are
|
|
38
|
+
* scheduled (existing history + verified combos are retained, just not extended).
|
|
39
|
+
*/
|
|
40
|
+
readonly kaizenEnabled: v.BooleanSchema<undefined>;
|
|
51
41
|
/** Spend budget currency (ISO 4217). Null ⇒ the built-in default (`EUR`). */
|
|
52
42
|
readonly spendCurrency: v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.ToUpperCaseAction, v.LengthAction<string, 3, undefined>, v.RegexAction<string, "currency must be a 3-letter ISO 4217 code">]>, undefined>;
|
|
53
43
|
/**
|
|
@@ -62,11 +52,6 @@ export declare const workspaceSettingsSchema: v.ObjectSchema<{
|
|
|
62
52
|
* money, so a `0` budget also blocks paid web searches.
|
|
63
53
|
*/
|
|
64
54
|
readonly spendMonthlyLimit: v.NullableSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>;
|
|
65
|
-
/** Per-model price overrides overlaid on the base table. Null ⇒ no overrides. */
|
|
66
|
-
readonly spendModelPrices: v.NullableSchema<v.RecordSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, v.ObjectSchema<{
|
|
67
|
-
readonly inputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
|
|
68
|
-
readonly outputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
|
|
69
|
-
}, undefined>, undefined>, undefined>;
|
|
70
55
|
}, undefined>;
|
|
71
56
|
export type WorkspaceSettings = v.InferOutput<typeof workspaceSettingsSchema>;
|
|
72
57
|
/** Update a workspace's runtime settings (full replace of the supplied fields). */
|
|
@@ -76,12 +61,9 @@ export declare const updateWorkspaceSettingsSchema: v.ObjectSchema<{
|
|
|
76
61
|
readonly taskLimitShared: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>, undefined>;
|
|
77
62
|
readonly taskLimitPerType: v.OptionalSchema<v.NullableSchema<v.RecordSchema<v.PicklistSchema<["feature", "bug", "document", "spike"], undefined>, v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>, undefined>, undefined>;
|
|
78
63
|
readonly storeAgentContext: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
64
|
+
readonly kaizenEnabled: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
79
65
|
readonly spendCurrency: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.ToUpperCaseAction, v.LengthAction<string, 3, undefined>, v.RegexAction<string, "currency must be a 3-letter ISO 4217 code">]>, undefined>, undefined>;
|
|
80
66
|
readonly spendMonthlyLimit: v.OptionalSchema<v.NullableSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>, undefined>, undefined>;
|
|
81
|
-
readonly spendModelPrices: v.OptionalSchema<v.NullableSchema<v.RecordSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, v.ObjectSchema<{
|
|
82
|
-
readonly inputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
|
|
83
|
-
readonly outputPerMillion: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>]>;
|
|
84
|
-
}, undefined>, undefined>, undefined>, undefined>;
|
|
85
67
|
}, undefined>;
|
|
86
68
|
export type UpdateWorkspaceSettingsInput = v.InferOutput<typeof updateWorkspaceSettingsSchema>;
|
|
87
69
|
//# sourceMappingURL=workspace-settings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-settings.d.ts","sourceRoot":"","sources":["../src/workspace-settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAW5B;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,4DAA4C,CAAA;AAC5E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAIrE,6FAA6F;AAC7F,eAAO,MAAM,sBAAsB,gRAA8C,CAAA;AACjF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAoB3E,
|
|
1
|
+
{"version":3,"file":"workspace-settings.d.ts","sourceRoot":"","sources":["../src/workspace-settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAW5B;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,4DAA4C,CAAA;AAC5E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAIrE,6FAA6F;AAC7F,eAAO,MAAM,sBAAsB,gRAA8C,CAAA;AACjF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAoB3E,sCAAsC;AACtC,eAAO,MAAM,uBAAuB;IAClC;;;OAGG;;IAEH,kEAAkE;;IAElE,8EAA8E;;IAE9E,mFAAmF;;IAEnF;;;;;;;OAOG;;IAEH;;;;OAIG;;IAEH,6EAA6E;;IAE7E;;;;;;;;;;OAUG;;aAEH,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E,mFAAmF;AACnF,eAAO,MAAM,6BAA6B;;;;;;;;;aAWxC,CAAA;AACF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,6BAA6B,CAAC,CAAA"}
|
|
@@ -19,25 +19,14 @@ const limitSchema = v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(10
|
|
|
19
19
|
export const taskLimitPerTypeSchema = v.record(createTaskTypeSchema, limitSchema);
|
|
20
20
|
// ---------------------------------------------------------------------------
|
|
21
21
|
// Per-workspace spend budget. Moved out of the deployment-wide env vars
|
|
22
|
-
// (`SPEND_MONTHLY_LIMIT` / `SPEND_CURRENCY`
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
//
|
|
22
|
+
// (`SPEND_MONTHLY_LIMIT` / `SPEND_CURRENCY`) onto the workspace settings row so
|
|
23
|
+
// an operator can tune a workspace's budget in the UI without a redeploy. Both
|
|
24
|
+
// are nullable; null ⇒ fall back to the built-in `DEFAULT_SPEND_PRICING` base
|
|
25
|
+
// table (the spend service resolves the effective pricing per workspace,
|
|
26
|
+
// overlaying the OpenRouter catalog as before).
|
|
27
27
|
// ---------------------------------------------------------------------------
|
|
28
28
|
/** ISO 4217 currency code (3 letters), e.g. `EUR`. */
|
|
29
29
|
const spendCurrencySchema = v.pipe(v.string(), v.trim(), v.toUpperCase(), v.length(3), v.regex(/^[A-Z]{3}$/, 'currency must be a 3-letter ISO 4217 code'));
|
|
30
|
-
/** A single model's per-1M-token price override. */
|
|
31
|
-
export const spendModelPriceSchema = v.object({
|
|
32
|
-
inputPerMillion: v.pipe(v.number(), v.minValue(0)),
|
|
33
|
-
outputPerMillion: v.pipe(v.number(), v.minValue(0)),
|
|
34
|
-
});
|
|
35
|
-
/**
|
|
36
|
-
* Per-model price overrides, keyed by `provider:model` then bare `provider`
|
|
37
|
-
* (most-specific-first, exactly like the built-in table). Overlaid onto
|
|
38
|
-
* `DEFAULT_SPEND_PRICING.prices` when resolving a workspace's effective pricing.
|
|
39
|
-
*/
|
|
40
|
-
export const spendModelPricesSchema = v.record(v.pipe(v.string(), v.trim(), v.minLength(1)), spendModelPriceSchema);
|
|
41
30
|
/** A workspace's runtime settings. */
|
|
42
31
|
export const workspaceSettingsSchema = v.object({
|
|
43
32
|
/**
|
|
@@ -60,6 +49,12 @@ export const workspaceSettingsSchema = v.object({
|
|
|
60
49
|
* suppressed when the deployment disables prompt recording (`LLM_RECORD_PROMPTS`).
|
|
61
50
|
*/
|
|
62
51
|
storeAgentContext: v.boolean(),
|
|
52
|
+
/**
|
|
53
|
+
* Whether the Kaizen agent grades agent steps after each run completes and
|
|
54
|
+
* recommends prompt/model improvements. On by default. When off, no gradings are
|
|
55
|
+
* scheduled (existing history + verified combos are retained, just not extended).
|
|
56
|
+
*/
|
|
57
|
+
kaizenEnabled: v.boolean(),
|
|
63
58
|
/** Spend budget currency (ISO 4217). Null ⇒ the built-in default (`EUR`). */
|
|
64
59
|
spendCurrency: v.nullable(spendCurrencySchema),
|
|
65
60
|
/**
|
|
@@ -74,8 +69,6 @@ export const workspaceSettingsSchema = v.object({
|
|
|
74
69
|
* money, so a `0` budget also blocks paid web searches.
|
|
75
70
|
*/
|
|
76
71
|
spendMonthlyLimit: v.nullable(v.pipe(v.number(), v.minValue(0))),
|
|
77
|
-
/** Per-model price overrides overlaid on the base table. Null ⇒ no overrides. */
|
|
78
|
-
spendModelPrices: v.nullable(spendModelPricesSchema),
|
|
79
72
|
});
|
|
80
73
|
/** Update a workspace's runtime settings (full replace of the supplied fields). */
|
|
81
74
|
export const updateWorkspaceSettingsSchema = v.object({
|
|
@@ -84,8 +77,8 @@ export const updateWorkspaceSettingsSchema = v.object({
|
|
|
84
77
|
taskLimitShared: v.optional(v.nullable(limitSchema)),
|
|
85
78
|
taskLimitPerType: v.optional(v.nullable(taskLimitPerTypeSchema)),
|
|
86
79
|
storeAgentContext: v.optional(v.boolean()),
|
|
80
|
+
kaizenEnabled: v.optional(v.boolean()),
|
|
87
81
|
spendCurrency: v.optional(v.nullable(spendCurrencySchema)),
|
|
88
82
|
spendMonthlyLimit: v.optional(v.nullable(v.pipe(v.number(), v.minValue(0)))),
|
|
89
|
-
spendModelPrices: v.optional(v.nullable(spendModelPricesSchema)),
|
|
90
83
|
});
|
|
91
84
|
//# sourceMappingURL=workspace-settings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-settings.js","sourceRoot":"","sources":["../src/workspace-settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEtD,8EAA8E;AAC9E,iFAAiF;AACjF,8EAA8E;AAC9E,kFAAkF;AAClF,oFAAoF;AACpF,gFAAgF;AAChF,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;AAG5E,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;AAEpF,6FAA6F;AAC7F,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAA;AAGjF,8EAA8E;AAC9E,wEAAwE;AACxE,
|
|
1
|
+
{"version":3,"file":"workspace-settings.js","sourceRoot":"","sources":["../src/workspace-settings.ts"],"names":[],"mappings":"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"}
|