@cat-factory/orchestration 0.306.0 → 0.307.1

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 (33) hide show
  1. package/dist/modules/execution/BugFishingController.d.ts +26 -3
  2. package/dist/modules/execution/BugFishingController.d.ts.map +1 -1
  3. package/dist/modules/execution/BugFishingController.js +23 -6
  4. package/dist/modules/execution/BugFishingController.js.map +1 -1
  5. package/dist/modules/execution/ExecutionService.d.ts.map +1 -1
  6. package/dist/modules/execution/ExecutionService.js +3 -1
  7. package/dist/modules/execution/ExecutionService.js.map +1 -1
  8. package/dist/modules/execution/ci.logic.d.ts +1 -0
  9. package/dist/modules/execution/ci.logic.d.ts.map +1 -1
  10. package/dist/modules/execution/ci.logic.js +9 -0
  11. package/dist/modules/execution/ci.logic.js.map +1 -1
  12. package/dist/modules/execution/dispatcher-registries.d.ts.map +1 -1
  13. package/dist/modules/execution/dispatcher-registries.js +18 -1
  14. package/dist/modules/execution/dispatcher-registries.js.map +1 -1
  15. package/dist/modules/execution/gate-window-controllers.d.ts +7 -3
  16. package/dist/modules/execution/gate-window-controllers.d.ts.map +1 -1
  17. package/dist/modules/execution/gate-window-controllers.js +1 -1
  18. package/dist/modules/execution/gate-window-controllers.js.map +1 -1
  19. package/dist/modules/execution/integrationTest.logic.d.ts +38 -0
  20. package/dist/modules/execution/integrationTest.logic.d.ts.map +1 -0
  21. package/dist/modules/execution/integrationTest.logic.js +129 -0
  22. package/dist/modules/execution/integrationTest.logic.js.map +1 -0
  23. package/dist/modules/execution/prReport.logic.d.ts.map +1 -1
  24. package/dist/modules/execution/prReport.logic.js +19 -2
  25. package/dist/modules/execution/prReport.logic.js.map +1 -1
  26. package/dist/modules/execution/reproTest.logic.d.ts.map +1 -1
  27. package/dist/modules/execution/reproTest.logic.js +13 -16
  28. package/dist/modules/execution/reproTest.logic.js.map +1 -1
  29. package/dist/modules/execution/structuredDigest.logic.d.ts +37 -0
  30. package/dist/modules/execution/structuredDigest.logic.d.ts.map +1 -0
  31. package/dist/modules/execution/structuredDigest.logic.js +33 -0
  32. package/dist/modules/execution/structuredDigest.logic.js.map +1 -0
  33. package/package.json +11 -11
@@ -1,33 +1,30 @@
1
1
  import { reproTestOutcome } from '@cat-factory/agents';
2
+ import { renderStructuredDigest } from './structuredDigest.logic.js';
2
3
  // Pure rendering for the `repro-test` post-completion resolver: fold its STRUCTURED outcome
3
4
  // (`result.custom`, the `reproTestOutcome` schema) into a short prose digest that lands on
4
5
  // `step.output`. Downstream steps read only `step.output` via `priorOutputs` (the coder), so
5
6
  // this digest is how the reproduction result reaches them; the raw structured object stays on
6
7
  // `step.custom` for the `generic-structured` result view. Returns `undefined` for an
7
8
  // unparseable/empty result so the resolver leaves the agent's raw reply on `step.output`.
8
- /** Human-readable heading for each reproduction outcome. */
9
+ /**
10
+ * Human-readable heading for each reproduction outcome, typed over the closed picklist so the
11
+ * lookup is total and the compiler refuses a new verdict until it has a heading.
12
+ */
9
13
  const OUTCOME_LABEL = {
10
- reproduced: 'Reproduced a failing test was committed',
14
+ reproduced: 'Reproduced: a failing test was committed',
11
15
  partial: 'Partially reproduced',
12
- not_reproducible: 'Not reproducible no failing test was committed',
16
+ not_reproducible: 'Not reproducible: no failing test was committed',
13
17
  };
14
18
  /** Render a repro-test's structured outcome into a human-readable digest, or undefined. */
15
19
  export function renderReproDigest(custom) {
16
20
  const parsed = reproTestOutcome.safeParse(custom);
17
21
  if (!parsed)
18
22
  return undefined;
19
- const lines = [
20
- '## Reproduction test',
21
- '',
22
- OUTCOME_LABEL[parsed.outcome] ?? parsed.outcome,
23
- ];
24
- const paths = parsed.testPaths.map((p) => p.trim()).filter((p) => p.length > 0);
25
- if (paths.length) {
26
- lines.push('', '### Tests', '', ...paths.map((p) => `- \`${p}\``));
27
- }
28
- const notes = parsed.notes?.trim();
29
- if (notes)
30
- lines.push('', '### Notes', '', notes);
31
- return lines.join('\n');
23
+ return renderStructuredDigest({
24
+ heading: 'Reproduction test',
25
+ headline: OUTCOME_LABEL[parsed.outcome],
26
+ sections: [{ heading: 'Tests', values: parsed.testPaths, code: true }],
27
+ notes: parsed.notes,
28
+ });
32
29
  }
33
30
  //# sourceMappingURL=reproTest.logic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reproTest.logic.js","sourceRoot":"","sources":["../../../src/modules/execution/reproTest.logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD,4FAA4F;AAC5F,2FAA2F;AAC3F,6FAA6F;AAC7F,8FAA8F;AAC9F,qFAAqF;AACrF,0FAA0F;AAE1F,4DAA4D;AAC5D,MAAM,aAAa,GAA2B;IAC5C,UAAU,EAAE,2CAA2C;IACvD,OAAO,EAAE,sBAAsB;IAC/B,gBAAgB,EAAE,kDAAkD;CACrE,CAAA;AAED,2FAA2F;AAC3F,MAAM,UAAU,iBAAiB,CAAC,MAAe;IAC/C,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IACjD,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IAC7B,MAAM,KAAK,GAAa;QACtB,sBAAsB;QACtB,EAAE;QACF,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO;KAChD,CAAA;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC/E,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IACpE,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAA;IAClC,IAAI,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;IAEjD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
1
+ {"version":3,"file":"reproTest.logic.js","sourceRoot":"","sources":["../../../src/modules/execution/reproTest.logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,4FAA4F;AAC5F,2FAA2F;AAC3F,6FAA6F;AAC7F,8FAA8F;AAC9F,qFAAqF;AACrF,0FAA0F;AAE1F;;;GAGG;AACH,MAAM,aAAa,GAAgD;IACjE,UAAU,EAAE,0CAA0C;IACtD,OAAO,EAAE,sBAAsB;IAC/B,gBAAgB,EAAE,iDAAiD;CACpE,CAAA;AAED,2FAA2F;AAC3F,MAAM,UAAU,iBAAiB,CAAC,MAAe;IAC/C,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IACjD,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IAC7B,OAAO,sBAAsB,CAAC;QAC5B,OAAO,EAAE,mBAAmB;QAC5B,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC;QACvC,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACtE,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,37 @@
1
+ /** One bulleted section of a digest: a trusted heading over untrusted values. */
2
+ export interface DigestSection {
3
+ /** Engine-authored, rendered as-is. */
4
+ heading: string;
5
+ /** Model-authored. Blank entries are dropped; an empty section is omitted entirely. */
6
+ values: readonly string[];
7
+ /**
8
+ * Render each value as a code span. For a path, a command or an identifier, where a reader
9
+ * needs the exact characters and markdown would otherwise eat the underscores in one.
10
+ */
11
+ code?: boolean;
12
+ }
13
+ /** What {@link renderStructuredDigest} composes. */
14
+ export interface StructuredDigest {
15
+ /** Engine-authored `## ` heading for the whole digest. */
16
+ heading: string;
17
+ /** Engine-authored one-line verdict, straight under the heading. */
18
+ headline: string;
19
+ /**
20
+ * Engine-authored lines under the headline: what the PLATFORM found about the report, as
21
+ * opposed to what the report claims. Blank/absent entries are dropped, so a caller can compute
22
+ * one conditionally without branching at the call site.
23
+ */
24
+ caveats?: readonly (string | undefined)[];
25
+ sections?: readonly DigestSection[];
26
+ /** Model-authored closing prose. */
27
+ notes?: string | null | undefined;
28
+ }
29
+ /**
30
+ * Render a structured step outcome as the markdown digest for `step.output`.
31
+ *
32
+ * Sections with nothing in them are omitted rather than rendered empty: an empty "Not covered"
33
+ * heading reads as a gap nobody described, where its absence reads as no gap stated, and only the
34
+ * second one is true.
35
+ */
36
+ export declare function renderStructuredDigest(digest: StructuredDigest): string;
37
+ //# sourceMappingURL=structuredDigest.logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structuredDigest.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/structuredDigest.logic.ts"],"names":[],"mappings":"AAqBA,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAA;IACf,uFAAuF;IACvF,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,oDAAoD;AACpD,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAA;IACf,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAA;IACzC,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;IACnC,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAClC;AAQD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAevE"}
@@ -0,0 +1,33 @@
1
+ import { hostMarkdown, redactSecrets } from '@cat-factory/kernel';
2
+ /** Scrub, then neutralise: the order matters, see the module header. */
3
+ function safeInline(value, code) {
4
+ const scrubbed = redactSecrets(value) ?? '';
5
+ return code ? hostMarkdown.inlineCode(scrubbed) : hostMarkdown.inline(scrubbed);
6
+ }
7
+ /**
8
+ * Render a structured step outcome as the markdown digest for `step.output`.
9
+ *
10
+ * Sections with nothing in them are omitted rather than rendered empty: an empty "Not covered"
11
+ * heading reads as a gap nobody described, where its absence reads as no gap stated, and only the
12
+ * second one is true.
13
+ */
14
+ export function renderStructuredDigest(digest) {
15
+ const lines = [`## ${digest.heading}`, '', digest.headline];
16
+ for (const caveat of digest.caveats ?? []) {
17
+ if (caveat?.trim())
18
+ lines.push('', caveat.trim());
19
+ }
20
+ for (const section of digest.sections ?? []) {
21
+ const kept = section.values
22
+ .map((value) => value.trim())
23
+ .filter((value) => value.length > 0)
24
+ .map((value) => `- ${safeInline(value, section.code === true)}`);
25
+ if (kept.length)
26
+ lines.push('', `### ${section.heading}`, '', ...kept);
27
+ }
28
+ const notes = digest.notes?.trim();
29
+ if (notes)
30
+ lines.push('', '### Notes', '', hostMarkdown.prose(redactSecrets(notes) ?? ''));
31
+ return lines.join('\n');
32
+ }
33
+ //# sourceMappingURL=structuredDigest.logic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structuredDigest.logic.js","sourceRoot":"","sources":["../../../src/modules/execution/structuredDigest.logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAmDjE,wEAAwE;AACxE,SAAS,UAAU,CAAC,KAAa,EAAE,IAAa;IAC9C,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;IAC3C,OAAO,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AACjF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAwB;IAC7D,MAAM,KAAK,GAAa,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;IACrE,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QAC1C,IAAI,MAAM,EAAE,IAAI,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IACnD,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM;aACxB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;aACnC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAA;QAClE,IAAI,IAAI,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,CAAA;IACxE,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAA;IAClC,IAAI,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAC1F,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/orchestration",
3
- "version": "0.306.0",
3
+ "version": "0.307.1",
4
4
  "description": "Delivery-workflow engine for the Agent Architecture Board (execution, bootstrap, pipelines, board, boardScan, requirements, and composition root).",
5
5
  "repository": {
6
6
  "type": "git",
@@ -24,19 +24,19 @@
24
24
  "access": "public"
25
25
  },
26
26
  "dependencies": {
27
- "@cat-factory/agents": "0.160.0",
28
- "@cat-factory/caching": "0.20.77",
29
- "@cat-factory/contracts": "0.350.0",
30
- "@cat-factory/integrations": "0.172.12",
31
- "@cat-factory/kernel": "0.342.1",
32
- "@cat-factory/prompt-fragments": "1.1.39",
33
- "@cat-factory/sandbox": "0.12.51",
34
- "@cat-factory/spend": "0.21.1",
35
- "@cat-factory/workspaces": "0.29.0",
27
+ "@cat-factory/agents": "0.161.1",
28
+ "@cat-factory/caching": "0.20.79",
29
+ "@cat-factory/contracts": "0.351.1",
30
+ "@cat-factory/integrations": "0.172.14",
31
+ "@cat-factory/kernel": "0.343.1",
32
+ "@cat-factory/prompt-fragments": "1.1.41",
33
+ "@cat-factory/sandbox": "0.12.53",
34
+ "@cat-factory/spend": "0.21.3",
35
+ "@cat-factory/workspaces": "0.29.2",
36
36
  "ai": "^7.0.93"
37
37
  },
38
38
  "devDependencies": {
39
- "@cat-factory/sandbox-fixtures": "0.8.33",
39
+ "@cat-factory/sandbox-fixtures": "0.8.35",
40
40
  "typescript": "7.0.2",
41
41
  "vitest": "^4.1.11"
42
42
  },