@telora/daemon 0.22.226 → 0.22.227

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/build-info.json +4 -3
  2. package/dist/completion/index.js +1 -1
  3. package/dist/completion/review-defect-detector.d.ts +58 -18
  4. package/dist/completion/review-defect-detector.d.ts.map +1 -1
  5. package/dist/completion/review-defect-detector.js +62 -27
  6. package/dist/completion/review-defect-detector.js.map +1 -1
  7. package/dist/completion/review-exit-attribution.d.ts +6 -3
  8. package/dist/completion/review-exit-attribution.d.ts.map +1 -1
  9. package/dist/completion/review-exit-attribution.js +9 -7
  10. package/dist/completion/review-exit-attribution.js.map +1 -1
  11. package/dist/completion/review-exit-deps.d.ts +2 -0
  12. package/dist/completion/review-exit-deps.d.ts.map +1 -1
  13. package/dist/completion/review-exit-deps.js +3 -0
  14. package/dist/completion/review-exit-deps.js.map +1 -1
  15. package/dist/completion/review-exit-evidence.d.ts +8 -0
  16. package/dist/completion/review-exit-evidence.d.ts.map +1 -1
  17. package/dist/completion/review-exit-evidence.js +39 -27
  18. package/dist/completion/review-exit-evidence.js.map +1 -1
  19. package/dist/completion/review-exit-foreign-findings.d.ts +5 -1
  20. package/dist/completion/review-exit-foreign-findings.d.ts.map +1 -1
  21. package/dist/completion/review-exit-foreign-findings.js +4 -4
  22. package/dist/completion/review-exit-foreign-findings.js.map +1 -1
  23. package/dist/completion/review-exit-phase.js +4 -4
  24. package/dist/completion/review-exit-phase.js.map +1 -1
  25. package/dist/delivery/delivery-reconciler.d.ts +3 -3
  26. package/dist/prompt-sections/persona-sections.d.ts +14 -0
  27. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  28. package/dist/prompt-sections/persona-sections.js +50 -19
  29. package/dist/prompt-sections/persona-sections.js.map +1 -1
  30. package/dist/prompt-sections/testing-standard.d.ts +4 -1
  31. package/dist/prompt-sections/testing-standard.d.ts.map +1 -1
  32. package/dist/prompt-sections/testing-standard.js +14 -4
  33. package/dist/prompt-sections/testing-standard.js.map +1 -1
  34. package/dist/queries/escalations.js +1 -1
  35. package/dist/queries/review-finding-facts.d.ts +38 -0
  36. package/dist/queries/review-finding-facts.d.ts.map +1 -0
  37. package/dist/queries/review-finding-facts.js +43 -0
  38. package/dist/queries/review-finding-facts.js.map +1 -0
  39. package/dist/testing/fixtures/index.js +1 -1
  40. package/dist/types/index.js +1 -1
  41. package/package.json +2 -2
@@ -0,0 +1,38 @@
1
+ /**
2
+ * The review-finding FACTS of a focus: which issues its reviews filed, and --
3
+ * where the review recorded it -- whether each finding is `blocking` (a not_met
4
+ * acceptance criterion names it) or a `concern` (none does).
5
+ *
6
+ * Same product-api action as getFocusReviewFiledIssueIds (queries/focuses.ts):
7
+ * `focus_review_filed_issue_ids` returns `issueIds: string[]` and, from the edge
8
+ * that records finding classes on, `findingClasses: Record<issueId,
9
+ * 'blocking' | 'concern'>`. An OLDER edge omits `findingClasses`; that reads as
10
+ * an empty map, so every finding falls back to the priority rule
11
+ * (completion/review-defect-detector.ts isBlockingReviewFinding). An issue
12
+ * absent from the map likewise has no recorded fact.
13
+ *
14
+ * The response is validated (zod) -- a malformed class value throws, and the
15
+ * caller's best-effort read degrades exactly as a failed id read does.
16
+ *
17
+ * @module queries/review-finding-facts
18
+ */
19
+ import { z } from 'zod';
20
+ import type { ReviewFindingClass } from '../completion/review-defect-detector.js';
21
+ /** Wire shape of `focus_review_filed_issue_ids`; `findingClasses` is optional (older edges omit it). */
22
+ export declare const FocusReviewFindingFactsResponseSchema: z.ZodObject<{
23
+ issueIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
24
+ findingClasses: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodEnum<{
25
+ blocking: "blocking";
26
+ concern: "concern";
27
+ }>>>>;
28
+ }, z.core.$loose>;
29
+ /** The facts, normalized: ids as sent, classes as a Map (empty when not recorded). */
30
+ export interface FocusReviewFindingFacts {
31
+ issueIds: string[];
32
+ findingClasses: Map<string, ReviewFindingClass>;
33
+ }
34
+ /** Pure: normalize a validated response (missing keys -> empty). Exported for tests. */
35
+ export declare function toReviewFindingFacts(response: z.infer<typeof FocusReviewFindingFactsResponseSchema>): FocusReviewFindingFacts;
36
+ /** Read the focus-wide review-filed issue ids AND their recorded finding classes. */
37
+ export declare function getFocusReviewFindingFacts(focusId: string): Promise<FocusReviewFindingFacts>;
38
+ //# sourceMappingURL=review-finding-facts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-finding-facts.d.ts","sourceRoot":"","sources":["../../src/queries/review-finding-facts.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAIlF,wGAAwG;AACxG,eAAO,MAAM,qCAAqC;;;;;;iBAGlC,CAAC;AAEjB,sFAAsF;AACtF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CACjD;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,GAC9D,uBAAuB,CAKzB;AAED,qFAAqF;AACrF,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAOlG"}
@@ -0,0 +1,43 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/completion/review-finding-blocking-predicate.test.ts,
3
+ // packages/daemon/src/completion/review-finding-class-routing.test.ts
4
+ // PINNED-BY-END
5
+ /**
6
+ * The review-finding FACTS of a focus: which issues its reviews filed, and --
7
+ * where the review recorded it -- whether each finding is `blocking` (a not_met
8
+ * acceptance criterion names it) or a `concern` (none does).
9
+ *
10
+ * Same product-api action as getFocusReviewFiledIssueIds (queries/focuses.ts):
11
+ * `focus_review_filed_issue_ids` returns `issueIds: string[]` and, from the edge
12
+ * that records finding classes on, `findingClasses: Record<issueId,
13
+ * 'blocking' | 'concern'>`. An OLDER edge omits `findingClasses`; that reads as
14
+ * an empty map, so every finding falls back to the priority rule
15
+ * (completion/review-defect-detector.ts isBlockingReviewFinding). An issue
16
+ * absent from the map likewise has no recorded fact.
17
+ *
18
+ * The response is validated (zod) -- a malformed class value throws, and the
19
+ * caller's best-effort read degrades exactly as a failed id read does.
20
+ *
21
+ * @module queries/review-finding-facts
22
+ */
23
+ import { z } from 'zod';
24
+ import { callApiValidated } from './shared.js';
25
+ const ReviewFindingClassSchema = z.enum(['blocking', 'concern']);
26
+ /** Wire shape of `focus_review_filed_issue_ids`; `findingClasses` is optional (older edges omit it). */
27
+ export const FocusReviewFindingFactsResponseSchema = z.object({
28
+ issueIds: z.array(z.string()).nullish(),
29
+ findingClasses: z.record(z.string(), ReviewFindingClassSchema).nullish(),
30
+ }).passthrough();
31
+ /** Pure: normalize a validated response (missing keys -> empty). Exported for tests. */
32
+ export function toReviewFindingFacts(response) {
33
+ return {
34
+ issueIds: response.issueIds ?? [],
35
+ findingClasses: new Map(Object.entries(response.findingClasses ?? {})),
36
+ };
37
+ }
38
+ /** Read the focus-wide review-filed issue ids AND their recorded finding classes. */
39
+ export async function getFocusReviewFindingFacts(focusId) {
40
+ const response = await callApiValidated('focus_review_filed_issue_ids', FocusReviewFindingFactsResponseSchema, { focusId });
41
+ return toReviewFindingFacts(response);
42
+ }
43
+ //# sourceMappingURL=review-finding-facts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-finding-facts.js","sourceRoot":"","sources":["../../src/queries/review-finding-facts.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,uFAAuF;AACvF,wEAAwE;AACxE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AAEjE,wGAAwG;AACxG,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5D,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACvC,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,wBAAwB,CAAC,CAAC,OAAO,EAAE;CACzE,CAAC,CAAC,WAAW,EAAE,CAAC;AAQjB,wFAAwF;AACxF,MAAM,UAAU,oBAAoB,CAClC,QAA+D;IAE/D,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE;QACjC,cAAc,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;KACvE,CAAC;AACJ,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,OAAe;IAC9D,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CACrC,8BAA8B,EAC9B,qCAAqC,EACrC,EAAE,OAAO,EAAE,CACZ,CAAC;IACF,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
- // Pinned by: 227 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/testing/fixtures/index.ts
2
+ // Pinned by: 229 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/testing/fixtures/index.ts
3
3
  // PINNED-BY-END
4
4
  /**
5
5
  * Build an ActiveFocusRow (a getActiveFocuses row): an active, armed focus with
@@ -1,5 +1,5 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
- // Pinned by: 229 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/types/index.ts
2
+ // Pinned by: 231 tests -- run: npm run gen:pinned-by -- --list packages/daemon/src/types/index.ts
3
3
  // PINNED-BY-END
4
4
  /**
5
5
  * Domain-specific type re-exports.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telora/daemon",
3
- "version": "0.22.226",
3
+ "version": "0.22.227",
4
4
  "description": "Agent orchestration daemon for Telora - spawns and manages Claude Code instances",
5
5
  "type": "module",
6
6
  "bin": {
@@ -38,7 +38,7 @@
38
38
  "//testRunner": "Uses Node.js built-in test runner (node:test) via tsx for TypeScript support. The root package uses Vitest; this is a deliberate choice for the daemon package to avoid framework dependencies. Test files live beside the modules they exercise (owner-directory layout); the runner discovers them recursively.",
39
39
  "dependencies": {
40
40
  "@telora/daemon-core": "^0.2.99",
41
- "@telora/mcp-products": "^0.22.165",
41
+ "@telora/mcp-products": "^0.22.166",
42
42
  "commander": "^14.0.3",
43
43
  "yaml": "^2.4.0",
44
44
  "zod": "^4.3.6"