@crewhaus/spec 0.1.7 → 0.1.8

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.d.ts CHANGED
@@ -214,6 +214,62 @@ declare const failureTaxonomyBlock: z.ZodOptional<z.ZodArray<z.ZodObject<{
214
214
  recovery: "retry" | "compact" | "continue" | "tombstone" | "fail";
215
215
  hint?: string | undefined;
216
216
  }>, "many">>;
217
+ /**
218
+ * Response-feedback block — declares that a harness collects human ratings on
219
+ * agent responses (thumbs/stars/scale/comment) which `crewhaus distill` turns
220
+ * into eval datasets + graders. Cross-cutting like security: carried on the
221
+ * interactive shapes that consume it (cli, channel). `channelReactions` gates
222
+ * codegen of Slack 👍/👎 → feedback in the channel target; `modality`/`storage`
223
+ * configure the capture surfaces; `autoDistill` is a forward-looking flag for a
224
+ * continuous flywheel. `.strict()` so a typo'd sub-key fails the build.
225
+ */
226
+ declare const feedbackBlock: z.ZodOptional<z.ZodObject<{
227
+ enabled: z.ZodOptional<z.ZodBoolean>;
228
+ modality: z.ZodDefault<z.ZodEnum<["binary", "stars", "scale", "comment"]>>;
229
+ scale: z.ZodOptional<z.ZodObject<{
230
+ min: z.ZodNumber;
231
+ max: z.ZodNumber;
232
+ }, "strict", z.ZodTypeAny, {
233
+ min: number;
234
+ max: number;
235
+ }, {
236
+ min: number;
237
+ max: number;
238
+ }>>;
239
+ storage: z.ZodOptional<z.ZodObject<{
240
+ location: z.ZodString;
241
+ }, "strict", z.ZodTypeAny, {
242
+ location: string;
243
+ }, {
244
+ location: string;
245
+ }>>;
246
+ autoDistill: z.ZodOptional<z.ZodBoolean>;
247
+ channelReactions: z.ZodOptional<z.ZodBoolean>;
248
+ }, "strict", z.ZodTypeAny, {
249
+ modality: "binary" | "stars" | "scale" | "comment";
250
+ enabled?: boolean | undefined;
251
+ scale?: {
252
+ min: number;
253
+ max: number;
254
+ } | undefined;
255
+ storage?: {
256
+ location: string;
257
+ } | undefined;
258
+ autoDistill?: boolean | undefined;
259
+ channelReactions?: boolean | undefined;
260
+ }, {
261
+ enabled?: boolean | undefined;
262
+ scale?: {
263
+ min: number;
264
+ max: number;
265
+ } | undefined;
266
+ modality?: "binary" | "stars" | "scale" | "comment" | undefined;
267
+ storage?: {
268
+ location: string;
269
+ } | undefined;
270
+ autoDistill?: boolean | undefined;
271
+ channelReactions?: boolean | undefined;
272
+ }>>;
217
273
  declare const cliSchema: z.ZodObject<{
218
274
  name: z.ZodString;
219
275
  target: z.ZodLiteral<"cli">;
@@ -439,6 +495,53 @@ declare const cliSchema: z.ZodObject<{
439
495
  recovery: "retry" | "compact" | "continue" | "tombstone" | "fail";
440
496
  hint?: string | undefined;
441
497
  }>, "many">>;
498
+ feedback: z.ZodOptional<z.ZodObject<{
499
+ enabled: z.ZodOptional<z.ZodBoolean>;
500
+ modality: z.ZodDefault<z.ZodEnum<["binary", "stars", "scale", "comment"]>>;
501
+ scale: z.ZodOptional<z.ZodObject<{
502
+ min: z.ZodNumber;
503
+ max: z.ZodNumber;
504
+ }, "strict", z.ZodTypeAny, {
505
+ min: number;
506
+ max: number;
507
+ }, {
508
+ min: number;
509
+ max: number;
510
+ }>>;
511
+ storage: z.ZodOptional<z.ZodObject<{
512
+ location: z.ZodString;
513
+ }, "strict", z.ZodTypeAny, {
514
+ location: string;
515
+ }, {
516
+ location: string;
517
+ }>>;
518
+ autoDistill: z.ZodOptional<z.ZodBoolean>;
519
+ channelReactions: z.ZodOptional<z.ZodBoolean>;
520
+ }, "strict", z.ZodTypeAny, {
521
+ modality: "binary" | "stars" | "scale" | "comment";
522
+ enabled?: boolean | undefined;
523
+ scale?: {
524
+ min: number;
525
+ max: number;
526
+ } | undefined;
527
+ storage?: {
528
+ location: string;
529
+ } | undefined;
530
+ autoDistill?: boolean | undefined;
531
+ channelReactions?: boolean | undefined;
532
+ }, {
533
+ enabled?: boolean | undefined;
534
+ scale?: {
535
+ min: number;
536
+ max: number;
537
+ } | undefined;
538
+ modality?: "binary" | "stars" | "scale" | "comment" | undefined;
539
+ storage?: {
540
+ location: string;
541
+ } | undefined;
542
+ autoDistill?: boolean | undefined;
543
+ channelReactions?: boolean | undefined;
544
+ }>>;
442
545
  cli: z.ZodOptional<z.ZodObject<{
443
546
  banner: z.ZodOptional<z.ZodObject<{
444
547
  taglineMode: z.ZodDefault<z.ZodEnum<["static", "random"]>>;
@@ -645,6 +748,19 @@ declare const cliSchema: z.ZodObject<{
645
748
  recovery: "retry" | "compact" | "continue" | "tombstone" | "fail";
646
749
  hint?: string | undefined;
647
750
  }[] | undefined;
751
+ feedback?: {
752
+ modality: "binary" | "stars" | "scale" | "comment";
753
+ enabled?: boolean | undefined;
754
+ scale?: {
755
+ min: number;
756
+ max: number;
757
+ } | undefined;
758
+ storage?: {
759
+ location: string;
760
+ } | undefined;
761
+ autoDistill?: boolean | undefined;
762
+ channelReactions?: boolean | undefined;
763
+ } | undefined;
648
764
  chains?: {
649
765
  kind: "evm";
650
766
  id: string;
@@ -744,6 +860,19 @@ declare const cliSchema: z.ZodObject<{
744
860
  recovery: "retry" | "compact" | "continue" | "tombstone" | "fail";
745
861
  hint?: string | undefined;
746
862
  }[] | undefined;
863
+ feedback?: {
864
+ enabled?: boolean | undefined;
865
+ scale?: {
866
+ min: number;
867
+ max: number;
868
+ } | undefined;
869
+ modality?: "binary" | "stars" | "scale" | "comment" | undefined;
870
+ storage?: {
871
+ location: string;
872
+ } | undefined;
873
+ autoDistill?: boolean | undefined;
874
+ channelReactions?: boolean | undefined;
875
+ } | undefined;
747
876
  chains?: {
748
877
  kind: "evm";
749
878
  id: string;
@@ -1654,6 +1783,53 @@ declare const channelSchema: z.ZodObject<{
1654
1783
  recovery: "retry" | "compact" | "continue" | "tombstone" | "fail";
1655
1784
  hint?: string | undefined;
1656
1785
  }>, "many">>;
1786
+ feedback: z.ZodOptional<z.ZodObject<{
1787
+ enabled: z.ZodOptional<z.ZodBoolean>;
1788
+ modality: z.ZodDefault<z.ZodEnum<["binary", "stars", "scale", "comment"]>>;
1789
+ scale: z.ZodOptional<z.ZodObject<{
1790
+ min: z.ZodNumber;
1791
+ max: z.ZodNumber;
1792
+ }, "strict", z.ZodTypeAny, {
1793
+ min: number;
1794
+ max: number;
1795
+ }, {
1796
+ min: number;
1797
+ max: number;
1798
+ }>>;
1799
+ storage: z.ZodOptional<z.ZodObject<{
1800
+ location: z.ZodString;
1801
+ }, "strict", z.ZodTypeAny, {
1802
+ location: string;
1803
+ }, {
1804
+ location: string;
1805
+ }>>;
1806
+ autoDistill: z.ZodOptional<z.ZodBoolean>;
1807
+ channelReactions: z.ZodOptional<z.ZodBoolean>;
1808
+ }, "strict", z.ZodTypeAny, {
1809
+ modality: "binary" | "stars" | "scale" | "comment";
1810
+ enabled?: boolean | undefined;
1811
+ scale?: {
1812
+ min: number;
1813
+ max: number;
1814
+ } | undefined;
1815
+ storage?: {
1816
+ location: string;
1817
+ } | undefined;
1818
+ autoDistill?: boolean | undefined;
1819
+ channelReactions?: boolean | undefined;
1820
+ }, {
1821
+ enabled?: boolean | undefined;
1822
+ scale?: {
1823
+ min: number;
1824
+ max: number;
1825
+ } | undefined;
1826
+ modality?: "binary" | "stars" | "scale" | "comment" | undefined;
1827
+ storage?: {
1828
+ location: string;
1829
+ } | undefined;
1830
+ autoDistill?: boolean | undefined;
1831
+ channelReactions?: boolean | undefined;
1832
+ }>>;
1657
1833
  heartbeat: z.ZodOptional<z.ZodObject<{
1658
1834
  every: z.ZodString;
1659
1835
  instructions: z.ZodString;
@@ -1862,6 +2038,19 @@ declare const channelSchema: z.ZodObject<{
1862
2038
  recovery: "retry" | "compact" | "continue" | "tombstone" | "fail";
1863
2039
  hint?: string | undefined;
1864
2040
  }[] | undefined;
2041
+ feedback?: {
2042
+ modality: "binary" | "stars" | "scale" | "comment";
2043
+ enabled?: boolean | undefined;
2044
+ scale?: {
2045
+ min: number;
2046
+ max: number;
2047
+ } | undefined;
2048
+ storage?: {
2049
+ location: string;
2050
+ } | undefined;
2051
+ autoDistill?: boolean | undefined;
2052
+ channelReactions?: boolean | undefined;
2053
+ } | undefined;
1865
2054
  chains?: {
1866
2055
  kind: "evm";
1867
2056
  id: string;
@@ -1982,6 +2171,19 @@ declare const channelSchema: z.ZodObject<{
1982
2171
  recovery: "retry" | "compact" | "continue" | "tombstone" | "fail";
1983
2172
  hint?: string | undefined;
1984
2173
  }[] | undefined;
2174
+ feedback?: {
2175
+ enabled?: boolean | undefined;
2176
+ scale?: {
2177
+ min: number;
2178
+ max: number;
2179
+ } | undefined;
2180
+ modality?: "binary" | "stars" | "scale" | "comment" | undefined;
2181
+ storage?: {
2182
+ location: string;
2183
+ } | undefined;
2184
+ autoDistill?: boolean | undefined;
2185
+ channelReactions?: boolean | undefined;
2186
+ } | undefined;
1985
2187
  chains?: {
1986
2188
  kind: "evm";
1987
2189
  id: string;
@@ -6121,6 +6323,53 @@ export declare const Spec: z.ZodDiscriminatedUnion<"target", [z.ZodObject<{
6121
6323
  recovery: "retry" | "compact" | "continue" | "tombstone" | "fail";
6122
6324
  hint?: string | undefined;
6123
6325
  }>, "many">>;
6326
+ feedback: z.ZodOptional<z.ZodObject<{
6327
+ enabled: z.ZodOptional<z.ZodBoolean>;
6328
+ modality: z.ZodDefault<z.ZodEnum<["binary", "stars", "scale", "comment"]>>;
6329
+ scale: z.ZodOptional<z.ZodObject<{
6330
+ min: z.ZodNumber;
6331
+ max: z.ZodNumber;
6332
+ }, "strict", z.ZodTypeAny, {
6333
+ min: number;
6334
+ max: number;
6335
+ }, {
6336
+ min: number;
6337
+ max: number;
6338
+ }>>;
6339
+ storage: z.ZodOptional<z.ZodObject<{
6340
+ location: z.ZodString;
6341
+ }, "strict", z.ZodTypeAny, {
6342
+ location: string;
6343
+ }, {
6344
+ location: string;
6345
+ }>>;
6346
+ autoDistill: z.ZodOptional<z.ZodBoolean>;
6347
+ channelReactions: z.ZodOptional<z.ZodBoolean>;
6348
+ }, "strict", z.ZodTypeAny, {
6349
+ modality: "binary" | "stars" | "scale" | "comment";
6350
+ enabled?: boolean | undefined;
6351
+ scale?: {
6352
+ min: number;
6353
+ max: number;
6354
+ } | undefined;
6355
+ storage?: {
6356
+ location: string;
6357
+ } | undefined;
6358
+ autoDistill?: boolean | undefined;
6359
+ channelReactions?: boolean | undefined;
6360
+ }, {
6361
+ enabled?: boolean | undefined;
6362
+ scale?: {
6363
+ min: number;
6364
+ max: number;
6365
+ } | undefined;
6366
+ modality?: "binary" | "stars" | "scale" | "comment" | undefined;
6367
+ storage?: {
6368
+ location: string;
6369
+ } | undefined;
6370
+ autoDistill?: boolean | undefined;
6371
+ channelReactions?: boolean | undefined;
6372
+ }>>;
6124
6373
  cli: z.ZodOptional<z.ZodObject<{
6125
6374
  banner: z.ZodOptional<z.ZodObject<{
6126
6375
  taglineMode: z.ZodDefault<z.ZodEnum<["static", "random"]>>;
@@ -6327,6 +6576,19 @@ export declare const Spec: z.ZodDiscriminatedUnion<"target", [z.ZodObject<{
6327
6576
  recovery: "retry" | "compact" | "continue" | "tombstone" | "fail";
6328
6577
  hint?: string | undefined;
6329
6578
  }[] | undefined;
6579
+ feedback?: {
6580
+ modality: "binary" | "stars" | "scale" | "comment";
6581
+ enabled?: boolean | undefined;
6582
+ scale?: {
6583
+ min: number;
6584
+ max: number;
6585
+ } | undefined;
6586
+ storage?: {
6587
+ location: string;
6588
+ } | undefined;
6589
+ autoDistill?: boolean | undefined;
6590
+ channelReactions?: boolean | undefined;
6591
+ } | undefined;
6330
6592
  chains?: {
6331
6593
  kind: "evm";
6332
6594
  id: string;
@@ -6426,6 +6688,19 @@ export declare const Spec: z.ZodDiscriminatedUnion<"target", [z.ZodObject<{
6426
6688
  recovery: "retry" | "compact" | "continue" | "tombstone" | "fail";
6427
6689
  hint?: string | undefined;
6428
6690
  }[] | undefined;
6691
+ feedback?: {
6692
+ enabled?: boolean | undefined;
6693
+ scale?: {
6694
+ min: number;
6695
+ max: number;
6696
+ } | undefined;
6697
+ modality?: "binary" | "stars" | "scale" | "comment" | undefined;
6698
+ storage?: {
6699
+ location: string;
6700
+ } | undefined;
6701
+ autoDistill?: boolean | undefined;
6702
+ channelReactions?: boolean | undefined;
6703
+ } | undefined;
6429
6704
  chains?: {
6430
6705
  kind: "evm";
6431
6706
  id: string;
@@ -7181,6 +7456,53 @@ export declare const Spec: z.ZodDiscriminatedUnion<"target", [z.ZodObject<{
7181
7456
  recovery: "retry" | "compact" | "continue" | "tombstone" | "fail";
7182
7457
  hint?: string | undefined;
7183
7458
  }>, "many">>;
7459
+ feedback: z.ZodOptional<z.ZodObject<{
7460
+ enabled: z.ZodOptional<z.ZodBoolean>;
7461
+ modality: z.ZodDefault<z.ZodEnum<["binary", "stars", "scale", "comment"]>>;
7462
+ scale: z.ZodOptional<z.ZodObject<{
7463
+ min: z.ZodNumber;
7464
+ max: z.ZodNumber;
7465
+ }, "strict", z.ZodTypeAny, {
7466
+ min: number;
7467
+ max: number;
7468
+ }, {
7469
+ min: number;
7470
+ max: number;
7471
+ }>>;
7472
+ storage: z.ZodOptional<z.ZodObject<{
7473
+ location: z.ZodString;
7474
+ }, "strict", z.ZodTypeAny, {
7475
+ location: string;
7476
+ }, {
7477
+ location: string;
7478
+ }>>;
7479
+ autoDistill: z.ZodOptional<z.ZodBoolean>;
7480
+ channelReactions: z.ZodOptional<z.ZodBoolean>;
7481
+ }, "strict", z.ZodTypeAny, {
7482
+ modality: "binary" | "stars" | "scale" | "comment";
7483
+ enabled?: boolean | undefined;
7484
+ scale?: {
7485
+ min: number;
7486
+ max: number;
7487
+ } | undefined;
7488
+ storage?: {
7489
+ location: string;
7490
+ } | undefined;
7491
+ autoDistill?: boolean | undefined;
7492
+ channelReactions?: boolean | undefined;
7493
+ }, {
7494
+ enabled?: boolean | undefined;
7495
+ scale?: {
7496
+ min: number;
7497
+ max: number;
7498
+ } | undefined;
7499
+ modality?: "binary" | "stars" | "scale" | "comment" | undefined;
7500
+ storage?: {
7501
+ location: string;
7502
+ } | undefined;
7503
+ autoDistill?: boolean | undefined;
7504
+ channelReactions?: boolean | undefined;
7505
+ }>>;
7184
7506
  heartbeat: z.ZodOptional<z.ZodObject<{
7185
7507
  every: z.ZodString;
7186
7508
  instructions: z.ZodString;
@@ -7389,6 +7711,19 @@ export declare const Spec: z.ZodDiscriminatedUnion<"target", [z.ZodObject<{
7389
7711
  recovery: "retry" | "compact" | "continue" | "tombstone" | "fail";
7390
7712
  hint?: string | undefined;
7391
7713
  }[] | undefined;
7714
+ feedback?: {
7715
+ modality: "binary" | "stars" | "scale" | "comment";
7716
+ enabled?: boolean | undefined;
7717
+ scale?: {
7718
+ min: number;
7719
+ max: number;
7720
+ } | undefined;
7721
+ storage?: {
7722
+ location: string;
7723
+ } | undefined;
7724
+ autoDistill?: boolean | undefined;
7725
+ channelReactions?: boolean | undefined;
7726
+ } | undefined;
7392
7727
  chains?: {
7393
7728
  kind: "evm";
7394
7729
  id: string;
@@ -7509,6 +7844,19 @@ export declare const Spec: z.ZodDiscriminatedUnion<"target", [z.ZodObject<{
7509
7844
  recovery: "retry" | "compact" | "continue" | "tombstone" | "fail";
7510
7845
  hint?: string | undefined;
7511
7846
  }[] | undefined;
7847
+ feedback?: {
7848
+ enabled?: boolean | undefined;
7849
+ scale?: {
7850
+ min: number;
7851
+ max: number;
7852
+ } | undefined;
7853
+ modality?: "binary" | "stars" | "scale" | "comment" | undefined;
7854
+ storage?: {
7855
+ location: string;
7856
+ } | undefined;
7857
+ autoDistill?: boolean | undefined;
7858
+ channelReactions?: boolean | undefined;
7859
+ } | undefined;
7512
7860
  chains?: {
7513
7861
  kind: "evm";
7514
7862
  id: string;
@@ -11115,6 +11463,7 @@ export type SpecMcpServerConfig = z.infer<typeof mcpServerConfigSchema>;
11115
11463
  export type SpecSubAgentDefinition = z.infer<typeof subAgentDefinitionSchema>;
11116
11464
  export type SpecCompactionBlock = z.infer<typeof compactionBlock>;
11117
11465
  export type SpecSecurityBlock = z.infer<typeof securityBlock>;
11466
+ export type SpecFeedbackBlock = z.infer<typeof feedbackBlock>;
11118
11467
  export type SpecFailureTaxonomyEntry = z.infer<typeof failureTaxonomyEntrySchema>;
11119
11468
  export type SpecFailureTaxonomy = z.infer<typeof failureTaxonomyBlock>;
11120
11469
  export { SpecParseError };
package/dist/index.js CHANGED
@@ -270,6 +270,26 @@ const failureTaxonomyEntrySchema = z
270
270
  })
271
271
  .strict();
272
272
  const failureTaxonomyBlock = z.array(failureTaxonomyEntrySchema).optional();
273
+ /**
274
+ * Response-feedback block — declares that a harness collects human ratings on
275
+ * agent responses (thumbs/stars/scale/comment) which `crewhaus distill` turns
276
+ * into eval datasets + graders. Cross-cutting like security: carried on the
277
+ * interactive shapes that consume it (cli, channel). `channelReactions` gates
278
+ * codegen of Slack 👍/👎 → feedback in the channel target; `modality`/`storage`
279
+ * configure the capture surfaces; `autoDistill` is a forward-looking flag for a
280
+ * continuous flywheel. `.strict()` so a typo'd sub-key fails the build.
281
+ */
282
+ const feedbackBlock = z
283
+ .object({
284
+ enabled: z.boolean().optional(),
285
+ modality: z.enum(["binary", "stars", "scale", "comment"]).default("binary"),
286
+ scale: z.object({ min: z.number().int(), max: z.number().int() }).strict().optional(),
287
+ storage: z.object({ location: safeName }).strict().optional(),
288
+ autoDistill: z.boolean().optional(),
289
+ channelReactions: z.boolean().optional(),
290
+ })
291
+ .strict()
292
+ .optional();
273
293
  /**
274
294
  * Section 47 — blockchain subsystem blocks (cross-cutting). Any shape may
275
295
  * declare any subset of `chains` / `wallets` / `contracts` /
@@ -421,6 +441,7 @@ const cliSchema = z
421
441
  compaction: compactionBlock,
422
442
  security: securityBlock,
423
443
  failure_taxonomy: failureTaxonomyBlock,
444
+ feedback: feedbackBlock,
424
445
  cli: cliOptionsBlock,
425
446
  chains: chainsBlock,
426
447
  wallets: walletsBlock,
@@ -538,6 +559,7 @@ const channelSchema = z
538
559
  permissions: permissionsBlock,
539
560
  compaction: compactionBlock,
540
561
  failure_taxonomy: failureTaxonomyBlock,
562
+ feedback: feedbackBlock,
541
563
  heartbeat: heartbeatBlock,
542
564
  gateway: channelGatewayBlock,
543
565
  chains: chainsBlock,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewhaus/spec",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "type": "module",
5
5
  "description": "User-facing spec schema (Zod) + YAML parser",
6
6
  "main": "dist/index.js",
@@ -15,7 +15,7 @@
15
15
  "test": "bun test src"
16
16
  },
17
17
  "dependencies": {
18
- "@crewhaus/errors": "0.1.7",
18
+ "@crewhaus/errors": "0.1.8",
19
19
  "yaml": "^2.6.0",
20
20
  "zod": "^3.23.8"
21
21
  },